当前位置:首页 期刊杂志

基于STM32的蓝牙自平衡小车

时间:2024-04-25

屈德华 邓鹏文 曾渝 魏虎

摘要:本设计是在自平衡小车直立的基础上,设计一个可以控制其移动的二轮平衡小车,实现自主直立平衡和APP控制其移动。以STM32F103RCT6单片机作为主控芯片,使用集成了3轴陀螺仪和3轴加速度计的六轴运动处理传感器MPU6050作为姿态传感器,这里用卡尔曼滤波算法对采集的数据进行融合处理,来减小数据的不准确性和不稳定性,通过TB6612FNG电机驱动芯片来驱动两个大功率直流电机,在直立和移动控制方面,采用倾角和角速度反馈,以串级PID控制来实现平衡小车的直立平衡和移动,通过蓝牙模块,可实现手机APP对其进行控制。

关键词:STM32;蓝牙;PID控制;自平衡小车;卡尔曼滤波

最近几年,自平衡小车在美国、日本、瑞士等国是研究热点,设计出了多个实验机型,提出很多平衡控制方案,对实验机型的平衡性能与运动特性进行了测试验证。通过在两轮自平衡系统的基础上进行二次开发,可以在很多环境中得到应用,比如承载、代步、运输、环境监测等,再加上微电子、集成电路的发展使得自平衡小车的生产成本降低了很多,所以说自平衡小车系列的商业化产品有很好的发展前景。

1 自平衡小车原理

自平衡小车的直立、速度和转向控制都是直接通过控制两个直流电机完成,小车前倾是车轮要往前运动,小车往后倾需要往后运动,让小车保持平衡。由于转动惯量是客观存在的,为了让小车静止在平衡位置附近,不仅需要在电机上施加和倾角成正比的回复力,还要增加和角速度成正比的阻尼力,阻尼力和运动方向相反。因此需要测量平衡小车的角度偏差和角速度,控制小车的速度来完成直立控制。角速度通过六轴运动传感器内置陀螺仪测出,并且不受运动影响。内置加速度计测出在X、Y、Z轴的一个方向上的加速度值通过反正切函数就可以计算出小车的倾角。由于无法彻底消除运动加速度对角度测量的影响,需要联合陀螺仪测出的角速度通过积分获得的倾角,再使用卡尔曼滤波算法,将两个倾角值数据进行融合产生一个更为准确和稳定的倾角数据。将得到的倾角数据和角速度来控制小车,并和测得的电机的速度信息结合实现消除角度偏差形成闭环控制。

2 系统方案设计

本次设计采用STM32F103RCT6作为主控芯片,通过获取MPU6050传感器获取的Y轴的角度和加速度信息,并且经过用卡尔曼滤波对角度和加速度信息进行滤波来产生控制信号,控制方式采用模糊PID控制,通过将控制信号PWM波输送到TB6612去驱动电机,电机再将自身的运动数据传回来给STM32,STM32再根据控制要求对自平衡小车的姿态不断的进行调整,最终形成一个闭环的控制。然后手机通过在APP中蓝牙连接至自平衡小车上蓝牙模块进行通信,传输运动信息和控制信息。

3 系统硬件设计

3.1主控芯片

本系统选用STM32F103RCT6作为主控芯片,该芯片内核是ARM 32位的Cortex-M3,芯片集成多个定时器,可输出多路PWM信号是的电机驱动模块获得稳定的PWM波形,另外还集成了SPI,I2C,USART等多种通信接口,方便与MPU6050、蓝牙以及OLED屏进行通信。

3.2电机驱动芯片

TB6612FNG是东芝半导体公司生产的一款直流电机驱动器件,它具有大电流MOSFET-H桥结构,双通道电路输出,可同时驱动2个电机。本设计通过主控芯片输出两路PWM波给TB6612FNG芯片去驱动直流电机,调节PWM波的占空比来控制电机的速度,同时主控芯片通过两个引脚去控制电机转向。

3.3无线传输模块

本次设计所选取的无线传输芯片是蓝牙模块 HC06,它是主从一体化的串口传输的无线通訊模块。通过手机蓝牙APP连接至HC06蓝牙模块上,然后手机产生一系列的控制信号通过蓝牙传输给平衡小车的主控芯片,主控芯片经过识别解码,再对平衡小车进行前进、后退、转弯控制。

3.4 姿态检测传感器

姿态检测是整个控制系统中比较重要的环节,它的数据的即时性和准确性直接影响着整个系统的稳定情况。在本次设计中姿态检测芯片选择的是一款集成三轴加速度和三轴角速度的六轴传感器 MPU6050,并且MPU6050内部集成一个内部 DMP。

4 软件设计

4.1系统主程序设计

首先在主程序中进行初始化声明、系统时钟定义。然后采集小车的速度信息和角度信息再进行滤波融合处理,通过PID控制输出相应的PWM信号控制电机转动,达到平衡状态。姿态角检测模块MPU6050与主控芯片是IIC通讯,获得来自小车的三轴陀螺仪信号和三轴加速度计信号。磁力计与MPU6050通过IIC连接,与陀螺仪和加速度计共同作用。小车车速的检测是通过编码器采集到的信息转化成对应的速度值大小实现的。单片机通过定时器捕获脉冲信号和输出电机驱动PWM波。

系统初始化完成后,系统等待MPU6050初始化完成,直到MPU6050初始化完成时,OLED被点亮显示卡尔曼滤波模式、左右电机速度、MPU6050内部温度、电池电压以及自平衡小车自身倾角。OLED屏幕上显示的数据是实时更新的,等待按下启动按钮,当按下启动按钮时,自平衡小车自动进入直立平衡模式,保持自身的直立状态,若有手机通过蓝牙连接至自平衡小车,则进入控制模式,控制模式是在直立模式的基础上完成的,并且可以完成转弯,前进和后退动作。

主程序的主循环里面主要是对显示的控制,选择是否将数据更新到连接到小车的手机APP上面。然后程序中所有任务的调度都是在外部中断服务程序中执行。

4.2 滤波和控制算法

平衡小车获取姿态角的滤波算法一般为卡尔曼滤波和一阶互补滤波。但是 MPU6050 内置的 DMP 可以直接输出和姿态相关的四元数。所以,常用的有三种方法可以获取角度。根据长时间的实践,以DMP 输出的四元数表示的角度和卡尔曼滤波最为稳定。互补滤波的效果稍差,但也是很不错的。最终采用的是卡尔曼滤波。

直立控制:PD控制,这是最核心的控制,其他的控制都是相对直立控制而言都是干扰。速度控制:PI控制对编码器信息进行低通滤波可以削弱电机控制的比重,提高系统稳定性。转向控制:PD控制结合了Z轴陀螺仪PD控制。

5 设计总结

系统设计过程中要考虑到主芯片STM32的资源分配,根据传感器的控制端口类型以及所支持的接口协议,分别来设计各个传感器与主芯片STM32的端口对接。硬件调试的思路,首先是分模块调试,再完成系统实现。难点有:MPU6050的数据的采集和处理,PID控制方式的理解和实现以及PID参数的调试。通过调试前对PID控制原理和各参数的物理含义有基本的理解,然后在进行PID代码原理实现以及PID参数调试,在调试的过程中逐步理解PID。

参考文献:

[1]李红美,李智,高飞.平衡的杰作——赛格威FIT两轮平台电动车[J].电器工业.2002, (6):19-21.

[2]屠运武,徐俊艳,张培仁.自平衡控制系统的建模与仿真[J].系统仿真学报.2004(04).

[3]王晓宇,闫继宏,臧希喆等.两轮白平衡机器人多传感器数据融合方法研究[J].传感器技术学报.2007.

[4]赵杰,王晓宇,秦勇等.基于UKF的两轮自平衡机器人姿态最优估计研究[J].机器人.2006: (11)

[5]付梦印,邓志红,张继伟.Kalman 滤波理论及其在惯性导航系统中的应用[M].第二版.北京:科学出版社,2010.

作者简介:

屈德华(1995-),男,汉,四川泸州,本科,研究方向:信息工程。

邓鹏文(1998-),女,汉,四川达州,本科,研究方向:信息工程。

曾渝(1998-),男,汉,四川德阳,本科,研究方向:电气工程。

魏虎(1995-),男,汉,四川绵阳,本科,研究方向:通信工程。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!