王 露
基于STM32的智能小车
王 露
王 露 邓 豪
西南科技大学信息工程学院
设计并实现一种基于 STM32单片机控制的自主寻线、避障、火焰及斜坡跌落检测等多功能的智能小车。此智能小车可通过火焰传感器检测火焰,调制激光检测轨道信息,光电接触式开关检测障碍物,陀螺仪实现对轨道斜坡的检测。实验证明小车巡线稳定、避障精准、火焰检测灵敏精确,而且短时高效完成整个路径及各节点任务。
随着科学技术的迅猛发展,智能化早已成为时下最热门的课题,相较于电子行业来说具有道路自动识别功能的智能车更是目前研究的热点。智能车是当今智能机器人研究领域的一个重要分支,它是人工智能,自动控制,计算机等多个学科领域的交叉与综合。本文介绍的智能小车以STM32单片机为主控系统,小车在如图1所示的路线示意图上自主前进,在行进过程中小车能准确检测到空节点、火焰,障碍物等并完成相应的节点任务,最终高效完成各节点任务之后到达终点。
图1 小车路线示意图
系统研究方案如图2所示,该方案主要通过巡线模块对路径信息的检测,并反馈至控制系统,控制系统通过调控电机的运行完成系统任务全路径的行进,并在行进过程中精确完成障碍物、空节点、火焰等节点任务检测及相关行为。
图2 系统框架
该巡线小车智能控制系统主要由以下模块组成,分别是主控模块、巡线模块、电机驱动模块、电源模块及节点任务模块。系统以STM32单片机作为控制核心。采用调制激光传感器进行路径信息采集,将实际路径信号转换为电信号传送到单片机进行处理,然后结合PID算法以及记忆算法实现路径最优及路径记忆;对于障碍物的检测,可采用光电开关进行检测并灵活避障;采用火焰传感器检测火焰,通过火焰反射红外线进行检查其亮度高度并将信息传达给控制系统,系统通过控制相关设备进行灭火行为;当小车到达斜坡顶端时,采用陀螺仪与光电开关联合的方法检测是否小车已到达斜坡顶端,完成路径行走中的跌落检测任务,并通过控制系统调节小车的运行方向。
该系统电机驱动模块选用L298N电机驱动芯片,驱动两个大功率直流电机运行 ,并且通过光耦隔离器避免了因电机高速旋转产生的较大感应电动势对前级电路产生影响。电源模块通过LM7809、LM7805等高性能稳压芯片,给系统提供稳定可靠的电压。
主控模块
STM32是ARM最新的Cortex-M4内核,是一款低功耗、高性能、集成度高、接口丰富的处理器。优先级抢占的中断控制器,支持中断自动嵌套,硬件完成现场保护与恢复。本小车以STM32为控制核心,利用调制激光传感器收发道路信息,充分发挥STM32高速的运算、处理数据的优势实现小车自动识别线路并按迹行进;STM32的配置选择通用寄存器,调节PWM占空比实现小车速度的调节,根据传感器采集到的路径位置调整舵机转动的角度,使得小车巡线精确。
电源模块
本小车所使用的为STM32的控制系统,该系统的供电电压为3.3V,后轮电机供电电压为12V,为安全起见,使用LM7809、LM7805、ASM1117三款稳压芯片实现稳压供出3.3V直流电。
巡线模块
本次路径信息获取及巡行选用调制激光的方法,使得巡线小车保证较快速度。对于小车进行高速路径信息获取及行进,远的前瞻是必不可少的。而反射式红外光电对管有效工作距离有限,最大一般不超过20cm,为获得较远前瞻,使用时往往加了一个很长的前伸支架,这样很容易破坏车体结构平衡,影响车体稳定性;但使用调制激光一般能达到50cm前瞻,且它是采用经调制后的激光,接收管也只接受对应调制频率的反射光,在抗干扰能力方面优于一般反射式红外光电对管。
图3 电源模块电路原理图
图4 调制激光器使用原理图
调制激光的使用原理图如图4,JP1为调制管,JP2为调制接受管,D2为激光发射管,D1为电平指示LED;使用时单片机通过IN端口控制D2和JP1工作,当JP2接受到反射回的调制激光时,OUT端口输出低电平,反之输出高电平,为提高接受管灵敏度,接收管可配合聚光透镜使用。由以上信息可以看出调制激光的使用电路也较为简单。
在实际使用过程中,激光传感器的装配方式也是十分重要的,由于设计路径宽度为3cm,所以设计的激光传感器可采用以下方案排布:
如图5所示,在实施中采用7个激光发射管,发射管中间一个主要检测黑线,初步判断小车行使路线是直道还是弯道,其两边两个激光发射管设计间距约3.5cm,稍大于导航线的宽度,可以实现对场地信息的精确把控,其余4个激光发射管同样具有必不可少的检测作用。为了节约成本和排除相邻发射管相互影响的可能,电路设计只使用了3个调制接收管,巡线时,采用分时打开激光发射管的方式,如:先打开从左到右第1、4、7个发射管,再打开第2、5个发射管,最后打开第3、6个发射管,再通过相关算法对检测到的信息进行处理就能准确地得到当前场地信息了。
图5 激光传感器装配示意图
电机驱动电路
巡线小车在行驶的过程中的主要动力是靠后轮的两个直流减速电机驱动的,电机性能的好坏直接影响小车整体行驶效果。本设计中采用L298中两个H桥驱动电路来控制电机运转通过控制三极管的导通状态使电机达到正反转的目的,并通过调整输入H桥电路的PWM来控制电机的转速,实现小车高速精确地路径巡行。
软件设计
软件设计流程如图6所示。
图6 软件设计流程图
用A代表前进;用B代表后退;用L代表左转;用R代表右转;图7为小车在前进的过程中可能会遇到一下这些路口的情况。
图7 路口情况分布图
记忆算法即是利用字符串匹配算法消去小车走的弯路,根据迷宫的组合可能有以下不同的结果,例如:
同样也可以得到其他的不同的组合的情况
“ABA”=”B”
“ABR”=”L”
“RBA”=”L”
“RBR”=”A”
“RBL”=”B”
“LBR”=”B”
利用这些组合,进行字符串的匹配以及替换。以此可以通过不断的匹配以及替代得出最短路径,小车就可以完成路径记忆的功能。
本设计提供一种基于STM32单片机的智能移动小车,小车总体软硬件开发成本较低,经测试表明巡线效果良好,具有避障、灭火、斜坡检测及相关节点任务完成等功能。并且在加入迷宫算法及记忆算法后小车可以以最优路径完成循迹。本文提出的基于STM32的智能移动小车可运用于仓库、超市等地方存取货物,且其检测火焰的功能可使得货物在运输过程中不受损害等。
10.3969/j.issn.1001-8972.2015.01.034