电磁 重庆邮电大学 电磁一队_第1页
电磁 重庆邮电大学 电磁一队_第2页
电磁 重庆邮电大学 电磁一队_第3页
电磁 重庆邮电大学 电磁一队_第4页
电磁 重庆邮电大学 电磁一队_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、 PAGE 6 PAGE IV第五届“飞思卡尔”杯全国大学生智能汽车竞赛技 术 报 告学 校: 重庆邮电大学队伍名称: 电磁一队参赛队员: 唐 林 杜坤霖 游立伟带队教师: 程安宇关于技术报告和研究论文使用授权的说明 本人完全了解第五届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名: 带队教师签名: 日 期: 目录第一章 引言4第二章 系统总设计方案论证52.1 设

2、计思路52.2 道路信息检测62.3 传感器布局72.4 电磁传感器选择82.5 车身参数9第三章 机械结构103.前轮定位 .103.2 后轮差动器113.3后轮距调整113.4轮胎改进 . 123.5减震弹簧改进123.6舵机安装调整123.7速度检测模块安装123.8重心转移13第四章系统硬件设计144.1系统结构 144.2电源模块 144.3电机驱动模块 164.4传感器模块 174.5速度检测模块 184.6舵机控制模块 18第五章 软件设计19软件处理流程195.2速度控制算法与弯道控制策略195.3舵机控制22系统联调236.1开发工具236.2上位机调试24第七章 总结25参

3、考文献26附件:源程序代码27第五届全国大学生智能汽车邀请赛技术报告第五届全国大学生智能汽车邀请赛技术报告 PAGE PAGE 35第一章 引言所用车模型号为99-BDG76899-1。采用16 位MCU(MC9S12XS128)作为主控制单元,自主设计、制作一辆能够自动识别特制跑道并能沿跑道行驶的智能小车。整个系统主要包括三大方面:机械结构安装,硬件电路设计,软件算法设计。按模块划分为:电磁传感模块,电机控制模块,舵机驱动模块,速度检测模块,电源模块等。整个系统为一个闭环控制系统,通过电磁传感采集的道路信息及软件算法对起跑线、直道、弯道等的判别来调节舵机转向,控制小车的位置。结合速度检测模块

4、的反馈信息精确控制小车的运动状态。以主MCU为中央纽带控制和协调各模块调理有序的稳定运行。后文将分别从机械结构、系统硬件设计、软件设计三大方向对各子模块进行详细解析。关键字:电磁检测 PID MS9SXS128 舵机控制第二章 系统总设计方案论证2.1设计思路小车比赛属竞速比赛,对速度要求较高。所以首先考虑到的是小车动力问题,驱动电路的设计和芯片的选型很重要。另一个重中之重就是“目标”的问题。对于小车来说,道路信息就是目标,解决小车对道路信息的采集、处理就成了主要任务(也是重要任务)。解决上述问题后,剩余的工作就是让小车成为一个系统,让各模块统一协调工作。因为采用闭环控制可使系统更加稳定,控制

5、更精确。所以可让MCU综合速度检测信息和道路检测信息控制转向和动力输出形成一个环回路的控制系统。综上所述,所需解决的主要问题有:道路检测方法,驱动芯片选型,速度检测方法,转向控制等。2.2 道路信息检测方案一:CCD/CMOS摄像头检测使用摄像头获取路面图像信息,采用图像处理技术判断路径,是路径识别中常用的方法之一。方案二:红外检测红外检测是通过传感器发射特定波长的红外光,通过反射光的不同来识别道路。方案三:电磁检测 通过检测规定频率电磁场的强度和方向可以反过来获得距离导线的空间位置,以此来识别道路。以上两种方案的优缺点比较如表2.2.表2.2.1道路检测方案优点缺点CCD/CMOS摄像头1.

6、检测前瞻距大;1.电路设计复杂;需要视频信号同步分离、工作12v电源电路等辅助电路; 2.软件计算量大;3.检测信息更新速率慢; 2.检测范围宽;3.检测道路参多; 红外检测1.电路设计相对单;1.道路参数检测精度低;2.受比赛环境光线影响较大; 3.前瞻性好; 2.检测信息速度快;3.调试简单;4.成本低; 电磁检测1.检测电路设计相对简单;1.前瞻性较差; 2.所需的电流频率固定,改变频率影响小车检测道路 2.道路检测几乎不受外界环境影响;3.算法易于控制通过上述对两种方案的比较,由于摄像头的图像处理技术、软件算法较为复杂。红外检测受比赛场地光线的影响大,算法和机械结构在有限的时间内难以改

7、善。而电磁检测电路设计较简单,几乎不受光线等外部因素限制。最后决定采用第三种方案(电磁检测)。2.3 传感器布局基于路径信号的特性,传感器可分为三个方向安装:横向(与跑道水平垂直),竖向(与跑道水平平行),垂直(垂直于跑道水平面)。三个方向可分别感应立体空间磁场的三个分量。由于电磁感应没有前瞻性,传感器布局可以采用单排、两排甚至多排布局。采用两排或多排布局其主要目的和优:前面一排可以尽可能的看得远,后面的则能更精确的检测路径和车身信息。但采用多排也有很大的弊端,由于传感器体积大,重量相对比较重,如采用多排则无疑增加了很大的负荷,这对于舵机转向来说是致命的。采用多排传感器传感器数量增多,程序处理

8、也变得更复杂。而采用单排传感器最大的优点就是控制简单,重量轻,舵机转向灵活。经过测试后发现,采用单排传感器所采集的道路信息完全能满足控制所需。本系统采用单排布局,共五个传感器排成一排形成“一”字。传感器安装方向分别为左右两个横向安装,用于确定车身位置来控制舵机转向。中间三个竖向安装,主要用于弯道和直道的检测用于更好的控制速度,如图2.3.1。图2.3.1 传感器结构示意图2.4 电磁传感器选择方案一:自制电感使用工字型磁性材料,在材料的凹部用特定的金属线圈缠绕。自制电感可以增大检测交变磁场的范围,价格便宜,但是检测误差较大,检测道路不好控制,并且质量偏大。方案二:磁敏传感器 检测精度高,测量范

9、围广,并且使用寿命长,但是价格昂贵,不易购买和临时更换元件。方案三:普通工字型10mH电感,如图2.4.1图 2.4.1这类电感体积小,Q值高,具有开放的磁芯,频率相应快,实现电路简单。使用电感线圈可以对其周围的交变磁场感应出响应感应电动势,比赛选择20kHZ的交变磁场作为路径导航信号,在频谱上可以有效避开周围其它磁场的干扰,信号放大器可以使用LC串并联电路进行选频。电路图如下: 图 2.4.2通过比较,综合考虑选择第三种方案。只要解决抗干扰方面的问题就可以很好满足系统的要求,发挥明显其优势。2.5 车身参数模型车主要技术参数模型车总重量2 Kg模型车长38 cm模型车宽23 cm模型车高7

10、cm电容总容量464 uf传感器种类工字电感传感器个数5赛道信息检测频率201 KHZ第三章 机械结构3.1 前轮定位模型车的机械结构设计自身很巧妙,前轮转向轮具有自动校验回正功能。前转向轮的安装位置由主销后倾角,主销内倾角,前轮外倾角和前轮前束决定。主销后倾:指主销轴线与小车水平面的垂线向后行成一定角度。利用转弯时的离心力产生一个反向的克服力矩来迫使小车转向自动回位。从这一点来说,后倾角越大,越有利于小车的自动调节,但事实上如果后倾角过大反而会使车不稳定,这是由于后倾角过大,车的自动回位能力太强加之这种机械结构所固有的延时特性让转向轮左右重复回摆。图3.1.1 主销后倾示意图主销内倾角:指主

11、销与车轮纵向平面不平行,主销上端稍微向里合形成一定角度。车在转弯时可以将车微微抬高,这样小车刚好可以借助于自身的重力让小车转向复位,同时也减小了阻力矩和舵机加在力臂上的力。内倾角和后倾角一样,也不能过大,过大会让车轮与地面产生滑动,增加轮胎和路面间的摩擦阻力反而使转向变得沉重且加速轮胎磨损。图3.1.2 主销内倾示意图主销内倾和主销后倾都能使模型车自动回正,不同点在于主销内倾回正与车速有关,而主销后倾与车速无关。可以说,在高速时主销内倾起主要作用,而低速时,主要依靠主销后倾使模型车回正。前轮外倾角:指车轮中心的汽车横向平面与车轮平面的交线与地面垂线之间的夹角。外倾角可以减小或消除车重载时由于主

12、销与衬套、轮毂与轴承等处的装配间隙带来的车轮相对地面滑动问题,同时也可减小转向阻力和轴向分力的负荷,使汽车转向轻便。图3.1.3 前轮外倾示意图前轮前束:是指两轮之间的后沿距离数值与前沿距离离数值之差。调整前束是为了解决由于外倾角的作用导致车轮成圆锥似滚动而横向拉杆阻止类似运动的矛盾。外倾角和前束一定要相匹配。图3.1.4 前轮前束示意图最终各参数调节如表3.1.1示:表3.1.1 前轮参数调节方案 后倾角 内倾角 外倾角 前束 2 5 1 12mm3.2 后轮差动器差速机构是为解决小车在转弯时由于内外侧轮胎的速度差造成的滑动问题而特别设计的。差速机构的调节过紧过松都会降低性能,保证性能的前提

13、下,能松尽量松,达到松而不散的效果。3.3 后轮距调整由于驱动马达和测速机构都固放在后轮处,在对速度要求高的比赛中后轮距对驱动力的影响也不能忽略,后轮距加宽可提高小车稳定性,但由于轮距的增大带来的轴承负荷也跟随着增大,同时小车跑出赛道的机率也增大。轮距减小对增大驱动力有利。本队决定采用窄的后轮固定件保证车的驱动力促进车速在短时间内提高。3.4 轮胎改进 F1比赛中对轮胎的选择也是相当重要的,轮胎的摩擦系数、弹性系数等都是很重要的参数。结合驾车经验,适当增加前轮“充气量”可使转向更灵敏但不要过度,否则会出现蹦极现象。后轮太软对速度的提高有很大影响,太硬会降低轮胎的抓地性,发生打滑。结合模型车特点

14、,本队将对轮胎做适当处理,在保证弹性的前提下往里面多添加两层泡沫物质,形成“实心胎”。(主要针对后轮,前轮也可适当增加)3.5 减震弹簧改进考虑到模型车使用时间过长后,不可避免的有一些机械结构松动。前轮减震弹簧性能肯定会大幅下降更有甚者有失去减震功能的可能,这样即使舵机没有摆动,前轮也可能作小幅度摆动,影响舵机的精确控制。本队采用弹簧阻力系数大的圆珠笔弹簧替代前轮的减震弹簧将其固定死,改善前轮摆动问题。由于小车重心靠后轮,所以后轮即使是小幅摆动也会造成车失控,增加后轮减震弹簧的预紧力可以很好的防止这一问题,设计时在后轮减震弹簧处增加垫片使后轮更加稳定。3.6舵机安装调整为减小舵机响应时间长对小

15、车速度的影响,我们通过增加舵机的力臂来弥补这一缺陷。加长力臂后减小了舵机转向范围,使前轮转动相同的角度,所需时间更短,响应更快。但若舵机力臂太长又会造成舵机转向力矩太小,PWM 信号与角度不能很好的一一对应,对于舵机的开环控制会带来很大的稳态误差。综合以上考虑,我们将舵机的力臂由原来的 1.7cm 加长2.5cm,将舵机竖向安装,这样还可使两力臂等长安装以解决转角不等的问题。图3.6.1 舵机安装示意图3.7速度检测模块安装本队采用ST188反射式光电传感器检测速度。在车后轮轴上安装黑白相间的码盘,将码盘内径与轮胎连接件的外径做成一致,不易太大,防止有相对转动。安装码盘时避免在轮胎上打洞,以防

16、机械结构损坏影响稳定性。3.8 重心转移模型车的 HYPERLINK javascript:; t _self 重心转移是竞速比赛中的重要环节之一,也是衡量机械结构好坏的标准之一。能运用好重心转移将使你事半功倍。当模型车转弯时,由于车的物理惯性而产生离心力,该力作用于重心产生扭矩,该扭距将会遵从牛顿第二定律而被抵消。这个抵消过程实际上令外侧的轮子受到比内侧轮子更大的压力。因为整车的重力是保持恒定的,所以从内侧轮移走的压力必然添加到外侧轮子上。换句话来说,重力被从内侧转移到外侧。假设模型车正在左转,任何来自左前轮的重力都必定转移到右前轮,任何来自左后轮的重力都必定转移到右后轮。在刹车或者加速的时

17、候,重力也会在前后方向转移。这就是为什么可以通过施加一点刹车以减少车辆的转向不足。这时重力从后轮转移到前轮,因此获得更多的前轮抓地力以使车辆转向。重力转移的量是和重心的高度成正比,和车的轮距成反比。这就是为什么绝大多数赛车都在规则限定内尽可能的宽,重心尽可能低,因为那可以减少横向重力转移,以防止总体抓地力的减少。重力转移也和车子的静止质量成正比,这也是赛车要尽可能的轻,同样的这也可以减少重力转移。 重力转移的量还取决于其他因素,比如速度和转弯时所行进路线的半径。事实上重力转移的量和转弯半径成正比。这也是为什么当车子转弯的时候,转弯半径比较大的线路是最快的线路。因为它使重力转移尽可能的小,并使转

18、向抓地力尽可能的大。第四章 系统硬件设计4.1 系统结构系统由电源模块、电机控制模块、主控模块、红外传感模块、速度检测模块、舵机驱动模块。系统设计总框图如图4.1.1示:主控模块主控模块 电机控制模块 速度检测模块舵机驱动模块磁场传感模块电源模块图4.1.1 系统设计总框图舵机驱动模块和电机控制模块直接由电源供电,保证充足的动力。红外传感模块、主控模块、速度检测模块由降压电路降到5V后提供。主控模块通过接收红外传感模块的信息以及速度检测模块反馈的信息,经处理后通过调节舵机的转角及后轮驱动的转速来控制小车正常运行。通过对速度的检测形成一个闭环的控制回路。各模块以主控模块为纽带,在主控模块的控制下

19、相互协调工作,保证小车稳定快速工作。以下将对各个模块分别进行分析。4.2 电源模块 单片机系统、路径识别的红外传感器、测速传感器均需5V电源。舵机工作电压范围4V6V,为提高舵机响应速度,舵机和后轮驱动电机都采用7.2V供电(经过测试7.2V对舵机性能没有太大影响)。常用的转5V电源芯片分线性型稳压芯片和开关型稳压芯片两大类。各自的优缺点如下:线性型:优点:线性度高,纹波小,外围电路结构简单。缺点:发热量大(需加庞大的散热片),效率低,功耗大,带载能力偏弱。常用芯片型号有LM2940、7805、7350等。开关型:优点:功耗小,转换效率高。缺点:电路比较复杂,电路的纹波大,受尖峰脉冲干扰较严重

20、。常用型号有LM2596、LM2576等。两类芯片的优点和缺点都比较明显,所以在使用时需综合考虑,扬长避短。由于单片机需要提供稳定的5V电源,纹波不易过大,否则可能会导致单片机运行异常。而LM2940的输出线性度非常好,且芯片的压差不大,最小可到0.6V,对于本次比赛所用的电源7.2V来说无疑是最佳搭档。所以选用LM2940-5单独对单片机进行供电。光电传感器需要较大的工作电流,功耗很大,而纹波对功能上没有太大影响。所以对驱动芯片的要求是能够提供充足的驱动力才是最主要的。LM2576-5转换效率高,带负载能力强,输出电流范围在1.5A3A,对红外传感器及测速模块供电还是很不错的,能保证充足的电

21、源。尽管LM2596的输出线性度好且输出的稳定电流可达3A,但是该芯片的价格昂贵。在LM2576能满足要求的情况下,其优势也就没有那么明显了。因此最终还是选用LM2940-5、TPS7350和LM2576-5分别对传感器检测电路、最小系统和控制电路供电。 (a)(b)( c)图4.2.1 电源芯片电路(a)舵机供电电路 (b)检测板供电电路 (c)最小系统供电电路4.3 电机驱动模块 电机驱动电路常选用MC33886驱动芯片,其使用简单,只需通过相应引脚输入不同的PWM波调节电机转速,该芯片支持正反转和制动功能且解决了死区问题。对于初学者来说不用考虑死区肯定是有利无弊的。但芯片的导通电阻较大(

22、约120毫欧),若长时间工作,芯片发热过大导致电阻增大,降低芯片的驱动力。所以,寻找了相应内阻比较小的驱动芯片BTS7960。BTS7960 具有很小的内阻,可通过49A的电流的半桥驱动芯片。为方便使用,采用两片BTS7960并联来达到全桥的效果。图4.3.1 MC33886驱动电路使用MOS管自行设计H桥驱动也是很不错的选择。使用MOS管IRF3205最大的优势就是导通电阻小,只有约0.077欧,可提供足够的驱动力使电机加速。原理图如下所示: 图4.3.2 MOS管驱动电路但H桥的电路复杂,且需要考虑导通的死区(死区的调整很复杂)。综上比较,本队采用BTS7960集成芯片作为本次小车的驱动芯

23、片。4.4 传感器模块电磁传感器检测路面信息的原理是由电感和电容并联产生相应的特定频率谐振,其频率的设定为跑到信息频率的附近,再由谐振感应跑到上由变化的电流产生的变化的磁场,从而产生相应的交流电压,再将相应的交流的电压进行放大、整流和滤波从而变化成相应的电压,如图4.4.1。而起跑线的检测采用钢簧管检测,如图4.4.2图4.4.1 道路示意图 图4.4.2 起跑线考虑到舵机响应速度较慢( 0.11s/60),难以满足高速行驶中的转弯要求,小车容易冲出跑道。为了使小车在偏离赛道后还能重新调节角度回到赛道,特意在小车前轮的左右两边各安装一个光电传感器,并设定其路径识别优先级最高以保证在小车前轮冲出

24、赛道时能感知到黑线,即时做出相应反应。4.5速度检测模块受小车机械结构限制,必须采用体积小,重量轻的传感器。本队采用500P的测速电机,采用的测速电机的好处有以下几点:使用方便,它是集成的,可以直接买到,不必花费太多的时间;效果好,它是500P的,即:转轴转动一周,会产生500脉冲,其精度很高;干扰很小。若知小车后轮的周长是x,转一圈传感器检测n条黑色标记,设定在t时间内,传感器检测了m条黑色标记,小车的速度v为: v=x(m/n)/t 。由此可以测量出小车的运行速度。4.6 舵机控制模块舵机作为一种位置伺服驱动器件,通过改变输入信号PWM波的占空比调整输出角度,实现伺服功能。作为控制赛车循迹

25、行走的关键,要求舵机驱动的转向机构具有精确的角度控制和快速响应能力。我们采用以下三点实现舵机的要求:直接用7.2V 2000mAh Ni-cd电池供电,提高舵机的响应速度;采用两位PWM连续使用,提高输出角度的分辨率;输出100HZ的调制方波,减小控制信号的延时。第五章 软件设计5.1 软件处理流程系统初始化系统初始化读取道路信息处理道路信息并得到相关参数根据参数选择算法执行舵机与电机图5.1.1 软件设计总流程图模型车在直道上的速度相差不是很大,在弯道上的比拼才是整个比赛的重点,因此如何优化弯道的算法才是整个控制算法的关键。5.2 速度控制算法与弯道控制策略 模型车平稳地行驶是本次比赛的基本

26、要求,但这并不意味着这是最简单的要求,因为速度控制的好坏直接影响整车的许多方面,比如直道的速度提升,转弯速度(甚至影响了模型车的打滑程度),导致弯道速度总是无法提升,特别容易打滑,根本原因就是速度控制算法处理不当造成的。首先使用的是速度算法是位置式的PID算法,PID控制是工程实际中应用最为广泛的调节器控制规律。问世至今70多年来,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。PID调节是Proportional(比例),Integral(积分),Differential(微分)三者的缩写,是一种过程控制算法,就是对误差信号(采样信号与给定信号的差)通过比例,积分,

27、微分的运算后的结果作为输出控制信号,来控制所要控制的对象。比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例使系统的稳定性下降,甚至造成系统的不稳定。积分调节作用:是使系统消除稳态误差,提高误差度。当有误差时,积分调节就进行,直至无误差,积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间Ti,Ti 越小,积分作用就越强。反之Ti 大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。微分调节作用:微分作用反应系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在

28、偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统得动态性能。在微分时间选择合适的情况下,可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。单位反馈的PID控制原理框图如图5.2.1:contorllercontorllerplantReuY图5.2.1 PID算法框图单位反馈e代表理想输入与实际输出的误差,这个误差信号被送到控制器,控制器算出误差信号的积分值和微分值,并将它们与原误差信号进行线性组合,得到输出量u。 (公式1)公式1中,Kp、Ki、Kd分别称为比例系数、积分系数、微分系数。u接着被送到了执行机构,这样就获得了新的输出信

29、号,这个新的输出信号被再次送到感应器以发现新的误差信号,这个过程就这样周而复始地进行。PID各个参数作用基本介绍:增大微分项系数可以加快动态系统响应,但容易引起震荡。一般增大比例系数能够减小上升时间,但不能消除稳态误差。增大积分系数能够消除稳态误差,但会使瞬时响应变差。增大微分系数能够增强系统的稳定特性,减小超调,并且改善瞬时响应。增量型算法与位置型算法相比,具有以下优点: (a) 增量型算法不需要做累加,控制量增量的确定仅与最近几次误差采样值有关,计算误差或计算精度问题,对控制量计算影响较小。而位置型算法要用到过去的误差的累加值,容易产生大的累加误差。 (b) 增量型算法得出的是控制量的增量

30、,误动作影响小,必要时通过逻辑判断限制或禁止本次输出,不会严重影响系统的工作,而位置型算法的输出是控制量全量输出,误动作影响大。 (c) 采用增量型算法,易于实现手动到自动的无冲击切换。图5.2.2 PID算法流程图对于经典的PID算法,经过将近一个星期的摸索,仍然不能很好地控制好速度,后来又改为增量式的PID算法,可效果还是平平,增量式的PID算法公式2如下: (公式2)在一般PID中,当有较大的扰动或者大幅度的改变给定值时,由于此时有较大的偏差,以及系统有惯性和滞后,故在积分项作用下,往往会产生较大的超调和长时间的波动。可采用积分分离的措施:同时,因长时间出现偏差或偏差较大,计算出的控制量

31、有可能溢出,或小于零。因此必须指定控制量的上下限。 最后决定在经典的PID算法中,加入最简单的bang-bang算法。算法思想如下:在直道时采用PID算法,同时设定速度的上下限,使速度不至于加减速太过。设定上限速度就是直道极限速度,下限速度就是直道最安全速度,这样设定保证直道既高速又安全地运行。弯道控制最重要的前提是不能侧滑,增大防侧滑力是最根本的方法。由于使用的是速度闭环,在入弯道时速度肯定会减低,此时因为速度闭环的原因,会产生一个很大的力(即前文所说的F2),来提高前进速度,根据前面的分析,F2的增加必然导致防侧滑力F3的减小,造成模型车过弯侧滑,但如果在过弯时暂时不使用速度闭环,那么就不

32、会增大F2,防侧滑力F3也就增加了。因此,在弯道中暂时屏蔽了速度闭环,采用简单的bang-bang算法,当双排传感器都从黑线的一边偏离时,零占空比输出,否则的话满占空比输出。公式3如下:(公式3)解决了侧滑问题,的过弯速度大大提高。当从直道入弯道时,为保证平稳入弯,还必须设定一个入弯安全速度,经过反复的实验,设计比赛规则中最大弯道安全速度为入弯安全速度。实际流程图如图5.2.3:图5.2.3 直道弯道控制流程图5.3 舵机控制舵机控制采用PD控制,其中P为变化的量:servo=Pka+Pdd(公式4)公式4中servo为舵机输出量,a为偏离量,Pk为比例系数,Pd为微分系数,d为微分项,其中比

33、例系数是变化的。当发现偏离量在增大时,即上次的动作没有很好的补偿偏差,此时应增大比例系数Pk。反之,若现在偏离量在减小,且偏离量小于一定值,此时应减小比例系数Pk,此时为向直道走或者在直道上,同时,若发现偏离量在0的两边抖动时,应减小比例系数,减小震荡。而加入微分变化量可以很好的解决由直道进弯道和由弯道切弯道舵机反应不过来的问题,加入微分启动了一定量的超钱控制。第六章系统联调6.1 开发工具我们使用的是飞思卡尔公司提供的16位单片机MC9S12DG128B,软件开发工具采用Metrowerks 公司开发的软件集成开发环境Codewarrior for HCS12,其包括集成环境IDE、处理器专

34、家库、全芯片仿真、可视化参数显示工具、项目工程管理器、C交叉编译器、汇编器、链接器以及调试器,可以完成从源代码编辑、编译到调试的全部工作。另外,CodeWarrior编译器提供了几种从C源代码产生实际汇编代码的优化方法,这些代码被编程到微控制器中。CodeWarrior提供了大量的优化方法,选择不同的优化选项,生成的代码是不同的。在本程序设计过程中用到了很多分支程序,但由于CodeWarrior的分支优化功能使得一些算法不能实现,所以在编译时我们重新选择了编译优化选项下的优化功能。图4.1 Codearrior调试窗口使用M来下载程序,把编译好的程序下载到单片机里运行。6.2 上位机调试单片机

35、通过MAX232把采集到的图象信息输出到上位机。调试的过程中,可以显示主要参数,例如识别状态,路径信息,车模行驶参数等等,车模将运动过程中的道路、舵机、速度等数据记录下来,运行完毕后,将这些数据通过串口传给上位机。上位机程序进行分析显示。该程序详尽记录了车模行驶过程中,系统全部的控制过程和响应过程,避免了由于车速过快、控制周期过短而造成重要细节的遗漏,方便对控制策略进行分析、评价和改进为制定最佳的算法策略做准备。第七章 总结 本队在设计时结合实际,充分考虑了赛道信息及小车结构,特别是在机械结构方面做了大量的改进来降低运行过程中的错误率。如考虑到小车在跑S道时容易冲出跑道的问题,我们首先运用力学

36、,运动学等知识进行综合分析,结合理论分析得到改进方案通过重心的转移、提高舵机转向的灵活性以及增大轮胎抓地性等方面进行改进。让小车在转弯时快捷、灵敏、稳定不至冲出跑道。在硬件设计过程中我们进行大量比较,认真筛选,选择合适的电路和芯片提高小车的运行效率。如对驱动芯片的选择,我们仔细区别各芯片的优劣,通过模拟或参考前人经验选择最好的电路和芯片。光有上面这些是远远不够的,软件算法也至关重要,离开程序的控制,前面的一切都是徒劳的。在软件算法方面我们结合多种算法(PID算法,记忆算法等)对赛道信息的精确识别以及对小车运动状况的控制。包括起跑线的识别,十字交叉线、直道、S道等的识别以及小车运行速度、加速度的

37、检测。通过MCU对各模块信息的综合处理来控制小车稳定运行。参考文献 1 谭浩强.C程序计M.京:清大学出社,001.2 唐俊,张群瞻编.Protel DXP原理与应用北京冶金业出版社20.3 孙同陈桂友编.Freesale9S12十六位片机原理及嵌入式开发技术.北京-机械工 业出版社,2008 4 余志生汽车理论M.机工业出社.2000年4月第3版.5 宋年,腾飞,朱永强编.图汽车车身构造与拆装.京-中国电出版社,2007 6 童诗白模拟电技术基M.北:高教出版社,201. 7 Freesale Seiconducor, Inc. MC9S12G128 evice User GuideZ 8

38、周平周正风编.MATLAB数值析. 北-械工业出版社,2009.9 张笑,杨奋强编.MATLAB7x础教程.西-西安电子技大学出版社,2008 10 张德等编.MATLAB数字图像处理.北京-械工业出版社,200911 唐俊,张群瞻编.Protel XP原理与应用.北京-冶金业出版社,2003.1012 刘艺许大琴,万福编.嵌入系统设计大学教程.北人民邮出社,0813 韩绍,许向阳,王晓华编.动控制原理.北京理工大学出版社,200914 胡斌.图标细说元器件及其实用电路.北-电子工业版社,2008刘艺许大琴,万福编.嵌入系统设计大学教程.北人民邮出社,0815 王尔乾,杨士强,巴林凤.数字逻辑

39、与数字集成电路M.北京:清华大学出版社,2002 年6月第2版.16 侯虹 .采用模糊 PID控制律的舵机系统设计. 中国空空导弹研究院 , 河南 洛阳 471009.17 电磁组竞赛车模路径检测设计参考方案. 竞赛秘书处 2010-1,版本1.0.18 李仕伯 马旭 卓晴.基于磁场检测的寻线小车传感器布局研究. 清华大学(北京00084).源程序代码#include declare.hvolatile int i, j, k, l;volatile int start, start_flag, start_flag1;volatile int state, state_flag, state

40、_flag1;volatile float d_cornerl, d_cornerm, d_cornerr;volatile int o_corner, corner;volatile int max55;volatile int motor_control;volatile int wanted_speed, cur_speed, avg_speed, delta_speed;volatile float corner0;volatile float l04_max, r40_max; volatile float l_max, m_max, r_max; volatile float ad

41、_result5, data5,o_data5; volatile static int m=0; /=锁相环初始化程序=/外部晶振时钟16M,总线时钟倍频为32M/输入参数:无;输出参数无/void setbusclk_32m( void ) CLKSEL = 0X00; / disengage PLL to system PLLCTL_PLLON = 1; / turn on PLL SYNR = 0 x04 | 0 x07; / pllclock=2*osc*(1+SYNR)/(1+REFDV)=64MHz REFDV = 0 x40 | 0 x03; POSTDIV = 0 x00;

42、_asm( nop ); / BUS CLOCK=32M _asm( nop ); while( !(CRGFLG_LOCK=1) ); /when pll is steady ,then use it CLKSEL_PLLSEL = 1; /engage PLL to system /=AD初始化程序=/输入参数:无;输出参数:无/void ad_init( void ) ATD0CTL1 = 0 x40; /7:外部触发,65:转换位数选择:00-8位,01-10,10-12位精度;4:放电 ATD0CTL2 = 0 x60; /禁止外部触发, 中断禁止 ATD0CTL3 = 0 xa8;

43、 /右对齐无符号,每次转换5个序列, No FIFO, Freeze模式下继续转 ATD0CTL4=0 x61;/765:ATD0CTL5 = 0 x30; /6:0特殊通道禁止,5:1连续转换 ,4:1多通道轮流采样 ATD0DIEN = 0 x00; /禁止数字输入 /=PWM初始化程序=/输入参数:无;输出参数:无/void pwm_init( void ) PWME = 0 x00; /PWM使能 PWMPRCLK = 0 x00; /clock A clock B为总线时钟 PWMSCLA = 0 x32; PWMSCLB = 0X32; /clk SB=clk B/(2*pwmsc

44、lb)=320KHZ PWMCLK = 0 xFF; /PWM clock select register,0:AB,1:SASB PWMPOL = 0 xFF; /PWM 极性选择:1:high,0:low PWMCAE = 0 x00; /对齐方式:1:中心对齐,0:左对齐 PWMCTL = 0 x70; /01,23,45,16位的寄存器工作方式 /=I/O初始化程序=/输入参数:无;输出参数:无/void io_init( void ) DDRS = 0 x00; /端口定义为输入 PTS = 0XFF; /赋初值,防止干扰 DDRA = 0X00; DDRE = 0X00; PORT

45、A = 0XFF; /=PIT初始化程序=/输入参数:t;输出参数:无/ /void pit_init( void ) PITCE_PCE1 = 1; /定时器通道使能选择 PITMUX_PMUX1 = 1; /对定时器通道的8位时基进行选择,8位计数器只有PMUX0,PMUX1两个 PITMTLD1 = 159; /设置8位计数器初值,以实现24位的计数,范围为0255,PMUX=x时使用PITMTLDx PITLD1 = 200*t - 1; /16位定时器初值设定,200*t=1*tMS,PCEx=1时,选择PITLDx PITINTE_PINTE1 = 1; /PIT中断通道1使能,当

46、计数器递减溢出时,申请中断 PITCE_PCE0 = 1; /定时器通道使能选择 PITMUX_PMUX0 = 1; /对定时器通道的8位时基进行选择,8位计数器只有PMUX0,PMUX1两个 PITMTLD0 = 159; /设置8位计数器初值,以实现24位的计数,范围为0255,PMUX=x时使用PITMTLDx PITLD0 = 199; /16位定时器初值设定,200*t=1*tMS,PCEx=1时,选择PITLDx PITINTE_PINTE0 = 1; /PIT中断通道1使能,当计数器递减溢出时,申请中断 PITCFLMT_PITE = 1; /定时器使能 /=ECT初始化程序=/

47、输入参数:无;输出参数:无/ /void ect_init( void ) TSCR1 = 0 x80; /定时器允许正常工作 TSCR2 = 0 x04; /定时器溢出中断禁止,定时计数器复位中断禁止,预分频因子为16 PACTL = 0 x50; /16位脉冲累加器有效,事件计数模式,上升沿触发,使用预分频因子定义时钟,禁止溢出中断,禁止输入中断 TCTL3 = 0 x40; /通道7输入捕捉类型选择:00:禁止捕捉,40:上升沿捕捉,80:下降沿捕捉,f0:上升下降沿都捕捉 TIE_C7I = 0; /PIT定时器中断允许寄存器,通道7禁止中断 TIOS_IOS7 = 0; /通道选择寄

48、存器,0:输入捕捉,1:输出比较 /=ADC转换程序=/输入参数:无;输出参数:ad_result04/void ad_convert( void ) ad_init( ); /每次转换都要重新调用ADC初始化程序,防止干扰 while( !ATD0STAT0_SCF ); /等待转换结束,ATD0STAT0_SCF为转换结束标志位 ad_result0 = ATD0DR0; /以下为转换结果赋给ad_result04作为输出值 ad_result1 = ATD0DR1; ad_result2 = ATD0DR2; ad_result3 = ATD0DR3; ad_result4 = ATD0

49、DR4; /=PIT定时器溢出中断服务程序=/输入参数:无;输出参数:cur_speed/#pragma CODE_SEG NON_BANKEDinterrupt void PIT1( ) PITTF = 0X02; /清除定时器溢出标志位 DisableInterrupts; /关闭中断,防止高优先级中断抢占 cur_speed = PACNT; /计数器值赋给count作为输出 PACNT =0; /清零定时计数器 if( state=1 ) /state为起跑线第一次检测状态位 /state_flag为起跑线检测延时中断计数标志位 state_flag+; /state_flag1为起跑

50、线延时完毕标志位 /if(state_flag200) /state_flag1=1; if( start=1 ) /start为启动按键按下标志位 /start_flag为启动延时中断计数标志位 start_flag+; /start_flag1为启动延时完毕标志位 if( start_flag 120 ) start_flag1 = 1; if( start_flag1=1 ) start = 0; EnableInterrupts; /开启中断 /=舵机中断控制服务程序=/输入参数:ad_result0,4;输出参数:corner/interrupt void PIT0( ) DisableInterrupts; /关闭中断,防止高优先级中断抢占 PITTF = 0X01; /清除定时器溢出标志位 while ( PTS_PTS0=0 ) ad_convert ( );

温馨提示

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

评论

0/150

提交评论