基于STM32的两轮自平衡遥控小车设计

2016-12-17 08:35张建强杨标刘毅徐建
科技视界 2016年26期

张建强 杨标 刘毅 徐建

【摘 要】两轮自平衡小车作为一种新型的交通工具,其驾驶的方式新颖,深受年轻一族喜爱,且由于是采用的电力驱动,属于清洁能源,对于缓解日益严重的大气污染、能源危机和交通拥堵问题,是一种比较好的解决方式,同时由于两轮自平衡小车的结构不稳定性,给控制的算法提出了很大的挑战,同时由于这个原因平衡车也成为了一种检验控制算法的良好平台。本平衡车使用STM32单片机作为控制核心,通过电机编码器与陀螺仪实时获得小车速度与姿态数据,运用PID控制算法使得小车能够保持平衡。

【关键词】两轮平衡;STM32单片机;PID

【Abstract】The two wheeled vehicle is a new type of vehicle,driving the novel,by young people love,and because it is the driving power,a kind of clean energy,to alleviate the increasingly serious air pollution,energy crisis and the problem of traffic congestion,is a relatively good solution at the same time,due to the structure of self balancing the car two rounds of instability,is a great challenge to the control algorithm,and for this reason the balance of the car has become a good platform to test the control algorithm.Using STM32 microcontroller as control core,real-time access to vehicle speed and attitude data through the motor encoder and gyroscope using the PID control algorithm makes the car to maintain balance.

【Key words】Two wheel balancing;STM32 single chip microcomputer;PID

0 引言

随着我国工业化的不断的推进,国民生产力不断提升,同时自动化控制技术也在不断发展,由于生活节奏也不断的加快,人们急需一种能够在小区,家中,室内场馆行驶的小型代步工具。同时又由于化石燃料大量消耗导致是有紧缺的今天,人们也开始使用较为清洁的电能。因此在这种情况下,两轮自平衡小车由于它时尚、小巧的外形,新颖的驾驶方式,全新的骑行体验,受到青年的欢迎。两轮平衡车具有较大的市场前景,因此研究两轮自平衡小车也就有了它的必要性。

1 系统总体设计

本系统包括了电机驱动电路、电机编码器模块、供电模块、陀螺仪模块、单片机处理控制模块等复杂模块。系统总体框图如下图1所示。

小车整体使用STM32F103ZET6作为控制核心,使用MPU6050六轴陀螺仪作为姿态获取传感器,由于控制使用的是闭环算法,所以使用高精度磁编码器作为小车两轮速度采取传感器,该编码器具有较强的抗干扰能力。电机驱动选择是使用东芝半导体生产的直流电机驱动TN6612FNG,相对于传统的L298N电机驱动,TB6612FNG具有外围电路简单,且支持的PWM调速频率更高,同时也有利于减小系统的尺寸。

2 系统硬件设计

两轮平衡车采用MPU-6050来获取小车实时姿态信息,将信息上传给单片机,由单片机处理数据,通过超声波模块可以让小车与障碍物一直保持在一定的距离,以实现超声波跟随功能。通过蓝牙接受遥控小车的运动。

2.1 最小系统的设计

本两轮平衡车采用控制最小系统控制芯片是使用的STM32F103ZET6单片机,芯片的所有引脚全部引出,有利于其他功能的扩展,下载程序采用了UART与SW调试接口,便于程序的调试。并且在制作的过程中预留了蓝牙模块接口与超声波接口,既方便安装固定,也增加系统的重心的稳定性,最小系统负责将电机编码器和MPU-6050所传来的数据进行处理,并根据得到的结果控制电机做出相应的动作。

2.2 供电模块的设计

系统使用12V锂电池供电,工作时的电流能够满足直流减速电机电流需求,由于单片机等其他的器件采用5V供电而且功耗较小,所以使用LM2596可调降压模块将12V电压转化为5V,供单片机、MPU-6050、蓝牙模块等传感器使用。以保证系统的正常运行。

3 系统软件设计

3.1 软件设计流程

软件设计主要包含:电机编码器与陀螺仪信号的采集与处理,调节PWM输出改变电机状态,使得小车达到平衡、行走、转弯等功能。软件主要是倾角PID与速度PID。软件设计流程如图2所示。

首先是各个传感器的初始化,初始化完成后,通过IIC通信协议从MPU-6050读取姿态数据,以10ms为一个周期读取MPU-6050角速度寄存器中的值,同时对读到的数据进行互补滤波,然后进一步进行姿态结算,从而得到小车实时的姿态信息。对于电机编码器得到的脉冲使用STM32的输入捕获模式,捕获周期为60ms,从而得到电机速度。通过PI,PD算法结合,对电机转速进行脉宽调制,从而达到让小车原地平衡、行走平衡的目的。并且当小车倾斜的角度大于30度时,由于角度太大小车难以平衡,这时会让电机停止转动。

3.2 互补滤波算法

互补滤波就是通过不同的滤波器(高通或低通),然后相加得到整个频带的信号。对于陀螺仪互补滤波就是在短时间内采用陀螺仪得到的角度认为最准确,利用定时对加速度获得的角度进行取平均值来校正陀螺仪的得到的角度。简言之,短时间内角度使用陀螺仪;长时间用加速度计比较准确,随着时间的增多加大加速得到的数据的比重,这就是对于陀螺仪的互补滤波了。

3.3 PID控制算法

在本小车中控制PID控制算法分为角度环(PD)和速度环(PI)。

程序设计中,控制PWM输出的角度环的方程为:

OUT_PWM1=Angle_P×Angle_Q+Angle_D×Angle_S

式中的OUT_PWM1为PD控制计算得到的控制PWM,Angle_Q为反馈得到的角度值,Angle_S为反馈角速度。Angle_P与Angle_D分别为比例系数与微分系数。

程序设计中,控制PWM输出的速度环的方程为:

OUT_PWM2=Speed_P×Speed_S+Speed_I×Speed_E

式中的OUT_PWM2为PI控制计算得到的控制PWM,Speed_S为电机速度,Speed_E为反馈速度误差的累积值。Speed_P与Speed_I分别为比例系数与积分系数。

最后通过PI与PD计算得到的便是电机需要的PWM值,其方程为:

OUT_PWM=OUT_PWM1+OU_PWM2

3.4 PID参数调整

在让I,D输出为0的情况下,去调节P,选择适当的P值让车体基本保持平衡,保证没有较大的晃动或。然后调整D,适当的D值,合适的D值能够增加小车的稳定性,D可以很小,如果D值较大会导致小车剧烈的抖动导致电机驱动烧毁。I参数的调节相当于是对P值很小误差下的一个补偿,若I值过大,补偿过多会导致小车前后大幅度晃动,导致小车无法维持平衡。

4 结语

系统使用STM32F103ZET6单片机作为控制芯片,使用MPU-6050为姿态获取传感器(IIC通信协议),通过电机编码器获得小车速度(STM32输入捕获模式),通过单片机使用PID算法得到PWM值从而达到控制电机转速的目的,使得小车达到平衡,并且使用蓝牙模块使得单片机能够与手机通信,使用手机可以控制小车运动。在姿态获取滤波方面没有采用卡尔曼滤波而是采用较为简单的互补滤波。由于使用了PID算法,拥有速度反馈,能够使小车在一定的干扰下能够保持平衡。

【参考文献】

[1]季鹏飞.基于STM32的两轮自平衡小车控制系统设计[J].电子科技,2014,27(11):96-105

[2]徐升.全数字直流脉宽调速系统及其模糊控制算法[J].华中科技大学,2006.

[3]林忠海.基于单片机的两轮自动平衡小车设计[J].科技创新与生产力,2013(2):90-92.

[4]陈波.基于神经网络PID控制的两轮自平衡小车研究[D].西南交通大学,2014.

[5]李满.基于积分分离PID控制的自平衡车设计[J].武汉交通职业学院学报,2016,18(2):82-86.

[6]梁光胜,杜梦楠.基于互补滤波的两轮自平衡车姿态控制[J].测控技术,2015,34(5):72-74.

[7]薛伦生,舒涛,戴新生.基于单片机控制的小车平衡系统设计[J].电子测量技术,2009,32(5):85-87

[责任编辑:田吉捷]