《两轮自平衡小车毕业设计04161120.doc》由会员分享,可在线阅读,更多相关《两轮自平衡小车毕业设计04161120.doc(24页珍藏版)》请在文库网上搜索。
1、两轮自平衡小车的设计摘要最近这几年来,自平衡电动车的研发与商用获得了快速发展。自平衡车具有 体积小,运动十分灵活,便利,节能等特点。本文提出了一种双轮自平衡小车的设计方案,机械结构采用了双轮双马达驱动;控制主要采用的是反馈调节,为了使车体更好的平衡,使用了PID调节方式;硬件上采用陀螺仪GY521 MPU-6050来采集车体的旋转角度以及旋转角加速度,同时采用了加速度传感器来间接测量车体旋转角度。采用意法半导体ST公司的低功耗控制器芯片stm32作为主控,采集上述传感器信息进行滤波,分析等操作后进而控制马达的驱动,从而达到反馈调节的闭环,实现小车的自动平衡。系统设计,调试完成后,能够实现各个功
2、能部件之间协调工作,在适度的干扰情形下仍然能够保持平衡。同时,也可以使用手机上的APP通过蓝牙与小车通信控制小车的前进和后退以及转弯。关键词:自平衡小车 陀螺仪传感器 滤波 APP Design of Two-Wheel Self-Balance VehicleAbstractIn the last few years, with the development of commercial self balancing electric vehicle was developed rapidly. Self balancing vehicle has the advantages of sma
3、ll volume, the movement is very flexible, convenient, energy saving etc. This paper presents a two wheeled self balancing robot design, mechanical structure adopts double motor drive; controlled mainly by the feedback regulation, in order to make the balance of the body better, with the PID regulati
4、on; hardware using gyroscope GY521 mpu-6050 to collect the rotation angle of the car body and the rotation angle acceleration. At the same time, acceleration sensor to measure indirectly body rotation angle. St, the low power consumption controller STM32 chip used as the main control, collecting the
5、 sensor information filtering, analysis backward and control motor drive, so as to achieve close loop feedback regulation, the realization of the car automatic balance. System design, debugging is completed, the coordination between the various functional components can be achieved, in the case of m
6、oderate interference can still maintain a balance. At the same time, you can also use the APP on the mobile phone with the car to control the cars forward and backward and turning.Key Words: Self balancing car gyroscope sensor filter APP目 录1.绪论11.1研究背景与意义11.2自平衡小车的设计要点11.2.1整体构思11.2.2姿态检测系统21.2.3控制算
7、法21.3本文主要研究目标与内容21.4论文章节安排32. 系统原理分析42.1控制系统要求分析42.2平衡控制原理分析42.3自平衡小车数学模型52.3.1两轮自平衡小车受力分析52.4 PID控制器设计72.4.1 PID控制器原理72.4.2 PID控制器设计83.系统硬件电路设计83.1硬件电路整体框架:83.2系统运作流程介绍:93.3下面分各个部分进行介绍:93.3.1电源供电部分:93.3.2主控制器部分:93.3.3陀螺仪传感器部分:113.3.4马达驱动电路:123.3.5测速部分:123.3.7蓝牙通信部分:ZK-07133.4本章小结144.系统软件设计144.1软件系统
8、总体结构144.2系统初始化过程154.2.1模数转换模块(AD)初始化设置154.2.2通用串行通信USART初始化154.2.3光栅法测速模块初始化154.3平衡PID控制软件实现164.4两轮自平衡车的运动控制175. 总结与展望185.1 总结185.2 展望18参考文献19附 录201.绪论1.1研究背景与意义随着科技的发展与进步,最近这些年来,移动机器人产业的发展和创新日新月异,人们的生活也越来越离不开各式各样的机器人。小到家里使用的扫地机器人,全自动洗衣机,生产线上的自动点焊机,以及现在炙手可热的无人驾驶汽车。这些都得益于移动机器人机器人的使用领域愈来愈多,以及机器人行业的基础技
9、术也越来越成熟。本文提出的自平衡车就是众多机器人中的一种。由于只有两个轮子,所以体积相对其他移动机器人可以做的很小,能够适应比较狭窄的空间。同时,由于采用双轮驱动,移动起来也十分灵活,甚至可以做到原地旋转。由于其轻便,运动灵活,适应面广,节约能源,环保等种种优点使得它的发展和应用前景非常地广阔。同时在理论研究方面,平衡车,作为一个控制系统,由于重力的存在,自平衡小车原本是不能自主保持站立的,需要依靠对轮的合适的控制来实现车身的平衡。通过马达的驱动来控制车轮的旋转状态,陀螺仪 加速度计等MEMS 传感器,算法,微控制器以及车体的机械结构装置联动的协调来控制小车的平衡,是一个集合了传感器测量,干扰
10、去除,数据分析,实时处理,行为操作与执行的多个环节的综合控制系统。系统的动态响应要求较高,传感器的数据要进行滤波和分析后才能作为控制信息。因此对自动控制系统要有比较深刻的认识,具有很强的学习探究价值。1.2自平衡小车的设计要点1.2.1整体构思平衡车整体设计包括的内容有:车体结构设计,硬件电路设计,软件算法设计和实现。在小车的结构设计上,应该尽可能的保证车体重心在车体的中央,同时重心尽可能的低,这样能够增加车体本身的本征稳定性,减轻后面系统算法和调试的难度。在小车的硬件设计上,电源必须要能够稳定的输出,并且满足马达驱动对功率的需求。同时,为了后期方便调试,应该留出一些比如电位器以及程序烧录的调
11、试接口,可大大简化后期调试过程和节约大量调试时间。为了后期方便更换器件,将主板设计成了接插口的方式。在小车的软件设计上,主要的难度在于对传感器数据的滤波和融合分析以及PID调试上。1.2.2姿态检测系统双轮自平衡小车通过陀螺仪GY521 MPU-6050,加速度传感器,stm32控制器,以及双轮马达驱动构成了闭环控制,而当前姿态检测环节则是反馈源,如同人的眼睛,耳朵等器官,是环境感知的入口。通过陀螺仪GY521 MPU-6050可以直接检测到当前车身的角速度以及角加速度;同时由于重力会在小车车身倾斜的角度上产生一个分量,由此借助于加速度传感器测出该分量,从而也就能够间接的得出自平衡小车的车身倾
12、斜角度。在陀螺仪传感器和加速度传感器的选用上面,由于是用于动态实时检测,所以对它的实时性的要求比较高。另外,灵敏度和准确性也是比较重要的参考因素。综合考虑下来,本方案陀螺仪传感器 选用的是MPU-6050,加速度传感器选用的是 虽然有了上述传感器可以用来测出自平衡小车车体的当前姿态,但是由于惯性传感器自身的一些特性,所测的值会受外界环境的温度、震动等影响,继而产生不同程度的误差与噪声。所以需要在采集传感器数据后,在软件中采用一些算法对这些传感器测得的数据进行分析二次处理,同时对陀螺仪传感器和加速度计传感器采集的数据进行融合分析后,再计算出当前小车的姿态,此时的结果将更加准确和稳定。1.2.3控
13、制算法自平衡小车由于重力原因自身没法保持平衡,需要根据反馈来调整自身的状态达到平衡。控制系统中陀螺仪GY521 MPU-6050传感器和加速度传感器,stm32微控制器,马达驱动构成了闭环的控制系统。加速度传感器,陀螺仪GY521 MPU-6050传感器采集当前自平衡小车姿态,微控制器对传感器数据进行滤波和分析,进而控制马达驱动,调整自平衡小车当前姿态。控制算法采用了工业中常用的反馈调节算法:PID。PID算法在工业控制类的场合中有着广泛的应用,在应用中充分验证了算法的可行性可优越性。1.3本文主要研究目标与内容本设计设计了一种双轮的自平衡车,在适度的环境不利因素下也能够保持自主站立。同时也能
14、够在Android手机端的App通过蓝牙控制小车前进,后退,转弯。在设计的过程中探究了陀螺仪传感器和加速度传感器的互补特性,并用融合算法将两者所测数据结合起来进行分析,获得了更为准确的车身姿态。设计具体包括:(1) 车体的机械结构:包括车轮驱动,重心调整,传感器安装,为后期开发提供良好的物理基础;(2) 小车硬件电路:电源必须要能够稳定的输出,并且满足马达驱动对功率的需求。马达的驱动十分重要,它是能够及时调整小车姿态的关键因素;同时,为了后期方便调试,留出了一些比如电位器以及程序烧录的调试接口,可大大简化后期调试过程和节约大量调试时间。为了后期方便更换器件,将主板设计成了接插口的方式。(3)
15、小车软件算法:通过陀螺仪GY521 MPU-6050传感器和加速度传感器检测当前小车姿态数据,微控制器获取传感器数据进行分析,通过PID算法得出相应的控制力度,从而调节自平衡小车马达驱动驱动下的小车转速,最终修正当前小车姿态。但是,由于陀螺仪GY521 MPU-6050传感器所测的角速度和角加速度以及加速度传感器所测的加速度会受环境噪声的影响,角速度只在很短的时间内稳定,而加速度传感器所测数据的白噪声十分严重,因此最好采用两者的互补特性来设计卡尔曼滤波器来算出稳定准确地传感器数据。(4) PID调节算法:系统分为两路闭环控制:一路是自平衡小车的倾斜角度的闭环控制,用来保持车体平衡;另一路是自平
16、衡小车的速度闭环控制,用来维持车体在一个指定的速度运动。2. 系统原理分析2.1控制系统要求分析根据设计目标,自平衡小车能够自主保持平衡,并且能够抵抗一定程度的外部环境的干扰。而且能够在Android手机端App的控制下,实现向前运动,向后运动,以及转弯等动作。结合系统分析可以知道,维持自平衡小车站立和前后运动的动力都来自于自平衡小车的两个车轮,而车轮是由两个直流马达驱动的。所以,可以将自平衡小车作为一个调控对象,自平衡小车的两个车轮的作为控制系统的控制量。整个系统分为3个部分:(1)自平衡小车的站立控制:小车的倾斜角度作为输入参数,通过控制马达的转速来保持小车的自平衡。(2)自平衡小车的速率
17、控制:在能够自主站立的基础上,通过改变自平衡小车的倾斜角度来完成对车体运动速率的调节,其实仍是经过对马达的调控来完成小车车体运动速率的修改。(3)自平衡小车转向调节:通过调节自平衡小车两个车轮的转速,构成差速从而实现小车的转向调节。2.2平衡控制原理分析维持小车自主站立的直接灵感来自于我们的平时经历。人可以通过控制身体以及手的移动方向和速度,来保持手指尖撑住的直杆屹立不倒。在保持直杆平衡的过程中,人需要完成两个操作:一是人眼可以实时并准确地观测到直杆当前的姿态,二是手指能够根据当前直杆的姿态来迅速调整自身位置和速度。这实际上就是本方案中的平衡车站立闭环负反馈控制。图2-1 维持直杆站立的负反馈
18、调节系统自平衡小车的自主站立也是经过负反馈的调节来完成的,与在指尖维持直杆站立原理基本一致。由于车体只有两个车轮与地面接触,自身稳定能力极差,在重力的作用下极容易倾倒。小车上的放置的陀螺仪GY521 MPU-6050传感器和加速度传感器能够对小车的当前姿态进行实时测量,微控制器分析后控制车轮的旋转,抵消倾斜力矩则可以达到维持小车平衡的目的。如图2-2所示。图2-2 通过车轮旋转保持小车平衡2.3自平衡小车数学模型2.3.1两轮自平衡小车受力分析为了更好地实现小车的平衡,需要准确地得出小车当前姿态与马达输出之间的数学模型。重力环境下绳索挂着物体可以被抽象成为理想的倒立摆模型,本文中的两轮自平衡车
19、可以被看做为倒立摆模型来进行分析,如图2-3所示。图2-3倒立摆模型对单摆进行如下的受力分析 如下图所示。图2-4 单摆受力分析当重物偏离中心的平衡位置后,就会受到重力与线的张力的合作用力,迫使重物回到中心处。这股合力被称为回复力,它的值为: (式2-1)停止的倒立摆受力情况如下,如图2-5所示。图2-5倒立摆受力分析图由该受力分析可知,其回复力大小为: (式2-2)对于处于平衡位置的单摆而言,当它离开中心位置时,它所受的合力与它的位移相反,所以合力能够驱使它回到原处;但是对于倒立摆,当它离开中心位置时,所受到的合力与位移却刚好是同向的,所以此时会加速远离中心位置,最终倾倒。通过判断可以知道,
20、要使倒立摆能够有与偏离方向相反的回复力,则必须施加另一种力与偏移方向相反,从而使倒立摆所受合力与偏移方向相反,也即回复力总是指向中心位置,达到能够平衡的目的。通过调节自平衡小车底部车轮转速,使其做加速运动。在此情形下再来分析倒立摆的受力情况,如下图2-6所示。图2-6 非惯性系中的倒立摆受力分析由于自平衡小车车轮做加速运动,倒立摆会受到惯性力。设车轮运动导致倒立摆产生的加速度的值为.若以地面作为参考系,可以得知倒立摆受到的惯性力为: (式2-3)所以,倒立摆受到的合力为: (式2-4)在实际控制系统当中,偏离角度很小,可以对其进行简化处理。系统中小车加速度与偏离角度为正比关系,令比例系数为,则
21、式2-4可变换为: (式2-5)则小车的车轮的加速度应该为: (式2-7)式中为倾斜角度,为倾斜角速度,、为比例系数。2.4 PID控制器设计2.4.1 PID控制器原理反馈调节系统一般包含三个环节:检测,比较和输出。检测的值与预期值相比较,根据误差量来控制输出纠正系统偏量。PID控制器是当前工业系统中应用十分广泛的一种反馈控制系统,在这里十分适用于小车的平衡反馈控制。PID由比例控制,积分控制,线性控制三个部分线性叠加而成。PID调节具有可靠性好,算法简单,稳定性高,调试起来简单很多优点。因此PID控制器自被采用以来,在工业中被广泛应用。PID控制器由比例控制单元(P)、积分控制单元(I)和
22、微分控制单元(D)三个部分组成。它的输入e (t)与输出u (t)的模型为: (式2-11)其中为比例控制的系数参数;为积分的时间固定参数;为微分时间的固定参数。2.4.2 PID控制器设计在本系统的反馈调节中,与角度成比例的控制量采用比例控制,与角速度成比例的控制量采用微分控制,因而自平衡小车在采用PID控制模型胡的输出方程可写为: (式2-14)式2-14中,为PID控制输出量,Angle为反馈倾角值,Angle_dot为反馈角速度值,Kp和Kd分别为比例系数及微分系数。3.系统硬件电路设计3.1硬件电路整体框架:硬件电路是整个系统可行性和可靠性的基础。既要能够满足需求,也要能够稳定,高效
23、的工作。系统硬件框架如下:3.2系统运作流程介绍:电源供电部分给各个器件按对应所需电压进行供电,陀螺仪GY521 MPU-6050和加速度传感器采集小车当前姿态数据通过IIC接口发送给主控STM32F103RB,主控对数据分析后作出相应反应控制马达驱动改变马达转速修正小车姿态。马达测速部分将所测速度反馈给主控制器STM32F103RB,主控对数据分析后作出相应反应控制马达驱动改变马达转速修正小车速度与期望值一致。同时,主控STM32F103RB也可接收从手机端APP通过蓝牙发送过来的指令,进而根据指令控制小车作出相应操作。3.3下面分各个部分进行介绍:3.3.1电源供电部分:系统采用航模电池进
24、行供电,输出电压12V;12V电压经过低压差线性稳压器LM2940 后可输出5V电压给蓝牙模块和陀螺仪GY521 MPU-6050供电。5V电压经过低压差线性稳压器LT1117后可输出3.3V电压给主控stm32、测速模块等供电。3.3.2主控制器部分:本方案采用的主控制器是意法半导体公司的高性价比控制器芯片:STM32F103RB。它是一个32位的处理器,采用的是ARM 的thumb精简指令集,使用低功耗的CORTEX-M3 的3 2位ARM核心。控制器自身带有256KByte的flash,和40KByte的SRAM。含有2个12位的模数转换器,3个通用的16位TIMER,一个PULSE宽度
25、调制器,多达2个IIC串行通信接口,以及2个SPI串行通信接口,3个USART串行通信接口,1个USB传输接口和一个控制器局域网络接口。它的供电的电压为2.6伏3.3伏,工作的温度范围为-40C到+85C,而且拥有一些列的低功耗模式,可以极大的减少系统在非工作模式下的功耗。该款控制器一共拥有六十四个引脚,可以充分支持本方案所需要的各种外设模块。既可以使用内部时钟也可以使用外部时钟源,外部的晶振频率推荐频率为12兆赫兹。电源供电电压范围为3.0伏3.7伏:电源供电引脚为通用输入输出引脚和内部的各类器件进行供电。模拟地,模拟供电电压范围为3.0伏3.7伏:为模数转换器、RST电路、内部时钟源和锁相
26、环等部分提供电源。使用模数转换器时,模拟供电的电压不能够小于3.0伏。模拟供电电压和模拟地必须分别连接到电源供电电压和地。备份电源电压范围为2.03.7伏:当关闭电源供电电压输入时,(通过内部电源切换器)为实时时钟、EXTERN 32k赫兹晶振和BKP寄存器进行供电。STM32F103RB采用的是可嵌套的VECTOR INTERRUPT,该低功耗控制器嵌入一个嵌套INTERRUPT VECTOR控制器可以支持不同的优先级中断进入。紧密耦合的NVIC提供低延迟中断处理中断入口向量表地址直接传递到核心紧密耦合的NVIC核心接口允许早期处理中断处理迟到的高优先级中断支持尾链处理器状态自动保存中断入口
27、恢复中断出口没有指令的开销在本方案中用到了STM32F103RB控制器的如下外设:内部FLASH:用来存储程序和静态数据;内部SRAM:用来存放程序运行过程中的动态数据,比如堆,栈等。GPIO: 通用串行输入输出引脚,用来驱动LED作为指示功能。USART:通用串行通信设备,用来与蓝牙模块连接,与蓝牙模块进行通信,设置蓝牙模块工作方式,接收蓝牙模块发来的控制命令。SPI:串行通信设备,用来与陀螺仪GY521 MPU-6050等传感器进行通信,接收传感器发来的数据,进行后续数据分析。AD:模数转换器,主要用于方便后期功能调试,通过电位器就可以了修改程序运行的相关参数,大大简化开发步骤和节约调试时
28、长。JTAG: 标准芯片调试接口,主要用来下载程序和调试程序。主控制器stm32f103RB最小系统电路设计:本设计采用意法半导体公司32位单片机stm32f103RB为控制器,其最小系统的电路如图3-3,主要有控制器供电部分、复位电路部分、外部时钟部分,启动选择部分。由于控制器内部集成了FLASH、SRAM、PWM、SPI、IIC、USART、TIMER、AD等模块,因此使用起来特别方便。3.3.3陀螺仪传感器部分:本方案中采用的陀螺仪传感器的型号为MPU-6050,它的内部同时带有陀螺仪传感器和加速度传感器的功能,内部还有可自定义进行功能拓展的协处理器。除此之外,还可以利用MPU-6050
29、的IIC 通用串行数据传输接口来连接一个额外的DIGITAL传感器,比如温度传感器。MPU-6050分别对它的陀螺仪传感器和加速度传感器使用了一个16位精度的模数转换器,将它的模拟信号量转化为可以输出的数字信号量。为了在不同的情形下使用不同的测量范围和测量速度,该SENSOR的检测精度和速度是可以通过程序进行自主设置的,陀螺仪传感器的可测量范围为-250dps到+250dps,-500dps到+500dps,-1000dps到+1000dps,-2000dps到+2000dps。加速度计可测量范围为:-2g到+2g,-4g到+4g,-8g到+8g,-16g到+16g。MPU-6050上有1KB
30、yte的缓冲区域,有助于增加系统节能效率。和所有设备之间通信采用400K赫兹的IIC接口或者1M赫兹的SPI接口。MPU-6050的供电电源电压范围为2.8伏4.0伏。MPU-6050有一个可用来编程的中断体系,可以采用在中断的引脚产生中断信号,状态标志寄存器可以说明中断信号的来源。本方案中采用IIC接口与MPU-6050进行通信,IIC硬件连接相对比较简单,只需要两根线(SDA数据线、SCL时钟线)即可完成数据的传输,并且速度也能满足本方案的需求。3.3.4马达驱动电路: 本方案采用的驱动电路方案为:文件夹中有电路图 需要截图使用。直流马达旋转方式IN1IN2IN3IN4调速PWM信号调速端
31、A调速端BM1正转高低/高/反转低高/高/停止低低/高/M2正转/高低/高反转/低高/高停止/低低/高3.3.5测速部分:对于检测自平衡小车小车车轮的旋转速率有这下面几种方案:1. 光反射法。运用不相同色彩物体对光的吸收结果不同的原理,在马达轴上安装的转盘上绘制一条反光较强的线,然后在同一端用光源照射并采用光-电感应器件采样转盘的反射光,形成PULSE信号,通过对单位时长段内的PULSE数量统计,就可以计算出马达的旋转的速率。2. 光栅法。在马达轴上安装一个转盘,转盘上均匀分布有扇形槽孔,在转盘的两端分别放置红外发射端和红外接收端,在马达旋转时,红外接收端则会产生相应的PULSE信号,通过对单
32、位时长内的PULSE记录,就可以计算出马达的旋转的速率。3. 霍尔开关检测法。同样也是在马达旋转轴径上安装一个转盘,转盘上同时安装一个带有磁性的块状物体,在它的旋转路径环外部安装一个霍尔检测器件开关,在马达旋转时,霍尔检测器件开关则可以响应定期的电磁信号,形成PULSE信号,通过对单位时长内的PULSE记录,就可以计算出马达的旋转的速率。对于上述三种方案,光束在反射的过程中容易受环境光的干扰,而第二种方案光栅法相对于第三种方案霍尔开关检测法实施起来更为方便。所以本设计中采用的测速方案为光栅法来测量马达的转速。测速的电路如下:3.3.6调试部分AD JTAG:有原理图 需要截图为了方便调试,在硬
33、件结构上增加了如下调试接口:JTAG接口:JTAG是一种标准的芯片调试接口,一共有20个引脚。其中主要引脚功能分别如下所述:TRST:芯片复位的引脚,用来在调试或者下载程序时对相应芯片进行复位操作。TDI: JTAG测试数据通过串行通讯的传输引脚。TMS:JTAG的测试调试模式的选择。TCK: JTAG的测试的时钟输入引脚。TDO:测试数据经过串行通信数据输出的引脚。VCC: 电源正极引脚。VSS: 电源负极引脚。将其置于电路板上,主要用于程序的在线下载和调试,可以极大的加快开发效率。同时,也在电路板上放置了4个电位器调试接口,可以在程序运行时方便的修改一些系统参数,而不需要每次重新更改程序,
34、然后下载程序再次上电测试。这样也是极大的简化了调试环节,节约了开发时长。3.3.7蓝牙通信部分:ZK-07为了更加方便的实现控制自平衡小车的前进、后退和转向,有如下几种方案可供选择:1 通过在小车上放置按键来控制小车的运动方式。这种方式虽然实现起来十分简单,但是在操控的时候十分不便,而且也不够实时。所以放弃此方案。2通过红外遥控。在自平衡小车上安装一个红外接收器,在另一端持有一个红外发送装置,可以实时的向自平衡小车发送控制命令,实现对小车灵活的控制。但是红外的信息发送和接收必须要求两端接口方向基本一致,对于移动中的小车来说,显然不太适合。3. 通过433频段的电磁波遥控模块进行命令的发送和接收
35、,此种方案既能实现实时远程控制,也没有对发送过程中方向的限制,是一种比较好的方案,但是这要求额外制作一个发送器。4. 通过手机的蓝牙与自平衡小车进行通信,除了第三种方案的优势以外,还能够简化系统结构。最终选用第四种方案。本方案选用的蓝牙模块为ZK-07,它是众多蓝牙透传模块中的一种。ZK-07蓝牙模块可以通过通用串行传输USART与各类控制器进行数据传输。通信传输过程中,采用AT命令来调整蓝牙模块各种参数,比如通信测试,修改蓝牙模块名称,修改串口传输波特率,修改蓝牙配对密码等。ZK-07的串口初始BAUD是9600bps, 蓝牙模块中所有设置好的参数在断电之后依然不会丢失。通过AT指令对蓝牙模
36、块进行适当设置之后,就可以发送命令使蓝牙模块进入透传模式,与手机端的蓝牙进行通信。透传是指,两端传输数据时不用了解中间传输的过程,实现所发即所得。在本方案中,主控芯片通过USARTA1接口与蓝牙模块进行通信,小车上的蓝牙模块与手机端的蓝牙配对成功后,即可进行数据通信,在手机端给自平衡小车发送相应的命令,小车接收相应命令后调整自身向前行进,向后行进,以及左右转向等操作。3.4本章小结本章节主要说明了系统硬件电路部分的设计,包括控制器STM32F103RB最小系统电路,供电部分模块设计,陀螺仪传感器MPU-6050电路设计,加速度计传感器电路设计,基于H桥的马达驱动模块的设计,光栅法侧马达旋转速率
37、模块的设计,辅助调试电位器、JTAG模块设计,蓝牙模块通信部分模块设计。至此,本设计中硬件电路的设计环节完成。4.系统软件设计4.1软件系统总体结构前面说明了自平衡小车体系的原理部分,建模部分,硬件电路设计部分。本章将介绍本设计中的软件系统设计部分,控制过程的构思和实现是最重要的部分。软件设计主要包括如下内容:各类外设驱动,其中包括USART驱动,IIC驱动,PWM外设驱动,定时器驱动,陀螺仪MPU6050传感器、加速度传感器驱动,AD驱动。以及各外设及模块的初始化,小车姿态数据的获取以及滤波,小车车轮速度测量,以及适配本系统的PID算法。控制系统的运作流程框图如图4-1所示。图4-1系统总体
38、软件流程图4.2系统初始化过程软件系统初始化主要包括如下这几部分:中断初始化、模数转换部分(AD)、通用串行通信模块(USART),定时器(TIMER)及PWM模块等。4.2.1模数转换模块(AD)初始化设置为了在后期更好的调试,利用四个模数转换器对外提供了四个系统参数调节接口。也就是说,不需要重新修改程序再次下载上电,就可以在程序运行中修改系统参数来对系统进行调试。STMF103RB的模数转换器外设AD有16个通道,最高精度可达12位,单次采样时间最短可至1.17微秒。初始化过程如下:4.2.2通用串行通信USART初始化通用串行通信USART模块的初始化中主要设置如下参数:串口波特率,工作
39、模式,停止位,中断允许标志位,DMA是否开启,校验模式。初始化过程如下:4.2.3光栅法测速模块初始化在本设计中,通过光栅法来获取小车速度。光栅接收端的PULSE数量与自平衡小车移动的距离成正比。根据光栅测量的PULSE数量来计算小车转速有以下两种方案:(1) 在单位时间内计数光栅产生的PULSE个数来计算小车速率,称为M法测速;(2) 计算两个相邻光栅接收PULSE的时间差来测量小车速度,称为T法测速;在上述两种测速方法中,第一套措施用于高速的应用效果更好,第二套措施用于低速的应用效果更好。在本设计中如果采用前者测速,马达旋转一圈会产生400个PULSE,高频的中断会影响控制系统的精度,因此
40、本设计中采用第一套方法来测量小车速度。4.3平衡PID控制软件实现自平衡小车在采用PID控制模型的输出方程可写为: (式2-14)式2-14中,为PID控制输出量,Angle为反馈倾角值,Angle_dot为反馈角速度值,Kp和Kd分别为比例系数及微分系数。在本设计中,采用的调节自平衡小车车速的方法是调节小车马达电压,输出电压与PWM驱动的占空比成正比。相应公式如下:Uout=Kp*angle+Kd*angle_dot (式4-8)式中:Kp、Kd为比例系数和微分系数,angle为车身倾角,angle_dot为车身倾斜的角速度。在调试的过程中发现,当自平衡小车偏移角度很小的时候,马达的输出量很
41、小,但是由于马达由静止状态转为运动状态时,需要克服一个静态摩擦力,所以在此阶段就存在一个调节死区:PWM有输出,但是马达并没有旋转。为了克服这种情况,需要对马达的输出在低输出区域增加一个死区补偿,增加系统在静态时的稳定性。图4-4 马达死区补偿有图4-5 自平衡PD控制软件流程图4.4两轮自平衡车的运动控制车速PID控制程序如下:5. 总结与展望5.1 总结在本次毕业设计的过程中,经历了一个完整的设计过程:自平衡车的自平衡原理探究和论证,整体功能设计,机械结构设计,硬件电路设计,软件设计以及最后的实物制作和调试,最终完成本作品。自平衡车的自平衡原理探究和论证主要包含物理模型分析,数学建模,PI
42、D原理分析部分;整体功能设计部分主要包括了功能实现方案的选择,各个功能模块开发可行性分析;机械结构设计主要包括小车机械主体搭建,整体重心调整,传感器装置的安装等;硬件电路设计部分主要包括电源供应模块的设计,主控制器STM32F103RB最小系统模块的设计,传感器数据采集模块的设计,两轮马达转速测量模块的设计,蓝牙模块数据传输模块的设计,辅助调试模块的设计,马达驱动模块的设计;软件系统设计主要包括各类模块驱动的开发,传感器数据的采集和滤波,马达的转速测量,马达的转速控制,主控制器以及各外设的初始化,蓝牙模块通信的开发以及PID控制器算法的设计;最后进行整个系统的调试和完善。本方案最终实现了双轮自
43、平衡小车的自主站立,能够抵抗一定程度的外界环境干扰。同时,能够在保持平衡的基础上,通过Android手机控制小车的前进、后退、和转弯等操作。5.2 展望由于时间和能力有限,本设计只是完成了一个简单地自平衡小车运动模型,还有如下方面可以继续提高:(1)改进机械结构,提高系统稳定性;(2)采用更高精度的陀螺仪传感器和加速度计传感器,提升系统姿态测量的精度。(3)使用工作频率更高的主控制器,提高系统运算速度。参考文献1张培仁.基于16/32位DSP机器人控制系统设计与实现M.北京:清华大学出版社, 2006:911.2李红美,李智,高飞.平衡的杰作赛格威FIT两轮平台电动车J.电器工业. 2002,
44、 (6):19-21.3屠运武,徐俊艳,张培仁.自平衡控制系统的建模与仿真J.系统仿真学报.2004(04).4Ren Yafie,Ke Xizheng,Liu Gyroscope Performance Estimate Based on Allan VarianceA.In Proceedings of 2007 8th International Conference on Electronic Measurement & InstrumentsC. Xian .1, 260-263.5王晓宇,闫继宏,臧希喆等.两轮白平衡机器人多传感器数据融合方法研究J.传感器技术学报2007,(3):
45、668672 6 赵杰,王晓宇,秦勇等.基于UKF的两轮自平衡机器人姿态最优估计研究J.机器人. 2006: (11),605609.7 耿延睿,崔中兴.组合导航系统卡尔曼滤波衰减因子自适应估计算法研究J.中国惯性技术学报.2001(04).8 秦永元,张洪钺,汪叔华.卡尔曼滤波与组合导航原理M.西安:西北工业大学出版社, 1998.9 付梦印,邓志红,张继伟.Kalman滤波理论及其在惯性导航系统中的应用M.第二版.北京:科学出版社,2010. 10 周丰,王南山,陈卉.C语言教程M.武汉:华中科技大学出版社,2008.11 谭浩强.C程序设计M.北京:清华大学出版社,200512 康华光.电子技术基础M.北京:高等教育出版社,2006.1.附录一 系统电路原理图致谢不知不觉,大学生活已经接近尾声,毕业设计的工作也即将结束。回顾大学四年的心路历程,感慨良多。在这里,我首先要感谢我的指导老师卢仕老师。在大学的学习过程中,感谢他教给了我扎实的基础知识,让我至今十分受用。同时,也给我们提供了机会让我们能够较早的接触电子行业各种各样有趣