基于单片机的两轮自动平衡小车系统的设计

2021-01-27 07:54:00杜丽敏
长春大学学报 2020年12期

杜丽敏,王 岩

(长春大学 电子信息工程学院,长春130022)

两轮自动平衡车凭借其运动灵活、体积小巧、经济环保等优点逐渐被人们喜欢,并且在人们的生产生活中起着越来越重要的作用。两轮自动平衡小车采用倒立摆工作原理,使小车保持平衡状态,其系统具有非线性、强耦合、不稳定等特点[1]。因此,两轮自平衡车不仅在市场中有很大的价值和前景,在验证或校验控制算法和控制理论上更有一个很好的实验平台[2]。文献[3-4] 设计了基于LQR的最优控制器,该控制算法具有较快的动态响应速度,对于干扰具有良好的鲁棒性;文献[5]针对H和LQR两种控制方法进行了对比分析,证明了前者在欠驱动系统的控制中具有一定的参考价值;文献[6]针对两轮平衡小车给出了硬件设计方案,以及基于PID的控制算法,实验中验证了设计方案的可行性。本文主要研究了PID控制算法在两轮自动平衡小车中的应用。首先,构建以STM32F103ZET6单片机为核心的两轮直立小车控制系统;其次,对两轮自动平衡小车进行了数学建模,验证了PD控制算法可以使小车保持直立稳定状态,进而基于PID设计了串级控制算法;最后将所设计的控制算法应用在了实物中,实现了小车的直立和行走功能。

1 系统整体方案设计

两轮自动平衡小车系统包括STM32F103C8T6主控模块、供电电路、姿态检测模块MPU6050、电磁检测电路、蓝牙模块、L298N电机驱动电路及霍尔测速码盘等,两轮自动平衡小车系统结构框图如图1所示。其中,姿态检测模块用于测量小车的车身姿态信息,电磁检测模块用于测量电磁信号,进而实现轨迹跟踪,霍尔测试码盘用于测量电机的转速,通过蓝牙模块可实现小车的无线控制功能。

2 硬件电路设计

2.1 供电电路

两轮自动平衡小车系统采用的供电电源的电压为12 V,由3个18650锂电池串联组成;一节18650锂电池充满电时会达到4.2 V,标称容量一般为2 000 mAh,在容量上满足系统要求。电机驱动模块需要5 V电源,MPU6050和单片机需要3.3 V电源,因此需要LM7805和LM1117稳压模块进行调压,如图2和图3所示。

2.2 姿态检测模块

姿态检测模块用于测量两轮自动平衡小车的车身姿态,并将车身姿态信息传给单片机,经过卡尔曼滤波处理后,与参考值做差形成闭环控制,实现直立和行走功能。

图4为MPU6050模块实物图。作为本次设计采用的姿态检测模块,它和加速度计、角速度计组合的方案相比,优势在于解决了加速度计和角速度计之间的时间轴之差的问题。用户可以自己选择MPU6050的测量范围,角速度计可测范围为±250°/秒,±500°/秒,±1000°/秒,±2 000°/秒,加速度计可测范围为±2 g,±4 g,±8 g,±16 g,选择的方式是用户自己设置寄存器,主控模块可以采用I2C和MPU6050进行通讯来读取数据。

2.3 直流电动机驱动模块

直流电动机驱动选择L298N,它包含4路驱动电路,可以驱动两个直流电动机,输出电压最大可以达到46 V,最大瞬时峰值电流可达到3 A,连续工作时的电流为2 A。改变单片机PWM输出信号的占空比,即L298N的IN1~IN4输入部分,就可以实现直流电机的调速。L298N模块电路如图5所示。

2.4 电磁检测电路

在小车的两边装有离车轴中心线对称的电感,当车身两边的电感和导线的距离相同时,根据电磁学原理可知两个电感感应出来的电动势大小是一样的,当车身偏离导线时,两个电感和导线的距离不相同,此时离导线远的电感感应出来的电动势小于离导线近的电感感应出来的电动势,这两个感应电动势的差值可以代表小车偏离导线的位置。由于电感感应的电动势是微弱信号,而且是交流信号,因此需要进行相应的处理,再由单片机ADC模块进行读取。电磁检测电路如图6所示。需要测量的电磁信号通过LC电路选频之后,经LM358放大到合适的大小,再将其输出的交流信号经过二极管整流转化为直流信号,滤波后,送往单片机的ADC模块,从而得到小车偏离目标线路的偏差,完成轨迹跟踪的功能。

3 两轮平衡小车控制算法的设计

3.1 数学模型的建立

两轮自动平衡小车数学模型可以按照一级倒立摆数学模型来分析和建立,一级倒立摆数学模型受力分析如图7所示。

设小车的质量为m,小车偏离平衡点的角度为θ,小车的重心距离支撑点的长度为L,干扰力为N,偏离方向上的合力为F,对小车平衡系统建立数学模型。首先建立的数学模型是假定小车运动加速度为0m/s2,并且没有阻尼力的情况下,那么数学模型如式(1)所示。

(1)

在角度θ很小时,sinθ≈θ,则数学模型可以近似认为如式(2)所示。

(2)

将上面的式子进行拉普拉斯变换,可得到:

mLs2θ(s)=mgθ(s)+N(s)。

(3)

进而得到角度和干扰力的传递函数如下:

(4)

3.2 两轮平衡小车直立控制

根据公式(4)设计控制算法,结构如图8所示。

设输入量R(s)为0,即对小车进行直立控制,采用比例和微分PD控制算法,在扰动信号N(s)的作用下,其传递函数为:

(5)

此时系统的两个极点为:

(6)

如果系统稳定,两个极点必须都位于S平面的左半面,即满足Kp>gm,KD>0。从而在理论上证明了PD控制算法在满足上述参数整定条件时可以使系统稳定。

3.3 两轮平衡小车行走控制

两轮平衡小车在平衡的状态下附加一个角度值,车身会在姿态控制的作用下自动进行加速前进或者后退。根据以上的分析可以让姿态控制和速度控制形成双闭环控制系统,即串级PID控制,图9为串级PID的结构图。

采用PD控制算法的姿态控制环作为两轮自动平衡小车串级控制系统的内环,用PI控制算法的速度控制环作为两轮自动平衡小车串级控制系统的外环;此时速度控制器的输出值作为姿态控制环的输入值。通过实验分析,双闭环串级PID控制系统可在一定的角度下完成行走功能。两轮自动平衡小车平衡实物图如图10所示。

4 卡尔曼滤波算法

平衡车倾斜角的测量是通过6轴运动处理组件MPU6050来测量的,此模块内部集成了一个加速度计和一个角速度计,加速度计会由于平衡车的微小抖动而产生较大的噪声,而角速度计输出的角速度信号会发生漂移,误差会随着时间的增加而不断变大。

卡尔曼滤波算法是一种递归算法,它根据不同的数据样本来寻求最优估计值,该算法根据上一时刻的估计值得到当前的预测值,再对当前时刻的测量值进行处理来更新当前时刻的估计值;因为预测的值和测量的值都存在一定的噪声,且预测的值和传感器测量的值都符合正态分布,所以处理的原则是:将两个正态分布相乘得到一个期望值更接近真实值、方差更小的正态分布,递推计算使处理得到的数据为最优值。正态分布如图11所示。

线性卡尔曼滤波分为五步:

第一步:根据上一时刻的最优估计值来推断出当前时刻的预测值,如公式(7)。

(7)

第二步:计算预测估计协方差矩阵,如式(8)。

(8)

其中,Pk|k-1是预测估计协方差矩阵,Qk-1为系统噪声协方差。

第三步:计算卡尔曼增益,如式(9)。

(9)

其中,Kk为卡尔曼增益矩阵,Hk为观测模型矩阵,用于将估计值转化与测量值同一单位,Rk为测量噪声协方差。

第四步:更新这一时刻的最优估计,如式(10)。

(10)

第五步:更新这一时刻的估计协方差矩阵,如式(11)。

Pk=(1-KkHk)Pk|k-1,

(11)

其中,Pk为这一时刻的估计协方差矩阵。

5 软件设计

系统软件由加速度和角速度数据测量、卡尔曼滤波算法、小车的速度测量、直流电机PID算法和串口程序等组成,软件程序流程图如图13所示。上电后首先进行系统初始化,然后等待定时中断产生,在中断函数中采集姿态数据,并进行相应的滤波处理,同时读取电机转速和电磁信号,并根据遥控器端通过蓝牙发来的指令进行PID运算,输出控制量,实现小车的直立或者行走控制。

6 结语

设计了一个基于单片机的两轮自动平衡小车系统,详细地介绍了其数学模型的建立,并给出了直立状态稳定的PD控制算法,以及小车行走的串级PID控制算法;并列出了卡尔曼滤波算法的实现步骤以及硬件电路的设计。通过调节控制算法的参数,最终实现了小车的直立和行走功能。