洪一民,钱庆丰,章志飞
(安徽理工大学 电气与信息工程学院,安徽 淮南 232001)
智能机器人的应用在世界上越来越广泛,逐步在各个领域都有所涉及。移动机器人属于智能机器人学的一个很重要的分支,目前世界各国都开始注重对移动机器人的研究。在军事侦察、地质勘测、扫雷排雷等人类作业难度较大的领域以及对恶劣环境的监测工作中都有广泛的应用前景。本文设计的基于STM32的循迹避障测距的智能小车就属于智能移动机器人的范畴,能够通过传感器探索周围障碍物,并实现避障、循迹等功能。
基于STM32设计的智能小车系统主要的组成部分为:主控制器模块、红外循迹和避障模块、电机驱动模块、超声波测距模块。系统结构如图1所示。
图1 系统结构图
由单片机主控制器芯片接收红外传感器发出的信号,然后判断其信号,分析出小车需要做出的动作,再将此动作命令发送给电机驱动模块,最后控制小车来执行相应的命令完成对应的动作,以此达到让小车避障的目的。若传感器感应到小车的左侧有障碍物时,主芯片则通过控制模块让右轮电机工作停止,左轮电机转动起来,这时小车就会向右侧转动;反之,若障碍物被右侧传感器检测到时,左轮电机就会停止转动,这时小车就会向左侧转动。同时,当超声波传感器感应到障碍物时,单片机再根据超声波遇到障碍物反射回来的信号计算其距离,以此达到测距目的。模拟图如图2所示。
图2 模拟图
智能小车的控制核心模块,选用的是STM32F407单片机,配合编程软件Keil μVision,对供电烧写模块、时钟模块、电源电路、复位电路、红外接收模块以及电机驱动模块等进行程序的操控。
电机驱动模块的主要特点是:工作时的电压比较高,最高可达46 V;电流也非常大,瞬时峰值电流可达3 A,持续工作电流也可达到2 A;额定功率是25 W。驱动模块中用来驱动直流和步进电机、继电器线圈等感性负载的是H桥型全桥式驱动器;采用标准逻辑电平信号控制;两个势能控制端,在输入信号不受影响的情况下,允许或禁止器件工作会使其内部的逻辑电路在低电压下工作;可以外接检测电阻,并且反馈变化量给控制电路。原理如图3所示。
图3 原理图
红外避障模块所用的芯片是LM393芯片。该传感器能够适应强光线,它的工作原理是发射管会发射出高频率的红外线,遇到障碍物则会反射回来,并通过接收管对它进行接收,然后比较处理。这时绿色指示灯则会亮起,同时信号输出接口会输出一个低电平的数字信号,可通过电位器旋钮调节检测距离,其工作电压为3.3~3.5 V。
红外循迹模块采用的传感器是单光束的红外传感器,它是一种集发射和接收于一体的光电传感器。检测反射距离在1~25 mm范围内都适用;传感器特设M3固定安装孔,调节方向和固定都比较方便;比较电路使用的是宽电压LM393比较器,具有信号干净、波形好、驱动能力强的优点,超过15 mA。此模块主要的作用是能够检测出白底中的黑线,或者是检测黑底中的白线。
超声波测距模块采用URF04作为芯片;测距方式是通过I/O口输出至少10 μs以上的高电平信号,同时模块自动发送8个40 kHz的方波,检测信号是否返回,若信号返回,则需要通过Echo口输出高电平,计算出超声波从发射一直到返回所用的时间,作为输出高电平的持续时间。测试距离=(输出高电平时间×声速)/2,声速=340 m/s。通过此公式计算出测试距离,并进行循环往复的测试,就可以达到移动测量值。
通过初始化各模块来实现智能小车的软件设计。将各类传感器采集信息通过数字信号的形式传输到输入引脚。单片机再对此信号进行判断和处理之后控制智能车正常运行。这些情况都需要通过软件设计来实现。本次控制系统的设计是基于Keil μVision4编译环境。因为C语言相对于其他汇编软件编程比较简单,所以使用C语言完成程序编写。避障和循迹流程如图4、图5所示
图4 循迹流程
图5 避障流程
本次设计的创新点在于:通过PID算法控制小车的速度来提高小车的稳定性。
通过闭环控制系统控制小车的速度,再测量小车行驶过程中的脉冲数,并且根据小车行驶路径和时间计算出小车的速度;然后将计算的速度与上一次测量的速度进行比较,采用PID算法控制单片机输出PWM脉冲到电机驱动模块PWM端,以此控制电机转速。
本文设计的智能小车以避障为主要功能,系统中采用的红外传感器具有灵敏度高、体积小的特点,也更易于安装。STM32单片机与电机驱动芯片相结合,不仅减少了智能小车的制造成本,同时也保证了整个系统的稳定性与编程易实现。