APP下载

STM32平衡车理论分析和模型建立

2022-05-25秦迎春柳贵东朱嘉骏郭喜龙刘汉斌

现代计算机 2022年6期
关键词:保持平衡微分受力

秦迎春,柳贵东,朱嘉骏,郭喜龙,刘汉斌

(广东白云学院电气与信息工程学院,广州 510450)

0 引言

二轮平衡车又称为体感车、动态车。它是一款靠传感器和电机操控来维持平衡车自身平衡的新型交通工具。二轮平衡车的设计原型来源于自动平衡轮椅IBOT。随着我国的改革开放,科技水平日新月异,汽车这种交通工具早已成为人们日常生活中的必备品。二轮小车由于结构比较简单、出行潇洒自如,可以急转弯、在凹凸不平的路面上行走,在狭窄空间灵活行走,受到很多青年消费者的追捧。该设计利用倾角传感器和陀螺仪构成姿态传感器来监测车身所处的俯仰状态和状态变化率,通过中央处理器计算出适当数据并发送指令后,驱动电动机产生前进或后退的加速度来达到车体前后平衡的效果,本设计采用陀螺仪、加速度传感器和STM32F103RCT6芯片、HC-06蓝牙芯片等模块组合来实现。

1 建立平衡车倒立摆模型及零极点分布

如果从系统结构来进行区分的话,摆动可以分为顺摆和倒立摆。图1就是典型顺摆模型。

图1 顺摆

顺摆是重力作用下重复摆动的一种运动。一般来说,将不能拉长的小绳或者是小竹竿的一端悬挂在定点上,而另外一端连接一个小球,这样就可以构成一个经典的顺摆。

STM32平衡车所用到倒立摆,顾名思义就是把顺摆翻转,也就是转轴的上端才是它的中心所在。如果没有外力的施加,要保持住非常稳定的平衡是极其困难的。倒立摆系统在生活中可以说是随处可见,如马戏团的顶杆杂技表演就是用到倒摆立,如图2所示。

图2 倒立摆杂技表演

通过生活中的一些倒立摆例子,我们可以得知平衡车的平衡需要通过负反馈系统来实现。平衡车有两个轮子,静止的时候是无法平衡的,所以要让平衡车发生倾斜,车轮才能及时地转动且位移方向与倾斜方向一致,这样抵消倾斜,车身就能够保持平衡了(如图3)。

图3 平衡车平衡过程

对平衡车进行运动分解,如果要想达到平衡的目的,平衡车所受的重力和平衡车悬线上所输出的马力足够才能使平衡车保持平衡,由公式=-sin≈-可知,在平衡状态下,平衡车不但会受到重力还会受到空气阻力,但是平衡车的恢复力和所受力的位移方向完全相同,正因如此,平衡车最终可以回到垂直位置。

为了更加直观地分析平衡车的受力情况,我们可以将平衡车的平衡点看作是重心并依据这个重心来画出力的分解,这样就建造出一个比较直观的平衡车受力模型。该受力分析如图4所示。

图4 平衡车受力分析

接下来就是根据平衡车的受力分析来进一步计算,假设小车的重心长度为,平衡车偏移的角度为,自身质量为,平衡车自身受到的外部干扰为(),STM32平衡车的加速度()。我们可以得出以下公式:

一般来说,小车保持平衡一段时间后,它受到的影响不会太大,即当低于10°的时候,会有以下等值sin≈,cos≈1,式(1)可变为:

此时平衡车已经达到了平衡,即()=0,由此可得:

图5 平衡车系统PD反馈微分控制环节

当我们把PD(比例微分)反馈调节加入到平衡车系统后,可得:

这时平衡车的两个极点都为:

2 基于STM32平衡车设计思路

由上一节,我们可以得知STM32平衡车要实现平衡和行走功能就必须要驱动好两个轮子。

本设计思路是通过角加速度仪和陀螺仪获取车身的倾斜程度和角加速度,并且把信息立即传送到STM32主控芯片,通过滤波和PID演算得出数据并传送给电机驱动,从而操控轮子进行自平衡操作,达到平衡后再加入其它功能模块。

STM32平衡车的操控由3个方面组成,如图6所示。

图6 STM32平衡车操控组成图

(1)操控STM32平衡车达到平衡:操控两个42步进电机的电压可以使STM32平衡车达到平衡状态,因为当我们操控42步进电机的电压时,可以通过这两个电机来改变STM32平衡车的运动方向和加速度,此时STM32平衡车就会产生一个惯性力并且使车体达到平衡状态。

由此可见,STM32平衡车要达到平衡就必须操控电机产生足够的驱动力,但这只是在理想状态下,实际情况下还要考虑外界环境的干扰,再加上还有机器误差存在,如果在这种状态下达到平衡,就必须要加上PD反馈微分控制,同时必须要实时监控平衡车自身的倾斜角度和角加速度,得到这些数据立刻进行算法演算,并输出指令给电机进行调节。

(2)操控STM32平衡车运行速度:通过MPU6050三轴加速度陀螺仪来实时监控车身的倾斜程度,并把数据传输给SMT32F103RCT6芯片进行分析,再通过PID算法输出数据给电机驱动芯片来驱动42步进电机加速或者减速。

(3)操控STM32平衡车运行方向:通过SMT32F103RCT6芯片进行数据分析,输出指令给A4988N电机驱动芯片来操控两个42步进电机的差速转动。如果想左转,右边的步进电机前进,或者左边的步进电机后退;如果想右转,左边的步进电机前进,或者右边的步进电机后退。

根据上面STM32平衡车的操控分析,可以确定基于STM32平衡车的总结构,如图7所示。

图7 STM32平衡车总结构

3 基于STM32平衡车PID(比例-积分-微分控制器)控制原理

本研究设计的最核心部分是PID控制,它是一种经典的负反馈控制,同时PID也是运动控制的核心。从倒立摆模型得出,如果要让STM32平衡车达到平衡,就一定要把反馈控制加入到里面。PID控制算法可通过对偏差信号进行比例、积分、微分,来逐步减少偏差信号,最终达到我们需要的数值。本次设计的角度目标值需要达到垂直位置,按理来说,速度也就是设定的值,可以通过PID调整42位步进电机的正反转和转速动态,从而把平衡车的姿态调整到目标位置。

本次设计中分别有模拟PID控制和数字PID图,其中模拟PID控制如图8所示。

图8 模拟PID控制

图8中()是已经给出的常量,()是实际的输出数值,()是两者偏差,所以()=()-(),由此得PID控制方程如下:

式(5)中,k为比例系数,k为积分系数,k为微分系数。从式(5)我们能够推理得出PID控制就是按偏差控制,也就是说()越大控制的强度就越强。

PID的控制特点:一般来说,在调节系统各比例动态性能中,数值会直接影响响应的速度,换句话说,数值和响应速度成正比。但是如果数值过于庞大,就会引起系统的不稳定,所以一般对稳定条件下的k应该尽量加大参数。当偏差比例环节出现在系统中,系统就会自动依据k的大小来调节系统减少偏差,即系统的粗调部分是比例。

在公式(5)中,偏差的累积求和输出就相当于该公式的积分部分,比例与()成正比关系,当()较小时,该输出也会相应地减少,这个时候就必须要靠积分的控制来调节了。

一般来说,小偏差的不断变化会随着积分输出而变化,直到()=0才停止。总的来说,降低系统静态的误差和系统的稳态性调节主要是依靠积分,但是还有一个问题,就是积分的过程是不断累积,而且这个累积速度是非常慢从而使系统的快速性减缓和超调量增大。

该微分的应用,主要对系统动态特性有改善,依据偏差变化和微分之间的关系,前者越大后者越会变大,所以只要通过微分就可以让系统动态特性得到大幅度的提高。另一个好处,就是把超调和震荡减弱,但是对噪声十分敏感,所以一定要事先做好滤波。

4 PID控制器的设计

根据本次设计的基本思路,把基于STM32平衡车拆分为三个方面的控制,它们分别为速度控制、方向控制、平衡控制,并且结合PID比例、积分、微分的特点来设计,PID控制器框图见图9。

图9 PID控制器

在基于STM32平衡车的控制平衡方面,根据平衡车受力分析,要使STM32平衡车达到平衡,必须要将积分、比例、反馈这三个环节加入到传递函数中,这样平衡车才能保持平衡。

如果要采用平衡PID,由上面分析的k必须大于,k大于0是必要条件。这样系统就会快速变换STM32平衡车的倾角,从而令小车本身不会倒下并且保持平衡。但是这个变换速度比较快,很可能会出现过小或者过大,而且电机在转动时有惯性,会导致基于STM32的平衡车发生振动,这个时候采用微分可以依据变换的速度自行调节输出PID,从而调节幅度,达到细调的功效,细调和粗调相结合,这样就能够使平衡车保持平衡稳定。

在STM32平衡车的速度方面,要求平衡车能够依据设定的速度匀速前进。保持这样匀速地前进有一个好处,那就是平衡车自身的偏差会小很多,控制系统中的静态误差也会小很多。总的来说,偏差相对大的时候可以选用比例调节,而偏差相对小的时候可以选用积分来调节。

在STM32平衡车的方向方面,小车方向的变更主要是依靠两个轮子的差速,本次设计选用了蓝牙控制,用户可以依据自己的需求来用蓝牙遥控器控制STM32平衡车的前进方向。当平衡车接收到蓝牙信号的时候,再调用PWM来输出差压从而达到方向控制的目的。

平衡车的软件调控是先利用MPU6050三轴加速度陀螺仪来收集STM32平衡车当时的倾斜角度和角加速度,然后把数据传输给STM32主控芯片,通过卡尔曼滤波和PID算法演算后,得到两个PWM脉宽然后传输给两个电机,调控平衡车的速度,使平衡车的车身保持平衡。整个过程就是不断地收集角加速度和倾斜角度并通过算法演算输出命令给电机,然后使平衡小车达到平衡。在这个基础上,再输送PWM的值给电机,从而实现前行、后退、转左、转右等功能。

综上所述,根据二轮平衡车在日常生活中的运动特点设置了平衡车的平衡力学模型。把平衡点的线性化处理应用在二轮平衡车的非线性系统中,理论上分析传递函数的零极点分布和建立在小车上的控制传递函数,从而推算得出达到平衡的算法,并对此提出控制方案,从而设计出一款高性能的多功能平衡车。

猜你喜欢

保持平衡微分受力
平衡小实验
不定积分凑微分法的问题类型
只压一端的跷跷板能保持平衡吗
跟踪微分器的仿真实验分析与研究
焦虑
中值定理的应用
微分在近似计算中的应用
“弹力”练习
“弹力”练习
两个物体受力情况分析