APP下载

基于STM32的两轮自平衡小车研究

2017-04-25赵磊

数字技术与应用 2017年1期
关键词:卡尔曼滤波

赵磊

摘要:本文以STM32单片机为核心控制器,以MPU-6050为姿态读取模块,实现两轮自平衡小车的设计,能够使小车的控制效果得到提高,以电池为电源,设计两轮自平衡小车的硬件和软件设计;用卡尔曼滤波算法作为数据的平衡滤波,用PID算法作为控制算法,提高控制精度,从而设计和实现了小车的自平衡。

关键词:STM32;自平衡;卡尔曼滤波;PID

中图分类号:TP273+.4 文献标识码:A 文章编号:1007-9416(2017)01-0035-02

微控制器STM32的内核为Cortex-M3,CPU为32位,存储器为SRAM,大小为6-64kB。以STM32为基础,实现对姿态检验传感器等系统各方面数据的控制,能够使小车的姿态更加合理,控制精度高,控制速度快。

1 基于STM32的两轮自平衡小车的硬件设计

基于STM32的两轮自平衡小车的硬件设计包括电源模块、主控制器模块、姿态读取模块与驱动模块四个部分。

1.1 电源模块

电源提供是两轮自平衡小车行驶的动力支撑。本设计以电池作为电源,为小车的行驶提供能量[1]。小车电机电压须要12V,拟用3节3.6V的锂电池作为电源。

控制器STM32和MPU-6050均需要3.3V电压支撑。本设计以3节锂电池的12电压进行降压供电。采用LM2596-3.3设计降压稳压电路。

1.2 主控制器模块

主控制器为STM32,是ST公司突出的一款微控制器。内核为Cortex-M3,CPU为32位,存储器为SRAM,6-64 kB。其增强型系列处理速度能达到72MHz,具有高性能,低成本等特点。在上述主控制器的支持下,实现对两轮自平衡小车的控制,使其能够在控制下平衡行驶[2]。

1.3 姿态读取模块

姿态读取的目的在于将两轮自平衡小车的姿态控制在合理的范围,保证其在控制下能够平衡行驶。系统以MPU-6050为姿态读取模块与STM32内的运动处理器程序相结合。为了保证姿态读取时实性,将陀螺仪与加速计联合使用,两者均选为3轴,共同构成姿态读取模块,可以有效提高姿态读取的实时性。

1.4 电机驱动模块

电机驱动模块的功能在于实现驱动。小车采用L298N组成的双H桥作为电机驱动模块。对两轮自平衡小车可以起到良好的自动化控制。为了使电机驱动模块的功能能够得到有效发挥,以直流电机作为驱动的来源。

2 基于STM32的两轮自平衡小车的软件设计

在硬件设计完成之后,以STM32作为核心控制,实现对两轮自平衡小车软件的设计。用卡尔曼滤波算法做姿态数据的平滑滤波;用PID控制算法做控制数据输出。

2.1 系统初始化

在程序正式开始运行之前,需要完成系统的初始化过程。系统初始化包括的流程如图1所示。

时钟初始化:由于主程序的运行过程中,需要判断定时是否已经达到了5ms,因此系统中需要设置时钟,且时钟功能的发挥十分重要。鉴于主程序的上述特点,在系统初始化过程时,需要首先进行时钟的初始化。

NVIC中断初始化:为了保证按时中断的准确性,并使5ms到达之后,能够实现中断,并开始读取MU-6050所采集的小车姿态数据的过程,必须保证将定时中断初始化。

定时器初始化:该初始化实现的目的同样在于保证在5ms时间达到时,使定时中断能够顺利实现,并开始姿态数据读取过程。

通信初始化:又称I2C初始化,其功能在于使数据采集能够有效的实现,并使所采集的数据,能够被有效传输。

测速模块初始化:为了保证两轮自平衡小车在被控制的环境下行驶的稳定性与可靠性,提高姿态控制的准确度以及时实性非常重要,而测速模块的功能,便在于保证上述功能的顺利实现。对于小车的行驶与控制非常重要。

MPU-6050初始化:MPU-6050为姿态读取模块,初始化的意义在于实现对小车的姿态检验。

电机PWM初始化:电机PWM输出,为系统主程序的最后一个流程,保证电机能实现不同速度的输出。

2.2 定时中断设计

基于STM32的两轮自平衡小车在完成系统的初始化过程后等待定时中断产生调整姿态的实现流程。

读取姿态:如果5ms时间已到,则可以直接读取MU-6050这一姿态控制模块所采集的小车姿态数据,与此同时,完成电机速度检测(编码器)。

数据滤波:在小车姿态数据读取完成之后,需要利用卡尔曼滤波算法对传感器数据进行平滑滤波。

PID控制:将数据滤波之后的结果,与电机速度检测结果相结合,采用PID控制算法,输出控制数据。

PWM输出:在计算完成過后,输出PWM波,控制电机的数度,并再次等待定时中断。

2.3 卡尔曼滤波算法与PID控制算法

卡尔曼滤波算法的功能在于将陀螺仪与加速度计所采集的数据进行融合,并通过计算,得出其最优值。两者的各方面数据能够达到平衡的状态,使小车在被控制的环境下,实现更加平稳的行驶。因此在动态测量过程中,其数值与实际情况相比,必定存在偏差。采用卡尔曼滤波算法的意义在于充分利用两者的优势,得出最优值,消除缺陷。为小车的行驶提供良好环境。与卡尔曼滤波算法的功能相同,PID控制算法的功能同样在于消除偏差,使控制效果达到最好,使小车姿态更加合理。

2.4 电机控制

电压大小决定转速大小,电机控制的意义在于保证其电压合理,进而使小车的速度能够得到实时控制。电机输出模块输出两路PWM信号,分别控制两个电机的速度。与此同时,通过其他设置,使电机控制得以实现,进而达到提高小车可控制性的目的,这对于小车运行状态的良好调整具有重要意义。

3 设计结果与分析

以STM32为基础,以MPU-6050为姿态读取模块,实现两轮自平衡小车的设计,能够使小车的控制效果得到提高。在做好系统初始化后,利用卡尔曼滤波算法与PID控制算法两种算法,可以使小车的姿态达到合理化的水平,对于提高小车运行的稳定性具有重大意义。

参考文献

[1]杨莘,刘海涛.基于STM32的两轮自平衡小车[J].数字技术与应用,2014,05:151-152.

[2]季鹏飞,朱燕,程传统,杜晓.基于STM32的两轮自平衡小车控制系统设计[J].电子科技,2014,11:96-99+105.

猜你喜欢

卡尔曼滤波
基于递推更新卡尔曼滤波的磁偶极子目标跟踪
基于模糊卡尔曼滤波算法的动力电池SOC估计
基于扩展卡尔曼滤波的PMSM无位置传感器控制
基于自适应卡尔曼滤波的新船舶试航系统