王鹏
摘 要:本论文以两轮自平衡车的控制系统为主要的研究对象,以两轮自平衡车能够自主稳定站立与运行进行整体的研究与设计。对两轮自平衡车进行了数学建模,并进行仿真与分析,为控制系统提供了理论基础。选择了以STM32F103C8T6单片机为主控制器,MPU6050作为姿态的检测,TB6612为驱动器,HC06蓝牙模块为无线传输的方案。硬件设计主要包括了主控制器的电路、MPU6050电路、驱动电路、蓝牙电路、电源电路以及电源电压检测电路等等。软件设计主要包括PWM的软件设计和算法的软件设计。对姿态的解算中卡尔曼滤波算法和PID算法进行了详细的介绍,PID算法主要包括了小车的三种方式:平衡PD、速度PI、方向PD的控制算法。最后对各个模块进行验证,通过调试小车基本能完成前、后、左、右运动。
关键词:自平衡;STM32F103C8T6;卡尔曼滤波;PID
中图分类号:TP242 文献标识码:A 文章編号:1671-2064(2018)18-0043-03
1 概述
对于当今社会的发展状况来说,在一些特殊的领域中,移动机器人的研究变得越来越具体和进步。当仅仅允许一些设备在凹凸不平的地面上行走以及在一些狭窄的环境运行时,就要对两轮平衡车进行研究了。两轮自平衡机器人是具有环境感知、动态决策规划、行为控制以及执行功能的特点,本文主要是通过数学建模的方式为调试部分提供一定的理论基础,通过系统软、硬件的设计以及调试使小车能最终实现前进、后退、左转、右转的功能。
2 数学建模及Matlab仿真
小车模型的数学分析,其模型如图1所示,小车的质量为m,受到的重力为mg,小车的重心高度为l。小车在外力的状态下的角加速度为X(t),轮子的加速度为a(t)可列出微分方程:
(1)
当角度β很小时,,,a(t)=0,这时将微分方程简化。为保证系统是稳定的,加入反馈环节,给小车一个加速度,传递函数H(s):
(2)
注意:。
利用Matlab进行仿真,调节两个参数时,用的是控制变量的方法,调节小车时考虑到反应时间、速度的大小等。为了找出规律,首先给的干扰信号一定以及确定一个的值,然后调节的值,过小时,角度会发生振荡的变化;接近但又小于准确值时,会出现超调的现象;过大时,角度自恢复的时间会变长,如图2所示,通过对比发现随着的增大,角度自恢复时的幅值会变小[1-2]。
为了找出合适的反应时间,可以改变的值。而仅仅改变的值时,调大时角度的波形又会超调或者振荡;调小时反应时间会变长,如图3所示,通过对比发现随着值的增大,角度自恢复时的幅值也会变小。想得到更短的反应时间就必须调大的值,这时也要相应的增大的值。由于的值大于2时就会有毛刺,波形也基本上稳定不了,所以的值不能超过1。
通过以上的分析可以得出:的值应在0-2之间,的值应在0-1之间。、分别表示为比例系数、微分系数或积分系数,本系统的平衡控制、速度控制、方向控制刚好可以利用这种方式最终调节小车电机的PWM,这种控制方式可以称为PID控制,整个系统主要就是根据小车的角度与角速度来对小车进行调节。
3 系统总体方案设计
3.1 总体方案设计
采用STM32 F103 C8T6做主控制器来对各种数据进行处理;MPU6050进行姿态的检测;TB6612FNG芯片来驱动电机;HC06蓝牙来控制平衡车的几个动作;锂电池对小车的整个系统进行供电,整个系统的结构框图如图4所示。首先要给整个系统进行供电,当小车出现倾倒时,主控制器STM32F103C8T6通过IIC的方式读取由MPU6050模块测得的小车的角度与角加速度,然后STM32进行数据的处理在通过驱动模块来驱动两个电机使小车达到平衡。STM32读取编码器的位移来测得小车的速度,从而达到小车能够前进、后退、左转、右转。而上位机是通过蓝牙模块来进行控制小车的运行状态[3-5]。
3.2 驱动电路设计
TB6612的PWM引脚是直接与STM32的PWM端相连的,具体的作用是通过改变PWM波的占空比来控制电机的速度。VM的供电电压在12V以内,其中加两个电容主要是对其进行滤波。而电容是对5V的电压滤波使其更稳定,如图5所示。
4 系统软件设计
4.1 单片机软件设计
整个系统软件涉及到了定时器,时间一到,定时器就开始执行,串口接收中断也是一样的。由于小车的姿态的获取、编码器数值的获取、算法的实现、PID控制以及电机的PWM都需要在中断的条件下进行的,在进行编程的时候需要对定时器是否计时完成进行判定,从而再执行具体的功能,如图6所示[6]。
4.2 PID控制软件设计
本文采用的主要是平衡PD控制、速度PI控制以及转向PD控制。在第二章是已经讲述了、分别表示为比例系数、微分系数,所以在得到角度与角速度的稳定值后就可以直接得出一个PWM值了,但是在实际中有考虑车身重心角度所带来的影响。在进行平衡控制的时候小车也能直立,但是系统本身存在稳态误差,小车会不停地摆动,要解决这个问题就必须加上速度反馈来补偿稳态误差。这里要注意由于车轮的速度反馈信号中往往存在着噪声,对速度进行微分运算会进一步加大噪声的影响,所以不能应用微分运算。通过测量小车摆动时的速度以及位移,利用比例积分的方法减小稳态误差,使小车静止在一点。这时需要编码器来测量车轮的速度,然后经过积分得到位移。平衡时车轮的速度与位移所得到的PWM可以使小车稳定在一个小的范围内[7]。整体控制如图7所示。
5 系统调试
本系统由于MPU6050所得到的角度与角速度是不稳定的,所以要利用卡尔曼滤波器进行滤波处理。这里主要调试的是过程噪声的数值,过程噪声的值接近0,如果调大一点就会超调。图8所示是滤波前与滤波后的角度波形的对比。
在对小车的平衡进行调试时,运用试凑法的方式P、D两个参数进行设定。在第2部分时,已经得到了的值应在0-1之间,当g取,l取0.05m,所以k1得值大约为200,k2的值大约为0-2。调节P的大小,P大约为200时给小车一个倾角的时候,它会向倾斜的方向运动。这时,然后就要增加D的值了,直接把D增加到小车抖动时,再改变P的值,就这样一个一个试下去,最后找到小车稳定时的P、D值(304,1.1)。但是这样小车会来回摆动,所以要加上速度的PI调试,让小车能在一个很小的范围内静止,最后经过大量的数据验证,得到了一个合适的P、I值(91,0.4)。对着四个参数调试小车就能够平衡了,使它能够前进就很简单了,只需要把两个蓝牙接收的指令添加进去就可以了。为了让小车能够转向,也要用到PD控制,主要控制两电机的速度差就可以了,调试的方式与上面的一样,得到的P、D為(42,0.58)。
6 结语
总的来讲,设计已经基本上能够满足要求。本论文的重点是数学建模,从而找出合适的比例、微分系数。而系统硬件、系统软件的设计以及调试使小车能够最终实现前进、后退、左转、右转的功能。PID调试的时候需要大量数据的验证,这一步操作十分的麻烦,很难调到一个理想的状态。平衡PD、速度PI的调节是小车自主站立以及前进后退,转向PD的调试使小车能够做左右转弯的动作。两轮自平衡车目前只能实现一些基本的功能,仍然有很大的发展空间,由于时间紧迫,原本的好多想法也没能完成,比如说在小车上加上其他的功能。还有就是在硬件的选型上,用的都不是有高性能的芯片,比较容易出现问题。小车的稳定性能也不是太好,一些算法也有待提高。
参考文献
[1]王振运.基于RT-Thread和STM32的双轮自平衡机器人的设计与实现[D].中北大学,2016.
[2]张明路,丁承君,段萍.移动机器人的研究现状与趋势[J].河北工业大学学报,2004,(2):110-115.
[3]陈波.基于神经网络PID控制的两轮自平衡小车研究[D].西南交通大学,2014.
[4]丁凤一种新型两轮自平衡小车的建模与控制[D].华中科技大学,2012.
[5]付梦印,邓志红.Kalman滤波理论及其在导航系统中的应用[M].第二版.北京:科学出版社,2010.
[6]谭文龙.一种改进的二级倒立摆LQR控制器参数优化方法[J].重庆理工大学学报(自然科学),2012,(3):85-88.
[7]徐国保,尹怡欣,周美娟.智能移动机器人技术现状及展望[J].机器人技术与应用,2007,(2):29-34.