超声波定位系统智能跟随小车设计
2019-12-19陈乐鹏谭晓东曹江浩刘升云高智伟
陈乐鹏 谭晓东 曹江浩 刘升云 高智伟
摘 要:随着时代的发展,对于智能化程度各个行业的要求都有所提高,越来越多的移动机器得到普及,与传统的跟随设备相比,智能小车具有更好的机动性、安全性和实用性。如今国内跟随设备一般存在于专业的场馆环境内,而没有针对在超市、机场、火车站等公共场所里的跟随设备。文章以STM32为核心,利用多个模块的结合,设计了一款可以在各个场合都能够实现跟随的智能小车。该车采用超声波定位技术实现小车与人类距离的检测,判断人类的位置,并利用PID算法控制小车移动速度和转弯方向,实现对人的精准跟随。该智能小车既可以应用于环境简单的场馆内,又可以在复杂的公共场所实现跟随,解放人类双手。
关键词:智能跟随;STM32;超声波测距;比例控制
中图分类号:TP391.41 文献标志码:A 文章编号:2095-2945(2019)35-0024-03
Abstract: In order to solve the problem that human hands can not be completely liberated, an intelligent following car based on STM32, single receiving and receiving ultrasonic module ranging and steering proportion control is designed and implemented. The intelligent car is based on STM32 as the core control module, the car installs three ultrasonic receiving modules, uses the human hand-held transmission ultrasonic module to make the car judge the position of the person, and determines the speed of the belt according to the distance, so as to realize the following function of the intelligent car. It is proved that the system is stable and can track and liberate both hands in real time.
Keywords: intelligent follow; STM32; ultrasonic ranging; proportional control
1 概述
随着时代的发展,各行各业对于智能化程度要求的提升,越来越多的移动机器得到普及,与传统的跟随设备相比,智能小车具有更好的机动性、安全性和实用性。如今国内跟随设备一般存在于专业的场馆环境内,而没有针对在超市、机场、火车站等公共场所里的跟随设备。本文以STM32为核心,利用多个模块的结合,设计了一款能够应用于各个场所的智能跟随小车。该车采用超声波定位技术实现小车与人类距离的检测,判断人类的位置,并利用PID算法控制小车移动速度和转弯方向,实现对人的精准跟随。该智能小车既可以应用于环境简单的场馆内,又可以在复杂的公共场所实现跟随,解放人类双手。
2 硬件设计
2.1 系统总体设计
系统为了实现小车自动跟随,采用了超声波定位模块、电机驱动模块和LCD等功能模块设计。通过人手持超声波发送模块与小车安装的超声波接收模块来判断人的位置,主控芯片STM32处理位置信息,输出PID算法调控后的PWM波来控制电机的转速。电源一给超声波接收模块、电机驱动模块和LCD模块供电。电源二给超声波发送模块供电。系统的总体设计图如图1所示。
2.2 主控芯片
智能小车采用的是STM32F103的主控芯片,该芯片是32位ARM微控制器,其內核是Cortex-M3。拥有性能强大的外设、低功耗、开发成本低、支持SWD和JTAG两种调试等优势。
2.3 超声波定位模块
超声波定位模块的基础是超声波测距,本设计使用的测距模块是单接收发超声波模块,该模块的测量范围为4~500cm,精度为3mm。工作电压为5V,采用串口通信,通信波特率为115200。定位模块由发射超声波模块、接收超声波模块、控制电路和驱动电路组成。发射超声波模块只需要上电即可。发射超声波模块上电后,发射超声波模块上的LED会快速闪动,此时发送超声波模块已经在正常工作。接收超声波模块的四个引脚5V、G、RX和EX与主控芯片STM32的IO口连接,将发射超声波模块与接收超声波模块的发射头对准,接收超声波模块上的LED闪烁后,证明两者通信成功。接收超声波模块接收到数据后,会通过串口以50Hz的频率发送出距离数据。数据格式为:0XA5+两个字节数据(16进制),单位为mm。其中0XA5是帧头,另外2个是数据存储字节。例如返回的数据为:A5 00 C8的意思是200mm。其解算过程是2个字节数据移位然后逻辑运算。distance=distance[1]<<8|distance[2]。超声波定位模块的实物图如图2,单发超声波的电路图如图3所示。
2.4 供电模块
本次设计使用的供电电源是12V的,而STM32的正常电压是3.3V和5V,电机驱动模块和超声波模块的正常供电电压也是5V,所以需要对电源降压以后供各个模块使用。我们选用的降压模块是LM2596,该模块发热小,性能稳定,供电电流大,很适合在单片机控制系统中使用。供电模块的供电电路如图5所示。
2.5 电机驱动模块
此次设计采用的是L298N电机驱动模块来控制小车的运动。该模块使用的是H桥直流电机驱动芯片,可以很方便地实现直流电机的正转、正转制动、反转、反转制动。电机采用的是脉冲宽度调制(Pulse Width Modulation, PWM)进行调速,即通过改变电机电枢电压的占空比来改变整体电压的大小,而实现小车两个电机的速度调节。电机的转向通过L298N的4路逻辑门来控制。其中PWM信号通过单片机定时器来控制输出,4路逻辑输入通过单片机输出模式的IO口进行控制。
2.6 LCD显示模块
此次设计选择的是LCD12864作为显示模块LCD12864屏幕总共是128*64个点,每个点只有亮和不亮两种状态,可以直接显示中文,不需要自己编码,发送数据使用8位并行模式,用单片机的IO引脚就可以实现对该模块的控制。
3 软件设计
3.1 主程序设计
系统的硬件模块搭建好后,在软件中对各个环节进行初始化,包括LCD、延时函数、SWD下载串口等,然后进行中断优先级分组,方便管理各个中断,最后对控制PWM信号产生的定时器进行相关配置。各个模块初始化完成以后进入while循环,首先对超声波通信串口配置完成后,进行串口中断服务程序,开始接收数据(如果是0XA5就收,否则不予接收),然后对数据进行解算并处理,得到左右两个接收超声波距离发射超声波的距离,最后对得到的左右两个超声波的距离进行PID控制,并根据PID控制的输出量赋值给PWM寄存器,进而对左右两两个电机控制。主程序的流程图如图6所示。
3.2 超声波测距程序设计
超声波测距的原理是发射超声波模块发送数据,接收超声波模块接收到数据时所用的时间乘以声速即为两个超声波之间的距离。其中时间是由超声波模块上的红外发射管和红外接收管做同步时序,超声波放松数据的同时红外发射管发送红外数据,红外接收头接收到数据时开始时,超声波接收到数据后停止计时,因为光速远远大于声速,所以时间差是可靠的,得到距离也是可靠的。
3.3 PID控制程序
电机的转速是随负载变化而变化的,而且电机的损耗程度也会影响电机的转速,为了使电机转速的误差减小,设置了直线跟随PID控制和转向跟随PID控制。PID控制的公式如下:
比例常数kp;
积分时间常数TI;
微分时间常数TD
为了维持小车跟随距离和转弯稳定性维持在一个稳定值,设置了直线比例控制和转弯比例控制。直线比例控制中设置1m为目标值,是小车距离人类在1m内实现跟随。超声波测量的距离值与目标值的系数Kp1,得到的结果用于调控PWM波形来进行小车的直线控制。转弯比例控制是左右两个超声波的差值的绝对值乘以比例系数Kp2,用于调控PWM波形来进行小车的转弯控制。通过小车直线和转弯的闭环控制,将提升小车对目标跟随和转弯的可靠性。
4 系统调试
4.1 硬件调试
(1)测试超声波和红外发送与接收数据。
(2)测试电机正转反转和差速旋转。
(3)測试供电模块和电机驱动模块等。
4.2 软件调试与实现
(1)超声波测距模块在5m之内准确率在97%以上。
(2)积分控制环节稳定性在80%。
5 结束语
本文介绍的智能跟随小车,可以实现在1m-3m内实现对人体的定位,并能都达到始终与人体1m的相对位置跟随,在左右转弯时可以实现0.5s实现快速响应。能够在各个场所达到智能跟随的功能。
参考文献:
[1]代森.基于超声波室内定位系统的设计与实现[D].西南交通大学,2017.
[2]曾建,荣联城,姜水明,等.基于arduino平台的智能遥控小车设计[J].电子世界,2014(07):142.
[3]师树恒,赵斌,郭朋彦,等.基于MK60N512的智能循迹小车设计[J].机床与液压,2014,42(02):91-93+96.
[4]卢威.智能小车避障系统的设计与实现[D].南昌大学,2012.
[5]陆蔺.超声波三维定位与跟踪系统的设计与实现[D].苏州大学,2010.
[6]黄涛.自动化小车的无线遥控驾驶技术研究[D].西安电子科技大学,2009.