基于STM32的自平衡自行车设计

赵保睿,李昆鹏,王昊,苏明

(天津职业技术师范大学自动化与电气工程学院,天津,300222)

关键字:STM32;自平衡自行车;
PID

自行车动力平衡特性已经被世界各国学者研究了上百年,并且由于计算机科学和控制科学的发展,自行车机器人也吸引了越来越多的学者参与加入。中国虽然起步相对较晚,但近年来通过利用试验结果来证明理论分析的准确性和控制算法的可行性,已经达到了良好的成效。例如张宏志、李健、祝洪宇实现了具有跟随功能的自平衡自行车。其他两轮平衡车的研究也有很多成果以供学习,袁鑫宏等提出了一种基于MPU6050六轴传感器的平衡车姿态检测及控制方案;
党新安等提出了一种单片机控制PID调节的自平衡方法;
杨高对双轮自平衡机器人控制系统进行了研究;
王振运实现了一种基于RT-Thread和STM32的双轮自平衡机器人;
古训,陈红实现了基于Arduino单片机的自平衡车。

本设计在总结以上研究结果的基础上,以STM32为主控芯片,以集成陀螺仪和加速度计的MPU6050为姿态传感器,接收角度和角速度反馈,以PID算法来完成自行车直立平衡,并集成循迹避障、远程操控功能,使其更加实用。

本设计的自平衡自行车物理结构设计模型如图1物理模型所示。该模型由车架主体、动力能源、控制电路板,直流电机,舵机、避障,循迹等部分组成。车体使用UG NX模拟设计,由可控把手、置物车背、作为驱动轮的后轮、作为从动轮的前轮组成。动力能量源是一个12V电池,用于为舵机和直流电机供电。舵机位于车辆前部,用于控制车辆转向与平衡。控制电路PCB板集主控、Bluetooth、驱动等模块于一身。避障和跟踪模块安装于车身。

图1 物理模型

2.1 主控制器模块

主控模块使用的是STM32系列的C8T6单片机,该单片机是基于arm Cortex-M3内核的32位控制器,最大工作频率为72Mhz;
其内置20KSRAM和65KFLASH,集成了I2CSPIUSART等多种通讯接口;
它包含多个定时器,可以输出多个PWM信号。本设计中,采用SPI进行OLED屏幕显示模块通讯,采用I2C协议读取MPU6050数据,采用串口通信方式接受蓝牙模块数据,并输出PWM波形以控制电机和舵机。主控制器模块电路如图2主控制器模块所示。

图2 主控制器模块

2.2 姿态处理模块

姿态处理模块使用的是MPU6050。MPU6050是一个六轴运动处理组件,内有三轴陀螺仪和三轴加速度计。本设计将MPU6050通过SCL和SDA接口与STM32相连,其测量数据经内置AD转换器转换后,通过I2C总线接口即可与主控制器通讯,实现姿态检测。检测结果经过计算后通过单片机的PWM引脚产生脉宽调制信号使舵机转动来达到平衡。姿态处理模块电路如图3姿态处理模块所示。

图3 姿态处理模块

2.3 电机驱动模块

电机驱动模块使用的是TB6612FNG。TB6612FNG是一种只需要一个外部滤波电容即可驱动电机的直流电机驱动器。模块VM1连接电源电池,VCC连接内部5V供电后,即可通过PWMA、AN1、AN2控制电机及其转速。电机驱动模块电路如图4电机驱动模块所示。

图4 电机驱动模块

2.4 电源电路模块

电源电路模块由电源电池和稳压电路组成。电源电池使用的是12V航模电池,可向电压驱动模块供电。稳压电路可产生5V和3.3V两个电压,为主控制器模块(STM32单片机)、姿态处理模块(MPU6050)等模块供电。电源电路模块电路如图5电源电路所示。

图5 电源电路

2.5 蓝牙串口模块

蓝牙串口模块使用国产bk3231蓝牙模块。该模块可以通过tx和rx两根信号线使蓝牙与主控制器模块通讯,输送指令以完成对自行车的远程控制。蓝牙串口模块电路如图6蓝牙串口模块所示。

图6 蓝牙串口模块

2.6 屏幕显示模块

屏幕显示模块使用0.96英寸,分辨率为128*64的OLED显示屏。它以四线SPI方式与主控芯片进行通信,可以实时显示电池电压、自行车倾角、舵机角度等信息。

3.1 平衡程序设计

本设计将平衡程序分为2个部分,分别是角度测量与滤波部分和控制平衡部分。

3.1.1 角度测量与滤波

本设计采用了MPU6050对自行车进行姿态检测,使用加速度计所测倾角与陀螺仪所测倾角两者进行滤波融合的方法来计算角度。

首先利用加速度计测量。下面以X轴为例。

第一步,计算X轴方向上的加速度:

式中:β为自行车倾角,g 是重力加速度,a是自行车加速度,可由下式计算得出:

式中:d 为 MPU6050到自行车电机轴的距离,á为运行时角加速度,a0为运行时X轴方向线加速度,可由MPU6050测量得出。

第二步,利用a t an2 ( x , y )函数计算倾角:

式中,Accel_Z 为Z轴方向加速度,可近似为重力加速度g。

然后利用陀螺仪测量,同样以X轴为例。

陀螺仪输出的是角速度,需将输出的原始数据转换为单位是°/s的数据,可由下式得:

式中:k0与MPU6050初始化时的量程有关,本设计中为16.4。

从陀螺仪测量所得的角速度信息经积分后即可得到角度:

式中:Gyro 是先前经过计算转化后的角速度,dt为采样周期,本设计中为0.005s。

最后对加速度计所测倾角与陀螺仪所测倾角两者进行一阶互补滤波融合:

式中:angle1为融合后的角度,angle为加速度计所测量角度值,(G yro* dt )为陀螺仪所测量角度值,dt为采样周期,本设计采用0.005s。k为滤波系数,本设计采用0.02。由此式可得出较为准确的自行车倾角。

3.1.2 平衡控制

平衡控制部分采用PID控制,通过直立环和速度环最终作用于舵机和电机,使自行车保持平衡。

直立环使用PD控制,方程如下所示:

式中:Gyro 为上文陀螺仪所测得角速度,Balance_Kp和Balance_Kd 分别为比例系数和微分系数。Bias为当前角度与机械中值的偏差,可由下式得出:

式中,angle1为计算得出的自行车倾角,x为设计的机械中值,于调试部分给出。

速度环采用PI控制,方程如下所示:

式中:Encoder为读取的速度偏差经一阶低通滤波后所得值,这样可以降低速度值变化速率,防止直立环被速度环干扰,Encoder _ Integral 为Encoder在采样周期内积分所得位移,Velocity _ Kp 和Velocity _ Ki 分别为比例系数和积分系数。

本设计中舵机采用PI控制:

式中:Encoder1可由(11)式得出,Encoder1 _Integral为Encoder1在采样周期内的积分,Kp和Ki 分别为比例系数与积分系数。

同理,电机控制采用增量式PI控制:

式中:Bias1是速度偏差,由读取编码器的现速度与期望的Velocity 相减得来,Last_bias 是对上一次Bias1进行储存所得的变量,Kp和Ki分别为比例系数和积分系数。

最后,根据计算所得出的Servo值和Motor值可由主控芯片输出所需要PWM值控制舵机和电机使自行车保持平衡。

3.2 循迹程序设计

循迹模块使用两个TCRT5000光电传感器并安装于车身左右两侧。将左右两个TCRT5000传感器的输出连接到主控的I0口后,通过读取I0口的高低电平判断自行车是否在黑线上运行,根据程序即可使自行车达到循迹前行的效果。程序设计大致如下:当左侧TCRT5000传感器检测到黑线时,传输信号至主控芯片,主控芯片输出PWM波控制舵机向左扭转一定角度;
当右侧TCRT5000传感器检测到黑线时,传输信号至主控芯片,主控芯片输出PWM波控制向右扭转一定角度。程序扫描周期为50ms,舵机的左右方向通过更改PWM波的脉宽即可控制。

3.3 避障程序设计

避障模块使用E18-D80NK红外光电感应器。将E18-D80NK传感器的输出连接到主控芯片的I0端口后,通过读取I0端口的高低电平,判断自行车前方是否有障碍物,根据程序即可完成避障。程序设计大致如下:若前方存在障碍,E18-D80NK红外光电感应器输出信号至主控芯片,主控芯片输出PWM波控制舵机向左扭转一定角度,以完成避障。程序扫描周期为50ms,舵机的左右方向通过更改PWM波的脉宽即可控制。

3.4 手机APP设计

本设计可通过手机APP与自行车进行蓝牙连接并通信。手机在Android操作系统下安装后缀为apk的安装包,打开软件后可直接使用蓝牙连接至自行车,在APP主页即可查看自行车的倾斜角度和电源电压,并可以操纵自行车进行转向等操作。

4.1 直立环PID参数调试

直立环采用PD(比例微分)控制器。调试过程分为三个步骤:获取自行车的机械中值,获取Kp值的极性和大小,获取Kd值的极性和大小。

首先,得到机械中值。将自行车置于地上,缓慢晃动自行车,记录使自行车能近乎平衡的角度,一般在0°左右,可知机械中值为0。

然后调试kp值。根据自行车的PWM设置估计kp值在0~720区间中,设置kp=-200时,自行车往哪边倒下,舵机会往相反方向转动使自行车倒下,这说明kp值极性应为正。

Kp值太大易导致自行车产生低频抖动。所以先设定kp=100,此时自行车有了平衡的迹象,但是响应不够快;

设置kp=200,自行车响应加快,但自行车仍无法保持平衡;

设定kp=500时自行车的响应速度足够快,但产生了低频抖动。此现象表明kp值足够大了,此时通过添加微分控制可减小低频抖动。

最后调试Kd值。首先通过MPU6050所集成陀螺仪输出的原始数据,估算出kd在0到2之间。然后设置kd=-0.5,这时拿起自行车并摇动,舵机将反向转动,说明kd极性为正。

Kd值太大易导致自行车产生高频抖动。设置kd=0.5,kp太大产生的低频抖动基本消失。设置kd=1,自行车平衡性能已经达到预期效果。设置kd=1.5,自行车会产生高频抖动现象。

在确定KP=500和Kd=1.5是P和D参数的最大值后,将系数都乘以0.6近似得到KP=300和Kd=1,即为最终确定的参数。这是因为之前获得的参数是KP和KD的最大值。根据实际经验,最大值乘以0.6后的参数性能最好。调整后,自行车运行平稳且无抖动,但直立时间短,说明需要对速度环进行调试。

4.2 速度环PID参数调试

速度环使用PI(比例积分)控制器。调试过程分为两个步骤:获取Kp值的极性和大小,获取Ki值的极性和大小。

通过STM32定时器的编码器接口方式将编码器四倍放大,通过M测速法获取自行车的速度信息,发现编码器最大值在180左右。根据PWM输出控制估算kp最大为80。先设定kp=-40,可观察到自行车倒下时电机转速变小,说明kp极性为正。

速度环中积分控制与比例控制极性相同。并且存在一种相应的比例可以描述PID变量在不同的系统间的关系。根据速度环kp的极性和大致范围,最终确定kp=70,kd=0.5是速度控制环中kp、ki参数的最终值。

4.3 调试结果

经过长时间的实验和调试,自行车在开始运行约2s后即可自行平衡,在平整地面上已无法用肉眼直接观察到可见的自行车倾角;
给予一定干扰后自行车也可快速恢复平衡。

猜你喜欢 陀螺仪舵机蓝牙 KD514:陀螺仪船桨空间姿态捕捉方法科技创新与品牌(2022年7期)2022-11-15基于Allan方差分析的陀螺仪漂移误差辨识与仿真复现导航定位学报(2022年4期)2022-08-15蓝牙音箱的直线之美工业设计(2022年7期)2022-08-12直升机某型舵机自动测试系统设计分析商品与质量(2021年43期)2022-01-18基于EMD的MEMS陀螺仪随机漂移分析方法北京航空航天大学学报(2021年9期)2021-11-02基于速度观测的双余度电液舵机系统容错同步控制北京航空航天大学学报(2020年10期)2020-11-14兼具蓝牙和收音机功能 Cambridge Audio(剑桥)AXR85家庭影院技术(2019年11期)2019-12-09微机械陀螺仪概述和发展山东工业技术(2016年15期)2016-12-01超音速舵机保护器航空模型(2016年5期)2016-07-25菜鸟看模型航空模型(2015年6期)2015-10-21

推荐访问:自行车 平衡 设计