陈柔 刘寅生*沈阳工学院
基于STC12C5A60S2单片机的双轮自平衡小车控制系统设计
陈柔 刘寅生*
沈阳工学院
摘要:本文介绍了由单片机STC12C5A60S2、6轴集成姿态传感器MPU6050、电机驱动模块TB6612FNG等构成的双轮自平衡小车控制系统构成,软件部分应用了卡尔曼滤波方法与PID控制算法,实现双轮平衡小车的直立与行走。
关键词:双轮自平衡小车 姿态传感器 卡尔曼滤波 PID算法
双轮自平衡小车的总控制系统由微理器(STC12C5A60S2)模块、姿态传感器(MPU6050)模块、蓝牙模块(HC系列)、电源模块、电机驱动模块(TB6612FNG)及速度检测模块等组成。姿态传感器主要采用MPU6050,用于采集小车的角度和小车的角速度信息;选用宏晶科技有限公司的STC12C5A60S2单片机作为主控芯片。
传感器MPU6050是全球首个将陀螺仪与加速度计整合集成的运动处理组件,相对于较多组件的方案,免除了组合陀螺仪与加速度计之间的轴差问题,减少了大量的封装空间。
系统采用控制算法是PID控制,通过卡尔曼滤波整合车体角度、角速度、车体速度和位置等参数,输出PWM信号驱动电机,产生相应的力矩,从而使小车达到平衡。
双轮平衡小车的两个直流减速电动机由TB6612FNG驱动模块驱动。TB6612FNG是东芝半导体公司生产的一款直流电机驱动器件,是一款新型驱动器件,它具有很高的集成度,同时能提供足够的输出能力,运行性能和能耗方面也具有优势。因此,在集成化、小型化的电机控制系统中,它可以作为理想的电机驱动器。
速度检测方面选择在电机上装一个编码盘,整合数电电路,使码盘直接输出数字信号便于MCU使用。
在双轮平衡车的控制系统中,程序的功能主要是为了采集与分析来自传感器的信号以及产生PWM信号用于对电机的控制。数据处理过程如图2所示。
图2 数据处理框图
在软件中主要定义了以下函数:
⑴小车角度计算函数,根据MPU6050采集到加速度与角速度计算出小车电机的角度,这里可以直接调用MPU6050输出的数据,也可以自行使用一些滤波算法进行数据融合。
⑵小车直立控制函数,根据小车角度和角速度计算车模电机的控制量。
⑶小车速度控制函数,根据小车采集到的电机转速和速度设定值,计算电机的控制量。
⑷方向控制函数,根据车模采集到的左右两个编码盘的数值计算出角度控制的量。
⑸电机输出量汇集函数,根据前面的直立控制、速度控制和方向控制所得到的控制量进行叠加,分别得到左右两个电极的输出电压控制量。对叠加后的输出量进行饱和处理。
⑺电机PWM输出计算函数,根据左右两个电极的输出控制量的正负极性,叠加上一个小的死区数值,克服车模机械静态摩擦力。
⑺PWM输出函数,根据两个电机的输出量,计算出PWM控制寄存器的数值,设置四个PWM控制寄存器的数值。
本文主要论述了双轮自平衡小车控制系统的设计过程。控制器采用STC12C5A60S2芯片,采用MPU6050芯片为姿态传感器,应用了简单的卡尔曼滤波与PID控制算法。在调试中逐步测定各个微分、比例、积分环节中的系数值,实现了双轮自平衡小车的动态平衡与运动控制。
参考文献
[1] 赵杰,王晓宇等.基于 UKF 的两轮自平衡机器人姿态最优估计研究[J].机器人. 2006: (11),605—609.
[2] 王艳秋.自动控制原理[M].北京:清华大学出版社,2009.
[3] 谭浩强.C 程序设计[M].北京:清华大学出版社,2005.
[4] 秦永元,张洪钺.卡尔曼滤波与组合导航原理[M].西安:西北工业大学出版社,1998.
*通讯作者:刘寅生