基于陀螺仪控制的无线智能小车设计
2018-10-11曹丙花刘梦溪陈月荣赵亚威李冰清
曹丙花,刘梦溪,陈月荣,赵亚威,李冰清
(中国矿业大学信息与控制工程学院,江苏徐州221116)
关键字:陀螺仪;智能小车;无线控制
0 引言
智能小车是以轮子作为移动设备、实现自主行驶的机器人,是基于计算机技术、电子技术、传感技术、信息技术、通信技术、网络技术、导航技术、自动化及智能控制技术等发展起来的现代智能系统,是集环境感知、规划决策、自主行驶与行为控制等功能于一体的综合系统[1~2]。
无线遥控在生活、科研、军事等很多领域发挥了重要的作用。目前使用的无线控制小车多使用键盘按键、摇杆手柄来控制小车的动作,存在着按键多、操作复杂并且机械结构易损的缺点。另外低成本的机械摇杆精度有限,导致控制信号区分间隔大,有的按键控制器也只是给出开关量,不能给出接近模拟的控制量,而高精度的摇杆成本又非常高。相比于传统的摇杆按键控制,重力感应遥控器件与控制者的身体姿态联系更为紧密,所以更为简便直观,且没有摇杆按键等操纵过程中的机械磨损,使用寿命更长。
本文提出了采用MPU6050陀螺仪模块作为核心的遥控器,通过无线通信模块CC1101实现对智能小车的运动控制,通过超声波传感器和人体红外线传感器实现自主避障,应用C语言编写小车自主运行程序,并且制作了小车实物,实现了陀螺仪控制的无线智能小车的设计,很好的实现了对智能小车的无线控制。
1 系统总体设计
本文设计的无线智能小车系统包含两个部分:智能小车系统和无线控制系统,分别如图1和如图2所示。
智能小车系统主要由单片机(STC89C52)、无线接收模块(CC1101)、超声波传感器(HC-SR04)、人体红外传感器(SB412)、光耦电桥(PC817)、电机驱动模块(irf640nmos管)和直流电机(HC02-48)等组成,以STC89C52单片机作为主控制器,在无线接收模块接收的小车运动控制信号的控制下,控制电机驱动模块来实现电机的正反转运行,最终完成智能小车的各种运动控制;
无线控制系统由陀螺仪模块(MPU6050)、单片机(STC89C52)和无线发送模块(CC1101)组成,其中STC89C52单片机通过SPI接口读取MPU6050的数据,经卡尔曼滤波后,按通信协议通过无线串口将信号发送给智能小车系统。
在本文设计中,无线发送模块(CC1101)是实现陀螺仪遥控与小车之间的通信桥梁,其作用是实时地将陀螺仪MPU6050的信号传送给智能小车系统,进而控制小车的运动。
图1 智能小车原理框图
图2 无线控制系统原理框图
2 硬件电路设计
2.1 智能小车系统
1)电机驱动模块
本设计的驱动器使用了MOS管作为开关器件,内阻小,耐过流能力强,工作效率高;驱动侧与动力侧全部用光电耦合器进行了隔离。本驱动电路具有以下特点:控制信号采用了光耦隔离,可以完全隔离电机工作时对单片机的干扰;驱动器采用了Buck拓扑,开关调速方式,效率可达到95%以上;驱动器响应速度快,发送指令后10 us内将完成转速的调节;在驱动电路中,PWM1和PWM2控制电机的转速,DIR1和DIR2控制电机的转向,采用两电机差速实现小车的转向控制,电机的驱动电路如图3所示。
图3 电机驱动模块
2)超声波模块
避障是智能小车应具备的基本功能之一,本设计中采用超声波模块来测量前方障碍物的距离。其工作原理是,超声波传感器HC-SR04检测前面是否存在障碍物,若存在障碍物的话,小车将自动转弯,避开障碍物。本设计中选择的超声波测距模块的基本步骤如下:
(1)采用IO口TRIG触发测距,给至少10 us的高电平信号。
(2)模块自动发送8个40 kHz的方波,自动检测是否有信号返回。
(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速)/2。
本模块使用方法简单,一个控制口发一个10 us以上的高电平,就可以在接收口等待高电平输出,一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此值就为此次测距的时间,由此方可算出距离。
3)人体红外线模块
人体红外线模块的作用是用来检测智能小车前方是否有人,当设定范围内有人出现时,智能小车模块会自动停止前进,确保不会撞到人。这个传感器的加入,使得小车的避障功能更加完善,安全性能得到提高。本设计中采用的人体红外线模块型号是HC-SR501,基于热释电原理工作,一般人体都有恒定的体温,一般在36~37℃,所以会发出特定波长为10 um左右的红外线,被动式红外探头就是靠探测人体发射的10 UM左右的红外线而进行工作的[4]。HCSR501是基于红外线技术的自动控制模块,采用德国原装进口LHI778探头设计,灵敏度高,可靠性强,超低电压工作模式,其电路图如图4所示。
图4 HC-SR501电路图
2.2 无线控制系统
1)陀螺仪模块
为了得到精准的角度信息和卡尔曼滤波,防止干扰信号,陀螺仪选用了MPU6050模块,MPU6050为全球首例整合性6轴运动处理组件,与多组件方案相比,避免了组合陀螺仪与加速器时之轴间差的问题,减少了大量的包装空间,MPU6050通过I2C协议与单片机通信,电路图如图5所示。
图5 MPU6050模块
2)无线发送模块
选用的无线模块CC1101是一款低于Sub-GHz高性能射频收发器,适用于极低功耗RF应用。针对工业、科研和医疗(ISM)以及短距离无线通信设备(SRD),CC1101可提供对数据包处理、数据缓冲、突发传输、接收信号强度指示(RSSI)、空闲信道评估(CCA)、链路质量指示以及无线唤醒(WOR)的广泛硬件支持。CC1101发送模块的电路图如图6所示。
3 软件设计
图6 无线发送模块
图7 系统的软件设计总体流程
系统的软件设计总体流程如图7所示。其中无线控制系统程序执行的详细过程是:首先初始化MPU6050,然后初始化定时器和串口,在程序里对STC89C52的引脚进行定义,例如,定义IIC协议的SCL和SDA,然后读取MPU6050的数据,以陀螺仪的数据和加速度计的值作为卡尔曼滤波的两个参考值,然后得到遥控的偏斜角度,再将角度值传递给串口发送,缓存值经过串口发送出去。
智能小车系统程序执行详细过程是:首先初始化串口、定时器、超声波和人体红外线模块,在程序里对STC89C52的引脚进行定义,例如定义PWM的输出管脚,然后用串口接收数据,根据通信协议解析数据,在将解析后的数据指令转化为PWM的占空比,最后通过电机驱动部分对小车进行相应的动作控制。同时,超声波模块不断检测前方是否有障碍物并且测量障碍物的距离,若距离小于50 cm,则小车自动转弯,人体红外传感器若检测前方有人,则小车会停止前进。
本设计中无线控制系统和智能小车系统的通信协议如表1所示。其中每一字节的意义如表2所示。其中的第3-6字节的数值由陀螺仪MPU6050的数据决定,即根据MPU6050采集的数据对智能小车进行运动控制。
表1 无线通信协议
表2 通信协议字节意义
4 系统调试
本文设计的遥控智能小车,遥控功能是其核心部分,调试主要从以下三个部分进行:①陀螺仪MPU6050的数据处理功能的测试;②无线收发模块NRF24L01的收发功能测试;③前两者结合的功能测试。
1)陀螺仪MPU6050数据处理功能测试
该部分功能测试的方法为:将其相应的程序下载到单片机中,将MPU6050的各个引脚根据程序中的定义进行连接,通过串口来观察MPU6050的数据变化,当MPU6050向不同方向转动不同角度时,串口显示的输出数据如图8所示。观察数据和理论的结果相同,则陀螺仪MPU6050模块实现功能正确。
本设计中,利用陀螺仪传感器采集的无线控制系统的姿态数据,对智能小车进行运动控制。无线控制系统中通过I2C协议读取陀螺仪的姿态数据,即角速度值和角加速度值。处理时,将陀螺仪输出的角速度误差作为时变误差处理,认为陀螺仪输出的角速度误差与其所测角速度及上一时刻的角速度输出误差相关,并据此建立陀螺仪测量的线性方程,然后应用卡尔曼(Kalman)滤波算法,以加速度计输出的姿态角对陀螺仪测量的姿态角进行修正,从而达到姿态角准确测量的目的。
图8 MPU6050串口输出图
在不考虑误差的情况下,陀螺仪的输出的角速度与控制器的姿态角之间有如下关系:
式中 θ(k+1)和 θ(k)分别是k+1和k时刻陀螺仪测得的控制器姿态角,ω(k)为k时刻控制器在相应轴上的角速度,亦即陀螺仪所测角速度,Δt是系统采样周期,u(k)是系统过程噪声。然而式(1)是最基本的陀螺仪姿态角测量线性模型,实际应用中还应当考虑陀螺仪输出的角速度误差,考虑误差的陀螺仪测量模型为
式中e(k)是陀螺仪输出的角速度误差,可以认为是时变信号,其大小与陀螺仪所测角速度ω(k)和陀螺仪上一时刻输出的误差线性相关,即
其中β是陀螺仪输出误差e(k)和其输入ω(k)之间的线性系数。联合式(2)和式(3),可以得到修正后的陀螺仪测量模型
将式(3)和(4)联合可以得到如下公式
在此方程的基础上,设计Kalman滤波器,应用陀螺仪传感器输出的姿态角修正陀螺仪的姿态角测量误差,可以改善姿态角的测量精度[5]。
本设计中陀螺仪的测得的姿态角波形在卡尔曼数字滤波前后的波形对比如图9所示。
图9 卡尔曼数字滤波前后陀螺仪所测角度波形对比
陀螺仪由慢速运动逐渐转变为快速震动,对比图中滤波前后的曲线可以观察到,陀螺仪在慢速运动时,滤波前后的曲线基本一致,而在陀螺仪快速震动时,滤波前的曲线更为尖锐,经卡尔曼滤波后,曲线的变化幅度与变化速度均明显减小。这是由于加速度计在剧烈运动的时候易受高频扰动,应将尖锐的变化部分滤除,来避免高频扰动。
由图可以看出Kalman滤波的采用可以有效减少测量过程中的误差,进而提高无线控制系统对智能小车的运动控制性能。
2)无线NFR24L01模块收发功能测试
该部分功能测试的方法为;在发射端利用51单片机系统上的按键来控制接收端中的LED灯的状态。如果按键按下时,相应的数据能准确地点亮相应的LED灯,则收发功能正确,若按键按下时,LED仍处于熄灭状态,则收发功能对接失败。若该功能对接失败,可以分别观察两个NRF24L01模块中寄存器STATUS的值,如果数据发送成功,那么STATUS的值为0x2e,如果数据接收成功,则STATUS的值为0x40。通过实际中STATUS的值来判断是发射模块发射数据不成功还是接收模块接收数据不成功,然后根据相应的问题来对程序进行改动。
3)前两功能模块结合遥控测试
该部分功能测试方法为:在软件编写中对MPU6050输出数据的值定义为5种情况,输出值分别为 01,02,03,04,05。用 MPU6050 的值代替NRF24L01收发功能测试中的按键,当MPU6050中的值经过NRF24L01发送到接收端,接收端根据接收到的数据,点亮相对应的 LED灯,来观测MPU6050的值是否能够控制LED灯的状态。若该功能可以得到实现,再将程序中控制LED灯的语句换成控制小车状态的语句即可,当转动MPU6050时小车将进行不同的运动状态,从而实现利用MPU6050陀螺仪进行对小车的遥控功能。
本文所设计的无线控制智能小车的实物如图10 所示,其中图10(a)是无线控制系统,图10(b)是智能小车系统。经过对陀螺仪无线智能小车的调试,本文设计的陀螺仪无线智能小车实现以下功能:
(1)小车可以在陀螺仪遥控的控制下进行前后左右自由灵活地运动,具有控制便捷的优点。
(2)小车行驶前方有人时,小车自动停止,避免撞人,确保安全行驶。
(3)当小车前面有人以外的障碍物时,能绕过障碍物继续前进。
图10 陀螺仪遥控智能小车实物
5 结语
本文完成了基于陀螺仪的无线智能小车的设计与制作,系统实现陀螺仪控制系统对智能小车的无线控制,可以使智能小车完成前进、后退、转弯和漂移等动作,还可以灵活地躲避障碍。测试表明,该陀螺仪遥控效果稳定性好,灵活,智能小车运行稳定。