基于ARM的两轮自平衡车模型系统设计课程设计.docx
《基于ARM的两轮自平衡车模型系统设计课程设计.docx》由会员分享,可在线阅读,更多相关《基于ARM的两轮自平衡车模型系统设计课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
基于ARM的两轮自平衡车模型系统设计课程设计
中北大学
课程设计说明书
学生姓名:
*杰
学号:
*
学院:
仪器与电子学院
专业:
*
题目:
基于ARM的两轮自平衡车模型系统设计
指导教师:
李锦明职称:
副教授
2015年1月30日
摘要
近年来,两轮自平衡车的研究与应用获得了迅猛发展。
本文提出了一种两轮自平衡小车的设计方案,采用陀螺仪L3G4200以及MEMS加速度传感器MMA7260构成小车姿态检测装置,使用卡尔曼滤波完成陀螺仪数据与加速度计数据的数据融合。
系统选用飞思卡尔32位单片机KinetisK60为控制核心,通过滤波算法实现车身控制,人机交互等。
整个系统制作完成后,各个模块能够正常并协调工作,小车可以在无人干预条件下实现自主平衡。
同时在引入适量干扰情况下小车能够自主调整并迅速恢复稳定状态。
关键词:
两轮自平衡陀螺仪姿态检测卡尔曼滤波数据融合
1课程设计目的
(1)掌握嵌入式系统的一般设计方法和设计流程;
(2)学习嵌入式系统设计,掌握相关IDE开发环境的使用方法;
(3)掌握ARM的应用;
(4)学习掌握嵌入式系设计的全过程;
2设计内容和要求
2.1设计要求
(1)学习掌握基于ARMCortex-M4内核的KinetisK60系列单片机的工作原理及应用;
(2)学习掌握加速度计、陀螺仪的工作原理及应用;
(3)设计基于PID控制的两轮自平衡车模型系统的工作原理图及PCB版图;
2.2研究意义
近年来,随着电子技术的发展与进步,移动机器人的研究不断深入,成为目前科学研究最活跃的领域之一,移动机器人的应用范围越来越广泛,面临的环境和任务也越来越复杂,这就要求移动机器人必须能够适应一些复杂的环境和任务。
比如,户外移动机器人需要在凹凸不平的地面上行走,有时环境中能够允许机器人运行的地方比较狭窄等。
如何解决机器人在这些环境中运行的问题,逐渐成为研究者关心的问题[1]。
两轮自平衡机器人的概念正是在这样一个背景下提出来的,这种机器人区别于其他移动机器人的最显著的特点是:
采用了两轮共轴、各自独立驱动的工作方式(这种驱动方式又被称为差分式驱动方式),车身的重心位于车轮轴的上方,通过轮子的前后移动来保持车身的平衡,并且还能够在直立平衡的情况下行驶。
由于特殊的结构,其适应地形变化能力强,运动灵活,可以胜任一些复杂环境里的工作。
两轮自平衡机器人自面世以来,一直受到世界各国机器人爱好者和研究者的关注,这不仅是因为两轮自平衡机器人具有独特的外形和结构,更重要的是因为其自身的本质不稳定性和非线性使它成为很好的验证控制理论和控制方法的平台,具有很高的研究价值。
2.3研究内容
本课题设计了一款两轮自平衡小车,研究了车身姿态检测中陀螺仪与加速度传感器的互补特性,并根据其特性比较并设计滤波算法,包括卡尔曼滤波等常用滤波算法。
PID控制算法的实现以及直流电机调速的研究。
具体包括:
(1)机器人本体设计:
包括机械,重心调整,电气系统设计等,为进一步研究提供良好的平台;
(2)信号调理及控制部分电路设计:
陀螺仪输出信号需要经过进一步滤波放大,因此需要设计信号调理电路,同时控制核心需要构建相关输入输出模块及人际交互设备,因此需要对主控单元电路进行设计。
同时还需要设计直流电机驱动电路。
(3)基于卡尔曼滤波的数据融合:
由于陀螺仪测量的角速度只在短时间内稳定而加速度传感器的自身白噪声很严重,因此根据其互补特性设计卡尔曼滤波器以得到准确稳定的角度和角速度。
(4)PID控制算法:
包括两路闭环控制。
小车的倾角闭环控制以及直流电机的闭环速度控制。
3 设计方案及实现情况
3.1两轮平衡车的平衡原理
控制小车平衡的直观经验来自人类日常生活经验。
如人类身体拥有丰富的感知器官,通过大脑调节便可以控制腰部及腿部肌肉保持人体的直立。
而一般人通过简单训练就可以让一根直木棍在手指尖保持直立不倒。
这需要两个条件:
一个是托着木棍的手指可以自由移动;另一个是人的眼睛可以观察木棍的倾斜角度与倾斜趋势(角速度)[4]。
这两个条件缺一不可,实际上这就是控制系统中的负反馈机制,如图1所示。
图1保持木棍直立的反馈控制系统
自平衡车的控制也是通过负反馈来实现的,与在指尖保持木棍直立比较则相对简单。
由于小车只依靠两个车轮着地,车轮与地面会发生相对滚动使得小车倾斜。
而小车上装载的姿态检测系统能够对小车的倾斜状况进行实时检测,通过控制器控制车轮转动,抵消在这个维度上的倾斜力矩便可以保持小车平衡,如图2所示。
图2通过车轮转动保持小车平衡
3.2系统方案设计
3.2.1主控芯片方案
方案一:
采用ATMEL公司的AVR单片机AVR单片机硬件结构采取8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。
提高了指令执行速度(1Mips/MHz),克服了瓶颈现象,增强了功能。
其中的一款单片机型号为Atmega128,有64个引脚,最高可达到16M主频,IIC,UART,SPI接口都比较丰富,但价格高。
方案二:
采用宏晶科技有限公司的STC12C5A60S2增强型51单片机作为主控芯片。
此芯片内置ADC(模数转换)和IIC总线接口,且内部时钟不分频,可达到1MPS。
性价比低。
考虑到此系统的复杂度,需要与传感器进行IIC通讯,输出灵活可控制的PWM信号,以及进行大量的数学运算。
从性能和价格上综合考虑选择方案一,即用KinetisK60作为本系统的主控芯片,由于外设比较简单,只需要IIC和PWM通道,因此具体型号定位为K60N512VM100。
方案三:
采用freescale公司KinetisK60系列单片机作为主控芯片。
KinetisK60系列单片机,工作电压1.71-3.6V,闪存的写电压为1.71-3.6V,采用ARMCortex-M4内核,其性能可达1.25DhrystoneMIPS/MHz。
该系列提供高达180MHz的性能和IEEE1588以太网MAC,用于工业自动化环境中的精确的、实时的时间控制。
硬件加密支持多个算法,以最小的CPU负载提供快速、安全的数据传输和存储。
系统安全模块包括安全密钥存储和硬件篡改检测,提供用于电压、频率、温度和外部传感(用于物理攻击检测)的传感器
[2]。
3.2.2姿态检测传感器方案
本系统采用的加速度计是三轴加速度计MMA7260。
该加速度传感器是一种低g值的传感器,输出信号很大,不需要再进行放大。
通过GSEL1和GSEL2脚选择灵敏度,本系统设置其灵敏度为800mv/g[4]。
电路如图3所示。
图3加速度计MMA7260接口电路图
本方案采用的陀螺仪传感器为L3G4200。
L3G4200D是意法半导体(ST)近日推出一款业界独创、采用一个感应结构检测3条正交轴向运动的3轴数字陀螺仪。
该3轴数字陀螺仪让用户可以设定全部量程,量程范围从±250dps~±2000dps,低量程数值用于高精度慢速运动测量,而高量程则用于测量超快速的手势和运动[4]。
这款器件提供一个16位数据输出,以及可配置的低通和高通滤波器等嵌入式数字功能。
与加速度传感器的数字接口一致,也是通过用SDA和SCL与主控芯片的硬件IIC接口进行通讯,采用3.3V供电,其应用电路如图4所示。
图4陀螺仪传感器电路
3.2.3电机选择方案
方案一:
直流无刷电机。
直流无刷电机具有直流有刷电机机械特性好、调速范围宽等优点,而且无刷电机没有换向器和电刷,可靠性高,寿命长。
但是无刷电机的驱动电路复杂,而且在本设计中小车为实验性质,车身较小,市面上很难找到大小合适的直流无刷电机。
方案二:
步进电机。
步进电机的选择角度正比于脉冲数,有较宽的调速范围,可以采用开环方式控制;步进电机有较大的输出转矩;有优秀的起制动性能;控制精度较高,误差不会累积。
但是步进电机步距角固定,分辨率缺乏灵活性,而且步进驱动时容易造成车体震荡,不利于小车的稳定。
步进电机虽然可以使用细分驱动方式克服上述缺点,但是细分驱动电路结构复杂,而且功耗增大不适合用于电池供电的应用上。
方案三:
直流电机。
直流有刷电机具有机械特性硬,响应速度快,调速范围宽的特点,满足两轮自平衡小车对灵敏性、快速性等要求,虽然电机的电刷会是电机的寿命缩短,还会引发电磁干扰。
但是由于本设计负载较轻,换向器和电刷的损耗较低。
小车采用多层机械结构,电机驱动电路与其他电路分离,有效降低电磁干扰[5]。
综上所述,本设计使用两个7.2V的直流有刷电机驱动两轮自平衡小车模型。
3.3系统最终方案
使用K60为主控芯片,通过IIC接口读取陀螺仪传感器L3G4200和加速度传感器MMA7260的数据,再将两者数据融合测出小车的姿态,最终通过PID输出PWM电机控制信号,由电机驱动完成对电机的控制。
此系统方框图如图5所示。
图5系统方框图
3.3.1主控电路
本设计的两轮自平衡小车采用K60N512VM100单片机为主控芯片。
Kinetisk60是基于ARMCortex-M4具有超强可扩展性的低功耗、混合信号微控制器。
主控及其外围电路如图6所示
图6主控芯片
K60N512VM100芯片电源类引脚,BGA封装22个,LQFP封装27个,其中BGA封装的芯片有五个引脚未使用(A10、B10、C10、M5和L5)。
芯片使用多组电源引脚分别为内部电压调节器、I/O引脚驱动、A/D转换电路等电路供电,内部电压调节器为内核和振荡器等供电。
为了电源稳定,MCU内部包含多组电源电路,同时给出多处电源引出脚,便于外接滤波电容。
为了电源平衡,MCU提供了内部相连的地的多处引出脚,供电路设计使用[5]。
K60系列MCU具有IEEE1588以太网、全速和高速USB2.0 OTG、硬件解码能力和干预发现能力。
芯片从带有256KBflash的100引脚的LQFP封装到1MBflash的256引脚的MAPBGA封装,具有丰富的电路、通信、定时器和控制外围电路。
高容量的K60系列带有一个可选择的单精度浮点处理单元、NAND控制单元和DRAM控制器。
这是一款非常稳定且有潜力的ARM控制系列的微控制器[3]。
3.3.2电机驱动电路
本设计中使用直流有刷电机作为两轮自平衡车的驱动电机,电机采用H桥驱动方式,使用脉宽调制方式调节电机两端电压有效值,达到调速的目的。
电机驱动电路采用4片BTS7970搭载成两个H桥来驱动平衡车的两个电机,具有输出功率大,稳定性好,保护措施好等优点[8]。
一个H桥电机驱动电路如图7所示。
图7电机驱动电路
3.3.3编码器电路
为了使用闭环控制,我们在模型上附加了编码器。
和其他元件相比,选用编码器可以使电路更加完善,信号更加精确。
编码器功耗低,重量轻,抗冲击抗震动,精度高,寿命长,非常实用。
K60自身具有正交解码功能,因此这里无需使用任何外围计数辅助器件,只需要将接口连接到单片机上相应的接口即可
[3],接口如图8所示。
图8编码器的接口部分电路
3.3.4供电电路
可靠的电源方案是整个硬件电路稳定可靠运行的基础。
电源模块由若干相互独立的稳压电路模块组成。
这样做可以减少各模块之间的相互干扰,另外为了进一步减小单片机的5V电源噪声,可以单独使用一个5V的稳压芯片,与其它接口电路分开[7]。
整个系统需要3种电源:
(1)7.2V电源,为驱动电机供电。
(2)5V电源,为编码器及相关外设供电。
(3)3.3V电源,为单片机、陀螺仪及加速度计供电。
整个系统电源来源为7.2V镍氢电池,5V电源由LM2940提供。
LM2940是一种线性低压差三端稳压器件,其输出纹波较小,适合单片机供电。
3.3V电源采用LM1117。
电机供电直接采用电池供电如下图所示。
图95V电源模块
图103.3V电源模块
3.4系统软件设计
3.4.1编译环境概述
嵌入式软件开发有别于桌面软件开发的一个显著的特点,是它一般需要一个交叉编译和调试环境,即编辑和编译软件在通常的PC机上进行,而编译好的软件需要通过写入工具下载到目标机上执行,如MK60N512VMD100的目标机上。
在开发过程中我们使用IAR Systems公司的IAR Embedded Workbench for ARM 6.30集成开发环境(简称IAR环境)J-Link-ARM-V8仿真器。
Embedded Workbench for ARM 6.30 是IAR Systems 公司为ARM 微处理器开发的一个集成开发环境。
比较其他的ARM 开发环境,IAR 具有入门容易、使用方便和代码紧凑等特点[2]。
IAR中包含一个全软件的模拟程序(simulator)。
用户不需要任何硬件支持就可以模拟各种ARM 内核、外部设备甚至中断的软件运行环境。
从中可以了解和评估IAR的功能和使用方法。
调试界面如图所示:
图11IAR界面示意图
3.4.2系统软件总体流程
系统软件总体流程如图12所示。
图12系统软件总流程图
系统上电复位后便开始初始化各个功能模块,并启动了1ms定时,每1ms进行一次姿态估算和PID控制,即1s内系统进行了1000次姿态调整。
同时为了前期调试已经查看数据,使用了主控的串口将程序中产生的数据如估算出的最终角度等,上传到电脑,以观察数据的特性,上传周期为16ms。
3.4.3系统初始化
系统初始化完成KinetisK60单片机的初始化设置,初始化程序流程图如图13所示。
图13系统初始化流程图
3.4.4PID控制器
当今的自动控制技术都是基于反馈的概念。
反馈理论的要素包括三个部分:
测量、比较和执行。
测量系统需要控制的变量,与期望值相比较,用这个误差纠正调节控制系统的响应。
在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。
PID控制器问世至今已有近70年历史,以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一[6]。
PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。
其输入e(t)与输出u(t)的关系为:
(式1)
其中
为比例系数;
为积分时间常数;
为微分时间常数。
PID控制器具有原理简单、使用方便、适应性强、鲁棒性强、对模型依赖少等特点,因此使用PID控制器实现两轮自平衡车的控制是完全可行的。
由小车静止时其运动方程可得到系统输入输出传递函数:
(式2)
此时系统具有两个极点:
。
其中一个极点位于s平面的右半平面。
根据奈奎斯特稳定判据可知系统不稳定,因此小车在静止状态不能保持平衡[9]。
由小车受力分析可知小车平衡的条件是提供额外的回复力及阻尼,其来源为车轮与地面的摩擦力。
由式2可知,车轮提供的加速度的大小是根据角度
及角速度
的反馈得出,因此需要在控制系统中引入角度
及角速度
构成比例(P)微分(D)反馈环节,如图14所示。
图14加入比例微分环节后的控制系统结构图
加入比例微分反馈后的系统传递函数为:
(式3)
此时,系统的两个极点为
。
根据奈奎斯特稳定判据可知,系统稳定需要两个极点都位于s平面的左半平面。
要满足这一点,需要
>g,
>0。
由此可得出结论,但
>g,
>0时,小车可以保持平衡,这也与上文中小车受力分析的结果相符。
在反馈环节中,与角度
成比例的控制量称为比例控制;与角速度成比例的控制量称为微分控制(角速度是角度的微分)。
因此上面系数
,
分别称为比例和微分控制参数。
其中微分参数相当于阻尼力,可以有效抑制自平衡车振荡。
控制系统的输出量为电机控制量,因而小车平衡控制的PID控制器的输出方程可写为:
OUT_Motor=Kp*Angle+Kd*Angle_dot(式4)
式4中,OUT_Motor为PID控制输出量,Angle为反馈倾角值,Angle_dot为反馈角速度值,Kp和Kd分别为比例系数及微分系数。
3.4.5滤波器
单独使用加速度计或者陀螺仪,都无法提供一个有效而可靠的信息来保证车体的平衡。
采用一种简易互补滤波方法来融合陀螺仪和加速度计的输出信号,补偿陀螺仪的漂移误差和加速度计的动态误差,便可以得到一个最优的倾角近似值。
该滤波器的实现算法如图15所示。
图15互补滤波器算法流程图
在使用互补滤波器前,先对加速度的值进行低通滤波。
加速度的值里包含了一些短时性快速变化的信号,这些信号对计算角度有较大的干扰,因此应使用低通滤波器将其滤除掉,滤除后的加速度值具有长时性缓慢变化的平滑效果。
由图可看出该滤波器的输入有两个数据,一是加速度计测得的角度,二是陀螺仪测得的角速度,两者经过一定的融合运算后得出一个稳定可靠的倾角。
以下将介绍数据的融合过程。
首先建立一个以主控板为基准的空间坐标系,如图16所示。
图16传感器直角坐标系
R代表电路板的加速度矢量,Rn(n可以是x,y,z)代表R在各个轴的分量,Ann(A代表角度angle,nn可以是xz,yz,如Axz)代表R与各个平面的夹角。
因此,从加速度计测出来的RxAcc,RyAcc,RzAcc(acc代表accelerometer)便可合成矢量Racc,即Racc=[Raccx,Raccy,Raccz]。
由Racc的分量即可计算出Axz,Ayz,但如前文讨论的,此时的Axz,Ayz并不稳定可靠。
假设最后计算出的稳定可靠的矢量(实际上是单纯的重力加速度矢量)为Rest=[RxEst,RyEst,RzEst](Est代表:
estimate)。
程序中,第一次计算Rest直接取值于加速度计的Racc,即:
(式5)
此后的Rest(如Rest
(1),Rest
(2),Rest(3)…Rest(n))则由陀螺仪参与调整。
在计算Rest(n)时,可以通过RxEst(n-1)和RzEst(n-1)计算出Axz(n-1),即:
(式6)
接着由Axz(n-1)和RateAxz(n)可计算出Axz(n),即:
(式7)
其中RateAxz(n)为绕y轴的陀螺仪角速度,T为计算Axz(n-1)到计算Axz(n)的时间差值。
同样道理可得:
(式8)
再由以下公式可得:
(式9)
同理得:
(式10)
(式11)
到此,计算出了两个单位为1的向量:
Racc(n),Rgyro(n),通过一个加权平均公式便可得到Rest(n),即:
(式12)
令w2/w1=wGyro,可得
(式13)
即:
(式14)
(式15)
(式16)
而小车的倾角为:
(式17)
3.5电路调试
3.5.1加速度计测试结果
理论上只需要加速度就可以获得车模的倾角,再对此信号进行微分便可以获得倾角速度。
但在实际车模运行过程中,由于车模本身的摆动所产生的加速度会产生很大的干扰
信号,它叠加在上述测量信号上使得输出信号无法准确反映车模的倾角,如图17所示。
图17车运动引起的加速度信号波动
下图是实际测量安装在车模上MMA7260的Z轴信号。
车模倾角在两个角度位置过渡,看到除了角度变化信号之外,还存在由于运动引起的电压波动,这个电压波动随着车模运动速度增加会变得很大。
图18实际测量加速度计Z轴信号
3.5.2陀螺仪测试结果
在车模上安装陀螺仪,可以测量车模倾斜角速度,将角速度信号进行积分便可以得到车模的倾角,如图19所示。
由于陀螺仪输出的是车模的角速度,不会受到车体运动的影响,因此该信号中噪声很小。
车模的角度又是通过对角速度积分而得,这可进一步平滑信号,从而使得角度信号更加稳定。
因此车模控制所需要的角度和角速度可以使用陀螺仪所得到的信号。
图19角速度积分得到角度
由于从陀螺仪角速度获得角度信息,需要经过积分运算。
如果角速度信号存在微小
的偏差和漂移,经过积分运算之后,变化形成积累误差。
这个误差会随着时间延长逐步
增加,最终导致电路饱和,无法形成正确的角度信号,如图20所示。
图20角速度积分漂移现象
消除上述误差通过上面的加速度传感器获得的角度信息对此进行校正。
通过
对比积分所得到的角度与重力加速度所得到的角度,使用它们之间的偏差改变陀螺仪的
输出,从而积分的角度逐步跟踪到加速度传感器所得到的角度,如图21所示。
图21通过重力加速度来矫正陀螺仪的角度漂移
4课程设计总结
本设计主要研究两轮自平衡小车的设计与实现。
通过相应硬件与软件的设计,实现了两轮自平衡小车的动态平衡与运动控制。
系统硬件结构以飞思卡尔公司32位单片机K60为控制核心,采用压电陀螺仪L3G4200及MEMS加速度计MMA7260构成了惯性姿态检测系统,通过H桥电机驱动及旋转编码器实现了直流电机的闭环调速,最终实现了两轮自平衡车的姿态检测与平衡控制。
系统软件设计上比较了各类滤波器优缺点,结合本系统硬件构架设计了以卡尔曼滤波器为核心的数据融合算法。
通过卡尔曼滤波器将陀螺仪与加速度计的输出融合为准确的倾角与角速度输出,为系统的控制提供了有力保障。
本设计的控制策略采用PID控制算法。
通过对小车的运动建模,构建了小车运动控制的PD控制算法,并对PID参数进行了整定。
本设计最终实现了两轮自平衡小车的平衡控制及运动控制。
由于时间及个人能力原因,本设计完成的两轮自平衡小车只是一种简单的模型。
本设计还有以下方面可以继续研究和提高:
(1)采用大型车架及驱动电机,设计出可以载人的两轮自平衡小车。
(2)研究机械机构对两轮自平衡车的控制的影响。
(3)采用高规格陀螺仪及加速度计,提高系统姿态检测精度。
(4)使用速度更快的控制器,如DSP,X86等,提高系统控制速度。
(5)研究并应用先进数据融合算法,如神经网络等。
(6)采用先进控制算法,如LQR最优控制,模糊控制,神经网络等,提高控制系统性能。
参考文献
[1]赵杰,王晓宇,秦勇等.基于UKF的两轮自平衡机器人姿态最优估计研究[J].机器人.2006:
(11),605—609.
[2]邵贝贝.嵌入式实时操作系统[LC/OS-Ⅱ(第2版)[M].北京.清华大学出版社.2004
[3]张志强.基于KINETISK60的双轮平衡车[J].电子设计工程,2011,35
(2):
11-16.
[4]冯智勇,曾瀚,张力等.基于陀螺仪及加速度计信号融合的姿态角度测量[J].西南师范大学学报(自然科学版),2011,24(4):
12-15.
[5]霍亮.两轮自平衡电动车的关键技术研究[D].哈尔滨:
哈尔滨工程大学,2010.
[6]谢芳,杨红果.数字PID改进算法的分析与实现[J].焦作师范高等专科学校学报,2010,21(02):
13-16.
[7]康华光.电子技术基础[M]..北京:
高等教育出版社,2006.1.
[8]王效杰.基于变结构控制的两轮自平衡小车系统设计与实现[D].西安电子科技大学,2006,10(13):
23-26.
[9]仲志丹,张洛平,张青霞.PID调节器参数自寻优控制在运动伺服中的应用[J].洛阳工学院学报,2000,21
(1):
57~60.
[10]秦永元,张洪钺,汪叔华.卡尔曼滤波与组合导航原理[M].西安:
西北工业大学出版社,1998.
附