双轮自平衡小车项目设计报告Word文档格式.docx
《双轮自平衡小车项目设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《双轮自平衡小车项目设计报告Word文档格式.docx(49页珍藏版)》请在冰点文库上搜索。
给小车通电,平衡放在地上,当小车开始倾斜时,陀螺仪及时地采集的小车倾斜角度数据传给单片机,而加速度计将车子倾斜的瞬时加速度采集后也传给单片机,同时,光码测速仪也将车子的实时速度采集后传给单片机。
单片机系统收集到以上三组数据,对数据进行量化处理后,在PID平衡算法的控制下,控制电机及时地做出前进或后退或加速或减速的反应,使车子在一个小角度范围内做平衡地来回摆动,以保持车子的不倒。
2、自平衡小车的总体框图
自平衡小车主要由以下模块组成:
单片机控制系统、陀螺仪加速度检测模块、光码盘测速模块、稳压模块、电机驱动模块、LCD1602显示模块,以下是自平衡小车系统方框图。
单片机控制模块
陀螺仪加速度模块
光码盘测速模块
稳压模块(电源)
电机驱动模块
LCD1602显示模块
自平衡小车系统框图
二系统的具体设计与实现
1、单片机控制模块
单片机最小系统原理图如下:
单片机最小系统
单片机最小系统由复位电路以及晶振电路组成,它是保证单片机能正常工作的最基本条件,在此不作过多介绍。
2、陀螺仪加速度计模块
本设计中所采用的陀螺仪加速度设模块为MPU6050,之所以选择这个模块,是因为其有以下优点:
()集角度测量与加速度测量于一体
(2)其那同时测量三轴上的角度与加速度测量
(3)其输出为数字信号,便于处理于存储与传输
(4)测量范围大,反应快。
以下是MPU6050相关资料
MPU-6000为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的包装空间。
MPU-6000整合了3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理(DMP:
DigitalMotionProcessor)硬件加速引擎,由主要I2C端口以单一数据流的形式,向应用端输出完整的9轴融合演算技术
InvenSense的运动处理资料库,可处理运动感测的复杂数据,降低了运动处理运算对操作系统的负荷,并为应用开发提供架构化的API。
MPU-6000的角速度全格感测范围为±
250、±
500、±
1000与±
2000°
/sec(dps),可准确追緃快速与慢速动作,并且,用户可程式控制的加速器全格感测范围为±
2g、±
4g±
8g与±
16g。
产品传输可透过最高至400kHz的I2C或最高达20MHz的SPI。
MPU-6000可在不同电压下工作,VDD供电电压介为2.5V±
5%、3.0V±
5%或3.3V±
5%,逻辑接口VVDIO供电为1.8V±
5%。
MPU-6000的包装尺寸4x4x0.9mm(QFN),在业界是革命性的尺寸。
其他的特征包含内建的温度感测器、包含在运作环境中仅有±
1%变动的振荡器。
引脚图实物图
3、光码盘测速模块
此模块有以下优点:
(1)测速精度高,反应快,因为其一圈有高达60个栅格
(2)能测正反转
此模块详细资料如下:
对管厂家:
美国惠普HP原装
供电电压:
5V
接线方式:
红5V
黑GND
输出信号:
5Vp-p
两相信号输出(见下图)。
两根信号线,一根黄色的一根蓝色的(由于生产批次不同,有时候信号线可能为绿色,不影响使用),黄色和蓝色分别是2个TTL电平(可以直接接单片机)信号
(注:
测正反转就是靠这两个电平区分是正转还是反转)
(设A
B
为信号线)
A先有脉冲,证明是正转
B先有脉冲,证明是反转
重要说明:
长时间挡住或者不挡均没有输出,作为相位检测,只有在对射的上升沿和下降沿才会有波形输出,所以转动码盘或者用不透明物体来回切换状态的时候才会有方波输出,高速状态下,类似正弦波或者锯齿波,详见下面视频演示。
万用表测试一直表现为0.1V左右,是无效的!
测试请用示波器或者单片机的采集口。
测速原理示意图
测速原理演示图
4、稳压模块
之所以要设计稳压模块,是因为平衡小车不同模块所需电压值不同,比如电机的工作电压在9V,而单片机控制系统、LCD1602显示模块及测速模块工作电压在5V;
但同时陀螺仪加速度模块工作电压却在3.3V,因此有必要设计一稳压模块,能够同时稳定地提供这三组电压值。
稳压模块的原理图如下:
稳压模块原理图
其中用到两个稳压芯片LM7805及LM1117,LM7805能够将7V到12V之间的输入电压转化为5V的输出输出电压,同时LM117以LM7805V的输出电压为输入电压,将其转化为3.3V输出以供陀螺仪加速度模块使用。
图中,LED为测试电路是否正常,正常时灯亮;
反之,灯灭。
D1为普通二极管,在LM7805的输入与输出之间起滤波作用。
图中电容也均为滤波作用。
使用时,两稳压芯片均要用散热片,否则会导致温度过高而烧坏。
相应的PCB布线图如下:
稳压模块PCB图
5、电机驱动模块
由于电机工作电压与单片机的不同,且单片机本身带负载能力不强,电机工作需要较大电流等因素,无法用单片机直接驱动电机运转,因此需要电机驱动模块来驱动电机。
在此设计中所选用的电机驱动为L298N模块。
它具有以下优点:
(1)负载能力强
(2)能实现高电压强电流的输出
(3)控制简单方便
具体资料如下:
L298N是ST公司生产的一种高电压、大电流电机驱动芯片。
该芯片采用15脚封装。
主要特点是:
工作电压高,最高工作电压可达46V;
输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;
额定功率25W。
内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;
采用标准逻辑电平信号控制;
具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;
可以外接检测电阻,将变化量反馈给控制电路。
使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。
简要说明:
一、尺寸:
80mmX45mm
二、主要芯片:
L298N、光电耦合器
三、工作电压:
控制信号直流5V;
电机电压直流3V~46V(建议使用36伏以下)
四、最大工作电流:
2.5A
五、额定功率:
25W
特点:
1、具有信号指示。
2、转速可调
3、抗干扰能力强
4、具有过电压和过电流保护
5、可单独控制两台直流电机
6、可单独控制一台步进电机
7、PWM脉宽平滑调速
8、可实现正反转
9、采用光电隔离
使用直流/步进两用驱动器可以驱动两台直流电机。
分别为M1和M2。
引脚A,B可用于输入PWM脉宽调制信号对电机进行调速控制。
(如果无须调速可将两引脚接5V,使电机工作在最高速状态,既将短接帽短接)实现电机正反转就更容易了,输入信号端IN1接高电平输入端IN2接低电平,电机M1正转。
(如果信号端IN1接低电平,IN2接高电平,电机M1反转。
)控制另一台电机是同样的方式,输入信号端IN3接高电平,输入端IN4接低电平,电机M2正转。
(反之则反转),PWM信号端A控制M1调速,PWM信号端B控制M2调速。
可参考下图表:
电机
旋转方式
控制端IN1
控制端IN2
控制端IN3
控制端IN4
输入PWM信号改变脉宽可调速
调速端A
调速端B
M1
正转
高
低
/
反转
停止
M2
其实物图如下:
L298N电机驱动模块实物图
6、LCD1602显示模块
此模块主要用来显示自平衡小车的各种参数,如倾斜角、瞬时速度、瞬时加速度等。
同时也可以观察可调参数,这些参数可以用按键输入,通过LCD1602显示出来,方便自平衡小车参数的观察与更改,达到高效调速的目的。
LCD1602实物图
其与单片机系统组成的原理图如下:
单片机控制系统及1602显示模块
其详细资料如下:
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光
的厚,是否带背光在应用中并无差别
1602LCD主要技术参数:
显示容量:
16×
2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×
4.35(W×
H)mm
引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13
所示:
编号符号引脚说明编号符号引脚说明
1VSS电源地9D2数据
2VDD电源正极10D3数据
3VL液晶显示偏压11D4数据
4RS数据/命令选择12D5数据
5R/W读/写选择13D6数据
6E使能信号14D7数据
7D0数据15BLA背光源正极
8D1数据16BLK背光源负极
表10-13:
引脚接口说明表
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对
比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W
共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
LCD寄存器的选择
E
R/W
RS
功能说明
1
写入命令寄存器
写入数据寄存器
读取忙碌标志及RAM地址
读取RAM数据
X
不动作
LCD指令表
指令功能
控制线
数据线
D7
D6
D5
D4
D3
D2
D1
D0
清除屏幕
清除屏幕,并把光标移至左上角
光标回到原点
x
光标移至左上角,显示内容不变
设定进入模式
I/D
S
I/D=1:
地址递增,I/D=0:
地址递减S=1:
开启显示屏,S=0:
关闭显示屏
显示器开关
D
C
B
D=1:
开启显示幕C=1:
开启光标B=1:
光标所在位置的字符闪烁
移位方式
S/C
R/L
S/C=0、R/L=0:
光标左移;
S/C=0、R/L=1:
光标右移S/C=1、R/L=0:
字符和光标左移;
S/C=1、R/L=1:
字符和光标右移
功能设定
DL
N
F
DL=1:
数据长度为8位,DL=0:
数据长度为4位N=1:
双列字,N=0:
单列字;
F=1:
5x10字形,F=0:
5x7字形
CGRAM地址设定
CGRAM地址
将所要操作的CGRAM地址放入地址计数器
DDRAM地址设定
DDRAM地址
将所要操作的DDRAM地址放入地址计数器
忙碌标志位BF
BF
地址计数器内容
读取地址计数器,并查询LCM是否忙碌,BF表示LCM忙碌
写入数据
将数据写入CGRAM或DDRAM
读取数据
读取CGRAM或DDRAM的数据
图10-571602LCD内部显示地址
例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行,第一个字符的位置呢?
这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。
每次输入指令前都要判断液晶模块是否处于忙的状态。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”
实物图如下:
三软件系统设计
1、设计思想
其主要是通过PID技术对小车的状态进行实时地跟踪及调整。
现对PID算法作些介绍。
(1)PID技术
控制技术是运动控制的核心,各种先进控制技术的研究不断推动着运动控制的发展,比如自适应控制技术和以神经网络和模糊控制为代表的智能控制技术,但在实际生产实践中应用最普遍的还是各种以PID为代表的基本控制技术按照偏差的比例、积分和微分进行控制的调节器,简称为PD调节器,是连续系统中技术成熟且应用广泛的一种调节器。
本节将对系统用到的PID控制技术做相应的介绍和研究,传感器将车体的角度和运动速度等信息传递给系统控制器,控制器经分析处理运用PID控制技术,将目标命令传递给电机驱动器来完成系统的闭环控制
(2)应用现状
在电机伺服系统的控制中,经典的PID控制具有其结构简单、鲁棒性强以及现场对Pro的广泛使用积累了丰富的经验等优点,在无刷直流电动机的控制方面一直占有很重要的地位。
PID的引入保证了其系统响应的快速性,稳定了闭环控制器,补偿了由逆变器引起的控制误差[25][26]。
PID控制器就是将偏差的比例(Proportional)、积分(Integral)和微分(Differential)通过线性组合构成控制量,用这一控制量对被控对象进行控制。
PID算法是目前工业过程控制中应用最广泛的控制算法。
PID算法应用如此广泛,是因为它具有如下优点:
(1)算法较为简单,易于实现;
(2)基于线性控制理论,具备许多成熟的稳定性分析方法,有较高的可靠性;
(3)可以在很宽的操作条件内保持较好的鲁棒性,对于控制对象模型参数小范变化不敏感;
(4)不要求了解控制对象的精确数学模型。
利用许多成熟的参数整定方法,可以根据控制对象的实际响应曲线来计算PID控制器的参数;
(5)允许工程技术人员以一种简单直接的方式来调节控制系统,以达到希望得到的控制性能,如上升时间、最大超调量和稳态误差等。
当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,系统
控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。
即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。
(3)PID调节规律
PID控制分为两大类,一个是模拟PID控制,一个是数字PM控制。
在模拟控制系统中,PID是最常用的控制方法。
图4.7所示为模拟PID控制系统原理框图。
比例系数Kp
积分系数Ki
微分系数Kd
被控对象
r(t)c(t)+
_++u(t)y(t)
+
图4.7模拟PID控制系统原理框图
计算机控制系统中,使用的是数字PID控制器。
将连续的模拟量进行离散化处理,则可得
(4-20)
在数字PID控制中,采样周期相对于系统的时间常数来说一般是很短。
因此其参数可按模拟PID控制器中的方法来选择。
由于要保持动态的平衡,则小车的倾角在一定的范围内要求可控。
故本文选择系统的小车的倾角作为输出量,利用PID技术对其进行分析。
由上述理论分析可以看出:
其比例、积分、微分三者是彼此影响;
同时要使其系统保持稳定,PID三参数必须满足上述关系;
为了让系统能够实现其动态的平衡,需要通过反复试凑的方法来解决,而且整定的参数多导致反复试凑的次数极大的增加,控制器的参数较难选取[27]。
加之系统经过线性化处理,即使所选参数满足上述的关系式,仍需要根据系统的实际模型进行调整,这大大增加了调试的难度。
鉴于此我们考虑采用其极点配置的方法来考察分析其系统的稳定性。
(4)极点配置
所谓极点配置就是指利用状态反馈或输出反馈使闭环系统的极点位于所希望的极点位置。
由于系统的性能和它的极点位置密切相关,因此极点配置问题在系统中是很重要的。
控制系统的各种特性及其各种品质指标很大程度上由闭环系统的零点和极点位置决定。
零点和极点在复数平面中的分布状况决定了相应表达式中该函数前的系数大小。
一组零点和极点的分布就对应了一个系统的响应。
极点配置的问题,
就是通过选择反馈增益矩阵,将闭环系统的极点恰好配置在根平面上期望的位置,以获得所希望的动态性能。
极点配置决定了控制系统的动态性能和稳定性[28]。
对于系统的极点配置,需要解决两个问题:
一是建立极点可配置的条件;
二
是确定其反馈增益矩阵。
(5)极点配置条件
状态能控性、状态能观性及其稳定性都是控制系统的重要属性。
要设计相应稳定的系统,必须先考察其能控性和能观性。
状态能控性问题只考察系统在u(t)作用下状态的转移情况,与输出量y(t)无
关。
对于线性连续定常系统
,如果存在一个分段连续的输入u(t),能在有限时间区间[t0,tf]内,使系统由某一初始状态x(t0)转移到指定的任一终端状态x(tf),则该状态就是能控的。
若系统的所有状态都是能控的,则称此系统是状态完全能控。
本文小车参数参考LEGO公司提供的主要机器人组建参数如下表:
小车的车轮质量(Mw)
0.03kg
小车的车轮半径(r)
0.04m
车轮的转动惯量(Iw)
车身的质量(Mp)
0.6kg
车轮中心到机器人的质心的距离(l)
0.072m
车身转动惯量(Ip)
电机惯量(Jm)
电机的电阻(Rm)
6.69Ω
反电动势常量(ke)
0.468Vsec/rad
电机转矩常量(km)
0.317Nm/A
该系统的能控性矩阵可表示为:
(4-21)
利用文献[27]中对系统能控性的判定定理,即线性非时变系统为完全能控系统的充分必要条件是能控判别矩阵满秩。
即若rank(Tc)=4,则系统能控。
利用MATLAB仿真工具,调用其中函数为Tc=ctrb(A,B)。
其代码及结果如下所示。
>
A=[0100:
0-56.5160:
0001:
0-525239.50]
B=[0:
483.2:
0:
44.9]
Ic=ctrb(A,B)%求系统的能控判别矩阵
Ic=
1.0e+008*
00.0000-0.00030.0154
0.0000-0.00030.0154-0.9125
00.0000-0.00250.1434
0.00000.00250.1434-8.7094
rank(Tc)%求矩阵的值,若此数值是4,则该系统完全可控
ans=
4
由上可以看出,其rank(Tc)=4,这说明两轮自平衡小车系统是完全能控的,只有在此基础才可以设计控制器,实现平衡控制。
状态能观性问题是指对于任意给定的输入u(t)在有限观测时间tf>
t0,使得根据[t0,tf]期间的输出y(t)能唯一的确定系统在初始时刻的状态x(t0),则该状态x(t0)是能观测的。
若系统的每一个状态都是能观的,则称此系统是状态完全能观。
该系统状态可观性矩阵为:
(4-22)
线性非时变系统为完全能观系统的充分必要条件是能观判别矩阵满秩。
即若rank(To)=4,则系统能观。
同样利用MATLAB仿真工具,调用其中函数为To=obsv(A,C);
A=[0100:
0-525239.50]:
C=[1000:
0010]:
To=obsv(A,C)%求系统能观判别矩阵
To=
1.0e+004*
0.0001000
000.00010
00.000100
0000.0001
0-0.00560.00160
0-0.05250.02390
00.3192-0.09040.0016
02.9663-0.84000.0239