毕业设计直立车设计与实现_第1页
毕业设计直立车设计与实现_第2页
毕业设计直立车设计与实现_第3页
毕业设计直立车设计与实现_第4页
毕业设计直立车设计与实现_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

年4月19日毕业设计直立车设计与实现文档仅供参考,不当之处,请联系改正。摘要本文设计的智能车系统以飞思卡尔公司生产的MK60N512ZVLQ10微控制器为核心控制单元,利用线性CCD采集赛道信息,使用软件对采集的信息进行二值化,提取得到赛道两边的黑线信息,用于赛道识别和控制;利用编码器反馈模型车的实际速度,使用PID控制算法调节驱动电机的转速;根据前方黑线的信息,利用偏差计算、中心引导线、十字弯判断、直角弯处理等方法对图像进行处理,根据图像处理得到的黑线偏差关键信息,经过双电机差速控制来实现转向,小车直立,实现了对模型车运动速度和运动方向的闭环控制。为了提高模型车的速度和稳定性,使用上位机、无线模块、液晶模块等调试工具,进行了大量硬件与软件测试。实验结果表明,该系统设计方案确实可行。关键字:MK60N512VLQ10,互补滤波,PID控制,图像分析

第一章绪论以智能汽车为研究背景的科技创意性制作,是一种具有探索性的工程实践活动,其本质也是人类创造有用人工物的一种训练性实践,其过程属性是综合,而结果属性很可能是创造。经过竞赛,参赛的同学们培养了对已学过的基础与专业理论知识与实验的综合运用的能力;带着背景对象中的各种新问题,学习控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科新知识,包括来自不同学科背景大学生的相互学习,逐渐学会了在学科交叉、集成基础上的综合运用;若是以实用为目的,还必须考虑考虑可靠性、寿命、外观工业设计、集成科学与非科学,在具体约束条件下融合形成整体的综合运用。这样的训练是很有意义的。在智能车的开发过程中,各参赛队伍需要改装竞赛车模,完成智能巡线小车的制作。在此过程中需要学习嵌入式系统开发环境与在线编程方法、单片机接口电路设计,自行设计实现识别引导黑线的硬件电路、电机的驱动电路、车速反馈电路、智能车舵机控制电路及能使小车在不驶出赛道的前提下尽可能快速行驶的控制策略与软件算法。飞思卡尔智能车竞赛到当前为止已经成功组织了七届,在赛制、规则、组别的不断改进中,增加了比赛的观赏性、技术性和实用性。

第二章两轮直立车原理分析2.1直立行走任务分解线性CCD比赛要求车模在直立的状态下以两个轮子着地沿着赛道进行比赛,相比四轮着地状态,车模控制的任务更为复杂。为了能够很方便找到解决问题的办法,首先将复杂的问题分解成相对简单的问题进行讨论。为了方便分析,根据要求,假设维持车模的直立、运行的动力全都来自于车模的两个后车轮,后轮的转动由两个直流电机驱动。因此从控制角度看,由控制车模两个电机旋转方向及速度实现对车模的控制。车模控制任务能够分解成以下三个任务:(1)车模直立控制:经过控制两个电机正反向运动保持车模直立状态;(2)车模速度控制:经过控制两个电机转速速度实现车模行进控制;(3)车模转向控制:经过控制两个电机之间的转动差速实现车模转向控制。上面三个任务是经过控制两个直流电机来实现的。我们能够虚拟的假设每一个任务都是由两个电机控制来实现的,她们同轴相连,分别控制车模的直立、速度、方向,如图2.1所示。图2.1车模运动控制分解示意图上面三个任务中控制车模的直立是关键任务,相对于直立控制,速度控制和方向控制都是干扰因素,为了减少速度控制和方向控制的干扰,速度和方向控制尽量平滑输出,以减小对直立的干扰。图2.2三层控制之间相互配合,底层尽量减少多上层的干扰上面三个任务分为三个单独的任务进行控制,最后经过三个任务的输出量叠加在电机上对电机进行控制。2.2车模直立控制车模平衡控制是经过负反馈来实现的。因为车模有两个轮子着地[2],车体只会在轮子滚动的方向上发生倾斜。控制轮子转动,抵消在一个维度上倾斜的趋势便能够保持车体平衡了。如图2.2所示。图2.2经过车轮运动保持车模平衡下面对倒立车模进行简单数学建模,然后建立速度的比例微分负反馈控制,根据基本控制理论讨论车模经过闭环控制保持稳定的条件。假设倒立车模简化成高度为L,质量为m的简单倒立摆,它放置在能够左右移动的车轮上。假设外力干扰引起车模产生角加速度x(t)。沿着垂直于车模地盘方向进行受力分析,能够得到车模倾角与车轮运动加速度a(t)以及外力干扰加速度x(t)之间的运动方程。如图2.3所示。对应车模静止时,系统输入输出的传递函数为:H(s)QUOTE==此时系统具有两个极点。其中一个极点位于s平面的右半平面,因此车模不稳定。车模引入比例、微分反馈之后的系统如下图所示:图2.4加入比例微分反馈后的系统框图系统传递函数:系统稳定需要两个极点都位于s平面的左半平面。要满足这一点,需要k1>g,k2>0。由此能够得出结论,当k1>g,k2>0时,直立车模能够稳定。在角度反馈控制中,与角度成比例的控制量是称为比例控制;与角速度成比例的控制量称为微分控制(角速度是角度的微分)。因此上面系数分别称为比例和微分控制参数。其中微分参数相当于阻尼力,能够有效抑制车模震荡。经过微分抑制控制震荡的思想在后面的速度和方向控制中也同样适用。总结控制车模直立稳定的条件如下:能够精确测量车模倾角θ的大小和角速度θ'的大小;能够控制车轮的加速度。(2)能够控制车轮的加速度。2.3车模速度控制对于直立车模速度的控制相对于普通车模的速度控制则比较复杂。由于在速度控制过程中需要始终保持车模的平衡,因此车模速度控制不能够直接经过改变电机转速来实现,而要经过改变车身倾角来实现。以加速过程为例,将角度控制的输出量减少一定的量,则车模有了一个向前的倾斜角度,在直立控制的作用下,车轮需要向前加速,此时车模就会向前加速。控制框图如图2.13所示。图2.13速度角度控制方案改进后的角度和速度控制方案如下图所示:2.4车模方向控制实现车模方向控制是保证车模沿着竞赛道路比赛的关键。经过线性CCD检测道路两边的黑线能够计算出车身的位置偏差,并利用电机差动控制实现方向控制,从而进一步保证车模在赛道上。利用线性CCD检测到的偏差信号分别与两个车轮的控制信号进行加和减,形成左右轮差动控制电压,使得车模左右轮运行角速度不一致进而控制车模方向。如图2.16所示。图2.12经过差动控制左右电机驱动电压控制车模方向

2.5车模角度和角速度测量车模倾角以及倾角速度的测量成为控制车模直立的关键。测量车模倾角和倾角速度能够经过安装在车模上的加速度传感器和陀螺仪实现。加速度传感器加速度传感器能够测量由地球引力作用或者物体运动所产生的加速度。图2.13加速度传感器经过微机械加工技术在硅片上加工形成了一个机械悬臂。它与相邻的电极形成了两个电容。由于加速度使得机械悬臂与两个电极之间的距离发生变化,从而改变了两个电容的参数。经过集成的开关电容放大电路量测电容参数的变化,形成了与加速度成正比的电压输出。MMA7260是一款三轴低g半导体加速度计,能够同时输出三个方向上的加速度模拟信号,如图2.14所示。图2.14三轴加速度传感器经过设置能够使得MMA7260最大输出灵敏度为800mV/g。只需要测量其中一个方向上的加速度值,就能够计算出车模倾角,比如使用Z轴方向上的加速度信号。车模直立时,固定加速度器在Z轴水平方向,此时输出信号为零偏电压信号。当车模发生倾斜时,重力加速度g便会在Z轴方向形成加速度分量,从而引起该轴输出电压变化。变化的规律为Δu=kgsinθ式中,g为重力加速度;θ为车模倾角;k为比例系数。当倾θ比较小的时候,输出电压的变化能够近似与倾角成正比。只需要加速度就能够获得车模的倾角,再对此信号进行微分便能够获得倾角加速度。但在实际车模运行过程中,由于车模本身的运动所产生的加速度会产生很大的干扰信号叠加在上述测量信号上,使得输出信号无法准确反映车模的倾角,如图2.15所示。图2.15车模运动引起加速度计信号波动车模运动产生的振动加速度使得输出电压在实际倾角电压附近波动,能够经过数据平滑滤波将其滤除。可是平滑滤波也会使得信号无法实时反映车模倾角的变化,从而减缓对于车模车轮控制,使得车模无法保持平衡。因此对于车模直立控制所需要的倾角信息需要经过另外一种器件获得,那就是角速度传感器-陀螺仪。(2)角速度传感器-陀螺仪陀螺仪能够用来测量物体的旋转角速度。选用EN-03系列的加速度传感器。它利用了旋转坐标系中的物体会受到克里利奥力的原理,在器件中利用压电陶瓷做成振动单元。当旋转器件时会改变振动频率从而反映出物体旋转的角速度。

在车模上安装陀螺仪,能够测量车模倾斜的角速度,将角速度信号进行积分便能够得到车模的倾角。如图2.16所示。图2.16测量车模角速度和角度由于陀螺仪输出的是车模的角速度,不会受到车体振动影响。因此该信号中噪声很小。车模的角度又是经过对角速度积分而得,这可进一步平滑信号,从而使得角度信号更加稳定。因此车模控制所需要的角度和角速度能够使用陀螺仪所得到的信号。由于从陀螺仪的角速度获得角度信息,需要经过积分运算。如果角速度信号存在微小的偏差,经过积分运算之后,变化形成积累误差。这个误差会随着时间延长逐步增加,最终导致电路饱和,无法形成正确的角度信号,如图2.17所示。图2.17角度积分漂移对于积累误差的消除,能够经过上面的加速度传感器获得的角度信息对此进行校正,如图2.18所示。图2.18角度积分漂移校正利用加速度计所获得的角度信息θg与陀螺仪积分后的角度θ进行比较,将比较的误差信号经过比例Tg放大之后与陀螺仪输出的角速度信号叠加之后再进行积分。从图2.18中的框图能够看出,对于加速度计给定的角度θg,经过比例、积分环节之后产生的角度θ必然最终等于θg。由于加速度计获得的角度信息不会存在积累误差,因此最终将输出角度θ中的积累误差消除了。加速度计所产生的角度信息θg中会叠加很强的有车模运动加速度噪声信号。为了避免该信号对于角度θ的影响,因此比例系数Tg应该非常小。这样,加速度的噪声信号经过比例、积分后,在输出角度信息中就会非常小了。由于存在积分环节,因此无论比例Tg多么小,最终输出角度θ必然与加速度计测量的角度θg相等,只是这个调节过程会随着Tg的减小而延长。为了避免输出角度θ跟着θg过长,能够采取以下两个方面的措施:(1)仔细调整陀螺仪的放大电路,使得它的零点偏置尽量接近于设定值,而且稳定。(2)在控制电路和程序运行的开始,尽量保持车模处于直立状态,这样一开始就使得输出角度θ与θg相等。此后,加速度计的输出只是消除积分的偏移,输出角度不会出现很大的偏差。加速度计和陀螺仪以及融合后的波形如图所示红色为加速度计的波形,白色为融合后的波形,黄色为陀螺仪积分后的角度波形2.6车模直立行走控制算法总图将车模直立行走主要的控制算法集中起来,形成控制算法总框图,如图2.19图2.19车模运动控制总框图为了实现车模直立行走,需要采集如下信号:(1)车模陀螺仪信号;(2)车模加速度计信号(z轴信号);(3)车模电机转速脉冲信号;(4)车模偏差信号(两路)。需要进行如下控制环节,控制车模电机转动:(1)车模直立控制:使用车模倾角的PD(比例、微分)控制;(2)车模速度控制:使用PI(比例、积分)控制;(3)车模方向控制:使用P(比例)控制。可经过单片机软件实现上述控制算法。车模的三种控制(直立、速度、方向)最终是将控制量叠加在一起作为电机输出电压控制量。直立控制是基础,它的调整速度非常快,速度和方向控制相对调整速度慢。速度和方向控制的输出量是直接叠加在电机控制电压上。它们假定直立控制会始终保持车模不跌倒,直立控制会自动调节车模的倾角以适应车模的加速、减速和转弯的需要。车模加速前进时,由速度控制算法给出电机增加的正向电压,电机开始逐步加速旋转。在此同时,车模直立控制会迅速进行调整,使得车模往前倾斜,车模开始加速。当车模速度达到设定值,由车模速到控制算法使得电机进入恒速运行。此时车模直立控制算法也会相应调整车模出于直立状态,车模恒速运行。车模减速过程与此类似,由速度控制算法减少了电机的电压,电机开始减速运行。直立控制算法会自动调整车模往后倾斜,使得车模减速。车模转向控制是在车速控制基础之上,调节两个电机驱动电压差使得电机运行速度出现差动,进而调整车模的方向。

第三章系统硬件设计NRF无线传输模块NRF无线传输模块液晶、键盘电机电机驱动电源管理模块电机电机驱动电源管理模块MCUMCU线性CCD编码器线性CCD编码器加速度计、陀螺仪3.1电机驱动模块BTN7971芯片集成度非常高。每一片BTN7971就是一个半桥,两片BTN7971即可组成一个H全桥电动机驱动电路。在单片机驱动信号传输中,使用74HC244将3.3V的单片机输出的PWM信号转换成5V信号,同时增强其驱动能力。3.2加速度计和陀螺仪陀螺仪的模块使用轨到轨运放LMV358,R1用来调节静态输出值,因陀螺仪芯片差异,R1从10K到100K不等。R1阻值越小,静态输出值越高,C1作用是超前抑制,防止放大电路发生高频震荡。同时也有滤波作用,能够经过增加C1的值来增加硬件滤波程度,放大倍数A=R2/R3+1。3.3线性CCD检测的基本原理线性CCD采用的是Texas公司生产的Tsl1401系列的线性CCD。如下图:Tsl1401内部结构图采集的时序图如下这种线性CCD包括一个1×128阵列的光电二极管,相关的电荷放大器电路和一个具有能够同时对128个像素点开始曝光、停止曝光的内部像素数据保持功能的电路,该传感器的内部控制逻辑要求只有一个串行输入(SI)和一个时钟信号输入端(CLK),一个AO口依次输出各像素点的模拟量的电压值信号。当曝光时间过短时,采的像素点电压值会整体很低,不足以提取出真实的赛道信息,然而当曝光时间过长时,采的像素点电压值又会过高,达到输出的饱和状态,能够看到,曝光时间的确定对提取稳定、真实的赛道信息是一个很关键的因素。在曝光时间的选择上进行了很多尝试,从动态曝光、5ms曝光到10ms曝光都使用过,发现无论是自然光照还是灯光的照射,10ms曝光采的的数据是特别稳定的,不会出现明显的波动,能够抵抗环境的干扰,因此决定用10ms曝光作为最后的方案。镜头的选取也是一个很关键的因素,不合适的镜头采集到的信息会有明显的杂点或则看到的赛道边缘很平缓,这都不利于对智能车所处赛道的偏差的稳定、准确提取。在镜头的选取上,我们经过一些尝试,最后选择了视野为120度、焦距2.6mm~2.8mm的广角镜头,采集的宽度1.5米而且没有明显的畸变,白色的赛道宽度大约只有50个像素点左右。CCD检测效果图3.4整体电路PCB图第四章系统软件设计4.1软件系统整体框架在功能上,本系统主要分为四个模块:1.角度平衡控制模块:使用加速度计和陀螺仪融合出车身角度,经过PD控制算法维持车身平衡。2.速度控制模块:利用编码器测量两个车轮的速度,使用PI控制算法控制车子行进速度。3.循迹控制模块:使用线性CCD测量赛道两条黑线,并根据车身状况作出循迹决策。4.调试模块:使用液晶、键盘、无线模块,能够更加直观地观察车子运行情况,使得参数调试更加方便。循迹控制速度控制循迹控制速度控制调试模块角度控制调试模块角度控制K60单片机K60单片机图5.1主程序功能划分4.2软件框架程序上电运行后,便进行单片机的初始化。初始化的工作包括有两部分,一部分是对于单片机各个应用到的模块进行初始化。第二部分是应用程序初始化,是对于车模控制程序中应用到的参数进行初始化。初始化完成后,就进入主循环,不断进行按键检测和菜单控制,而且根据设置发送无线。主程序框图如图5.1所示。车模的直立控制、速度控制以及方向控制都是在中断程序中完成。经过全局标志变量确定是否进行这些闭环控制。中断程序框图如图5.2所示。车模的所用控制都放在了一个五毫秒的定时器中断中,在五毫秒中执行下列任务:经过编码器检测车模的运行速度。读取AD转换值。这些值包括有陀螺仪、加速度计数值。读取完毕之后,便进行车模直立控制过程。包括车模角度计算、直立控制计算、电机PWM输出。车模速度控制:在这个时间片段中,又进行0-19计数。在其中第0片段中,进行速度PID调节。因此,速度调节的周期为100毫秒。也就是每秒钟调节10次。车模方向控制:根据前面读取的CCD采集值,计算偏差数值。然后计算电机差模控制电压数。PWM输出CCD信息处理PWM输出CCD信息处理速度控制角度控制图5.3中断服务程序主程序框架、中断程序框架中的各个主要子程序功能及其程序中断程序框架如下所示voidPIT0_IRQHandler(void){gpio_set(PTB2,0);//CLK=0Spd_Decision();SPEED_CHECK();//两个轮子的速度采集AngleControl();CCDCount++;if(CCDCount>CCD_PERIOD){tsl1401_gather();CCDdeal2();CCDCount=0;}AD_Calculate();//CCDdeal2();g_nCarMtionCount++;if(g_nCarMtionCount>=CAR_MOTION_PERIOD){g_nCarMtionCount=0;Speed_PI();}Speed_PI_OUT();//PWM输出控制,周期5msMotorOutput();gpio_set(PTB2,1);PIT_Flag_Clear(PIT0);//清中断标志位}4.3控制算法与函数程序框图如下4.3.1速度控制程序设计速度控制经过编码器采集的脉冲值作为速度的反馈值,进而对速度进行PI调节。编码器测速函数如下:voidSPEED_CHECK(){intspd_templ=0,spd_tempr=0;spd_templ=FTM_QUAD_get(FTM2);//获取FTM正交解码的脉冲数(负数表示反方向)spd_tempr=FTM_QUAD_get(FTM1);//获取FTM正交解码的脉冲数(负数表示反方向)NowSpeed_L_temp+=spd_templ;NowSpeed_R_temp+=spd_tempr;FTM_QUAD_clean(FTM1);FTM_QUAD_clean(FTM2);}速度PI控制函数如下,函数每五毫秒调用一次,一百毫秒进行一次输出。voidSpeed_PI(void){ int32nPL,nIL;int32nPR,nIR; int32nSpeed=0;int32nSpeedR=0; int32nValueL1,nValueL2;int32nValueR1,nValueR2;staticinterr1=0,err2=0,pre_err=0;SPEED_L_QEP=NowSpeed_L_temp;//将编码器清零SPEED_R_QEP=NowSpeed_R_temp; NowSpeed_L_temp=0;NowSpeed_R_temp=0; nSpeed=(SPEED_L_QEP+SPEED_R_QEP)/2;PI_SpeedErrL=Speed_set-nSpeed;PI_SpeedErrR=Speed_set-nSpeed; nValueL1=Speed_set-nSpeed; nValueL2=Speed_set-nSpeed;nValueR1=Speed_set-nSpeed; nValueR2=Speed_set-nSpeed; nPL=nValueL1*Speed_P; nIL=nValueL2*Speed_I; nPR=nValueR1*Speed_P; nIR=nValueR2*Speed_I;PI_SpeedKeepL+=nIL;PI_SpeedKeepR+=nIR; if(PI_SpeedKeepL>1000)PI_SpeedKeepL=1000;if(PI_SpeedKeepR>1000)PI_SpeedKeepR=1000;PI_SpeedNewL=(int16)(nPL+PI_SpeedKeepL/12);PI_SpeedOldL=PI_SpeedNewL;PI_SpeedNewR=(int16)(nPR+PI_SpeedKeepR/12);PI_SpeedOldR=PI_SpeedNewR;}//====================================//函数名Speed_PI_OUT//作用:计算速度PI控制的输出,5ms调用一次//====================================voidSpeed_PI_OUT(void){int32nValueL,nValueR;nValueL=PI_SpeedNewL-PI_SpeedOldL; nValueL=nValueL*(g_nCarMtionCount+1)/19+PI_SpeedOldL; PI_OutL=(int16)nValueL;nValueR=PI_SpeedNewR-PI_SpeedOldR; nValueR=nValueR*(g_nCarMtionCount+1)/19+PI_SpeedOldR;PI_OutR=(int16)nValueR;}4.3.2直立控制函数程序框图如下:图5.5直立控制算法框图直立控制函数包括角度的检测,经过采集陀螺仪和加速度计的AD值,算出融合后的角度和角速度,然后根据不同的倾角计算出所需的占空比/*********************陀螺仪及加速度计角度计算**************/voidAD_Calculate(void){floatfDeltaValue;Rd_Ad_Value();//采集ADg_fGravityAngle=(VOLTAGE_GRAVITY-GRAVITY_OFFSET)*GRAVITY_ANGLE_RATIO;g_fGyroscopeAngleSpeed=(2585-VOLTAGE_GYRO)*GYROSCOPE_ANGLE_RATIO;g_fCarAngle=g_fGyroscopeAngleIntegral;fDeltaValue=(g_fGravityAngle-g_fCarAngle)/GRAVITY_ADJUST_TIME_CONSTANT;g_fGyroscopeAngleIntegral+=(g_fGyroscopeAngleSpeed+fDeltaValue)/GYROSCOPE_ANGLE_SIGMA_FREQUENCY;/*****************************串口看波形(选择使用)****************************///AngleControl();//宏条件编译选择是否使用虚拟示波器}voidAngleControl(void){floatfValue;fValue=(g_fCarAngle)*Angle_P+(g_fGyroscopeAngleSpeed)*Angle_D;if(fValue>ANGLE_CONTROL_OUT_MAX)fValue=ANGLE_CONTROL_OUT_MAX;elseif(fValue<ANGLE_CONTROL_OUT_MIN)fValue=ANGLE_CONTROL_OUT_MIN;g_fAngleControlout=fValue;g_Speed_L=g_fAngleControlout;//左轮总速度g_Speed_R=g_fAngleControlout;//右轮总速度}4.3.3方向控制函数车模方向控制利用图像中两条黑线的平均值与64的差值来计算车模电机差值驱动电压。voidccd_direction(){floatwheel_out,wheel_out2;staticint8err1=0,err2=0,pianyi4=0;//err1=pianyi-pianyi4;wheel_out=adc_once(wheel_OUT,ADC_12bit);wheel_out2=(wheel_out-2575)*0.25;/*if((pianyi>0)&&(pianyi<10)){CCD_out=Wheel_P*pianyi*0.7+Wheel_D*(pianyi-pianyi4);}if((pianyi>10)&&(pianyi<25)){CCD_out=Wheel_P*pianyi*0.5+Wheel_D*(pianyi-pianyi4);}if((pianyi<0)&&(pianyi>-10)){CCD_out=Wheel_P*pianyi*2+Wheel_D*(pianyi-pianyi4);}if((pianyi<-10)&&(pianyi>-20)){CCD_out=Wheel_P*pianyi*2+Wheel_D*(pianyi-pianyi4);*/CCD_out=Wheel_P*pianyi+Wheel_D*(pianyi-pianyi4);if(CCD_out<0)CCD_out=CCD_out;if(CCD_out>0)CCD_out=CCD_out;//if((center>115)&&(left==8)&&(right==120))//CCD_out=-2*CCD_out;pianyi4=pianyi;}4.3.4电机控制函数车模的电机控制函数,FTM的调试精度为10000,直立控制、速度控制、方向控制三个需要的占空比叠加到电机上,代码如下所示//==========================================//函数名Motor_Control//作用:赋给电机经过PID运算的速度值//==========================================voidMotor_Control_R(void){if(DCDuty_R>=0){if(SPEED_R_QEP>=0){FTM_PWM_Duty(FTM0,FTM_CH3,0);FTM_PWM_Duty(FTM0,FTM_CH4,DCDuty_R);//加入死}if(SPEED_R_QEP<0){FTM_PWM_Duty(FTM0,FTM_CH3,0);FTM_PWM_Duty(FTM0,FTM_CH4,0);//加入死DELAY_US(80);FTM_PWM_Duty(FTM0,FTM_CH3,0);FTM_PWM_Duty(FTM0,FTM_CH4,DCDuty_R);//加入死}}if(DCDuty_R<0){if(SPEED_R_QEP>=0){FTM_PWM_Duty(FTM0,FTM_CH3,0);FTM_PWM_Duty(FTM0,FTM_CH4,0);//加入死DELAY_US(80);FTM_PWM_Duty(FTM0,FTM_CH3,-DCDuty_R);FTM_PWM_Duty(FTM0,FTM_CH4,0);//加入死}if(SPEED_R_QEP<0){FTM_PWM_Duty(FTM0,FTM_CH3,-DCDuty_R);FTM_PWM_Duty(FTM0,FTM_CH4,0);//加入死}}}第五章机械设计5.1编码器的安装编码器使用的是欧姆龙,每转动一圈产生500个脉冲,安装时尽量安装在轮子上方,使重心尽量靠近轮子,具体安装如下图所示。图5.1编码器的安装5.2CCD的安装CCD的安装要求结实稳固,减少车正常行进过程中的晃动,而且能够经受得住意外的碰撞,我们采用了一根外径8mm,壁厚1mm的碳纤维杆最为主桅,底部采用塑料底座固定在车模主体上,顶部采用塑料支架固定CCD,同时增加一根外径3mm的碳纤维杆组成三角形结构提高了整图图5.2CCD支架的安装5.3电池的安装电池无论在重量还是体积上都占车的很大分量,故而电池位置是对车模重心和姿态影响最大的部分,为了减轻重量,我们采用铝合金支架和扎带固定电池,经过多次调试确定了上面的安装方式。图5.3电池的安装5.4陀螺仪和加速度计的安装陀螺仪和加速度计作为测量角速度的精密传感器,其灵敏度受不但取决于自身性能,也在很大程度上受安装位置和安装方式影响,其安装要求稳固,而且其距离轮轴距离得当,从而保证足够的灵敏度。综合这几点,最终确定陀螺仪和加速度计的安装位置如下。图5.4陀螺仪和加速度计的安装5.4整车安装图5.4整车安装5.6重心的调整重心是对车稳定性影响最大的因素,过高的重心会导致车模转弯时容易抬起一侧轮子,丧失稳定性,严重时甚至会出现侧翻。在对车的调试过程中,能够经过加垫片的方式临时调整重心,在确定位置后在换上新的铝片,或者重新弯折钻孔达到理想效果。5.7齿轮组的微调作为传动机构,齿轮组对车模行驶稳定性影响也非常大,齿的啮合应该松紧适度,过松容易出现错齿,严重损坏齿轮,过紧则会增加电机负载,同时过大的静力会缩短整个传动系统的寿命,另外由于E车模的结构特殊,容易出现电机轴和轮轴不平行的情况,这时能够经过在电机上垫上一定厚度的薄片来解决。啮合良好且轴完全平行的齿轮空载运行时声音平缓,顺畅,车模运行时则几乎静音。如果出现频繁无规律的尖锐声响则说明齿轮啮合过松,甚至出现了错齿,如果声音沉闷则说明齿轮啮合过紧,如果调节了松紧后依然没有得到好转,则说明齿轮可能存在轴不平行的情况。第六章调试部分6.1无线模块为了验证程序的可靠性,需要把采集过来的道路信息发送到电脑上进行显示,比对处理结果和小车反应是否一致,由于小车的特殊性,因此需要无线发送工具把数据传输到电脑上,经过人机交换界面,达到对小车采集过来数据的实时检测,无线传输模块采用nrf2401,采用SPI协议,每次能传输32个字节,具有高速传输的性能,能对线性ccd采集过来的波形经过液晶屏进行实时显示,从而能够达到两块单片机的实时通信,然后采集数据的单片机经过单片机的串口模块将采集过来的PI数据发送至电脑上位机,显示出波形,具体见下图图6.1无线调试接收端6.2输入模块由于直立车参数较多,每次经过烧写程序修改参数较为繁琐,为了简化步奏、提高效率,经过薄膜键盘输入数据,EEPROM存储每次修改过的数据,每次开机后程序读取存储在里面的数据,数据值经过液晶屏进行显示,薄膜键盘的工作原理是经过单片机不断扫描IO口的高低电平的变换来确定输入数据,输入的数据经过IIC协议写入EEPROM中,从而达到对数据的修改,输入显示模块如下所示图6.2输入模块界面6.3软件调试直立车的运行好坏,大部分取决于代码的编写水平,程序的编写使用的软件为IAR,用JLINK进行调试,为了使程序的可读性增强,程序的编写采用单函数编写,使程序的可读性增强。6.4直立控制PID参数调试直立控制的目的是让小车能够稳定地站在那里,同时直立的控制对方向控制英影响较小,同时与速度控制良好配合。直立控制、方向控制和速度控制是一个整体,必须同时调节三者的参数,才能达到最好的效果。一般的调试顺序是这样的,先对直立参数进行调节,使其达到这个效果:在陀螺仪和加速度计零点稳定的情况下,能够稳定地静止在原地,抖动小车会感受到明显的阻力,轻推小车,小车能够在50cm左右的距离停住,稍微用力,小车会一直跑下去,停不下来,可是不会明显加速。再对速度控制进行调节,不论是陀螺仪控速还是积分控速,最终达到以下效果:速度控制不会对直立产生明显的影响,不会对打角产生明显的影响,给一个长直道,速度能够在三米之内加到期望速度的80%以上,而且能够稳定在80%~100%,不会产生震荡。再对方向控制进行调节,在偏差计算正确的情况下,达到如下效果:直道入弯不会产生明显的延迟,不会产生明显的降速,R500不会陷下去,出弯姿态比较好,十字弯不做处理也不会产生很明显的抖动,大弧入弯能够打过来而不会侧滑。车子直立采用PD调节,基本算法如下:陀螺仪加速度计互不滤波融合角度加速度计获得角度陀螺仪加速度计互不滤波融合角度加速度计获得角度保持直立驱动电机比例调节保持直立驱动电机比例调节微分调节积分获得角度陀螺仪获得角速度微分调节积分获得角度陀螺仪获得角速度其中由加速度计直接获得的车身倾斜的角度静态性能较好,动态性能很差,在车子跑动过程中噪声很大,由陀螺仪获得的角速度的动态性能较好,但需要为其提供积分基准,而且需要实时对其进行矫正,避免误差随积分累积,因此比较好的办法就是利用融合算法将两者的结果进行融合,多传感器数据融合算法采用陀螺仪和加速计互补滤波。首先调试加速度计和陀螺仪的转换系数,目标是将加速度计、陀螺仪和日常角度单位统一起来,其中加速度计和陀螺仪的单位一定要统一,两者与日常角度单位不一定非要统一,统一起来便于理解和调试。利用串口发送数据,将加速度计测得的角度和融合之后的角度在虚拟示波器上显示出来,使最终波形达到如下效果:融合曲线能够及时追踪加速度计曲线,同时不会出现明显的过冲,也基本不受加速度计噪声的影响。此时的转换系数最佳。然后调试直立的PD参数:首先明确直立控制中P参数和D参数的作用,P参数相当于弹簧振子的回复力,D参数在偏差增大时协助P参数加速对偏差的响应、在偏差减小过程中相当于阻尼,对回复力起到衰减的作用,防止过冲和震荡,因此对于需要及时响应的系统,除了需要较大的P参数外,还需要较大的D参数,实际系统中,为避免震荡,P参数往往不能太大,因此此时往往需要增大D参数来加速响应,同时为了避免回复过程中对P参数衰减过大,D参数也不能太大,据此分析,PD参数都需要合适才能达到较好的控制效果。直立PD参数调试过程如下:先使用单P控制,让P参数从0开始增加,最终达到这样的效果:在不受扰动的情况下,小车能够勉强站在平衡位置(加速度计和陀螺仪的给出正确零点),一旦受到扰动,小车会出现接近等幅的振荡,此时P参数的0.9倍,就是比较合适的P参数;然后让D参数从0开始增加,达到如下效果:小车能够稳定地静止在原地,抖动小车会感受到明显的阻力,轻推小车,小车能够在50cm左右的距离停住,稍微用力,小车会一直跑下去,停不下来,可是不会明显加速,此时的PD参数就是比较合适的PD参数。在直立调试积累一定的经验之后,能够尝试使用模糊PD来控制直立,在参数合适的情况下,会得到更好的效果。6.5速度PI参数调试速度控制的目的是让小车的速度在尽量短的时间内达到设定幅期望速度,同时对直立控制和方向控制影响较小。直立车的速度控制能够使用陀螺仪控速或者积分控速,我们采用的是陀螺仪控速,基本思想是:在需要对速度进行调节时对陀螺仪的零点做一个合适的修改,使小车处于前倾或者后倾状态,以此达到加速或者减速的目的,加速和减速的效果不但与相应速度控制的参数有关,还与直立控制的效果、陀螺仪和加速度计的互补滤波密切相关。速度控制的理想效果是:直立车能够在两米内从静止加速到期望速度的80%,而且能够一直保持在期望速度的80%~120%,同时不会对方向控制和直立控制产生负面影响。6.6方向PD参数调试小车的方向控制是为了让小车有较好的行走路线,而且能够保持较好的姿态。理想的方向控制效果是:小车以一稳定的速度行驶,直道不会产生抖动,直道入弯不会发生延迟,不会侧滑,不会产生明显的减速,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论