基于STM32和MPU-6050的两轮自平衡小车系统设计与实现

发布时间:2023-08-23  

引言

两轮自平衡小车系统类似于倒立摆系统,具有多变量、非线性、强耦合等特点,是研究各种控制方法的理想平台。两轮自平衡小车系统的控制过程是微控制器对姿态检测传感器和编码器等采集的数据进行分析处理,计算出使系统恢复平衡的实时控制量,从而驱动电机实现系统的动态平衡。


针对小车系统的复杂性,本文提出了将卡尔曼滤波算法和双闭环PID控制算法相结合的方法,既利用卡尔曼滤波算法对MPU-6050传感器采集的倾斜角度和角速度数据进行融合,得到小车平衡姿态的最优估计值,又利用以姿态信息、速度为反馈控制量构成双闭环PID控制算法,再结合采用高性能STM32F103C8T6作为主控制器,从而提高两轮小车系统稳定性和抗干扰能力。


1、系统的硬件设计

系统的硬件电路结构框图如图1所示,其硬件电路主要由主控制器模块、姿态检测模块、直流电机驱动模块、编码器及电源模块等几部分构成。电源模块负责系统各个模块控制电路的电源。主控制器模块是系统的控制核心,用来接收传感器模块采集的数据,对数据进行处理及运算,将控制信号输出给直流电机驱动模块。姿态检测模块实时地对小车角速度及角加速度进行采集。直流电机驱动模块负责将主控制器输出的PWM信号转换为控制信号驱动2个直流电机的转速和方向。编码器负责测量直流电机的速度和方向,将测量数据反馈给主控制器,从而形成闭环控制。

基于STM32和MPU-6050的两轮自平衡小车系统设计与实现

图1  系统的硬件电路结构框图

1.1、电源模块

本系统选用的直流电机工作电压为12V,因此采用三节3.7V可充电电池构成12V直流电源。但STM32主控制器和MPU-6050需要的是3.3V直流电源,因此选用LM2596SDC-DC降压模块得到3.3V电源。

1.2、主控制器模块

本系统选用意法半导体公司的STM32F103C8T6作为主控制器,该控制器是一种基于Cortex-M3内核的32bCPU,最高工作频率为72MHz,片上集成32~512kB的Flash存储器,6~64kB的SRAM存储器。片上集成了SPI,I2C和USART等通信接口,方便对MPU-6050姿态检测传感器的数据进行采集。含有7个定时器,可输出多路PWM信号使得电机驱动模块获得稳定的PWM波形。

1.3、姿态检测模块

本系统中姿态检测模块选用的是美国InvenSense公司的MPU-6050,MPU-6050为全球首例整合性6轴运动处理器,整合了3轴陀螺仪和3轴加速度计,能够准确的对小车的姿态进行实时检测[4]。该处理器的角速度感测范围为±250、±500、±1000与±2000°/s,加速度感测范围为±2g、±4g、±8g与±16g,加速度感测范围可通过编程来控制[5]。MPU-6050可在不同电压下工作,VDD供电电压为(2.5±0.125)V、(3.0±0.15)V或(3.3±0.165)V,本系统中为MPU-6050提供的是3.3V直流电源。MPU-6050模块的电路如图2所示,本系统中MPU-6050作为从机使用,使用SDA和SCL端口和主机STM32进行通信,MPU-6050检测的数据经过内置的16位AD转换器进行转换,然后将16位数字量通过I2C总线接口发送给主机。

基于STM32和MPU-6050的两轮自平衡小车系统设计与实现

图2  MPU-6050模块的电路


1.4、电机驱动模块

本系统中直流电机驱动模块设计采用ST公司的L298N组成的双H桥电机驱动电路,其电路如图3所示。该模块具有驱动能力强,发热量低,抗干扰能力强等特点。可以同时驱动2台直流电机,当图3中的使能端ENA和ENB使能后,从IN1、IN2输入的PWM信号驱动电机1的转速和方向,从IN3、IN4输入的PWM信号驱动电机2的转速和方向。

基于STM32和MPU-6050的两轮自平衡小车系统设计与实现

图3  直流电机驱动模块的电路

2、系统的软件设计

2.1、系统的总体流程设计

本系统的主程序流程图如图4所示,主要由初始化程序、中断响应程序、传感器数据采集程序、卡尔曼滤波程序、车速及方向检测程序、PID控制程序、直流电机PWM控制程序等几部分组成。

基于STM32和MPU-6050的两轮自平衡小车系统设计与实现

图4  系统的主程序流程图

系统启动后,首先进行初始化,然后执行中断程序,判断5ms时间是否到,若时间到,则读取MPU6050传感器采集的角度和角速度的数据,然后利用卡尔曼滤波算法对读取的数据进行融合得到最优估计值。同样采用中断的方式读取编码器的脉冲数从而得到直流电机的转速以及方向。然后利用增量式PID控制算法分别对小车的角度和角速度、转速进行PID控制,调节PID参数即可改变PWM占空比,利用改变占空比的方法即可改变电机的速度,从而实现对电机速度和方向的控制。

2.2、系统初始化程序

系统初始化程序主要包括:系统时钟初始化、NVIC中断初始化、定时器外部中断初始化、通信(I2C)初始化、测速模块初始化、MPU-6050初始化和电机PWM初始化等。

STM32的工作频率为72MHz或36MHz,本系统对时钟频率的要求很苛刻,如果频率过低,系统就会工作在不稳定状态下,系统产生的误差会变大,又因系统使用的滤波方式是卡尔曼滤波,因此在时钟初始化程序中需将时钟频率设置为72MHz。通信(I2C)初始化主要设置串口波特率为9600b/s,需设置中断允许标志位和模块的工作模式。


2.3、卡尔曼滤波数据融合算法

2.3.1、卡尔曼滤波算法

陀螺仪动态性能较好,可以提供瞬间的动态角度变化,但存在输出信号有偏差或漂移,经过积分后形成逐渐增大的累积误差,不适合单独进行长时间的动态角度测量。加速度计静态性能较好,可以提供较为准确的静态角度值,但受重力加速度影响比较大,不适宜测量动态系统的角度值。由于自平衡小车系统需要在动静态情况下均能准确的测量出小车的倾角,因此需要对陀螺仪和加速度计的采集数据进行数据融合得到最优值。本系统采用卡尔曼滤波算法对陀螺仪和加速度计的数据进行融合。

卡尔曼滤波算法是以最小均方误差为最佳估计准则的递归数据处理算法,利用前一时刻的估计值和当前时刻的测量值来更新对状态变量的估计,最终求出当前时刻的最优估计值。

2.3.2、卡尔曼滤波器设计

卡尔曼滤波方程如下所示:

基于STM32和MPU-6050的两轮自平衡小车系统设计与实现

基于STM32和MPU-6050的两轮自平衡小车系统设计与实现

2.4、PID控制算法

控制算法的编写是小车平衡控制的核心问题,也是软件编写和程序调试中的关键技术。本系统中采用了常用的增量式PID控制算法。PID控制的原理是根据系统的设定值和测量值之间的偏差,对偏差进行比例、积分、微分计算出控制量。系统采用双闭环PID控制算法对小车系统进行自平衡控制,其结构框图如图5所示。

基于STM32和MPU-6050的两轮自平衡小车系统设计与实现

图5  系统双闭环PID控制算法框图


2.5、电机控制策略

本小车系统使用的电机是小型12V直流电机,其转速是由施加给电机的电压大小来决定,转向是通过改变施加给电机电源的正负极性。电机驱动模块输出两路PWM信号,使用过程中通过给其中一路占空比为零,另外一路不为零来控制电机的正反转。

3、系统调试

程序下载后对小车系统各硬件模块部分分别进行测试,观察小车动作情况。若测试均能正常通过,则表明系统硬件电路工作正常。调试时,检测到小车的角度为30.90439°,小车电机转速为-52.09581。

在小车自平衡过程中,若给小车一个外力来破坏小车的平衡,则小车要能迅速响应这个变化,立即运动去减小倾角的变化,建立一个稳定平衡状态。开始调试时,能响应,但波动较大,建立平衡的时间较长。通过修正PID参数,最终能使小车快速达到平衡状态。

小车平衡时效果图如图6所示。系统通电后,小车完全实现自平衡的时间为12s,在普通水磨石地面上,平衡时倾角范围约在±10o以内。若给予一定外力干扰时,小车在20s内能够自动调节实现自平衡状态。


图6  小车平衡时效果图

4、结语

本文设计了一个两轮自平衡小车系统,该系统基于STM32F103C8T6微处理器、采用卡尔曼滤波算法和双闭环PID控制算法对小车进行自平衡控制。实验测试结果证明,采用卡尔曼滤波算法能够有效地消除陀螺仪和加速度计在测量过程中的噪声干扰和随机漂移误差,准确地计算出小车的姿态倾角。采用高性能的微处理器,使得卡尔曼滤波算法和PID控制算法能够快速完成,提高了数据采集和控制的实时性,提高了系统的稳定性和抗干扰能力。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    感知系统、控制算法及车体机械装置共同协调控制车体的平衡,仅靠人体重心的改变便可以实现车辆的启动、加速、减速、停止等功能。两轮自平衡车主要是绿色环保。电动车使用电池作为动力能源,并可以反复充电使用,大大......
    两轮平衡小车之硬件设计;学习一种单片机最快的方式莫过于用它实际制作一个作品了,前些天看到有人在玩平衡小车,感觉非常有趣,于是就决定自己动手制作一个基于stm32的两轮平衡小车。从电路板设计,到程......
    基于STM32的两轮平衡小车设计;学习一种单片机最快的方式莫过于用它实际制作一个作品了,前些天看到有人在玩平衡小车,感觉非常有趣,于是就决定自己动手制作一个基于stm32的两轮平衡小车。从电......
    警惕:电动平衡车电池95%不达标 你还敢骑吗?;因造型新颖、代步方便等特点,近年来电动平衡车成为不少现代人士的代步工具。然而这一新生事物却遭到多方质疑。 今年8月,因为存在车速过快、刹车......
    人建造套件和电池。我们建造出两轮平衡机器人和机器人飞机。当然,我们还要让机器人进行比赛! 在设计和展示方面,女孩们必须创建自己的机器人设计文件并向大家进行展示。每个人都要完成的任务包括: 命名机器人、确定其任务、创建......
    作用越激进,kP调小会让调节作用更保守。要是你正在制作一个平衡车,有了P的作用,你会发现,平衡车在平衡角度附近来回“狂抖”,比较难稳住。平衡车项目:STM32平衡小车。 如果已经到了这一步——恭喜你!离成......
    。这是我设计的第二块板子(第一块是毕业设计两轮平衡车主板),是在大四快毕业时,毕设实物和论文完成之后还有点时间,就设计了这款板子,最开始是准备做桌面天气时钟的。 开发板 2.新建工程 RT......
    的电机控制芯片MM32SPIN0280在针对两轮车应用时会特别调整。胡力兴介绍:“我们特别把电机控制所需的除法器和开方器加了进去,从而使这款芯片能够基于Arm Cortex-M0内核做双电机控制,比如平衡车......
    机只会做你指示它去做的事情,不多也不少。  是时候建造一些机器人了 泰克公司慷慨赞助了机器人建造日,为每个女孩购买了属于她们自己的 STEM 机器人建造套件和电池。我们建造出两轮平衡......
    候建造一些机器人了 泰克公司慷慨赞助了机器人建造日,为每个女孩购买了属于她们自己的 STEM 机器人建造套件和电池。我们建造出两轮平衡机器人和机器人飞机。当然,我们还要让机器人进行比赛! 在设......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>