两轮自平衡小车论文.docx
《两轮自平衡小车论文.docx》由会员分享,可在线阅读,更多相关《两轮自平衡小车论文.docx(19页珍藏版)》请在冰豆网上搜索。
两轮自平衡小车论文
2013年全国大学生电子设计竞赛
两轮自平衡小车设计
作者:
杨魏,黄敏杰,夏俊逸
2015.7.17
摘要
本文采用自制的两轮简易小车作为试验平台,以MEMS传感MPU6050为传感器的姿态感知系统,通过离散卡尔曼滤波器对两种传感器的数据进行滤波融合,选用32位单片机STM32F103RB为控制核心处理器,完成对数据的采集处理和车身控制,采用PID控制算法实现小车两轮自平衡。
用蓝牙控制前后运动。
实验结果验证了该系统的性能满足设计要求。
关键词:
两轮自平衡;姿态感知;STM32F103RB;卡尔曼滤波;PID控制。
1系统方案
本系统主要由姿态检测模块、电机驱动模块、蓝牙模块、红外对管模块、电源模块组成,下面分别论证这几个模块的选择。
1.1姿态检测模块的论证与选择
方案一:
ENC-03。
一种普通陀螺仪。
方案二:
MPU-6050。
MPU-60X0是全球首例9轴运动处理传感器。
它集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(DigitalMotionProcessor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。
扩展之后就可以通过其I2C或SPI接口输出一个9轴的信号(SPI接口仅在MPU-6000可用)。
MPU-60X0也可以通过其I2C接口连接非惯性的数字传感器,比如压力传感器。
综合以上两种种方案,选择方案二。
1.2电机驱动模块的论证与选择
方案一:
TB6612FNG。
体积小,但容易坏。
方案二:
L298N。
具有信号指示,转数可调,抗干扰能力强,具有过电压和过电流保护,可单独控制两台直流电机,可单独控制一台步进电机。
综合以上三种方案,选择方案二。
2系统硬件设计
本文设计的两轮自平衡小车采用姿态传感器(MPU6050)监测车身所处的俯仰状态和状态变化率,通过高速微控制器STM32F103RB完成数据融合处理,得到平滑而稳定车体姿态信息,然后驱动电动机产生前进或后退的加速度来控制车体保持平衡,红外线检测障碍物,蓝牙控制前进后退。
结构框图如图。
图1系统设计总体结构框图
系统硬件主要由STM32F103RB单片机系统、电源模块、姿态检测模块、串口通讯模块、电机驱动模块等组成。
2.1STM32F103RB单片机系统
本设计中控制平台采用ST意法半导体的STM32F103RB微控制器,STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCORTEX-M3内核,其最高主频72MHz,在满足平衡控制的调节频率的同时有更多的CPU资源,工作电压为5V。
其丰富的内置模块资源可以为姿态检测系统提供12位精度的A/D转换,同时使用定时器可以产生PWM输出控制电机转速和转向。
2.1.1STM32F103RB单片机介绍
STM32F103xB增强型系列使用高性能的ARM®Cortex™-M332位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。
所有型号的器件都包含2个12位的ADC、3个通用16位定时器和1个PWM定时器,还包含标准和先进的通信接口:
多达2个I2C接口和SPI接口、3个USART接口、一个USB接口和一个CAN接口。
STM32F103xx中等容量增强型系列产品供电电压为2.0V至3.6V,包含-40°C至+85°C温度范围和-40°C至+105°C的扩展温度范围。
一系列的省电模式保证低功耗应用的要求。
STM32F103xx中等容量增强型系列产品提供包括从36脚至100脚的6种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。
下面给出了该系列产品中所有外设的基本介绍。
这些丰富的外设配置,使得STM32F103xx产品容量增强型系列微控制器适合于多种应用场合:
●电机驱动和应用控制
●医疗和手持设备
●PC游戏外设和GPS平台
●工业应用:
可编程控制器(PLC)、变频器、打印机和扫描仪
●警报系统、视频对讲、和暖气通风空调系统等
2.1.2单片机最小系统设计
本设计采用STM32F103RB单片机为控制器,最小系统原理图如图3-3所示,主要包括单片机供电、复位电路、时钟电路以及BDM接口电路。
系统时钟的选择是在启动时进行,复位时内部8MHz的RC振荡器被选为默认的CPU时钟,随后可以选择外部的、具失效监控的4~16MHz时钟;当检测到外部时钟失效时,它将被隔离,系统将自动地切换到内部的RC振荡器,如果使能了中断,软件可以接收到相应的中断。
同样,在需要时可以采取对PLL时钟完全的中断管理(如当一个间接使用的外部振荡器失效时)。
多个预分频器用于配置AHB的频率、高速APB(APB2)和低速APB(APB1)区域。
AHB和高速APB的最高频率是72MHz,低速APB的最高频率为36MHz。
图3-3单片机最小系统及时钟电路原理图
单片机的外部复位电路可以使用按钮和电容构成,也可以使用专门的复位芯片。
考虑到产品经济型,本设计中采用了由电阻电容构成的简易复位电路,如图3-5所示。
加电后,由于电容的充电时间,RESET保持低电平,单片机复位;一段时间后,电容电量充满,RESET端输出高电平,此时单片机运行。
手动复位时,按下手动复位按钮,RESET端保持低电平,单片机复位;释放手动复位按钮后,RESET端输出高电平,单片机工作。
图3-5复位及按键接口电路
2.1.3电源管理模块设计
可靠的电源方案是整个硬件电路稳定可靠运行的基础。
电源模块由若干相互独立的稳压电路模块组成。
这样做可以减少各模块之间的相互干扰。
整个系统需要3种电源:
●VDD=2.0~3.6V:
VDD引脚为I/O引脚和内部调压器供电。
●VSSA,VDDA=2.0~3.6V:
为ADC、复位模块、RC振荡器和PLL的模拟部分提供供电。
使用ADC时,VDDA不得小于2.4V。
VDDA和VSSA必须分别连接到VDD和VSS。
●VBAT=1.8~3.6V:
当关闭VDD时,(通过内部电源切换器)为RTC、外部32kHz振荡器和后备寄存器供电。
图3-6电源模块电路图
2.2姿态检测模块MPU-6050
姿态检测模块能够精确并稳定地检测出当前的车身姿态,这是本设计两轮自平衡小车实现有效控制的关键。
本设计选用MEMS传感MPU6050作为姿态检测传感器。
MPU-6050实物连接图
2.2.1MPU-6050简介
MPU-60X0是全球首例9轴运动处理传感器。
它集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(DigitalMotionProcessor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。
扩展之后就可以通过其I2C或SPI接口输出一个9轴的信号(SPI接口仅在MPU-6000可用)。
MPU-60X0也可以通过其I2C接口连接非惯性的数字传感器,比如压力传感器。
MPU-60X0对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量。
为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250,±500,±1000,±2000°/秒(dps),加速度计可测范围为±2,±4,±8,±16g。
一个片上1024字节的FIFO,有助于降低系统功耗。
和所有设备寄存器之间的通信采用400kHz的I2C接口或1MHz的SPI接口(SPI仅MPU-6000可用)。
对于需要高速传输的应用,对寄存器的读取和中断可用20MHz的SPI。
另外,片上还内嵌了一个温度传感器和在工作环境下仅有±1%变动的振荡器。
芯片尺寸4×4×0.9mm,采用QFN封装(无引线方形封装),可承受最大10000g的冲击,并有可编程的低通滤波器。
关于电源,MPU-60X0可支持VDD范围2.5V±5%,3.0V±5%,或3.3V±5%。
另外MPU-6050还有一个VLOGIC引脚,用来为I2C输出提供逻辑电平。
VLOGIC电压可取1.8±5%或者VDD。
MPU6050电路图
2.2.3数字运动处理器(DMP)
DMP就是指MPU6050内部集成的处理单元,可以直接运算出四元数和姿态,而不再需要另外进行数学运算。
DMP的使用大大简化了四轴的代码设计。
DMP是数字运动处理器的缩写,顾名思义mpu6050并不单单是一款传感器,其内部还包含了可以独立完成姿态解算算法的处理单元。
如在设计中使用DMP来实现传感器融合算法优势很明显。
首先invensense官方提供的姿态解算算法应该比像楼主这样的小白要可靠的多。
其次,由DMP实现姿态解算算法将单片机从算法处理的压力中解放出来,单片机所要做的是等待DMP解算完成后产生的外部中断,在外部中断里去读取姿态解算的结果。
这样单片机有大量的时间来处理诸如电机调速等其他任务,提高了系统的实时性。
DMP从陀螺仪、加速度计以及外接的传感器接收并处理数据,处理结果可以从DMP寄存器读出,或通过FIFO缓冲。
DMP有权使用MPU的一个外部引脚产生中断。
2.3速度检测模块设计
两轮自平衡小车的原理是利用地面对车轮的摩擦力抵消车受到的重力,在本系统的控制环节中有两路闭环控制,即倾角闭环控制以及速度闭环控制。
为实现速度的闭环控制,必须加入速度检测装置实现速度闭环控制中的反馈环节。
本系统测速模块采用OMRON(欧姆龙)公司500线增量式旋转编码器如图3-11。
2.3.1编码器介绍
编码器内部为一个中心有轴的光电码盘,其上有环形通、暗的刻线,有光电发射和接收器件读取,获得四组正弦波信号组合成A、B、C、D,每个正弦波相差90度相位差(相对于一个周波为360度),将C、D信号反向,叠加在A、B两相上,可增强稳定信号;另每转输出一个Z相脉冲以代表零位参考位。
由于A、B两相相差90度,可通过比较A相在前还是B相在前,以判别编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位如图3-12。
图3-12编码器A、B相输出波形
本系统用OMRON旋转编码器相关参数如表3-1所示:
表3-1编码器参数表
项目
参数
电源电压
DC5V~12V,纹波的峰峰值小于5%
消耗电流
30mA以下
分辨率
500脉冲/转
输出相
A、B、Z三相
输出状态
集电极开路输出
最高输出响应
42kHz
输出上升或下降时间
1us以下
起动转矩
1mN·m以下
轴允许力
径向10N、轴向5N
允许最高转速
5000r/min
质量
35g
2.3.2编码器电路设计
由于编码器采用集电极开路输出,输出波形为矩形波,因此编码器外围电路较为简单。
需要在信号输出端接入一个上拉电阻,即可将信号提供给单片机采集数据。
如图3-13所示,PULSE引脚为编码器A相,接单片机的脉冲计数口,通过单片机的PACNT模块对输入脉冲进行计数从而获取电机转速。
DIR为编码器B相输出,接单片机I/O口,通过A、B相位差进行软件鉴相,从而判断电机转动方向。
图3-13编码器接口电路
2.4电机驱动模块
电机的驱动芯片选用L298N作为驱动芯片。
2.4.1L298N简介
L298是SGS公司的产品,内部包含4通道逻辑驱动电路,是一种两相和四相电机的专用驱动器,即内含两个H桥的高电压大电流双全桥式驱动器,接收标准的TTL逻辑电平信号,可驱动46V、2A以下的电机。
本设计中直流电机的驱动信号由STM32F103RB提供,信号经过光耦隔离后,传至控制芯片L298N,通过L298N的输出脚与两个电机相连,控制电机运转。
L298N的连接方法如图6所示
图6理论分析与计算
2.4.2L298N特点
基本特点如下:
(1)具有信号指示。
(2)转数可调。
(3)抗干扰能力强。
(4)具有过电压和过电流保护。
(5)可单独控制两台直流电机。
(6)可单独控制一台步进电机。
(7)PWM脉宽平滑调速。
(8)可实现正反转。
(9)采用光电隔离。
3理论分析与计算
3.1两轮平衡小车数学模型
已知自平衡车高度为
,质量为
,将其抽象为一级倒立摆,并将倒立摆至于可水平移动的小车上。
假设其受外力干扰引起的车体角加速度为
,沿垂直于车体方向进行受力分析如图2-7,可以得到自平衡车倾角与车轮移动加速度为
以及外力干扰带来的加速度
之间的运动方程。
图2-7外力干扰条件下的小车受力分析
小车运动微分方程表达式如式2-8:
(式2-8)
当倾角
很小的时候,可以进行线性化处理:
,运动微分方程可简化为:
(式2-9)
自平衡车静止时
其运动微分方程为:
(式2-10)
3.2PID控制器设计
3.2.1PID控制器原理
当今的自动控制技术都是基于反馈的概念。
反馈理论的要素包括三个部分:
测量、比较和执行。
测量系统需要控制的变量,与期望值相比较,用这个误差纠正调节控制系统的响应。
在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。
PID控制器问世至今已有近70年历史,以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。
PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。
其输入e(t)与输出u(t)的关系为:
(式2-11)
其中
为比例系数;
为积分时间常数;
为微分时间常数。
PID控制器具有原理简单、使用方便、适应性强、鲁棒性强、对模型依赖少等特点,因此使用PID控制器实现两轮自平衡车的控制是完全可行的。
3.2.2PID控制器设计
由小车静止时其运动方程可得到系统输入输出传递函数:
(式2-12)
此时系统具有两个极点:
。
其中一个极点位于s平面的右半平面。
根据奈奎斯特稳定判据可知系统不稳定,因此小车在静止状态不能保持平衡[5][6]。
由小车受力分析可知小车平衡的条件是提供额外的回复力及阻尼,其来源为车轮与地面的摩擦力。
由式2-7可知,车轮提供的加速度的大小是根据角度
及角速度
的反馈得出,因此需要在控制系统中引入角度
及角速度
构成比例(P)微分(D)反馈环节,如图2-8所示。
图2-8加入比例微分环节后的控制系统结构图
加入比例微分反馈后的系统传递函数为:
(式2-13)
此时,系统的两个极点为
。
根据奈奎斯特稳定判据可知,系统稳定需要两个极点都位于s平面的左半平面。
要满足这一点,需要
>g,
>0。
由此可得出结论,但
>g,
>0时,小车可以保持平衡,这也与上文中小车受力分析的结果相符。
在反馈环节中,与角度
成比例的控制量称为比例控制;与角速度成比例的控制量称为微分控制(角速度是角度的微分)。
因此上面系数
,
分别称为比例和微分控制参数。
其中微分参数相当于阻尼力,可以有效抑制自平衡车振荡。
控制系统的输出量为电机控制量,因而小车平衡控制的PID控制器的输出方程可写为:
OUT_Motor=Kp*Angle+Kd*Angle_dot(式2-14)
式2-14中,OUT_Motor为PID控制输出量,Angle为反馈倾角值,Angle_dot为反馈角速度值,Kp和Kd分别为比例系数及微分系数。
3.2.3PID程序
#include
#include"math.h"
#include
floatPID_realize();
voidpwm(void);
externfloatPitch;
floatSetSpeed=-1.04;//定义目标值
floatActualSpeed=0.0;//反馈值
floaterr=0.0;//偏差值
floaterr_last=0.0;//上次偏差值
floatKp=135;
floatKi=2.7;
floatKd=135;
floatoutput=0.0;//电压值控制执行器的变量
floatintegral=0.0;//积分量
floatPID_realize()
{
ActualSpeed=Pitch;
err=SetSpeed-ActualSpeed;
integral+=err;
output=Kp*err+Kd*(err-err_last)+Ki*integral;
err_last=err;
returnoutput;
}
3.3基于卡尔曼滤波的数据融合
卡尔曼滤波器是一种高效率的递归滤波器(自回归滤波器),能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。
卡尔曼滤波器不仅能估计信号的过去和当前状态,甚至能估计将来的状态。
卡尔曼滤波器解决离散时间控制过程的一般方法,首先定义模型线性随机微分方程。
假设卡尔曼滤波模型k时刻真实状态是从(k-1)时刻推算出来,如下式
(式2-15)
式2-15中,
是k时刻状态;A是k-1时刻状态变换模型;B是作用在控制器向量
上的输入控制模型;
是过程噪声,假设其均值为零,协方差矩阵
符合多元正态分布:
~
(式2-16)
k时刻对应真实状态
的测量
满足下式:
(式2-17)
式2-17中
是观测模型,将真实控制映射为观测空间;
为观测噪声,其均值为零,协方差矩阵
符合正态分布:
~
(式2-18)
初始状态以及每一时刻的噪声都认为是互相独立的。
卡尔曼滤波器的操作主要包括两个阶段:
预估与更新。
在预估阶段,滤波器根据上一时刻状态,估算出当前时刻状态;在更新阶段,滤波器利用当前时刻观测值优化在预估阶段获得的测量值,以获得一个更准确的新估计值[11][12][13]。
卡尔曼滤波器迭代过程如下:
1.先验状态估计:
2.先验估计误差协方差
3.卡尔曼增益
(式2-21)
4.后验状态估计
(式2-22)
5.后验误差协方差
(式2-23)
在上面各式中:
A:
作用在
上的n阶矩阵;
B:
作用在控制向量
上的n×1输入控制矩阵;
H:
m×n观测模型矩阵,将真实状态空间映射为观测空间;
:
n×n先验估计误差协方差矩阵;
:
n×n后验估计误差协方差矩阵;
Q:
n×n过程噪声协方差矩阵;
R:
m×m过程噪声协方差矩阵;
I:
n阶单位矩阵;
:
n×m矩阵,称之为卡尔曼增益。
4系统软件设计
4.1系统软件设计框架
系统软件设计框架主要包括:
资源模块初始化、姿态信息采集、数据融合、直流电机PID控制。
系统软件流程如图9所示。
图9
4.2资源模块初始化
STM32系统初始化主要完成以下工作:
通过锁相环模块(PLL),设定其工作频率为72MHz;将模数转换模块AD1(12位精度)设置为2通道连续采样、ADC1频率为12MHz、非中断触发;串行通信模块设置为波特率115200、8个数据位、1个停止位、允许收发;定时器T4产生10ms的定时中断;T1配置为PWM输出模式产生两路10kHz等。
4.3两轮小车姿态信息检测
本设计使用的惯性传感器为模拟量输出式,利用STM32F103RB自带的ADC模块以3.3V的基准电压进行模数转换,从而量化出陀螺仪和加速度计的输出电压。
当车模倾角发生变化时,重力加速度g便会在加速度传感器的Y轴上形成加速度分量,从而引起该轴输出电压的变化:
Δu=kgsinθ≈kgθ,式中g为k重力加速度,+(-)900为车模倾角,为加速度传感器灵敏度系数.当倾角θ(-100≤θ≤+100)比较小的时候,输出电压的变化近似与倾角成正比.θz为加速度计Z计算出的车模倾角,Vout为Z轴的输出电压,Voffest为Y轴平衡点的电压,Vmax、Vmin为相对于平衡点±900处的电压。
同时陀螺仪的电压也会随车模角速度变化而变化,将陀螺仪的量化电压值减去静态电压然后除以陀螺仪的灵敏度以及放大系数,便可得到车模晃动的角速度ω。
将ω和θz送入卡尔曼滤波器进行角度融合。
5测试方案与测试结果
5.1测试方案
5.1.1硬件连接检测
经检测,小车线路连接正常,能够正常工作。
5.1.2小车功能检测
1.小车能实现长时间稳定的自平衡站立。
2.小车能够在蓝牙控制下长距离匀速前进,后退。
3.小车能够在蓝牙控制下左转,右转。
4.小车能够在蓝牙控制下加速前进,后退一段距离。
5.小车在遇到黑线时,蜂鸣器会警告。
5.2测试分析与结论
根据上述测试数据,可以得出结论:
本组成员做的两轮自平衡小车能完成题目各种要求,且有自主发挥空间。
综上所述,本设计达到设计要求。