基于STM32设计的避障小车
2021-04-04杨帆,雷迪
杨 帆,雷 迪
(武汉工程大学,武汉 430205)
0 引言
现今,人工智能已经涉及到生活的方方面面,控制领域的智能避障小车也成为人工智能的重要应用之一,并且取得了显著的成果。一般避障小车分别使用红外测距传感器[1]、超声波传感器[2]、CCD镜头[3]、视频采集模块协同红外避障模块[4]作为障碍物识别模块。在小车操纵上一般通过CCD摄像头识别灰阶轨道使小车做循迹运动[5],或无线手柄、手机[6]连接小车进行人工操控,还有的小车使用电子罗盘进行精确定位以便电脑规划路径控制行驶[7]。算法上分为全局、局部路径规划方法[8],具体的一般使用模糊控制算法[9]、神经网络算法[10]进行避障路线规划。本次设计的避障小车避障模块在包含了红外传感器、超声波传感器外,还添加了倾角传感器实时检测小车倾斜角度,使得小车在行驶过程中不会翻倒。小车通过手持红外遥控器和车载红外接收器进行人工控制,在遇到障碍物、倾角角度过大可能引起翻倒时根据设计的避障程序进行自动避障。
1 避障小车总体设计
本次避障小车设计选用STM32F103ZET6芯片作为主控芯片,小车大致可分为五个部分:电源模块、障碍物检测部分、控制器模块、电机驱动模块、红外遥控模块。选择手持红外遥控器作为操作指令输入。小车系统总体框图如图1所示。
2 硬件模块设计
2.1 电源模块
图1 系统总体框图
小车串联两节锂电池提供7.2V电压作为初始电源,经LM2596S芯片转换提供6V~12V电压输出,通过RC电路的调整为后续系统提供稳定的5V电源,为后续各个模块提供5V电源,电源供电模块如图2所示。
图2 电源供电模块电路图
2.2 超声波避障模块
超声波测距原理:声音在空中的传播速度约为340m/s,时间△t为发射器发射超声波的瞬间到接收器接收到超声波的时长。
根据式(1)就能测出小车到障碍物的距离S。本文选用的是HC-SR04超声波模块,其测距范围为2cm~400cm。
模块自动发送8个40khz的方波,超声波模块固定在小车的正前方,用来检测正前方的障碍物,自动检测是否有信号返回。有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。与主控芯片PB14、PD8相连。超声波避障模块电路图如图3所示。
图3 HC-SR04超声波模块电路图
2.3 红外线避障模块
HJ-IR2红外避障模块采用红外光反射原理进行距离估算。该模块位于车头左右两边。本小车选择的红外传感器,检测距离为2cm~30cm。在设计上采用红外避障模块与超声波模块,两种方案同时检测,并依据两者测得的距离为转向角提供数据,两边的红外避障模块分别与STM32中PC7、PG2相连接,红外避障模块电路图如图4所示。
图4 左右红外传感器模块电路图
2.4 倾角检测模块
该小车使用MMA7361L倾角传感器,安装于小车中间部分。如果沿着某个方向(轴向、径向平行、径向垂直)活动或受到重力作用,输出电压就会根据其运动方向以及设定的传感器灵敏度而改变其输出电压,该信号通过(引脚)送入主控芯片,就可以检测小车倾角。其中MMA7361L芯片Xout、Yout、Zout、SelfTest、g-Select、0g-detect、Sleep输出端口分别与主控芯片的PB0、PB1及PC1-PC5端口相连。当X、Y、Z各轴的信号在不运动或不被重力作用的作用的状态下(即0g状态),其输出为1.65V,检测灵敏度为800mv/g。令X、Y、Z轴输出电压分别为:Ux、Uy、Uz。
三轴输出电压计算公式如下:
加速度传感器Z轴输出电压为:
加速度传感器X轴输出电压为:
加速度传感器Y轴输出电压为:
根据计算所得的三轴电压,三轴倾角算法如下:
加速度传感器Z轴与自然坐标系Z轴夹角:
加速度传感器X轴与自然坐标系X轴夹角:
加速度传感器Y轴与自然坐标系Y轴夹角:
三轴角度示意图如图5所示。
倾角检测芯片电路图如图6所示。
2.5 电机驱动模块及直流电机
电机驱动模块选用双H桥L298P电机驱动芯片,实现4马达驱动运行和PWM软件调速。L298P驱动4路直流电机,通过主控芯片的PC11、PD0、PD6、PG9端口相连,输出改变L298N的控制端电平,以控制电机转动。左电机驱动模块电路图如图7所示(与右侧车轮相同)。
图5 三轴角度示意图
图6 MMA7361L芯片电路图
2.6 光电测速模块
此次智能小车选用HJ-IR6光电测速模块,位于小车下方后车轮两侧,对车辆行驶时的速度进行精确测量并为主控芯片提供数据,为小车制动提供速度数据,其与主控芯片PD10、PD11相连。
图7 L298P左侧车轮电机驱动芯片电路图
2.7 手持红外遥控器及红外遥控接收模块
设计的智能小车并未使用循迹控制,而是选择了红外遥控的人工控制方式。小车配备红外接收IR1838芯片模块与手持红外遥控器,IR1838芯片输出端与主控芯片PD10相连。操纵手持红外遥控器即可对小车进行操纵,红外接收模块电路图及手持红外遥控器如图8所示。其中,遥控器“CH”键、“+”键、“倒放”键、“播放暂停”键依次对应设置为小车的上下左右控制键,控制小车行驶。
图8 红外接收模块电路图及手持红外遥控器
3 软件设计
此次设计中,因选择STM32F103ZET6作为主控芯片,故使用非常成熟的C语言进行配套编程,配合编译软件KeilμVision5进行编译,完成了主程序及避障程序的设计。
3.1 主程序设计
主程序中,对各项函数进行初始化,清空前期累计数据。随后,小车等待红外遥控器发出运动指令,在检测到传输指令并识别后,进入避障程序。避障程序内判断是否触发不同种类避障过程。若不触发避障过程则执行人工操作指令然后返回任务等待步骤。主程序对应的程序流图如图9所示。
图9 主程序流图
3.2 避障程序
主程序中的避障功能是本次设计小车的重点功能,分别对不同障碍物情况设计了对应的避障处理程序。其中,光电测速模块检测小车速度为后续避障程序提供速度数据。左右红外测距传感器测量车身的左右障碍物距离,超声波传感器测量小车正面距障碍物距离,倾角传感器测量车身倾斜角度。避障程序流图如图10所示。
图10 避障程序流图
4 实验结果及结束语
实验设置两个主要任务:平整道路行驶避障、倾斜道路行驶避障。在实验场所设置多个障碍物,及倾斜坡道。小车上电启动后,开始根据遥控器发出指令进行人工行驶,判断前方有障碍物后开始避障实验,如遇到障碍物,小车执行避障程序。随后,小车进行爬坡操作,小车行驶到达程序设定倾角后转向下坡方向。小车经过反复的室内测试,调整红外传感器、超声波传感器最大检测距离,在程序中对倾角信号做消抖处理,最终使得小车三种避障方式效果达到预期,顺利完成各类障碍物避障要求,实验成功结果如图11、图12所示。
图11 行驶过程中障碍物避障
图12 行驶过程中倾角避障
本文基于STM32设计出了一款带倾角避障的智能小车,使用超声波及红外避障模块,倾角检测模块检测障碍物信息,使得小车具备在距障碍物10cm距离外进行避障操作,小车在路面倾角为30°时选择下坡进行避障操作防止倾倒。通过光电测速器采集速度数据,构成闭环控制系统,从而提高小车速度的控制精度和稳定性。