600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 智能小车——循迹 避障小车(附详细代码)

智能小车——循迹 避障小车(附详细代码)

时间:2021-11-18 14:20:05

相关推荐

智能小车——循迹 避障小车(附详细代码)

项目准备:

stm32c8t6单片机一个

降压模块一个

L298N电机驱动模块2个、直流电机4个

TCRT5000循迹模块三个

12V锂电池一块

电路连接基本思路:12v锂电池为两个L298N电机驱动模块供电,一个L298N输出5V为C8T6单片机供电,12v电池通过降压模块输出3.3V电压为循迹模块,避障模块供电。

循迹模块图片(一般循迹模块有两种,我用的是这一种):

注:不同的循迹模块检测到黑白线输出端电平不一定相同

循迹模块使用介绍

该循迹模块原理:

检测到黑线时,输出端为低电平,二极管处于熄灭状态

若不是黑线,由于反射回来的的红外线强度足够大,输出端为高电平,指示二极管被点亮。

循迹设计思路:

①三个循迹模块分别位于小车的左中右,分别记为:led0、led1、led2

配置相应的模式为上拉输入。

从循迹模块的原理我们可以知道,当循迹模块检测到黑线时,输出端为低电平,否则为高电平。

所以

// An highlighted blockif(led0==0&&led1==1&&led2==1)小车左转if(led0==1&&led1==0&&led2==1)小车前进if(led0==1&&led1==1&&led2==0)小车右转if(led0==1&&led1==1&&led2==1)小车停止(即未在黑线范围内)

②电机速度控制:4个电机采用2个通用定时器输出的pwm进行前进,后退,左转,右转(同时速度也可调)。

左转:

左前、左后两个车轮后转;右前、右后两个车轮前转,实现了原地左转

右转:

左前、左后两个车轮前转;右前、右后两个车轮后转,实现了原地右转

详细内容见

STM32用PWM实现小电机的正反转

避障设计思路:

避障模块图片:

同样也是3个模块的信号端模式设置为上拉输入,相应的设计步骤也是分别检测3个模块的高低电平,来实现小车的避障。

// A code block红外避障检测函数S_BIZG_Input的低三位分别对应[PA3、PA2、PA1]的状态值未遇到障碍(未接收到红外光):对应状态 = 1遇到障碍(接收到红外光):对应状态 = 0-------------------------------------------------------------void BIZG_detect_barrier(void){S_BIZG_Input =0;S_BIZG_Input =(((u8)GPIOA->IDR) & 0x0E)>>1;//0x0E 0000 1110然后右移一位}

此函数功能是直接读数据寄存器的值,来确定PA1 PA2 PA3 的状态,

0x0E:0000 1110三个“1”正好对应A1、A2、A3

比如说左边发现障碍物 0000 1110

&0000 1100即 0000 1100 右移一位即0x06

比如中间发现障碍物 0000 1110

&0000 1010 即0000 1010 右移以为即0x05

// An highlighted block#define No_Findx 0x07 //无障碍#define Middle_Findx0x05 //中间发现障碍物#define Left_Findx 0x06 //左侧#define Left_Middle_Findx0X04 //左中测#define Right_Findx 0x03 //右侧#define Right_Middle_Findx 0x01 //右中侧#define All_Findx 0x00 //全是障碍物

其他的都是以此类推,当然左边发现障碍物可以分为:只有左边发现障碍物和左边或者左中发现障碍物。

如有错误,望大家多多指正。

附:

①小车引脚连接图:

②代码连接:

链接:/s/1k1uAvE72ynIJ_hwsas_qTg

提取码:lbay

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。