基于STM32平衡车控制算法的研究
2018-10-21蓝东浩王强吴司林
蓝东浩 王强 吴司林
摘要:平衡车作为近几年新出现的代步工具,它的技术还在不断完善和拓展中。为了单片机更精准对双轮平衡车的控制,本项目小组提出了基于32位单片机的平衡车控制算法的研究。平衡车的平衡原理是通过对车体自身姿态的解算,控制共轴平行双轮的相对独立运动保持平衡,平衡车控制系统由CPU、陀螺仪、姿态传感器、轮毂电机、电机驱动和蓄电池六大部分组成。STM32F103芯片作为最常用的32位单片机芯片,其数据处理速度和逻辑运算能力完全能够胜任平衡车控制算法的要求。
关键词:STM32单片机;平衡车;PID算法;陀螺仪
中图分类号:TN919.6文献标识码:A
双轮平衡车控制系统是一个集速度信息采集、姿态信息分析并加以处理控制的复杂系统,在达到车体动态平衡的同时,还能按照使用者的实时操作完成相应的动作,因此核心处理器应具有较强的数据处理能力和较快的响应速度。
1 平衡算法
平衡车最基本的功能是能够实现运动的动态平衡,也就是在启动后保持直立不倒,平衡车用负反馈实现对车体的平衡控制,当车身在重力方向上发生角度偏移,陀螺仪传感器能测出运动的角速度,通过积分算法将得到车体在竖直方向偏移的角度。本算法拟使用MPU6050陀螺仪传感器。MPU6050是整合性6轴处理器,结合陀螺仪与加速度计,相对于其他方案,完美解决了陀螺仪与加速器存在时间差的问题。该单片机系统是数字系统,因此采用离散型PID算法,PID算法是平衡车算法的核心算法,也是目前已知的连续系统中技术最成熟、调节效果最好、使用场合最广的精准控制算法之一。实际运用中使用灵活,PID算法将给定值与返回值的偏差按比例、积分、微分通过各自的调节系数进行函数运算。PID算法的另一个优点是允许比例、积分、微分各自调节系数为零。每个系统的电机参数,驱动电路都不同,因此PID调节系数也不同,对于平衡车系统,陀螺仪水平安装,给定值为陀螺仪的角度初始值,考虑安装偏差设置补偿角。程序:
int PID(float A)
{
Kie=Kie+(A+K);
Kde=(A+K)Kde;
pwm_num=Kp*(A+K)Kd*(Kde)+ki*(Kie);
pwm=(int)pwm_num;
return pwm;
}
2 速度控制算法
速度控制分为前进速度控制和转向速度控制,左右两轮速度差的大小和倾斜角成正比,当倾斜角增大,相应的速度差也应该越大。因为直立平衡控制中系统把速度控制和转向控制当作干扰,所以调节起伏过大将严重影响平衡。但平衡车匀速向前运动时不能直接利用倾斜角来判断速度大小,因为此时不能得出平衡车的偏移角。在平衡车控制系统中速度控制以及转向控制属于平衡车控制系统中的辅助控制。平衡车倾斜时,如图重力正交分解成轴向力F1和向前力F2,轮毂电机在地面以一定的速度v滾动时产生于F2方向相反大小相等的摩擦力f,达到新的动态平衡。轮毂电机带有霍尔编码器,STM32单片机只需采集编码器即可随时获取车轮的转速,车轮直径固定不变,可以求出车体速度,再将速度按速度比例加在平衡控制的期望值中。
3 电机驱动
运动过程中,STM32平衡车的轮毂电机独立运动,需要较快的响应速度,在惯性环节结束前动作,所以供电电源是影响整体性能的关键之一,较好的供电方案采用大功率MOS管,以桥式结构驱动,同时注意主控电路与驱动电路的隔离。
4 结论
STM32平衡车控制算法在实际工程运用中具有良好的适应性,针对不同的产品只需修改其中相应的参数,就能达到精确控制的效果。结合STM32库函数编程方式,能极大缩短产品的研发周期和快速检修故障。并且STM32F103单片机价格低廉,性价比高。适合产品大范围推广和生产。
参考文献:
[1]孙军,万明伦,吕博,等.平衡车机电控制系统建模与仿真[J].机械与电子, 2010,2010(10):3437.
[2]张志强.基于STM32的双轮平衡车[J].电子设计工程,2011, 19(13):103106.
[3]张吉昌,程凯,郑荣儿.单轴双轮自平衡车姿态检测方案设计[J].中国海洋大学学报(自然科学版),2009(s1):467470.
[4]赖义汉,王凯.基于MPU6050的双轮平衡车控制系统设计[J].河南工程学院学报(自然科学版),2014,26(1):5357.
[5]刘二林,姜香菊.基于卡尔曼滤波的两轮自平衡车姿态检测[J].自动化与仪器仪表,2015(2):5254.
[6]胡建,颜钢锋.基于自抗扰控制算法的两轮自平衡车分析[J].机电工程,2014, 31(2):159164.