两轮自平衡小车毕业设计04161120解读Word文档格式.docx
《两轮自平衡小车毕业设计04161120解读Word文档格式.docx》由会员分享,可在线阅读,更多相关《两轮自平衡小车毕业设计04161120解读Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
同时,由于采用双轮驱动,移动起来也十分灵活,甚至可以做到原地旋转。
由于其轻便,运动灵活,适应面广,节约能源,环保等种种优点使得它的发展和应用前景非常地广阔。
同时在理论研究方面,平衡车,作为一个控制系统,由于重力的存在,自平衡小车原本是不能自主保持站立的,需要依靠对轮的合适的控制来实现车身的平衡。
通过马达的驱动来控制车轮的旋转状态,陀螺仪加速度计等MEMS传感器,算法,微控制器以及车体的机械结构装置联动的协调来控制小车的平衡,是一个集合了传感器测量,干扰去除,数据分析,实时处理,行为操作与执行的多个环节的综合控制系统。
系统的动态响应要求较高,传感器的数据要进行滤波和分析后才能作为控制信息。
因此对自动控制系统要有比较深刻的认识,具有很强的学习探究价值。
1.2自平衡小车的设计要点
1.2.1整体构思
平衡车整体设计包括的内容有:
车体结构设计,硬件电路设计,软件算法设计和实现。
在小车的结构设计上,应该尽可能的保证车体重心在车体的中央,同时重心尽可能的低,这样能够增加车体本身的本征稳定性,减轻后面系统算法和调试的难度。
在小车的硬件设计上,电源必须要能够稳定的输出,并且满足马达驱动对功率的需求。
同时,为了后期方便调试,应该留出一些比如电位器以及程序烧录的调试接口,可大大简化后期调试过程和节约大量调试时间。
为了后期方便更换器件,将主板设计成了接插口的方式。
在小车的软件设计上,主要的难度在于对传感器数据的滤波和融合分析以及PID调试上。
1.2.2姿态检测系统
双轮自平衡小车通过陀螺仪GY521MPU-6050,加速度传感器,stm32控制器,以及双轮马达驱动构成了闭环控制,而当前姿态检测环节则是反馈源,如同人的眼睛,耳朵等器官,是环境感知的入口。
通过陀螺仪GY521MPU-6050可以直接检测到当前车身的角速度以及角加速度;
同时由于重力会在小车车身倾斜的角度上产生一个分量,由此借助于加速度传感器测出该分量,从而也就能够间接的得出自平衡小车的车身倾斜角度。
在陀螺仪传感器和加速度传感器的选用上面,由于是用于动态实时检测,所以对它的实时性的要求比较高。
另外,灵敏度和准确性也是比较重要的参考因素。
综合考虑下来,本方案陀螺仪传感器选用的是MPU-6050,加速度传感器选用的是
虽然有了上述传感器可以用来测出自平衡小车车体的当前姿态,但是由于惯性传感器自身的一些特性,所测的值会受外界环境的温度、震动等影响,继而产生不同程度的误差与噪声。
所以需要在采集传感器数据后,在软件中采用一些算法对这些传感器测得的数据进行分析二次处理,同时对陀螺仪传感器和加速度计传感器采集的数据进行融合分析后,再计算出当前小车的姿态,此时的结果将更加准确和稳定。
1.2.3控制算法
自平衡小车由于重力原因自身没法保持平衡,需要根据反馈来调整自身的状态达到平衡。
控制系统中陀螺仪GY521MPU-6050传感器和加速度传感器,stm32微控制器,马达驱动构成了闭环的控制系统。
加速度传感器,陀螺仪GY521MPU-6050传感器采集当前自平衡小车姿态,微控制器对传感器数据进行滤波和分析,进而控制马达驱动,调整自平衡小车当前姿态。
控制算法采用了工业中常用的反馈调节算法:
PID。
PID算法在工业控制类的场合中有着广泛的应用,在应用中充分验证了算法的可行性可优越性。
1.3本文主要研究目标与内容
本设计设计了一种双轮的自平衡车,在适度的环境不利因素下也能够保持自主站立。
同时也能够在Android手机端的App通过蓝牙控制小车前进,后退,转弯。
在设计的过程中探究了陀螺仪传感器和加速度传感器的互补特性,并用融合算法将两者所测数据结合起来进行分析,获得了更为准确的车身姿态。
设计具体包括:
(1)车体的机械结构:
包括车轮驱动,重心调整,传感器安装,为后期开发提供良好的物理基础;
(2)小车硬件电路:
电源必须要能够稳定的输出,并且满足马达驱动对功率的需求。
马达的驱动十分重要,它是能够及时调整小车姿态的关键因素;
同时,为了后期方便调试,留出了一些比如电位器以及程序烧录的调试接口,可大大简化后期调试过程和节约大量调试时间。
(3)小车软件算法:
通过陀螺仪GY521MPU-6050传感器和加速度传感器检测当前小车姿态数据,微控制器获取传感器数据进行分析,通过PID算法得出相应的控制力度,从而调节自平衡小车马达驱动驱动下的小车转速,最终修正当前小车姿态。
但是,由于陀螺仪GY521MPU-6050传感器所测的角速度和角加速度以及加速度传感器所测的加速度会受环境噪声的影响,角速度只在很短的时间内稳定,而加速度传感器所测数据的白噪声十分严重,因此最好采用两者的互补特性来设计卡尔曼滤波器来算出稳定准确地传感器数据。
(4)PID调节算法:
系统分为两路闭环控制:
一路是自平衡小车的倾斜角度的闭环控制,用来保持车体平衡;
另一路是自平衡小车的速度闭环控制,用来维持车体在一个指定的速度运动。
2.系统原理分析
2.1控制系统要求分析
根据设计目标,自平衡小车能够自主保持平衡,并且能够抵抗一定程度的外部环境的干扰。
而且能够在Android手机端App的控制下,实现向前运动,向后运动,以及转弯等动作。
结合系统分析可以知道,维持自平衡小车站立和前后运动的动力都来自于自平衡小车的两个车轮,而车轮是由两个直流马达驱动的。
所以,可以将自平衡小车作为一个调控对象,自平衡小车的两个车轮的作为控制系统的控制量。
整个系统分为3个部分:
(1)自平衡小车的站立控制:
小车的倾斜角度作为输入参数,通过控制马达的转速来保持小车的自平衡。
(2)自平衡小车的速率控制:
在能够自主站立的基础上,通过改变自平衡小车的倾斜角度来完成对车体运动速率的调节,其实仍是经过对马达的调控来完成小车车体运动速率的修改。
(3)自平衡小车转向调节:
通过调节自平衡小车两个车轮的转速,构成差速从而实现小车的转向调节。
2.2平衡控制原理分析
维持小车自主站立的直接灵感来自于我们的平时经历。
人可以通过控制身体以及手的移动方向和速度,来保持手指尖撑住的直杆屹立不倒。
在保持直杆平衡的过程中,人需要完成两个操作:
一是人眼可以实时并准确地观测到直杆当前的姿态,二是手指能够根据当前直杆的姿态来迅速调整自身位置和速度。
这实际上就是本方案中的平衡车站立闭环负反馈控制。
图2-1维持直杆站立的负反馈调节系统
自平衡小车的自主站立也是经过负反馈的调节来完成的,与在指尖维持直杆站立原理基本一致。
由于车体只有两个车轮与地面接触,自身稳定能力极差,在重力的作用下极容易倾倒。
小车上的放置的陀螺仪GY521MPU-6050传感器和加速度传感器能够对小车的当前姿态进行实时测量,微控制器分析后控制车轮的旋转,抵消倾斜力矩则可以达到维持小车平衡的目的。
如图2-2所示。
图2-2通过车轮旋转保持小车平衡
2.3自平衡小车数学模型
2.3.1两轮自平衡小车受力分析
为了更好地实现小车的平衡,需要准确地得出小车当前姿态与马达输出之间的数学模型。
重力环境下绳索挂着物体可以被抽象成为理想的倒立摆模型,本文中的两轮自平衡车可以被看做为倒立摆模型来进行分析,如图2-3所示。
图2-3倒立摆模型
对单摆进行如下的受力分析如下图所示。
图2-4单摆受力分析
当重物偏离中心的平衡位置后,就会受到重力与线的张力的合作用力,迫使重物回到中心处。
这股合力被称为回复力,它的值为:
(式2-1)
停止的倒立摆受力情况如下,如图2-5所示。
图2-5倒立摆受力分析图
由该受力分析可知,其回复力大小为:
(式2-2)
对于处于平衡位置的单摆而言,当它离开中心位置时,它所受的合力与它的位移相反,所以合力能够驱使它回到原处;
但是对于倒立摆,当它离开中心位置时,所受到的合力与位移却刚好是同向的,所以此时会加速远离中心位置,最终倾倒。
通过判断可以知道,要使倒立摆能够有与偏离方向相反的回复力,则必须施加另一种力与偏移方向相反,从而使倒立摆所受合力与偏移方向相反,也即回复力总是指向中心位置,达到能够平衡的目的。
通过调节自平衡小车底部车轮转速,使其做加速运动。
在此情形下再来分析倒立摆的受力情况,如下图2-6所示。
图2-6非惯性系中的倒立摆受力分析
由于自平衡小车车轮做加速运动,倒立摆会受到惯性力。
设车轮运动导致倒立摆产生的加速度的值为α.若以地面作为参考系,可以得知倒立摆受到的惯性力为:
(式2-3)
所以,倒立摆受到的合力为:
(式2-4)
在实际控制系统当中,偏离角度θ很小,可以对其进行简化处理。
系统中小车加速度α与偏离角度θ为正比关系,令比例系数为
,则式2-4可变换为:
(式2-5)
则小车的车轮的加速度应该为:
(式2-7)
式中
为倾斜角度,
为倾斜角速度,
、
为比例系数。
2.4PID控制器设计
2.4.1PID控制器原理
反馈调节系统一般包含三个环节:
检测,比较和输出。
检测的值与预期值相比较,根据误差量来控制输出纠正系统偏量。
PID控制器是当前工业系统中应用十分广泛的一种反馈控制系统,在这里十分适用于小车的平衡反馈控制。
PID由比例控制,积分控制,线性控制三个部分线性叠加而成。
PID调节具有可靠性好,算法简单,稳定性高,调试起来简单很多优点。
因此PID控制器自被采用以来,,在工业中被广泛应用。
PID控制器由比例控制单元(P)、积分控制单元(I)和微分控制单元(D)三个部分组成。
它的输入e(t)与输出u(t)的模型为:
(式2-11)
其中
为比例控制的系数参数;
为积分的时间固定参数;
为微分时间的固定参数。
2.4.2PID控制器设计
在本系统的反馈调节中,与角度成比例的控制量采用比例控制,与角速度成比例的控制量采用微分控制,因而
自平衡小车在采用PID控制模型胡的输出方程可写为:
(式2-14)
式2-14中,
为PID控制输出量,Angle为反馈倾角值,Angle_dot为反馈角速度值,Kp和Kd分别为比例系数及微分系数。
3.系统硬件电路设计
3.1硬件电路整体框架:
硬件电路是整个系统可行性和可靠性的基础。
既要能够满足需求,也要能够稳定,高效的工作。
系统硬件框架如下:
3.2系统运作流程介绍:
电源供电部分给各个器件按对应所需电压进行供电,陀螺仪GY521MPU-6050和加速度传感器采集小车当前姿态数据通过IIC接口发送给主控STM32F103RB,主控对数据分析后作出相应反应控制马达驱动改变马达转速修正小车姿态。
马达测速部分将所测速度反馈给主控制器STM32F103RB,主控对数据分析后作出相应反应控制马达驱动改变马达转速修正小车速度与期望值一致。
同时,主控STM32F103RB也可接收从手机端APP通过蓝牙发送过来的指令,进而根据指令控制小车作出相应操作。
3.3下面分各个部分进行介绍:
3.3.1电源供电部分:
系统采用航模电池进行供电,输出电压12V;
12V电压经过低压差线性稳压器LM2940后可输出5V电压给蓝牙模块和陀螺仪GY521MPU-6050供电。
5V电压经过低压差线性稳压器LT1117后可输出3.3V电压给主控stm32、测速模块等供电。
3.3.2主控制器部分:
本方案采用的主控制器是意法半导体公司的高性价比控制器芯片:
STM32F103RB。
它是一个32位的处理器,采用的是ARM的thumb精简指令集,使用低功耗的CORTEX-M3的
32位ARM核心。
控制器自身带有256KByte的flash,和40KByte的SRAM。
含有2个12位的模数转换器,3个通用的16位TIMER,一个PULSE宽度调制器,多达2个IIC串行通信接口,以及2个SPI串行通信接口,3个USART串行通信接口,1个USB传输接口和一个控制器局域网络接口。
它的供电的电压为2.6伏~3.3伏,工作的温度范围为-40°
C到+85°
C,而且拥有一些列的低功耗模式,可以极大的减少系统在非工作模式下的功耗。
该款控制器一共拥有六十四个引脚,可以充分支持本方案所需要的各种外设模块。
既可以使用内部时钟也可以使用外部时钟源,外部的晶振频率推荐频率为12兆赫兹。
电源供电电压范围为3.0伏~3.7伏:
电源供电引脚为通用输入输出引脚和内部的各类器件进行供电。
模拟地,模拟供电
电压范围为3.0伏~3.7伏:
为模数转换器、RST电路、内部时钟源和锁相环等部分提供电源。
使用模数转换器时,模拟供电的电压不能够小于3.0伏。
模拟供电
电压和模拟地必须分别连接到电源供电电压和地。
备份电源电压范围为
2.0~3.7伏:
当关闭电源供电电压输入时,(通过内部电源切换器)为实时时钟、EXTERN32k赫兹晶振和BKP寄存器进行供电。
STM32F103RB采用的是可嵌套的VECTORINTERRUPT
,该低功耗控制器嵌入一个嵌套INTERRUPTVECTOR控制器可以支持不同的优先级中断进入。
·
紧密耦合的NVIC提供低延迟中断处理
中断入口向量表地址直接传递到核心
紧密耦合的NVIC核心接口
允许早期处理中断
处理迟到的高优先级中断
支持尾链
处理器状态自动保存
中断入口恢复中断出口没有指令的开销
在本方案中用到了STM32F103RB控制器的如下外设:
内部FLASH:
用来存储程序和静态数据;
内部SRAM:
用来存放程序运行过程中的动态数据,比如堆,栈等。
GPIO:
通用串行输入输出引脚,用来驱动LED作为指示功能。
USART:
通用串行通信设备,用来与蓝牙模块连接,与蓝牙模块进行通信,设置蓝牙模块工作方式,接收蓝牙模块发来的控制命令。
SPI:
串行通信设备,用来与陀螺仪GY521MPU-6050等传感器进行通信,接收传感器发来的数据,进行后续数据分析。
AD:
模数转换器,主要用于方便后期功能调试,通过电位器就可以了修改程序运行的相关参数,大大简化开发步骤和节约调试时长。
JTAG:
标准芯片调试接口,主要用来下载程序和调试程序。
主控制器stm32f103RB最小系统电路设计:
本设计采用意法半导体公司32位单片机stm32f103RB为控制器,其最小系统的电路如图3-3,主要有控制器供电部分、复位电路部分、外部时钟部分,启动选择部分。
由于控制器内部集成了FLASH、SRAM、PWM、SPI、IIC、USART、TIMER、AD等模块,因此使用起来特别方便。
3.3.3陀螺仪传感器部分:
本方案中采用的陀螺仪传感器的型号为MPU-6050,它的内部同时带有陀螺仪传感器和加速度传感器的功能,内部还有可自定义进行功能拓展的协处理器。
除此之外,还可以利用MPU-6050的IIC通用串行数据传输接口来连接一个额外的DIGITAL传感器,比如温度传感器。
MPU-6050分别对它的陀螺仪传感器和加速度传感器使用了一个16位精度的模数转换器,将它的模拟信号量转化为可以输出的数字信号量。
为了在不同的情形下使用不同的测量范围和测量速度,该SENSOR的检测精度和速度是可以通过程序进行自主设置的,陀螺仪传感器的可测量范围为-250dps到+250dps,-500dps到+500dps,-1000dps到+1000dps,-2000dps到+2000dps。
加速度计可测量范围为:
-2g到+2g,-4g到+4g,-8g到+8g,-16g到+16g。
MPU-6050上有1KByte的缓冲区域,有助于增加系统节能效率。
和所有设备之间通信采用400K赫兹的IIC接口或者1M赫兹的SPI接口。
MPU-6050的供电电源电压范围为2.8伏~4.0伏。
MPU-6050有一个可用来编程的中断体系,可以采用在中断的引脚产生中断信号,状态标志寄存器可以说明中断信号的来源。
本方案中采用IIC接口与MPU-6050进行通信,IIC硬件连接相对比较简单,只需要两根线(SDA数据线、SCL时钟线)即可完成数据的传输,并且速度也能满足本方案的需求。
3.3.4马达驱动电路:
本方案采用的驱动电路方案为:
文件夹中有电路图需要截图使用。
直流马达
旋转方式
IN1
IN2
IN3
IN4
调速PWM信号
调速端A
调速端B
M1
正转
高
低
/
反转
停止
M2
3.3.5测速部分:
对于检测自平衡小车小车车轮的旋转速率有这下面几种方案:
1.光反射法。
运用不相同色彩物体对光的吸收结果不同的原理,在马达轴上安装的转盘上绘制一条反光较强的线,然后在同一端用光源照射并采用光-电感应器件采样转盘的反射光,形成PULSE信号,通过对单位时长段内的PULSE数量统计,就可以计算出马达的旋转的速率。
2.光栅法。
在马达轴上安装一个转盘,转盘上均匀分布有扇形槽孔,在转盘的两端分别放置红外发射端和红外接收端,在马达旋转时,红外接收端则会产生相应的PULSE信号,通过对单位时长内的PULSE记录,就可以计算出马达的旋转的速率。
3.霍尔开关检测法。
同样也是在马达旋转轴径上安装一个转盘,转盘上同时安装一个带有磁性的块状物体,在它的旋转路径环外部安装一个霍尔检测器件开关,在马达旋转时,霍尔检测器件开关则可以响应定期的电磁信号,形成PULSE信号,通过对单位时长内的PULSE记录,就可以计算出马达的旋转的速率。
对于上述三种方案,光束在反射的过程中容易受环境光的干扰,而第二种方案光栅法相对于第三种方案霍尔开关检测法实施起来更为方便。
所以本设计中采用的测速方案为光栅法来测量马达的转速。
测速的电路如下:
3.3.6调试部分ADJTAG:
有原理图需要截图
为了方便调试,在硬件结构上增加了如下调试接口:
JTAG接口:
JTAG是一种标准的芯片调试接口,一共有20个引脚。
其中主要引脚功能分别如下所述:
TRST:
芯片复位的引脚,用来在调试或者下载程序时对相应芯片进行复位操作。
TDI:
JTAG测试数据通过串行通讯的传输引脚。
TMS:
JTAG的测试调试模式的选择。
TCK:
JTAG的测试的时钟输入引脚。
TDO:
测试数据经过串行通信数据输出的引脚。
VCC:
电源正极引脚。
VSS:
电源负极引脚。
将其置于电路板上,主要用于程序的在线下载和调试,可以极大的加快开发效率。
同时,也在电路板上放置了4个电位器调试接口,可以在程序运行时方便的修改一些系统参数,而不需要每次重新更改程序,然后下载程序再次上电测试。
这样也是极大的简化了调试环节,节约了开发时长。
3.3.7蓝牙通信部分:
ZK-07
为了更加方便的实现控制自平衡小车