两轮自平衡小车角度检测软件设计毕业论文.docx
《两轮自平衡小车角度检测软件设计毕业论文.docx》由会员分享,可在线阅读,更多相关《两轮自平衡小车角度检测软件设计毕业论文.docx(73页珍藏版)》请在冰豆网上搜索。
![两轮自平衡小车角度检测软件设计毕业论文.docx](https://file1.bdocx.com/fileroot1/2023-4/21/ce8706db-3dbd-440d-9d71-85d4682e3bbc/ce8706db-3dbd-440d-9d71-85d4682e3bbc1.gif)
两轮自平衡小车角度检测软件设计毕业论文
两轮自平衡小车角度检测软件设计毕业论文
1概述
机器人技术是一种面向未来的尖端技术,也是一项涉及通信技术、微电子技术、人工智能技术、材料科学、计算机技术、控制技术、传感器技术、通讯技术、数学方法和仿生学的多学科的综合高新技术。
两轮自平衡机器人自面世以来,迅速成为研究各种控制理论的理想平台,具有重大的理论意义,这要归功于其不稳定的动态性能和系统所具有的强非线性。
1.1两轮自平衡小车的研究意义[1][4][14]
本文的研究对象是两轮自平衡小车,它是一种本质不稳定的特殊轮式移动机器人,其动力学系统具有多变量、非线性、强耦合、参数不确定等特性;其运动环境复杂且运动学方程受到非完整约束;其控制任务复杂,在完成平衡控制的同时还要完成路径规划、路径跟踪等任务。
对两轮自平衡小车的研究能有效地反映控制中的许多典型问题:
如非线性问题、鲁棒性问题、镇定问题、随动问题以及跟踪问题等。
因此,两轮不稳定小车是一种复杂系统的研究性实验装置,是研究各种控制方法的一种比较理想的平台。
两轮自平衡小车是一个集多种功能于一体的综合系统,是自动控制理论与动力学理论及技术相结合的研究课题,其关键问题是在完成自身平衡的同时,还能够适应各种环境下的控制任务。
利用外加的速度传感器、倾角传感器、红外传感器、防碰撞开关等,来实现小车的自主避障、跟踪、路径规划等复杂功能。
它是一种两轮共轴、独立驱动、车身中心位于车轮轴上方,通过运动保持平衡,可直立行走的复杂系统。
由于特殊的结构,其适应地形变化能力强,运动灵活,可以胜任一些复杂环境里的工作。
传统的轮式移动小车多为具有导向轮的三轮或四轮小车布局,与之相比,两轮自平衡小车在实用性上主要有如下优点:
(1)驱动功率较小,为电池长时间供电提供了可能,为环保轻型车提供了一种新的思路;
(2)实现原地回转和任意半径转向,移动轨迹更为灵活易变,很好的弥补了传统多轮布局的缺点;
(3)减少了占地面积,适用于在场地面积较小或要求灵活运输的场合;
(4)大大简化了车体结构,可以`把小车做的更小更轻。
1.2两轮自平衡小车的发展历程和国内外研究现状[3][4][5][7]
1.2.1国外研究现状
近年来,两轮自平衡小车引起了国内外许多科学爱好者极大关注,各种基于不同设计方案、不同目的和控制策略的自平衡系统相继诞生。
下面列举几个典型的例子。
1)SEGWAYHT
由美国发明家DeanKamen开发的“SEGWAYHT”是一个实用、成熟以及商业化版本的两轮机器人。
它可以承载站在平台上的驾驶者,而且可以在保持平衡的状态下在多种路面上进行便捷的运动,其外观如图1-1所示。
它使用了五个陀螺仪和一个收集其他角度传感器数据的集成器来保持自身的直立状态。
SEGWAY的踏板位置低于两轮轴心连线,系统有一定的自稳定特性,所以控制难度有明显的降低。
图1-1SEGWAYHT图1-2JOE机器人
2)JOE机器人
由瑞士联邦工业大学工业电子实验室的FelixGrasser等人在2002年研制出的两轮移动机器人Joe,如图1-2所示,最大运动速度可达1.51m/s,超过了人的行走速度,线性状态空间控制器利用从陀螺仪和电机编码器得到的信息来稳定系统。
操作者还可以使用无线装置远程遥控Joe的运动方向和运动速度,使其能在恶劣的条件下运行并保持平衡。
研究人员利用陀螺仪和光电编码器获得测量的数据,再用线性状态反馈控制器来控制整个系统的平衡稳定。
3)Nbot和Legway
由美国科学家DavidP.Anderson研发的两轮自平衡机器人Nbot和由StevenHassenplug研制的机器人Legway也是十分成功的例子。
如图1-3所示。
Nbot使用电机编码器和商用惯性传感器来实现系统的的平衡,Legway则使用LEGO公司的迷你风暴机器人套件制作,采用光电近场测量器作为传感器,为控制器提供数据。
另外,澳大利亚Western大学的一名教授也在2003年发表了一篇关于平衡两轮车的论文,是使用最优和极点配置等方法来平衡小车的。
图1-3Nbot、Legway和Unibot
4)Unibot独轮机器人
作为最新的研究成果,20007年10月,加州大学圣地亚哥分校成功实现了独轮自平衡机器人Unibot的控制,系统中使用加速度计和陀螺仪作为传感检测装置,在车轮方向上利用电机驱动控制,在垂直于车轮方向上,利用不平衡体旋转来提供补偿力矩。
虽然目前只实现了很小倾角范围内的控制,但是意义重大。
1.2.2国内研究成果
2004年,台湾国立中央大学电机工程研究所利用模糊控制实现了一个两轮小车的自动平衡控制,如图1-4所示。
图1-4台湾两轮机器人
中国科学技术大学研究出了两轮自平衡代步电动车,它在车体内嵌入式CPU的控制下,采集速度、加速度传感器以及平衡传感器的数据,通过一定的控制算法,计算并输出PWM信号来控制两个伺服电机的转矩,使车体保持平衡并且能够根据人体重心的偏移,自动前进、后退及转弯。
哈尔滨工程大学也有同样的双轮直立自平衡机器人。
此系统采用了两块Cygnal公司推出的C8051单片机和人机交互的上位机作为控制核心。
车体倾斜角度检测采用AD公司推出的反射式红外线距离传感器及双轴加速度传感器ADXL202,利用PWM技术动态的控制两台直流电机的转速。
上位机与机器人间的数据通信采用超小型超低功耗高速无线收发MODEM,人机交互界面采用240*128图形液晶点阵、方向摇杆及按键。
基于这些完美而可靠的硬件设计,使用一套独特的软件算法,实现了该系统的平衡控制。
1.2.3国内外研究分析总结
由国内外研究现状可以看出,现有的两轮自平衡机器人一般都是以倒立摆的结构模型为基础,根据机器人质心位置是否可变,分为定质心和变质心两大类。
目前的研究热点是定质心两轮自平衡机器人的研究。
对于两轮自平衡机器人位置与姿态信息的获取,一般选择陀螺仪、加速度计、倾角传感器、测距仪等传感器,通过数据融合得到其位姿信息。
软件是控制系统的灵魂,良好的控制算法是系统性能的保障。
两轮自平衡机器人本质上是具有强非线性的倒立摆系统,当前多采用极点配置法和模糊控制来进行平衡控制,这两种控制方法是目前普遍采用的两轮自平衡小车控制算法。
但是实验证明对于两轮自平衡小车而言模糊控制的表现更为优异。
1.3本人所做工作
本文的研究对象是两轮自平衡小车,研究重点是测量小车的加速度来计算小车的倾斜角度,从而通过改变小车的倾角来保持小车的平衡。
所利用的是ADXL345三轴加速度传感器,采用I2C总线模式电气连接来编写程序,通过LCD1602显示x、y、z轴方向的加速度。
通过查阅各种资料,熟悉I2C总线、ADXL345以及LCD1602的原理极其编程实例,完成了对两轮自平衡小车角度检测的软件设计。
(1)用I2C进行一些简单的实验并仿真,学习I2C总线的传输协议与数据传送,如起始停止条件;每传送一个字节数据必须有一个应答信号;开始传送数据后SCL高电平期间SDA上必须保持稳定等。
最终能够进行I2C模块的设计。
(2)查阅资料,选择用ADXL345作为加速度传感器,通过其I2C电气连接来完成设计。
充分熟悉ADXL345:
1)ADXL345的引脚配置,如何调整它的引脚来实现I2C连接;2)ADXL345的功耗模式,如何选择最佳速率以实现最低功耗;3)ADXL345的寄存器映射及其定义。
编写ADXL345的初始化、数据读取及三轴加速度的显示。
(3)选择LCD1602液晶显示屏来完成本次设计的显示部分,因为它微功耗、体积小、显示内容丰富、超薄轻巧,很适合本次设计的要求。
并熟悉它的工作指令、管脚配置、清屏、初始化、显示数据一系列功能。
(4)在完成了以上工作后,便开始着手程序方面的编写工作,通过查阅借鉴别人关于ADXL345通过I2C通信的程序设计,最终编写出自己的程序,完成了此次的设计。
2两轮自平衡小车整体设计
两轮自平衡小车主要分为两个部分,第一部分为机械系统,包括:
车身上支架、下平台、连杆、车轮等,负责搭建工作平台、承载硬件电路;第二部分为控制系统,包括:
驱动器、直流电机、电池、电源转换电路、传感器、处理器以及外围扩展电路等。
2.1机械系统的设计[10][11][12][16][19]
两轮自平衡小车的整体结构如图2-1,能以电机的轴心线为中心做前后转动。
图2-1小车整体结构示意图
小车的杆子被固定在平台上,杆子上面装有倾角传感器,通过传感器可以知道杆子倾斜的角度和角速度,左右两个轮子分别与直流电机的轴心连接,成为两个自由度。
在平台下面装有电机的电源转换器与驱动器,直流马达的后面装有编码器,可以获得两个轮子的位置和速度。
两轮自平衡小车的侧面构架如图2-2所示,可在以电机轴心线为中心的前后转动。
若定义以车身垂直地面为0°,仅考虑机械结构方面的限制,则车身可摆动的范围在-30°至+30°之间。
图2-2小车侧面图
当未做控制时,小车不论向前倾斜或向后倾斜,左右电机都应处于静止状态。
也就是说小车前后的摆动与电机转动是相互独立的。
当开始控制时,小车在竖直站立状态下释放,分别有静止、前进及后退三种运动方式,如表2-1所示,在正确的控制策略下,小车能够保持自身的平衡。
表2-1两轮自平衡小车运动方式归纳
静止
如果重心位于电机轴心线的正上方,则小车将保持平衡静止状态,不需要做任何控制。
前倾
如果重心靠前,身体会向前倾斜,则驱动车轮向前滚动,以保持小车平衡。
后退
如果重心靠后,身体会向后倾斜,则驱动车轮向后滚动,以保持小车平衡。
图2-3中,假设小车垂直地面为初始状态。
由于车身具有惯性,当两轮自平衡小车向左倾斜时,通过控制电机使车轮向左运动来维持小车的动态平衡。
这就是定质心自平衡小车从静止到运动的启动方法。
图2-3两轮自平衡小车启动状态
因此,两轮自平衡小车平衡控制的基本思想是:
当测量倾斜角度的传感器检测到小车产生倾斜时,控制系统根据测得的倾斜角度产生一个相应的力矩,通过控制电机,驱动两个轮子朝车身要倒下的方向运动,以保持小车的动态平衡。
2.2控制系统的设计[2][3][5][6][13][17][18][20]
两轮自平衡小车硬件电路的设计采取分层设计法,根据设计要求,首先设计小车整体的运动过程,并从大体上设计所需硬件,之后逐层设计硬件结构,对各部分做出详细的设计与评估,然后做最后的整合。
其工作原理结构框图如图2-4:
图2-4两轮自平衡小车工作原理结构框图
如图2-4设计的是小车工作时硬件的整体运行过程,整个系统包括主控制器模块,检测模块,执行模块等。
各部分介绍如下:
(1)主控制器:
系统的核心模块。
主要负责信号的接收、处理等,控制整个系统的运行,在保持小车的稳定方面起至关重要的作用。
(2)检测模块:
角度检测系统。
负责实时采集小车的倾斜角度数据,并及时通过A/D转换,将数据传送给主控制器。
(3)执行模块:
电机驱动。
负责执行主控制器的命令,直接驱动电机,可根据PWM波占空比调节转速。
(4)电源模块:
负责提供系统的电力。
综上所述可知,在小车工作时,硬件整体运行过程总结如下:
两轮自平衡小车系统利用其角度检测模块,收集了小车的倾斜角读数据,然后经过A/D将电压模拟信号转为数字信号传输给主控制器。
主控制器使用此信号经过计算和处理后,与电机现有的转速信号进行平衡PD控制,然后得出控制信号,让小车稳定,同时再把该信号调整为对应的PWM波,并且输出到驱动电路,在最后,再由驱动电路把对应于两个不同电机的控制信号分别发送到坐电机和右点击,以此调节转速,从而保持了平衡。
2.2.1主控制器模块
(1)设计要求
为了能够实现传感器数据的实时采集、电机的实时控制等要求,主控制器应具备较快的运算速度以及足够的IO接口;
为了保证可在小车上进行避障等二次开发和扩展,主控制器应预留足够大的容量;
由于设计经费有限,要求主控制器的成本尽可能偏低。
(2)控制器选型
微控制器是整个控制系统的核心部件。
它的质量和性能直接影响到控制系统功能与性能的实现。
因此,合理的选用控制器,对系统的设计至关重要。
本设计对微控制器选择,主要包括应以下几个方面:
①从结构特点和功能要求上,必须具有高性能与低功耗的特点,并且该微控制器的片内资源应比较丰富,以减小电路板的面积、提高整机稳定性。
②从功能需求上,应具有高精度(分辨率8位以上)PWM功能,以方便实现直流电机的调速控制。
此外,还应具有较强的I/O能力。
③从控制软件的开发支持上,应便于开发和调试应用程序,需要较大的存储空间和更高的运行速度。
同时,为了实现电路完成后的程序升级,微控制器需要支持代码与系统下载功能。
所以,本次设计的控制模块选择用AT89C51作为主控制芯片。
该芯片有足够的存储空间,能够满足该系统软件的需要,该芯片提供了两个计数器中断,对于本作品系统已经足够,采用该芯片可以比较灵活的选择各个模块控制芯片,能够准确的计算出时间,有很好的实时性。
而且ATC89C51有很强的扩展性,使用简单,灵活性高且价廉。
2.2.2角度检测模块
两轮自平衡小车传感器的主要作用在于:
通过信号采集获取小车的倾斜角度和角速度,得到相应的电压值,并把这个电压值通过A/D转换反馈给控制器,并以此为依据计算得到控制量,驱动左右电机,调整电机方向,控制小车前进或后退从而使小车保持平衡状态。
因此传感器姿态信号的优劣直接影响了小车的控制性能。
而一般的惯性传感器所测量的数据存在大量的噪声,两轮自平衡小车一般采用的传感器有倾角传感器、加速度计和陀螺仪。
ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达±16g。
数字输出数据16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。
ADXL345非常适合移动设备应用。
它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。
其高分辨率(3.9mg/LSB),能够测量不到1.0°的倾斜角度变化。
鉴于我们需要高精度高分辨率的传感器,ADXL345具有这些特点,而且它还能精确的反映重力加速度,应用算法使小车最快最稳的找到平衡点,故选用ADXL345作为传感器。
3两轮自平衡小车常见数学模型及控制算法
3.1动力学模型及其参数说明[3][5][9][10][16][19]
两轮自平衡小车的结构主要由车架和车轮组成,小车两轮参数(半径,转动惯量,质量)相同,独立驱动,共轴,车架重心倒置于车轮轴上方,通过运动保持平衡,可直立行走。
车轮不但受电机的输出转矩,地面支持力,摩擦力的影响,还通过电机轴受到小车的车身作用力。
其车轮受力图如图3-1,车架受力示意图如图3-2。
图3-1车轮受力示意图
图3-2车架受力示意图
以车轮,车架为研究对象,分别列出车轮,车架方程,左右两轮具有对称性,左轮方程为
,(式3-1)
式中m为车轮质量,kg;J为电机转子和车轮等效在电机轴上的转动惯量,kg·㎡;r为车轮半径,m;ωL为左轮转速,rad/s;TmL为左轮电机电磁转矩,N·m;HL为左轮承受的车身水平作用力,N。
由车架得到方程
,(式3-2)
式中n0,a0分别为质心水平,竖直位移;F,H分别为车轮从水平、竖直方向施加给车身的力,N;l为质心距车轮轴距离,m;φ为车架竖直倾角,rad;m0为车架重量,kg。
两轮自平衡小车平衡后,可假设车架倾角在±5°范围内。
取近似值(sinφ=φ,cosφ=1),并将式(式1)代入式(式2),得到车架前进运动模型为
,(式3-3)
这样,就建立了关于车架竖直方向角度和车轮转速微分方程。
3.2控制算法的设计[5][6][8][15][19][20]
3.2.1平衡控制
两轮自平衡小车是一个多输入、单输出系统,分别以小车竖直角度、竖直方向角速度和电机转速为输入,车轮转动角加速度为输出。
由上面得到的微分方程得出状态方程为
,(式3-4)
。
(式3-5)
其中
;
;
。
利用线性系统的可控性秩判据rank(BABA2B)=3,系统可控;利用线性系统的可观性秩判据rank(CCACA2)=3,系统可观。
因此,近似线性化系统状态完全可控可观,系统满足最优控制使用条件。
下面应用LQR控制算法对其进行计算,设最优控制向量的矩阵为K,则有
,(式3-6)
式中ub(t)为满足两轮自平衡机器人处于平衡状态的加速度,这样,就得到了满足平衡控制要求的控制量。
3.2.2直行和转弯控制
两轮自平衡小车的其他运动(直行,转弯)都是在这个控制量的基础上进行加减的,具体控制方法如图3-3所示。
小车的行进是以小车平衡的基础上,通过给两轮增加相同的控制量us来实现的。
由于两轮分别独立驱动,即便获得同样的直行信号us也不能保证两轮行进速度始终相同。
行进路线保持直线,这样,就需要小车对于行进方向具有自动校正能力。
图3-3两轮自平衡小车控制结构图
小车直线行走模型是一个双输入、单输出系统,输出uo与水平转速θ和两轮行进距离的差(xL-xR)/2成线性关系
。
(式3-7)
水平转速可以通过陀螺仪的水平分量得到,两轮行进距离可以通过编码器读到,利用最优控制算法同样可以得到系数h1,h2的值,从而得到用于校正行进方向的输出uo。
小车的转向运动,可以通过两轮差动方法实现,分别给左右两轮加上一对大小相同、方向相反的控制量ur。
这样,就可以得到两轮自平衡小车总输出为
(式3-8)
3.2.3小车运动的精确控制
小车速度的精确控制可以通过改变(式6)中的状态变量v来实现。
如果目标速度为v,则通过
,
(式3-9)
可以使移动速度稳定在vt。
如果目标加速度为ut,只需令
(式3-10)
可以使小车按照加速度ut加速。
转动角度可以通过改变方程(式7)来实现,如果需要向右转动θt,则
。
(式3-11)
这样,就实现了速度、加速度、转角控制的精确控制。
通过读两轮编码器,可以得到小车位置、朝向、运动速度等信息。
这样,就可以通过编写程序,让小车按照预先指定的运动状态和路线运动。
4两轮自平衡小车角度检测的软件设计
本设计所选用的传感器为ADXL345三轴加速度计,采用I2C总线模式连接,测出xyz三个方向的加速度,计算出倾角通过LCD1602液晶显示屏显示出来,用AT89C51单片机作为控制核心。
4.1系统模块结构框图
两轮自平衡小车角度检测硬件框图如图4-1所示。
4-1两轮自平衡小车角度检测硬件结构框图
工作时,主控芯片AT89C51单片机不断通过I2C总线对加速度传感器ADXL345进行访问,此时ADXL345处于从机状态。
在往ADXL345写数据期间,ADXL345向主设备传出的数据都是无效的,此时单片机处于主机状态,适用I2C总线数据传输,能够初始化发送产生时钟信号和终止发送。
往ADXL345写数据后,ADXL345对写入的数据进行合成,再通过A/D转换,将数据传送给主控制器AT89C51,再将数据传到液晶显示模块的LCD1602上显示出来,同时,主控制器驱动左右电机,调整电机方向,控制小车前进或后退从而使两轮自平衡小车保持平衡状态。
4.2主程序模块
两轮自平衡小车角度检测主程序流程图如图4-2所示:
图4-2主程序流程图
主程序设计如下:
voidmain()
{
uchardevid;
delay(500);//上电延时
InitLcd();//液晶初始化显示ADXL345
DisplayOneChar(0,0,'A');
DisplayOneChar(1,0,'D');
DisplayOneChar(2,0,'X');
DisplayOneChar(3,0,'L');
DisplayOneChar(4,0,'3');
DisplayOneChar(5,0,'4');
DisplayOneChar(6,0,'5');
Init_ADXL345();//初始化ADXL345
devid=Single_Read_ADXL345(0X00);//读出的数据为0XE5,表示正确
TMOD&=0xF0;
TMOD|=0x01;//TMOD的值表示定时器工作方式选择
TH0=0xB1;
TL0=0xE0;//设置定时时间为20ms
TR0=1;//开始计数
ET0=1;//允许定时器T0中断
EA=1;//开总中断
while
(1)
{
display_x();//显示X轴速度
display_y();//显示Y轴速度
display_z();//显示Z轴速度
display_ang();//显示倾角
}
}
主程序的主要工作流程在图4-2已经表现出来,大体分析就是:
通电时,ADXL345和LCD1602都初始化,LCD1602初始化显示ADXL345;然后ADXL345通过I2C器件寻址选择到12C总线连接;接着ADXL345通过I2C开始数据传输,并定时读取数据,得到所需要的加速度;然后通过数据合成由LCD1602显示出各轴速度,最后再由得到的加速度计算出Z轴相对于XY平面的倾斜角度并显示出来。
4.3I2C总线模块[11][13][21][23][25]
下面是I2C总线的一些特征:
●只要求两条总线线路:
一条串行数据线(SDA);一条串行时钟线(SCL)。
●每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址;主机可以作为主机发送器或主机接收器。
●它是一个真正的多主机总线,如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏。
●串行的8位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。
●片上的滤波器可以滤去总线数据线上的毛刺波,保证完整数据。
●连接到相同总线的IC数量只受到总线的最大电容400pF限制。
4.3.1I2C总线的概念
I2C总线支持任何IC生产过程(NMOS、CMOS、双极性)。
器件只有两根信号线,一根是双向的数据/地址线SDA,另一根是串行时钟线SCL,所有连到I2C总线上的设备的串行数据线都接到总线的SDA上,而设备的串行时钟线都连接到总线的SCL上。
每个器件在实际使用中,由于SDA和SCL是漏极开路端口,所以两根总线必须接有5—10K的上拉电阻。
每个器件都有一个唯一的地址识别,而且都可以作为一个发送器或接收器。
除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机(见表4-1)。
主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。
此时任何被寻址的器件都被认为是从机。
表4-1I2C总线术语的定义
术语
描述
发送器
发送数据到总线的器件
接收器
从总线接收数据的器件
主机
初始化发