项目准备:
一台stm32c8t6单片机
1个降压模块
L298N电机驱动模块2个、直流电机4个
三个TCRT5000跟踪模块
一枚12V锂电池
电路连接基本思路:12v锂电池为两个L298N电机驱动模块供电,一个L298N输出5V为C8T6单片机供电,12v电池通过降压模块输出3.3V电压为循迹模块,避障模块供电。
跟踪模块图像(有两种常见的跟踪模块,但我使用它)注:不同的循迹模块检测到黑白线输出端电平不一定相同
跟踪模块的使用介绍
跟踪模块原理:
检测到黑线时,输出端为低电平,二极管为熄灭状态
如果不是黑线,则反射回来的红外线强度足够大,因此输出端为高电平,指示二极管点亮。
跟踪设计思路:三个跟踪模块分别位于小车左中右,分别标记为led0、led1、led2
将适当的模式设置为上拉输入。
从跟踪模块的原理可以看出,跟踪模块检测到黑线时,输出端为低电平,否则为高电平。
所以呢
//anhighlightedblockif (led0==0le D1==1led2==1)购物车左转if (led0==1le D1==0led2==1)购物车前进if (led0===1le )
左转:
左、左、后两个车轮向后旋转; 右前、右后两个车轮向前转动,实现了原地左转
右转:
左、左、后两个车轮前转; 右前、右后两个车轮向后旋转,实现了原地右转
了解更多信息
STM32通过PWM实现小型电机的正反旋转
屏障设计理念:屏障模块图片:
同样将三个模块的信号端模式设置为上拉输入,相应的设计步骤也分别检测三个模块的高低等级,实现小车的避障。
//a代码块红外光故障检测函数S_BIZG_Input的后三位分别与[PA3、PA2、PA1]的状态值对应,未遇到故障(未接收红外光)的对应状态=1遇到故障)红外光对应状态(0--------------(() ) ) ) ) )0 s_bizg_input=() (u8 ) gg //0x0E 0000 1110然后向右移动1位}该函数功能直接读取数据寄存器的值,确定PA1 PA2 PA3的状态,
0x0E:0000 1110三个“1”正好对应A1、A2、A3
例如,假设在左边发现了障碍物0000 1110
0000 1100即0000 1100左右移动即0x06
例如在中间发现了障碍物0000 1110情况下
当向右移动0000 1010即0000 1010时,即0x05
//anhighlightedblock # defineno _ find x0x 07//无障碍#define Middle_Findx0x05 //中间有障碍物# define left _ findx0x 06/defineright_middle_findx0x01///右侧#define All_Findx0x00 //全部为障碍物http://www.sina .
如果有错误,欢迎大家指正。
其他的都是以此类推,当然左边发现障碍物可以分为:只有左边发现障碍物和左边或者左中发现障碍物。
小车销轴连接图:
导线连接:
链接: https://pan.Baidu.com/s/1k1 uave 72 ynij _ hws as _ qtg
抽屉代码: lbay