新动力智能车技术报告_第1页
新动力智能车技术报告_第2页
新动力智能车技术报告_第3页
新动力智能车技术报告_第4页
新动力智能车技术报告_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

第一届“飞思卡尔”杯全国大学生智能汽车邀请赛技术报告附件A车模源代码附件B基于单片机控制的寻迹小车硬件结构分析附件C系统原理图学校杭州电子科技大学队伍名称新动力参赛队员翁建永陈鹏吴锦跃带队教师曾毓关于技术报告和研究论文使用授权的说明本人完全了解第一届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名带队教师签名日期摘要本设计采用单片机(MC9S12DG128)作为智能小车的检测和控制核心。路径识别采用反射式红外传感器,车速检测采用霍尔传感器,由MOS管组成的H桥控制驱动电机正反转的快速切换,利用PWM技术控制小车的运动速度及运动方向。基于这些完备而可靠的硬件设计,设计了一套PID优化算法,编制了全闭环运动控制程序,经反复测试,取得了较好的效果。关键词单片机红外传感器路径识别智能小车PWM控制ABSTRACTINTHISDESIGN,WEUSEMCUMC9S12DG128ASTHEMODELCARSDETECTANDCONTROLCOREREFLECTINGINFRAREDSENSORSAREAPPLIEDTODETECTBLACKLINES,ANDHALLELEMENTISUSEDINSPEEDDETECTION,THEHBRIDGEWHICHISMADEBYMOSFETISUSEDTOCONTROLTHEFASTSWITCHINGOFTHEELECTROMOTORBYINTRODUCINGPWMTOTHISSYSTEM,WEAREABLETOCONTROLTHEMODELCARSSPEEDANDDIRECTIONPRECISELYBASEDONTHESECREDIBLEHARDWAREDESIGN,WEDESIGNAPIDOPTIMIZATIONALGORITHMWHICHENABLESTHEMODELCARTORUNONTHEORBITWITHHIGHACCURACYKEYWORDSMCUINFRAREDSENSORPATHDETECTINGSMARTCARPWMCONTROL目录摘要IABSTRACT第一章引言111智能车系统研究内容112智能车制作情况213文章章节安排3第二章方案的选择与论证521路径识别522电动机驱动调速623速度检测624路径控制算法625小结7第三章系统的硬件设计831核心MCU电路832电源模块电路933路径识别模块的电路设计与实现1034电动机驱动模块的电路设计与实现1135车速检测模块的电路设计与实现1236电池电压监测及报警1237调试部分电路13第四章系统的软件设计1441程序结构规划1442数据采集分析模块1543PID算法运算模块20431程序结构20432PID路线控制22433PID动力控制2244外部设备控制模块23441舵机角度控制23442电机动力控制24第五章调试2651调试仪器2652小车行驶调试26第六章总结28参考文献29附录AI附录BXXX附录CXXXV第一章引言11智能车系统研究内容智能车系统要求以MC9S12DG128为核心,能够自主识别路线,在专门设计的跑道上自动识别道路行驶,以最快的速度跑完全程。其主要研究内容包括以下几个部分1电源智能车系统根据各部件正常工作的需要,对配发的标准车模用72V2000MAHNICD电池进行电压调节。其中,单片机系统、路径识别的光电传感器和接收器电路、车速传感器电路需要5V电压,伺服电机工作电压范围48V到6V,直流电机可以使用72V2000MAHNICD蓄电池直接供电。2路径识别路径识别模块是智能车系统的关键模块之一,路径识别方案的好坏,直接关系到最终性能的优劣,光电传感器寻迹方案是比较简单易行的方案。所谓光电传感器寻迹方案,即路径识别电路由一系列发光二极管、接收二极管组成,由于赛道中存在轨迹指示黑线,落在黑线区域内的光电二极管接收到的反射光线强度与白色的赛道不同,由此判断行车的方向。光电传感器寻迹方案的优点是电路简单、信号处理速度快。光电传感器的排列方法、个数、彼此之间的间隔都与控制方法密切相关。但一般的认识是,在不受到外部因素影响的前提下,能够感知前方的距离越远,行驶效率越高。3直流电动机驱动直流电机的控制一般由单片机的PWM信号来完成,驱动芯片一般采用飞思卡尔半导体公司的半桥式驱动器MC33886。MC33886具有制动的功能,在行驶过程中可以通过单片机的控制使直流电机紧急制动。电路图示见图11。图11MC33886电路示意图12智能车制作情况整个智能车控制系统分为4个电路板,分别为路径识别模块,单片机模块,直流电机驱动模块和速度检测模块,还有串口通讯及调试接口。每个模块都单独做成一个板子,模块与模块之间通过数据线相连。下面简单介绍每一块板子的结构及相互间的连接。单片机模块硬件板核心板部分全部重新设计。首先在功能上做了修改,加入了DCDC电压转换部分。同时核心板外形改为近似于梯形,以匹配车体前半部分外形,同时也减轻小车的重量,提高小车的行驶速度。修改后的核心板前端宽为8CM,底部宽13CM,高为7CM。板子固定在车身中间的两个固定杆上。并分别引出一个两线接口和三个三线接口。两线接口与电池相连,三线接口分别与舵机、直流电机驱动模块和速度检测模块硬件板相连。路径识别模块硬件板8对红外传感器安装在车首的延长固定板上,使能够扩大探测范围。每对传感器间隔为3CM,发射管与接收管间距离为1CM,红外发光二极管及接收管距地面3CM,并且和地面垂直。板子总宽为215CM,用螺丝固定于车体前部的固定杆上,并用一14线接口与小车中间的单片机模块相连。直流电动机驱动模块硬件板该硬件板安装在车体后侧电机固定架上,长8CM,宽5CM。板子上引出了一个两线接口和一个三线接口。其中两线接口和NICD电池相连,三线接口和单片机模块硬件板相连。速度检测模块硬件板该硬件板安装在小车右后轮边上的固定杆上,长3CM,宽1CM。在上面引出三根线与单片机模块硬件板相连,霍尔传感器安装在车架后座位置,4个磁钢则固定在右后轮车轴上。改造后的车模总体重量为095KG,长为363CM、宽为212CM、高为77CM,电容总容量为1600UF。车模整体外观图如图11所示。图12车模整体外观图13文章章节安排第一章引言本章主要介绍智能车制作概况及系统方案综述。第二章方案的选择与论证本章主要介绍系统硬件和软件的方案比较及选择。第三章系统的硬件设计本章主要介绍硬件各模块原理图的设计及说明。第四章系统的软件设计本章主要介绍软件部分示意图及说明。第五章调试本章主要介绍小车的调试仪器和小车的行驶调试。第六章总结第二章方案的选择与论证根据题目要求,系统划分为5个基本模块,如图21所示。单片机路径识别速度检测电动机驱动PWM舵机控制图21系统模块框图21路径识别方案一CCD摄像头寻迹方案CCD摄像头寻迹方案的优点是可以更远更早地感知赛道的变化,分辨率高,识别路径参数多;缺点是数据量大,需要较大的存储空间,数据处理时间比较长,信号处理比较复杂,另外CCD工作电压为12V,需用斩波升压电路得到12V电源。方案二选用脉冲调制的反射式红外发射接收器。反射式红外发射接收寻迹方案的优点是电路相对比较简单、信号处理量小,控制速度快;缺点在于探测距离相对较短,另外环境光源会对光敏二极管的工作产生一定的干扰。考虑到环境光干扰主要是直流分量,我们采用了带有交流分量的调制信号。另外,为了得到质量较高的接收信号,附加了由电阻、电容组成的RC高通滤波器,这样能够在一定程度上避免由外部光线因素引起的路线识别不正确的问题。基于上述理论分析,我们选择了方案二。22电动机驱动调速方案一采用一只MOS管组成简单BUCK电路;用这个方法电路非常简单,控制只需要一路PWM,在管子上消耗的电能也比较少,但是缺点是不能控制电及机的电流方向。方案二采用飞思卡尔半导体公司的集成桥式驱动器MC33886。MC33886最大驱动电流为5A,体积小巧,使用简单,但由于是贴片的封装,散热面积比较小,长时间大电流工作时,温升较高,如果长时间工作必须外加散热器。方案三采用4个分立MOS管构成的H桥电路,控制直流电机紧急制动。用单片机控制MOS管使之工作在占空比可调的开关状态,精确调整电动机转速。这种电路由于MOS管工作在饱和截止状态,效率非常高,并且H桥电路可以快速实现转速和方向控制。MOS管开关速度高,所以非常适合采用PWM调制技术。基于上述理论分析,我们选择方案三。23速度检测方案一采用霍尔传感器和磁钢。将霍尔传感器和磁钢分别安装在车架和车轴的适当位置,小车行驶时,每转动一圈,霍尔传感器产生开关信号,通过在单位时间对其计数可计算出车辆行驶的瞬时速度,累计开关信号可计算出小车行驶的距离。并且霍尔传感器具有灵敏度高、价格低廉、不易损坏等优点。方案二采用机械开关。可以在车轴上固定一个突出的圆球,在底板上相对应固定一个轻触开关,车轮每次转过一圈可以让轻触开关产生一个脉冲,通过计算脉冲间距的时间可以算出速度。这种方法的优点是结构简单,容易实现;缺点是机械触点容易磨损。以上两种方案都是比较可行的转速测量法案。尤其是霍尔传感器,在工业上得到广泛采用。在本设计中,我们采用方案一。24路径控制算法方案一依靠大量的测试信息,通过路径识别返回的轨道信息查表,依据事先准备好的参数调整对应的舵机偏转角度。此方案在软件实现上比较简单,但是需要对控制规律进行大量的测试,而且实际运行的时候不存在反馈。方案二采用PID算法,实时调整舵机的偏转角度。同样需要通过大量的试验来调整所需的参数,但是PID算法在工业应用上比较成熟,有较好地控制效果。由于方案一相对来说不够可靠,车子运行中如果产生不稳定状况不能够自我调节,而方案二可以完全解决此问题,因此,在本设计中,我们采用方案二。25小结经过对各种方案的仔细论证和比较,我们最终采用方案如下路径识别模块采用脉冲信号调制的红外发射接收方案。电动机驱动与调速模块采用4个分立MOS管组成的H桥电机驱动方案。车轮检速模块采用霍尔传感器和磁钢构成的测速方案。路径控制算法PID算法。第三章系统的硬件设计系统硬件部分主要有四块电路板,分别是核心控制电路板、光电传感器电路板、电机驱动电路板和速度检测板。系统核心板自制,板材为单层敷铜板。光电传感器电路板和电机驱动电路板分别使用了敷铜板和标准实验板。以下对每个部分的电路分别说明。31核心MCU电路本制作没有采用组委会提供的S12的电路板,自己制作了MCU的控制电路板,其原理图以及PCB布局参考了组委会提供的S12开发板和S12的数据手册。MC9S12DG128的I/O口资源利用如图31所示。MCU(9S12DG8)PWPM01P7电机驱动舵机控制AT红外传感器ATD0T7PORTJPJ_6J_7转速检测(A4E)红外一体化接收头PORTBP_012TXD0/R03位拨码开关P_36LED二极管MAX23红外发射管调制PM5图图31单片机I/O口分配由于控制电路板自制,因此可以最大程度的减小小车的体积和重量,并且对MC9S12DG128单片机有了更深的了解。32电源模块电路电源的稳定是整个系统正常工作的前提。系统电源管理示意图如图32。图32系统电源管理示意图系统MCU控制板、舵机、光电传感器电路板都是由5V的电压供电,对电压稳定要求比较高。电机驱动部分的电路由电池直接供给,对电压稳定性要求低。由于电机工作时电流比较大,即使输出电流能力较强的镍镉电池,电压下降也会比较多,所以系统没有采用需要压降较大的线性稳压器,而是采用了性能稳定的LM2576集成开关电源。经实际使用证明,采用LM2576系列开关稳压集成电路作为MCU稳压电源的核心器件不仅可以提高稳压电源的工作效率,减少能量损耗。LM2576组成的开关电源电路图如图33所示。图33开关电源电路图72V0MAH镍镉电池LM2576V电机控制电路板核心板舵机光电传感器电路板GND3OUTI1FB4/UC98H_PWER33路径识别模块的电路设计与实现为了检测路面黑线,在车前向外伸出的小电路板上,安装了8对红外发射接收管,型号分别为SE303和PH302,波长为850NM。根据接收管接收信号的强弱,从而检测路面黑线位置。检测原理图如图34所示。图34光电传感器原理图为了去除环境光的干扰,发射含交流分量的调制信号,接收部分采用特定频率的滤波器。LED_P是经单片机调制后方波控制三极管来驱动红外发射二极管的,实际频率为3KHZ。通过红外二极管的平均电流I270/130567MA8只发射管的总电流为53MA。接收端是由红外接收管和DKRVC_ANLEP4UM有源滤波电路组成。交流的光变化信号由接收管检测到,产生一个相对应、频率相同的信号,接着经过一个RC高通滤波器。滤去因环境变化引起的干扰以后的信号送入运放的同相端,运放为单电源供电的LM358组成同相比例放大器。为了8组红外对管返回数据一致,各有一个阻值为100K的精密可调电阻调节运放的增益。运放的输出大致为半正弦波,不能直接送入MCU进行AD采样,还需经过一个低通滤波器。低通滤波器RC常数如果太大了就会使反映速度变慢,RC常数取得太小了纹波就会变大。实际我们通过示波器观察波形,得到R5为10K,C2为1UF时滤波效果最理想。34电动机驱动模块的电路设计与实现电机驱动部分的电路原理图如图35所示。图35电机驱动原理图由单片机PWM模块输出的两路PWM信号首先经过一个由Q2,Q9组成的电平转换电路,接着是一个各有两个三极管组成的MOS管驱动电路,R15和R16是偏置电阻。四只大功率MOS管构成H桥,其中Q8、Q5还组成BUCK电路用来调节驱动电机的供电电压。PWM占空比大,转速高;PWM占空比小,Q3850Q4NPQ29014470R95KR81RVC_7220UHL2470UFC23PWM0D1N589Q5IRF4Q6IRF9540Q8IRF9540Q7IRFZ4VC_72Q1850Q10NPQ9014470R15KR13R12PWMR15R16M驱动电机至单片机PWM口转速低。电路中所有的三极管和MOS管都工作在开关状态,开关损耗小。当PWM0为高电平、PWM1为低电平时,Q8导通、Q7截止、Q6截止、Q5导通,电流方向为红色箭头所示,电机正转;当PWM0为低电平、PWM1为高电平时,Q8截止、Q7导通、Q6导通、Q5截止,电流方向为蓝色箭头所示,电机反转。当PWM0和PWM1同时高电平或同时低电平时无电流,电机不转。35车速检测模块的电路设计与实现车速检测主要由一个霍尔开关传感器A44E和磁钢来完成。霍尔开关传感器又称霍尔数字电路,内部由稳压器、霍尔片、差分放大器、斯密特触发器和输出级组成。当磁钢接近霍尔传感器时,传感器输出低电平。当磁钢远离霍尔传感器时,传感器输出高电平。具体电路如图36。在实际应用中,由于A44E是OC门输出,需要接上拉电阻,而DG128B的PJ口具有上拉功能,固直接由IO口上拉无须外接上拉电阻。电路中C37为滤波电容。VCCC37103A44E接单片机PJ_6霍尔传感器磁钢磁钢贴在车轮框架外侧,车轮每转1/4圈,霍尔传感器都会检测到磁钢通过一次车轮轴承图36车速检测模块原理图36电池电压监测及报警为了保护电池组过放电,主控制电路板上安装了电压监测电路。原理图如图37所示。运放LM258充当电压比较器,基准电压由MUC板5V分压得到,再与电池电压比较,由一个精调电位器来调节分压比。当电池电压小于63V时,蜂鸣器报警。814321U5ALM28DBELVC10KR2310KR2410KR25104R26VCVC_72图37电池电压监测及报警电路37调试部分电路电路设计中还有一部分是调试用的电路,包括红外一体化接收头,发光二极管和拨码开关。由于车模在轨道上测试时无法通过普通开关直接对车模进行开关控制,为了避免由于失控造成的车体损伤,在系统中加入了红外控制。由红外一体化接收头接收遥控器发射出的38K信号,信号为一串调制波,由单片机解码。可以在车模出轨时对其进行非接触式控制。四只发光二极管用与信息的指示。拨码开关能实时改变程序PID算法部分的参数,便于参数的修改和测试,最终得到的参数可通过串口返回。第四章系统的软件设计41程序结构规划开始硬件初始化轨道识别子程序反射式红外传感器数据采集速度计算子程序对获取的轨道信息、当前速度信息通过PID算法进行分析计算舵机角度控制子程序电机动力控制子程序1MS中断霍尔传感器状态检查保存分析后的控制信息退出中断启动1MS中断输出调试信息PRINTP函数轨道信息速度信息电机控制信息舵机控制信息红外遥控信号检查控制车模启动/停止数据采集分析模块PID算法运算模块外部设备控制模块主程序中断处理程序读取拨码开关信息以调整PID控制参数图41主程序及中断子程序流程图整个程序分为两大部分,分别是主程序与1MS中断。两大部分在程序结构上都使用了流水型结构,以避免代码的交叉调用,多层嵌套。在规划上以模块为目标,尽可能地减少代码的交叉。模块之间仅通过少量的全局变量作为数据交换通道,建立一个强内聚、松耦合的程序框架,达到便于维护、便于阅读、便于调试的目的。主程序的结构相对比较简单,在完成系统初始化工作后启动1MS定时中断,之后便进入一个WHILE1循环。程序的所有调试相关代码都存放在WHILE循环内,包括车模的红外遥控、PID参数调整、调试信息的输出。考虑到数据的采集与分析,包括PID算法本身对时间都有较高的要求,程序的所有数据采集分析等全部集中在一个1MS中断内完成。1MS定时中断处理程序由3个模块组成,分别是数据采集分析模块、PID算法运算模块、外部设备控制模块。在1MS中断内,所有代码都是顺序执行,因此不会因为其他中断或者意外情况产生冲突,造成数据读写顺序混乱。42数据采集分析模块数据采集分析模块负责外部传感器的信息采集及初步分析,此模块的输出数据将作为PID算法运算模块的输入,关系到整个运算的可靠性。因此,数据采集分析模块在数据的处理上尽可能的考虑了PID算法的需求。421轨道识别反射式红外传感器轨道位置的确定主要依靠对反射式红外传感器返回数据的分析计算。我们将8个红外传感器从左到右依次编号,左端起始为4,右端终止为4。为了方便理解,编号0被遗弃。因为舵机角度控制部分的PID算法很大程度上依赖于探头返回数据的精度。因为探头数量是有限的,而PID算法需要输入数值具有较高的精度,所以需要对探头返回的数据进行处理。以符合PID算法的要求。首先是探头的数据采集,轨道相对于车体前端传感器组的位置由变量APP_VAL表示,为方便理解,每两个相邻探头间的距离设定为100,因此轨道位置信息(APP_VAL)的取值范围为0到700。也就是说,探头组返回的数据将是一个数组,经过计算后可以定量地表示轨道的位置,而不是局限于探头的个数,如图42所示。由于系统本身存在的问题(如红外发射方向分布不均匀)等,图中轨道位置信息(APP_VAL)的数值并不能确切得表达出轨道相对于车体的位置,下文会对此问题的处理方法作描述。探头编号432112340100200300400500600700轨道相对车体位置轨道黑线变量APP_VAL值为415左右图42轨道信息APP_VAL数值设定红外传感器接收端返回的模拟信号经过MC9S12DG128内置的AD转换器处理之后,得到的数据数值在20650范围内。如果下方为白色底板,发射出的红外线只有少量被吸收,其余红外线经反射后被红外传感器接收端接收,返回的数值较大。如果下方为黑色轨迹,发射出的红外线被大量吸收,则返回的数值较小。其数值分布如图43所示,由于传感器组本身存在的误差以及外部光线的干扰,返回的数据会出现随机误差,但误差在树枝上基本保持在20以内,不会影响系统的分析与计算。探头返回数据5235344671503795375125060100200300400500600700轨道相对车体位置黑带附近探头返回值会低于其他位置图43探头返回数据取得探头返回的8个数据后,还需要一个算法将得到的8个数据转换成一个可以定性表示轨道位置的数值。通过几何的方法分析所得到的数据可以得到一个三角形算法,能够近似地计算得到轨道位置信息。计算方法如下对于如图43所示的一组数据,首先对数据进行一次循环访问,找到数值最小的数据位置。然后将此数据及其左右侧的两个数提取出,保存至变量X、Y、Z图44中。之X467203040图4Z379Y150计算得到的偏移量AP_OFSET轨道黑线位置探头返回数据后计算黑线轨迹相对于Y变量对应探头的偏移量代码中变量名为APP_OFFSET。黑线轨迹相对于探头的偏移量APP_OFFSET的计算公式推导依赖于几何方面的一些三角形定理,转换成C语言代码以后如下APP_OFFSETZXZYXY50/ZYXYZY50/XY;APP_OFFSETZXZX50/ZYXZ50/XY;将计算得到的黑线轨迹偏移量(APP_OFFSET)的数值加上Y对应探头的基值,即得到车体相对于轨道的位置(代码中变量名为APP_VAL)。至此,已将一个由8个探头产生的不精确数据转换成确切的可以表现出轨道与探头距离的数值。然而,由于红外探头组本身的系统误差,当车体匀速偏移时,轨道相对于车体位置(APP_VAL)在数值上并不是线性变化的。这是因为探头位置在100水平单位的整数倍位置,而红外的发射与反射方向都是不均匀的,从而造成100水平单位整数倍附近的轨道位置(APP_VAL)变化速率较慢,而100水平单位整数倍50单位附近数值变化速率比较快。其变化速率如图45所示。鉴于MC9S12DG128有足够大的RAM,我们采用查表方式对轨道位置信息(APP_VAL)进行修正。在测试阶段从左到右对轨道位置信息(APP_VAL)进行多次采样,将原来的700个单位重新划分区域,转换成70个单位。虽然转换后的数据在数值范围上变小了,但是转换后的数据是近似线形变化的,有利于之后的PID控制。探头编号43211234010203040506070修正后的APP_VAL轨道黑线变量APP_VAL值为43左右图46修正后的探头返回数据20105025030AP_VAL变化速率图4AP_VAL变化曲线图通过查表方式对轨道位置信息(APP_VAL)进行修正后如图46所示,对比图11可以发现APP_VAL的值表现得更为确切。422车速测定霍尔传感器车体的速度信息是整体控制不可缺少的一项。在速度的测定上,我们选用了霍尔传感器。在软件上通过计数的方式计算当前的车体速度。磁钢经过霍尔传感器下方时,产生一个下降沿,引起计数器加一。然后程序定时检查定时器的值,同时判断是否需要更新当前速度(代码中变量名为VSPEED)的值。速度的计算代码VSPEED1000/VCOUNT;/VCOUNT为所经历的1MS中断次数,即车轮转动1/4圈所消耗的毫秒数。在PID速度控制中,计算得到的信息为速度增加减小的比例,所以在车速的测定过程中没有使用标准单位。上述代码中所使用的的1000只是一个参考值。1MS中断CODE速度计算函数霍尔传感器所对应的计数器寄存器是否为0N寄存器值非零(车轮转过1/4圈)当前速度VSPEED更新当前速度VSPEED变量VCOUNT变量加1计算当前1000/VCOUNT的值是否小于VSPEEDY寄存器值为零Y函数结束NCODE图47车速测定软件流程图速度计算函数每1MS中断都会被调用一次,首先检查计数器所对应的寄存器的值,然后计算VSPEED或者VCOUNT自增。其中将VCOUNT保存的临时值进行1000/VCOUNT计算,并与VSPEED进行比较是为了防止在车模低速行进或者刹车时,车轮较长时间相对MS级而言以后才转过1/4圈,从而导致因为VSPEED刷新速度过慢产生不稳定的现象。43PID算法运算模块PID算法是整个软件控制的核心部分,因此PID算法运算模块的可靠性、以维护性与可测试性等尤为重要。431程序结构PID算法作为整个软件控制的核心,需要不断试验、更改参数数值。因此在程序结构规划上将其分为PID路线控制与PID动力控制两部分,分别间接控制舵机与电机。前者主要负责对舵机角度的控制,输入轨道信息(APP_VAL),运算结束时输出舵机控制信息(代码中变量名HELM_CTRL)。当前应该达到的速度(代码中变量名KEEPSPEED),是PID路线控制的另一个输出信息。其数值的确定依赖于舵机控制信息HELM_CTRL,依据的基本规则是舵机偏转角度越大,车体所应达到的车速越小。PID动力控制部分将对目标速度(KEEPSPEED)和当前速度(VSPEED)再次进行PID运算,得到电机控制信息(MOTO_CTRL)并交给外部设备控制模块处理,以达到控制速度的目的。两个部分通过外部全局变量交换信息,达到PID路线控制部分间接影响PID动力控制的目的。同时又将硬件控制模块与PID模块分离开来,两者之间也是通过外部全局变量交换信息。这种方法也利于后期的程序阅读和调试。PID路线控制轨道黑线信息APP_VAL当前应该达到的速度KEEPSPEED舵机控制信息HELM_CTRL保存控制信息PID动力控制获取控制信息当前实际速度VSPEED电机控制信息MOTO_CTRLCODECODE代码数据图48PID算法程序结构示意图PID控制算法的选择在PID控制算法的选择上,都选用了增量式PID控制算法。因为在增量形式的控制算法中,控制作用的比例、积分和微分部分是相互独立的,便于检查参数变化对控制效果的影响。在后期调试过程中可以起到较好的效果。所需公式UKKPEKEK1KIEKKDEK2EK1EK2UK表示增量ET系统的控制偏差KP比例增益KIKPT/TI表示积分系数KDKPTD/T表示微分系数KP比例增益起比例调节作用,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。将KP设置成较大的数,比例作用大,可以加快调节,减少误差,但是对于过大的比例增益,会导致系统稳定性下降,甚至造成系统的不稳定。KI积分调节使系统消除稳态误差,提高无差度。有误差时,积分调节就进行。无差时,积分调节停止。积分调节输出一常值,积分作用的强弱取决于积分时间常数TI。TI越小,积分作用就越强,反之TI大则积分作用弱。积分调节的引入会使系统稳定性下降,动态响应变慢。KD微分系数反映了系统偏差信号的变化速率,可以预见偏差的变化趋势,能提前对偏差进行控制。使用微分作用后可以在偏差还没有形成前将其消除。因此,可以改善系统的动态性能。选择合适的微分时间,可以减少调节时间。但是微分作用也同样存在缺陷,对噪声干扰有放大作用,因此过强的微分调节对系统的抗干扰能力会造成影响。432PID路线控制KIKDKP保存舵机控制信息与速度控制信息至HELM_CTRLKEEPSPEED控制信息US红外探头数据采集处理路线与动力控制模块轨道黑线信息APP_VAL期望状况APP_VAL35即车体位于轨道中间PID动力控制图49PID路线控制算法示意图KP、KI与KD三个量的值需要反复试验,PID路线控制部分输出的控制信息比较多,包括了舵机与电机的两个控制信息,分别是当前舵机的偏转增量与车模需要达到的前进速度。这个两个数据又分别作为路线与动力控制模块及PID动力控制部分的输入数据。舵机控制信息(HELM_CTRL)交给舵机控制部分以后直接查表转换成对应的PWM波产生器的寄存器值。当前应达到的速度(KEEPSPEED)根据当前轨道黑线的位置以及偏差的累积程度来确定,其值大小与电机控制之间属间接关系,需要经过PID动力控制部分处理之后,转换成电机的控制信息,即动力的增强减弱量或刹车的强度。433PID动力控制KIKDKP保存电机控制信息至MOTO_CTRL控制信息US霍尔传感器数据采集处理路线与动力控制模块当前车模行进速度VSPEED期望保持的速度KEEPSPEED图410PID动力控制算法示意图这里的KP、KI与KD三个量的值同样需要反复试验。当前应达到的速度(KEEPSPEED)在PID路线控制部分确定,计算原理基本上与路线控制算法相似。44外部设备控制模块外部设备控制模块将PID处理得到的数据转换成硬件控制信号并输出,作为PID处理信息的输出抽象层,使程序的PID信息处理部分脱离硬件控制信息而存在。441舵机角度控制舵机的偏转角度被分为11个等级,从5至5分别表示从左到右的偏转程度,0等级表示竖直向前,负数表示左转,正数表示右转。舵机控制信息HELM_CTRL就是以偏转角度等级作为控制单位。表41偏转角度等级54321012345舵机偏转角度4334231570615223343PWM寄存器值3029272625252524232120舵机控制信息(HELM_CTRL)表示的信息是舵机偏转的增量,但是舵机控制需要的是偏转的位置。在这里还需要预先保存当前的舵机位置信息(HELM_BASE),执行HELM_BASEHELM_CTRL将PID路线控制的输出信息加入到角度控制中,再对其进行一次查表,转换成所需要的PWM发生器的寄存器值,实现软件上对舵机的控制,如图411所示。舵机当前偏转角度HELM_BASE舵机所需偏转量HELM_CTRL图411舵机控制442电机动力控制电机动力控制通过3种方式来实现电机加速转动、减速转动、反转。这3种方式使车模得到最大的动力与阻力来完成加速与减速。图412电机动力控制程序流程图加速的过程比较简单,直接将电机控制信息(MOTO_CTRL)的值查表转换成对应的PWM发生器寄存器值即可。根据所需要的速度增量调整PWM发生器寄存器值,提高电机的电压。减速过程则通过两种方法完成。把PID动力控制计算得出的电机控制信息(MOTO_CTRL)与一个事先测定好的临界值作比较,如果需要降低的速度量小于此临界值,说明速度需要稍微降低,使用类似于加速的方法根据速度增量调整PWM发生器寄存器值,降低电机电压。如果需要降低的速度量大于此临界值,说明当前车模需要一个刹车,程序将当前PWM发生器寄存器置零,然后设置另一个控制电机反转的寄存器值,给予电机一个反转的动力,给车模产生一个较大的阻力,使车体在短时间内迅速降低速度。电机控制信息MOT_CTRL将电机控制信息与临界值作比较降低电机正转动力电机反转给予车体较大的阻力车模加减速信息判断查表,调整PWM发生器寄存器值加速提高电机正转动力减速减速量小于临界值减速量大于临界值加速减小PWM波占空比减速增加PWM波占空比刹车使电机反转电机正转电机反转图413电机控制第五章调试51调试仪器模拟跑道由12块白色KT板相互拼接而成,每块KT板长22M,宽18M。黑色引导线采用的是黑色不干胶,宽为25CM,跑道形状接近组委会提供的跑道,跑道总长为20M。MCU仿真器清华大学FREESCALEMCU/DSP提供的S12BDM。MCU编译器CODEWARRIORIDE31。示波器CA9040。功率信号发生器SP1631。数字电桥TH2817。数字万用表CDM8045A。制版机DM2100B。卷尺精度0001M秒表精度001S52小车行驶调试1最高速度测试将速度开至最大,测量其最高行驶速度。测试长度5M。测试数据如表51所示。表51次数1234实测速度(M/S)292627272单圈时间测试速度上限参数测试。测试数据如表52、表53所示。表52(速度上限2M/S)次数1234时间(S)175172173175表53(速度上限15M/S)次数1234时间(S)1781801771793单圈时间测试PWM占空比上限参数测试。测试数据如表54、55、表56所示。表54(PWM占空比上限50)次数1234时间(S)218213217216表55(PWM占空比上限80)次数1234时间(S)174171175173表56(PWM占空比上限95)次数1234时间(S)1681831761734跑道杂质干扰测试测试结果如表57所示。表57跑道类型识别情况带脚印的跑道正常行驶贴有2MM细线的跑道忽略细黑线由上述测试结果可知,路面抗干扰性能优异。第六章总结本论文在基于摩托罗拉的MC9S12DG128芯片作为核心处理器,从软硬件两方面构建了能自动识别轨道并完成车体控制的智能车控制系统,较好的完成了本课题的论文研究,所作的具体工作总结如下1建立硬件平台。本课题以MC9S12DG128单片机为核心,通过数据接口完成红外传感器组、霍尔传感器、舵机控制、电机控制等各个模块与核心处理器的连接,构成本系统的硬件平台。并建立了有关程序开发和程序下载的运行环境。2完成软件控制设计。在所建立的硬件平台的基础上,对硬件反馈的信息进行分析,并针对性地通过软件的方法减轻由硬件本身原因造成的误差。通过PID算法及控制信息输出抽象层完成具体硬件控制。3系统调试。通过反复测试,对硬件上的器件参数及软件上的常量数值进行修改,得到较为合适的搭配组合。可以一定程度上降低外界的干扰因素对系统稳定性造成的影响,并且提高车体在轨道上高速行进时的可靠性。由于初次接触摩托罗拉的单片机,在研究过程中遇到了很多困难,特别是摩托罗拉的单片机各个功能的对应寄存器设置,需要认真地阅读理解用户手册。同时也因时间仓促,难免考虑问题存有纰漏和缺点,仍需在今后的工作中不断努力,加以改进。参考文献1邵贝贝单片机嵌入式应用的在线开发方法M清华大学出版社20042杨宁,胡学军单片机与控制技术M北京航空航天大学出版社20053于海生,潘松峰,于培人,吴贺荣微型计算机控制技术M清华大学出版社20044赵亮,侯国锐单片机C语言编程与实例M人民邮电出版社20035黄开胜,金华民,蒋狄南韩国智能模型车技术方案分析J20066何芝强PID控制器参数整定方法及其应用研究D浙江大学硕士学位论文20057何峰正确使用镍镉可充电电池R8MOTOROLA,INC2002MC9S12DT128BDEVICEUSERGUIDEV01099MOTOROLA,INC2002PWM_8B8CBLOCKUSERGUIDEV011610MOTOROLA,INC2002ECT_16B8CBLOCKUSERGUIDEV010411MOTOROLA,INC2002ATD_10B8CBLOCKUSERGUIDEV0210附录A车模源代码INCLUDE/COMMONDEFINESANDMACROS/INCLUDE/DERIVATIVEINFORMATION/INCLUDE“PRINTPH“INCLUDE“SMARTCARH“PRAGMALINK_INFODERIVATIVE“MC9S12DG128B“TYPEDEFSTRUCTPIDDOUBLESETPOINT/设定目标DESIREDVALUEDOUBLEPROPORTION/比例常数PROPORTIONALCONSTDOUBLEINTEGRAL/积分常数INTEGRALCONSTDOUBLEDERIVATIVE/微分常数DERIVATIVECONSTDOUBLELASTERROR/ERROR1DOUBLEPREVERROR/ERROR2DOUBLESUMERROR/SUMSOFERRORSPID/PID计算部分/DOUBLEPIDCALCPIDPP,DOUBLENEXTPOINTDOUBLEDERROR,ERRORERRORPPSETPOINTNEXTPOINT/偏差PPSUMERRORERROR/积分DERRORPPLASTERRORPPPREVERROR/当前微分PPPREVERRORPPLASTERRORPPLASTERRORERRORRETURNPPPROPORTIONERROR/比例项PPINTEGRALPPSUMERROR/积分项PPDERIVATIVEDERROR/微分项/INITIALIZEPIDSTRUCTURE/VOIDPIDINITPIDPPMEMSETPP,0,SIZEOFPIDUNSIGNEDINTVSPEEDUNSIGNEDCHARVSPEEDCOUNT254UNSIGNEDCHARVSPEED_STOP0DEFINEINTERVAL_EQU_1/当INTERVAL是1时1MSDEFINEMY_DEBUG/定义后去除LCD代码DEFINEDESK_DEBUG/定义后,进入桌面调试/BUFBUFFER/DEFINEL_BUF4/在L_BUF之外R_BUFDEFINELSPEED0DEFINEHSPEED1DEFINENONE0DEFINEL_LING1/L/DEFINEH_LING2DEFINEA_LING3DEFINEA_L_REING4DEFINEH_L_REING5DEFINEH_CRI_LING6DEFINEL_RING11/L/DEFINEH_RING12DEFINEA_RING13DEFINEA_R_REING14DEFINEH_R_REING15DEFINEH_CRI_RING16DEFINEBLIND1DEFINEBLIND_L2DEFINEBLIND_R3DEFINENGROUP4DEFINENFORMATION8DEFINELENGTHNGROUPNFORMATION1DEFINEA_IN_OUT_CONVERTPP2/5/A_INCONVERTA_OUTDEFINEFPREPP0NGROUPNFORMATION2P1DEFINEFNEXTPPNGROUPNFORMATION20P1DEFINEFABSPP0PPDEFINEINTERVAL1/MS主定时器间隔DEFINEWHEEL_CIR160DEFINEWHEEL_DETECTOR_COUNTDEFINEWHEEL_ARC32/MM两感应器间隔弧长DEFINENDETECTOR8/主探头数目DEFINERDETECTOR7/右端探头编号DEFINELDETECTOR0/左端探头编号DEFINENOERROR0/数据是可靠的DEFINEBLIND1/数据不可靠DEFINEL_CRI200DEFINELING1DEFINERING2DEFINELBACK3DEFINERBACK4EXTERNUNSIGNEDCHARPEXTERNUNSIGNEDCHARFLAGAEXTERNUNSIGNEDCHARFLAGBEXTERNUNSIGNEDINTZCOUNTEXTERNUNSIGNEDINTCUM_TIMEREXTERNUNSIGNEDCHARFLAGBLINDEXTERNINTD8/I/探头组返回的数据200500间STRUCTDATAUNSIGNEDCHARGRU_TAIL/组的最后一个元素地址UNSIGNEDCHARFOR_TAIL/REFRESH/INTD8/I/探头组返回的数据200500间UNSIGNEDCHARMIN/I/指示最小值的探头序号07INTOFFSET/I/(MIN100公式计算值)UNSIGNEDCHARD_DEP/数据可靠性/OFFSET/|/01234567100UNSIGNEDCHARTURNINGUNSIGNEDINTVSPEEDUNSIGNEDINTLUNSIGNEDINTAPP_VALUNSIGNEDCHARAVR/11个区域UNSIGNEDCHARPRE_AVRCHARSTEPEXTERNSTRUCTDATAARRNGROUPNFORMATIONEXTERNSTRUCTDATACURRENTUNSIGNEDINTVSPEEDUNSIGNEDCHARVSPEEDCOUNT254UNSIGNEDCHARVSPEED_STOP0/UNSIGNEDCHARREADCOUNTERVOIDULONGPPTC0HRETURNPA0HVOIDFENGINEUNSIGNEDCHARISWITCHICASE0PWMDTY50X09BREAKCASE10PWMDTY50X07BREAKVOIDFPWMINTI/01234/904504590/SWITCHICASE5PWMDTY717BREAKCASE4PWMDTY716BREAKCASE3PWMDTY715BREAKCASE2PWMDTY714BREAKCASE1PWMDTY713BREAKCASE0PWMDTY712BREAK/处在中间,小了向右转,大了向左转,最小6,最大17/CASE1PWMDTY711BREAKCASE2PWMDTY710BREAKCASE3PWMDTY79BREAKCASE4PWMDTY78BREAKCASE5PWMDTY77BREAK/VOIDREFRESH_VSPEEDVOID/更新VSPEED/VSPEEDCOUNTIFREADCOUNTER1/读计数器寄存器250VSPEED0VSPEED_STOP0CURRENTVSPEEDVSPEED/VOIDREPEAT_DATAVOID/计算MIN并检查数据的可靠性/UNSIGNEDCHARIUNSIGNEDCHARMINUNSIGNEDCHARCOUNT_10UNSIGNEDCHARCOUNT_20UNSIGNEDCHARCOUNT_4NDETECTORCURRENTD_DEPNOERRORMIN0FORI0I3CURRENTD_DEPBLINDRETURNIFCURRENTDI2CURRENTD_DEPBLINDRETURNIFCOUNT_4NDETECTORCOUNT_4IELSEIFICOUNT_41CURRENTD_DEPBLINDRETURN/CURRENTDI1IFZY/ZY0I50ELSEIFXY/XY0I50ELSEIZXZX50/ZYXZ50/XYCURRENTOFFSETMIN100I/VOIDGET_AVRVOIDIFCURRENTOFFSET600CURRENTAVR11ELSECURRENTAVRCURRENTOFFSET/501VOIDREFRESH_VSPEEDVOID/更新VSPEED/VSPEEDCOUNTIFREADCOUNTER1/读计数器寄存器250VSPEED0VSPEED_STOP0CURRENTVSPEEDVSPEED/VOIDREPEAT_DATAVOID/计算MIN并检查数据的可靠性/UNSIGNEDCHARIUNSIGNEDCHARMINUNSIGNEDCHARCOUNT_10UNSIGNEDCHARCOUNT_20UNSIGNEDCHARCOUNT_4NDETECTORCURRENTD_DEPNOERRORMIN0FORI0I3CURRENTD_DEPBLINDRETURNIFCURRENTDI2CURRENTD_DEPBLINDRETURNIFCOUNT_4NDETECTORCOUNT_4IELSEIFICOUNT_41CURRENTD_DEPBLINDRETURN/CURRENTDI1200FENGINE0/BLIND_DATAPIFCURRENTAVR7DISTANSE_SBLACK0

温馨提示

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

评论

0/150

提交评论