基于PID控制算法的自平衡机器人Word格式.docx
《基于PID控制算法的自平衡机器人Word格式.docx》由会员分享,可在线阅读,更多相关《基于PID控制算法的自平衡机器人Word格式.docx(35页珍藏版)》请在冰点文库上搜索。
Abstract
Alongwiththefurtherroboticsresearch,androbotswaswidelyusedintheindustrialproduction,securitysystems,intelligenthouseholdandIOT.In
a
practical
application,therobotsmayencountercomplextaskenvironment.ComparedwiththeWheeled-robotwhichhasseveralwheels,self-balancingtwo-wheelrobothastheadvantagesofflexiblemovementbecauseofitssmallsize;
it’ssuitable
inthe
more
narrow
use
ofthe
environment.Thiskindofrobothastwowheelsofcoaxial,tokeepbalancebywayofmovement.Therobotcanachievethebasicmovementfunction;
itcanmoveforwardandbackward,turnleftandright,aswellasstillstanding.Duetoitsspecialstructure,itcanadapttodifferentterrainenvironment.Forthereasongivenabove,researchesontheTwo-WheeledSelf-BalancingRobotwouldbesignificant.
ThisdesignisbasedonaTwo-Wheeledcar,andusestheMicrocontrollerMK60FX512VLQ15asthecontrolling
kernel.The
main
works
accomplished
inthepaperinclude:
(1)Designingafilteralgorithm,
achievingAnglemeasurementbasedonInertialMeasurementUnit-accelerometerandgyroscope.
(2)DesigningadrivingcircuitofMOSFET,achievingmotorspeedcontrolthroughPWMtechnology.(3)Designingcontrolalgorithm,achievingself-balancing.(4)Measuringmotorspeed,achievingspeedcontrolundertheconditionofself-balancingthroughClosed-LoopControl.
Finally,therobotcanstandsuprightwithoutdriftfortenminutesormore,andhasazeroturningradius.Inaddition,thespeedoftherobotiscontrollable,speedupto2m/s.Byusingaremotecontrol,therobotcanrealizefreemovement.
Keywords:
Microcontroller,PID,Measurementofangle,Self-Balancing
Drivingcircuitofmosfet
1绪论
1.1研究目的和意义
相比多轮的轮式机器人,两轮自平衡机器人具有体积小,运动灵活等特点,能够在比较狭窄、需要大转角的场合中运动[1]。
这种机器人两轮共轴,可以通过运动保持自身平衡,能实现前进、后退、转向、原地静止等基本运动功能,由于其结构特殊,能适应不同的地形环境,研究两轮自平衡机器人,具有重要的意义[2]。
其次,两轮自平衡车还可以作为代步交通工具,相比传统的代步工具如自行车、电动车等,两轮自平衡车体积大幅减小,重力大幅减,运动灵活,绿色环保[3]。
常见的轮式机器人主要是以四轮或三轮为主的多轮式结构,与之相比,两轮式自平衡机器人主要有如下优点:
(1)转向灵活,能够实现原地任意半径和任意角度转向,弥补了多轮机器人的缺点。
(2)体积小,对于在环境狭窄的空间中尤为适用;
(3)重量轻,大幅度减小了车体结构;
(4)绿色环保,功率小,适合于电池供电的系统,在同等能量密度电池的情况下,可以大幅度延长续航时间。
1.2国内外发展现状
两轮自平衡机器人最早是由日本电气通信大学的喀左教授于1986年提出的,但是由于当时的控制原理和策略还不成熟,其设计的机器人只能在单一方向运动,无法实现转弯[4]。
2002年,瑞士联邦工业大学的FelixGrasser等人设计出可遥控的自平衡机器人,这个机器人两轮共轴,每个轮子有独立的驱动,能实现速度控制、转弯等运动功能,运动速度可达到1.5m/s。
相比之前的作品,该机器人已趋于完善。
2002年,美国的赛格威公司设计了第一辆载人电动平衡车Segway,设计时速可达20km/h,并且成功推向市场,但是价格昂贵,高达5000美元[5]。
近几年,国内也有很多高校和企业开始研究自平衡机器人。
2004年,中国科学技术大学成功设计了一款载人两轮自平衡车,可实现零半径转弯。
其使用简单,用户经过10分钟简单的练习就可以驾驶,正常工作时,使用者通过身体前倾和后仰来控制加速和减速,通过操作手柄,可控制平衡车转弯,行驶速度达到10km/h,充满电可行驶约30km。
根据自平衡机器人质心的位置是否可变,可将自平衡机器人分为变质心自平衡机器人和定质心自平衡机器人两大类,由于变质心机器人结构复杂,而定质心机器人结构简单,容易实现,可控性高,目前国内外的研究主要是对定质心自平衡机器人的研究[6]。
1.3设计内容
使用ARMCortex-M4内核的KinetisK60单片机为主控制器,对加速度计和陀螺仪的数据进行融合,得到车身倾角最优估计,设计MOS电机驱动电路,编写PID控制算法控制车轮,达到自主直立的目的。
利用编码器构成速度反馈回路,使用PID控制算法进行速度和转向的控制,最终使其在自平衡的基础上,完成期望的运动。
本文将就硬件设计、滤波算法设计、控制算法设计等内容展开研究,具体内容如下:
(1)硬件电路设计:
设计制作主控制器电路板、电机驱动控制板,
(2)传感器数据融合:
编写算法,将陀螺仪所测数据和加速度计所测数据进行融合,得到最优倾角值[7]。
(3)控制程序设计:
通过对状态反馈控制、PID算法等方法和理论的研究,设计控制程序,使小车能够完成直立、前进、后退、转向等运动功能。
(4)单片机程序设计:
设计单片机程序,使其具备人机交互、控制等功能。
2总体设计方案
2.1设计思路
从控制的角度来看,两个直流电机是该机器人系统唯一的控制对象,机器人的运动控制任务可以分解为以下三个独立控制任务[8]:
(1)直立控制任务:
检测机器人的倾角,并设定目标倾角值,使用PD算法进行闭环控制,使控制车模稳定在平衡位置。
(2)速度控制任务:
直立自平衡车的速度控制与普通的多轮车速度控制不同,在直立系统中,速度控制是通过改变车身倾角来实现的[9]。
具体实施思路是,对电机转速加入干扰,使车身偏离平衡位置,以此刺激直立控制任务,从而达到控制速度的目的,速度控制使用PI算法[10]。
(3)方向控制任务:
通过控制两个电机的差速来达到转向的目的,方向控制使用PD算法,使用X轴的角速度作为微分项的因子,可以极大改善转向的动态性能,避免振荡。
程序设计中,三个控制任务独立进行计算和控制,但是每一个任务的控制对象都是电机,因此它们直接也存在着干扰与耦合。
在设计每一个控制任务时,为了便于分析,都假设其他两个任务是稳定的。
例如,在进行速度控制程序设计时,假设机器人是能够稳定直立的;
在进行方向控制时,假设机器人的直立控制和速度控制都是稳定的;
在进行直立控制时,假设机器人的速度控制和方向控制都是稳定的[11]。
这三个任务中保持机器人平衡是最首要的任务,由于机器人同时受到三种控制的影响,从直立控制的角度来看,速度、转向两个控制任务会干扰直立控制的稳定性[12]。
因此,虽然三个控制任务独立运行,但是它们之间有优先级,即控制应该最优先满足直立的要求,其次是方向控制的要求,最后才是速度控制的要求。
图2.1系统结构框图
2.2硬件设计方案
本系统采用一个主控电路板+一个电机驱动电路板的结构,将两者分开设计,一是可以避免电机驱动对主控的影响及电磁干扰,二是出于经济的考虑。
主控制电路板主要包括以下部分:
单片机核心电路、电源管理电路、单片机接口、按键电路、蜂鸣器电路等。
其中,电源管理电路分为3.3V稳压电路和5V稳压路,5V稳压电路使用LM2940三端线性稳压器设计,该稳压器输入7.2V电池电压,输出5V电压;
3.3V稳压电路使用LM1117三端线性稳压器设计,该稳压器输入接LM2940的5V电压,输出3.3V电压。
考虑到本系统中器件、传感器较多,因此5V管理电路和3.3V管理电路均使用两个。
微控制器接口主要包括:
OLED接口、蓝牙接口、MMA7361传感器接口、L3G4200D传感器接口、编码器正交解码接口2个、四通道PWM接口、遥控器解码接口,以及预留IO,方便调试使用。
图2.2主控电路板结构图
2.3机械结构设计方案
车模的整体机械结构对整个系统有直接影响,因为系统是在机械结构上实现的。
车模的机械参数如车体重心、车身高度、传感器排布与布局、齿轮松紧度等,都对整个系统起着至关重要的作用,良好的机械结构可以使系统更稳定。
经过多次测试与调试,我们发现重心越低越好,越集中越好,重心低会使控制更顺滑,直立更稳定,抗干扰能力更强,而重心集中则会让车模转向更加灵活。
因此,尽量降低重心,使结够更紧凑,是机械调整中最重要的部分。
整个系统中,重量最重的当属7.2V镍镉电池,电池的安放高度,大大影响整个系统的重新高度,本系统中,将电池座通过螺丝和热熔胶固定在较低的位置,电池则通过扎带捆绑在电池座上。
系统中的两块电路板体积较大,重力则仅次于电池,并且还有导线、传感器等连接在电路板上,因此应该将电路板尽量放低,对于降低重心也有极大帮助。
加速度计易受电机振动的影响,车模上最受震动影响最小的位置在轮轴中心附近。
由于加速度计Z轴在垂直于水平面时灵敏度最高。
因此将加速度计以垂直于水平面的角度安装在轮轴中央,使用热熔胶加以固定。
图2.3机械结构图
3硬件电路设计
3.1单片机最小系统电路
恩智浦K60(原飞思卡尔)系列单片机,是基于ARMCortex-M4处理器内核的超低功耗、混合信号处理单片机,Cortex-M4内核带DSP指令,性能可达1.25DMIPS/MHz(部分型号集成浮点运算单元)。
本系统使用MK60FX512VLQ15单片机为控制核心,该单片机主频高达150MHz,内部集成512KBFlash、144KBSRAM,可以轻松应对大多数的嵌入式应用场合。
片内集成了4个可配置分辨率的高速16位模数转换器(ADC)、两个12位数模转换器(ADC)、4个可输出PWM的高速比较器、6个支持IrDA的UART、3个硬件IIC总线接口和3个硬件SPI总线接口、32通道DMA控制器以及大量的多功能定时器,丰富的片内外设资源,不仅大大减轻了系统设计的困难,还有效降低了成本。
此外,该单片机提供十种低功耗模式,运行功耗低至350uA/MHz,静态功耗低至5.6uA,在高性能应用场合也可有效降低系统功耗,降低发热量[13]。
该单片机采用LQFP144封装,性能优良,能够胜任本设计要求。
图3.1主控芯片原理图
3.2加速度传感器模块
MMA7361是恩智浦公司(原飞思卡尔)的微型电容式加速度传感器,其功耗低,体积小,价格便宜。
内部集成一级低通滤波器,具有温度补偿、自我测试,自由落体检测等功能。
运行电压2.2-3.6V,模拟量输出,具有两种不同的灵敏度可选择。
正常工作状态下电流消耗400uA,在休眠模式下仅需3uA电流。
MMA7361三轴模拟加速度计的引脚排列如图3.2所示,引脚功能如表3.1所示:
图3.2MMA7361引角排列图
表3.1MMA7361引角功能
引脚
名称
描述
参数
1
N/C
空脚
/
2
XOUT
X轴加速度输出
0-3.3V
3
YOUT
Y轴加速度输出
4
ZOUT
Z轴加速度输出
5
VSS
地
GND
6
VDD
电源
3-5V
7
Sleep
芯片休眠控制引脚
0:
休眠;
1:
工作
8
9
0g-Detect
自由落体检测
正常;
自由落体
10
g-Select
量程选择
0:
±
2g;
1:
4g
12
13
SelfTest
芯片自我测试与初始化
14
图3.3MMA7361原理图
3.3陀螺仪模块
L3G4200D是意法半导体公司推出的16位三轴数字陀螺仪,该传感器功耗低,温漂小。
具有三种可选分辨率(250/500/2000dps),集成高通、低通滤波器,用户可自由选择带宽,工作电压2.4-3.6V,通过IIC/SPI接口输出数据。
图3.4L3G4200D原理图
3.4电机驱动模块
单片机要通过PWM控制直流电机转动,就需要电机驱动电路。
电机驱动电路的性能直接关系到直流电机的性能,进而关系到整个系统的稳定性。
常见的电机驱动方案有种:
(1)采用集成电机驱动芯片;
使用集成电机驱动芯片设计(常用的电机驱动芯片有BTS7970、L298N等),外围电路简单、可靠性高,但是驱动的性能有限。
由于本系统车模的电机的内阻小于10毫欧,而集成电机驱动芯片内部的每个场效应管导通电阻在120毫欧以上,这样,电机驱动回路总电阻就太大了,驱动电路的输出功率和发热量都很大,电机性能得不到充分发挥。
(2)采用N沟道场效应管和专用栅极驱动芯片设计。
分立的N沟道场效应管的导通电阻很低,一般小于10毫欧,大大减小了电机驱动回路总电阻。
另外,专用的栅极驱动芯片可以提高场效应管的开关速度,使PWM控制方式的调制频率提高,从而减少电枢电流脉动[14]。
经过多次试验与调试,我们最终选用半桥电机驱动芯片IR2184,它可以驱动高端和低端两个N沟道场效应管,能提供较大的栅极驱动电流,并具有硬件死区、硬件防同臂导通等功能。
使用两片IR2184半桥驱动芯片可以组成完整的直流电机全桥式驱动电路。
其性能优异、价格便宜,所以我们选择它进行设计[15]。
图3.5电机驱动原理图
3.5电源管理模块
电路设计中电源管理电路可分为线性稳压电源(7805、LM2940、LM1117等)和开关型稳压电源(LM2596、LM2941等)两大类。
线性稳压电压纹波小、电路简单,但是效率较低,功耗较大。
对于单片机和传感器等器件,对电源的纹波有较高要求,一般不需要较高的电流,因此应该选择线性稳压电源;
开关稳压电源功耗小,效率高,但电路却比较复杂,电路的纹波大,对于舵机等器件电源的功率输出有较高要求,而对于纹波要求较低,因此应该选择开关型稳压电源[16]。
LM2940:
LM2940-5.0一款低压差三端稳压器,固定输出电压5V,最大输出电流1A,当输出电流为1A时,输入输出电压差为0.8V,最大输入电压为26V。
它具有纹波小、转换效率高、电路结构简单、价格便宜的优点。
本系统用其为加速度传感器、陀螺仪、编码器供电。
LM1117:
LM1117是一个低压差线性三端稳压器,有5个固定电压输出的型号:
1.8V、2.5V、2.85V、3.3V和5V,电压输出精度高达±
1%,当其在输出电压3.3V,输出电流为800mA时输入输出电压差为1.2V。
本系统使用固定3.3V输出的LM1117为单片机、OLED等模块供电。
三端稳压器电路设计中滤波电容:
利用三端稳压器设计稳压电路,输入端通常接一个电容值较大的电解电容,可以起到滤波作用,提高稳压器工作的稳定性和瞬态响应[17]。
图3.6电源管理电路
4软件程序设计
4.1系统流程图
图4.1程序流程图
4.2程序初始化
程序运行,需要对单片机寄存器和传感器进行初始化。
初始化主要包含以下内容:
(1)发光二极管初始化
程序在运行过程中,发光二极管按照一定的频率亮灭,作为程序运行的标志,方便观察程序运行状态。
发光二极管初始化即通用I/O口初始化,将I/O口方向配置为推挽输出模式。
(2)ADC及MMA7361传感器初始化
本系统中,加速度计输出模拟量,因此需要通过模数转换器进行读取,MK60单片机内部集成4个16位ADC转换器,通道多达数十个,分辨率高,转换速度快,可以省去片外模数转换器。
此部分程序,将ADC配置为10位单端输入模式,并且初始化MMA7361相应的控制引角。
(3)OLED初始化:
本系统使用OLED+按键组合构成基本的人机交互系统,具有便于调试参数、观察系统运行情况等功能。
此OLED模块使用SPI接口,分辨率达到128*64。
(4)IIC接口及L3G4220D传感器初始化:
L3G4200D传感器通过IIC/SPI接口输出16位数字量,本系统使用硬件IIC接口对L3G4200D传感器进行读取,时钟频率400Khz。
初始化程序中,需要完成对传感器的唤醒,将采样频率配置为1000Hz,量程为±
2000dps。
(5)PWM初始化:
本系统通过PWM控制电机转动,两个电机总共需要四个PWM输出通道,PWM频率配置为10Khz,并且设置初始占空比为0。
(6)正交解码接口初始化:
本系统使用AB相编码器测量电机转速,AB相输出方波频率相同,相位不同,根据相位差来判断转向。
通过定时器的正交解码功能,可以方便获得电机转速。
本系统有两个轮子,使用两个编码器分别测速,因此需要两个正交解码通道。
(7)UART及其DMA初始化:
UART即通用异步收发器(UniversalAsynchronousReceiver/Transmitter),本系统使用UART借口的蓝牙模块同上位机进行通信,方便进行调试和观测数据。
DMA指直接存储器访问技术(Direct
Memory
Access),利用该技术,外部设备不通过CPU而直接与系统内存交换数据,从而解放CPU,大大提高CPU工作效率。
(8)按键及其中断初始化:
本系统使用按键作为人机交互的唯一输入接口,共使用了五个独立按键。
中断是指当发生特定事件时,CPU从当前程序转向特定程序段(中断服务程序)执行的功能。
本系统中,将按键一端接地,IO口接上拉电阻,当按键按下的时候,会在对应IO上产生下降沿,因此我们将按键对应的IO口配置为下降沿触发中断。
(9)周期性定时器初始化:
为了固定的控制周期,尤其是要确保陀螺仪的积分频率稳定,本系统使用PIT周期性定时器产生控制终端,中断周期3ms。
(10)NVIC嵌套向量中断控制器初始化:
Cortex-M4内核为处理器提供了强大的中断管理功能,NVIC即NestedVectoredInterruptController的缩写。
通过NVIC控制器,可以灵活地配置中断优先级,可确保高优先级程序优先执行,提高实时性[18]。
4.3PID控制算法
4.3.1PID控制算法介绍
在自动控制中,按照偏差(目标值与反馈值之差)的比例(Proportion)、积分(Integration)、微分(Differential)的组合进行控制的方法称为PID控制算法。
由于其原理简单、稳定性好、可靠性高、易于调整等优点,在自动控制领域应用最为广泛,已有近70年历史,现有的很多控制方法都是基于PID控制算法发展演变而来[19]。
当我们对目标系统和控制对象的模型不够了解,或者不能得到控制系统的参数时,PID控制算法尤为适用[20]。
图4.2PID算法结构
(1)比例控制部分:
比例控制的计算因子是目标值与测量值之间的偏差,当偏差产生时,比例控制部分立即产生控制作用,以消除偏差,偏差越大,比例控制作用越明显,反之,控制作用越弱,比例控制在很大程度上决定PID控制器的控制趋势,控制作用最为明显[21]。
(2)积分控制部分:
积分控制的计算因子是偏差的和,可以消除静差,提高系统的无差度,其控制作用会有明显的滞后现象,如果使用不当,容易产生低频振荡,积分控制作用的强弱主要取决于积分时间常数Ti,Ti越小,积分作用越强,反之,则越弱。
(3)微分控制部分:
微分控制的计算因子是偏差的变化率,能够抑制偏差的变化,微分控制可以预测偏差的变化趋势,因此可以在偏差变大之前,产生提前的控制效果,从而加快系统调节速度,微分控制可以提高系统的动态性能,提高反应速度,克服振荡。
PID控制算法的计算结果是偏差信号的比例、积分、微分三部分的线性叠加,偏差值e(t)即目标值r(t)与反馈值c(t)的差,属于闭环控制系统,因此需要使用传感器构成反馈回路。
PID控制器的微分方程:
(式4.1)
其中