基于STM32的模块化平衡车设计
2017-04-15方晓毅丁浩王睿麟裴彤
方晓毅,丁浩,王睿麟,裴彤
基于STM32的模块化平衡车设计
方晓毅,丁浩,王睿麟,裴彤
(常州工学院电气与光电工程学院,江苏常州,213000)
介绍了一种基于模块化设计的两轮自平衡小车,分析了系统软硬件模块和调试过程。为了增强系统灵活性,设计了上位机和手机应用,对小车姿态数据进行实时显示、对系统参数进行实时调节。实践表明,模块化设计的自平衡小车控制稳定,调试方便,扩展灵活。
平衡车;模块化;STM32
0 引言
两轮自平衡车以单级倒立摆模型为基础,控制方法具有很强的灵活性,是当前比较热门的实验研究平台。两轮自平衡车系统结构具有传统的一阶倒立摆的特性,其动力学系统具有多变量、非线性、强耦合等综合特性,受力可以看成在左右平台上移动的倒立着的单摆。平衡车属于同轴平行布置的结构,两个车轮轴连接在一根轴线上,依靠两轮电机驱动,为自平衡车提供动力。单片机通过姿态传感器测量车体倾角,调节两轮电机的转速和转向从而使车体保持直立、转向和运行。
1 系统硬件设计
两轮自平衡小车模块化硬件电路主要由STM32最小系统模块、姿态传感器模块、直流电机驱动模块、串口蓝牙模块、无线WIFI模块、电源模块等构成。为便于调试和扩展,所有模块通过接插件在一块主板上连接。
STM32最小系统模块由STM32芯片、OLED显示器、LDO稳压器LM1117-3.3、USB转串口芯片CH340、LED、KEY组成。程序下载、串口通讯可以由USB进行,预留SWD四线调试接口。姿态传感器模块采用内部集成3轴陀螺仪、3轴加速度计的传感器MPU6050。电机驱动模块采用双路直流电机驱动芯片TB6612。串口转蓝牙模块采用HC-06模块。串口转WIFI模块采用HC-11模块,控制器通过增量式编码器采集电机速度信息,电源模块采用LM2904-5V芯片将8V锂电池转成5V。软件IIC实现,通过读取其内部寄存器,读出三轴加速度传感器和三轴陀螺仪数据。平衡车只在一个轴上是不稳定的,所以只要测量其中一个方向上的加速度值,就可以计算出车模倾角。陀螺仪测量的是运动物体的角速度,将角速度积分也可以得到角度。但由于陀螺仪的积分有累积误插,加速度计输出叠加有波动噪声,故需要采用相关算法进行角度的解算。姿态角度的解算有互补滤波、卡尔曼滤波、dmp读取等好几种方法,各有优缺点。
2.2 运动控制模块
小车的运动控制,包括直立控制、速度控制和方向控制。都在中断程序里面执行,三种控制中直立控制是关键,在控制其它量时,必须尽量减少对直立控制的干扰。
直立控制函数,也叫角度环,是平衡车里面最重要的控制闭环,使用PD控制,即每次根据角度偏差和角速度偏差分别进行比例P和微分D控制。在定时器中断中每5ms执行一次。
速度控制函数,也叫速度环,在直立控制中,速度值设定为0,以辅助角度环进行平衡控制。速度环的控制用PI实现,即根据当前速度值和设定值0的偏差进行比例P控制,根据速度值的偏差累积做积分I控制。为减少速度控制对直立控制的影响,对速度采集进行低通滤波,并且在定时器中断中每50ms执行一次。
方向控制函数,也叫转向环,由于对转向要求不高,采用以Z轴陀螺仪的数据作为转向速度偏差的比例P控制实现。在定时器中断中每50ms执行一次。
2 系统软件设计
2.1 MPU6050姿态传感器模块
2.3 上位机通讯模块
在平衡车的调试过程中,我们用labwindowsCVI开发了用于监测平衡车实时状态的实时监测系统,将姿态角、速度、电压值等传感器参数传递到上位机,姿态角以波形曲线直观显
控制器通过IIC接口与MPU6050通讯,可以用硬件IIC或者示,并实现了利用上位机读取和修改平衡车的PID参数,大大提高了调试效率。上位机和下位机通讯连接使用无线串口模块连接,LabwindowsCVI利用RS-232函数库对串口进行打开关闭、读取发送等操作。
2.4 手机App模块
在平衡车程序调试的过程中,很多时候需要脱离电脑运行,这时候通过OLED屏幕或者上位PC机进行参数的检查和调试,都很不方便。如果我们能将手机作为平衡车参数的显示和修改工具,无疑将极大地方便控制和调试工作。由于Android的APP编程比较麻烦,要搭建开发环境,要熟悉SDK开发包,要学JavaScript等,而我们这里只需要传递、修改几个下位机参数,显然是牛刀杀鸡了。这里我们使用的是AppInvent。
2.5 OLED信息显示模块
OLED因为具备轻薄、省电、响应速度快于TFT、价格便宜等特性,应用越来越广泛。控制器通过SPI接口和OLED显示模块相连,实现了电量、角度、PID参数等信息显示。
2.6 电机测速和调速模块
电机的测速使用的是STM32的定时器T2和T4的正交编码模式,对电机的增量式编码器进行数据采集。电机的调速通过定时器T1的PWM模式,利用PID计算得到的PWM数据对电机进行调速。
3 系统调试
首先,利用上位机或者手机app进行各模块的独立调试,包括通讯协议处理、姿态传感器的角度融合算法、电机PWM控制调节等。然后,进行小车的PID调试。在调试直立环的时候,为了屏蔽掉速度环和方向环的干扰,必须先将速度环和方向环的控制输出关闭。
4 结语
本文介绍了一种基于模块化设计的两轮自平衡小车,分析了系统的软硬件模块和调试过程。为了增强系统灵活性,利用虚拟仪器软件LabwindowsCVI设计了上位机和Appinventor设计了手机应用对小车姿态数据进行实时显示、对系统参数进行实时调节。实践表明,模块化设计的自平衡小车不仅控制稳定、调试方便,而且在此基础上可以很容易增加其它传感器接口。
[1]赵韶华,黄金明,刘鹏等.倒立摆理论在直立自平衡智能车系统中的应用[J].电子技术,2014.2.
[2]刘二林,姜香菊.基于PD算法的两轮自平衡车直立控制[J]自动化与仪器仪表,2015.1.
Design of modular balancing vehicle based on STM32
Fang Xiaoyi , Ding Hao, Wang Ruilin, Pei Tong
(School of electrical and opto electronic engineering,Changzhou Institute of Technology,Changzhou Jiangsu,213000)
This paper introduces a kind of self balancing vehicle modular design based on the two, analyzes the software and hardware modules and debugging process. In order to enhance the flexibility of the system, the design of the host computer and mobile phone applications, real-time display of vehicle attitude data, the parameters of the system real-time control. Practice shows that the modular design of self balancing vehicle control and stability, convenient adjustment, flexible expansion.
balance ;car modular ;STM32
江苏省大学生创新训练指导项目S2016041