版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七届“飞思卡尔”杯全国大学生智能汽车竞赛技术报告学 校:辽宁科技大学队伍名称:辽科大三队参赛队员:宋亮谭福臣隋正 带队教师:陈志彬汪玉坤图2-1系统总体结构图2.2.2主要模块1)主控模块:通过MC9S12XSG128处理器,对所有子系统采集的信息进行处理,该 模块是整个系统的核心部件,结合该处理器,最终我们自行设计了最小系统板。2)道路检测模块:在赛道信息采集方面,主要由光电传感器、ULN2003的放大电路组 成。3)速度检测模块:速度传感器模块由小型光电编码器和ECT脉冲捕捉功能构成。提供 闭环速度控制。4)电机驱动模块:采用集成芯片BTS7960,驱动电流可达43A,足以满足驱动智能车
2、 的要求。5舵机控制模块:主要控制智能车的转角。6)电源模块:主要用到的有5V, 7.2V, 5V芯片选择的是LM2940, 7.2V直接对电机 进行供电。传感器和单片机采用分别供电的方式供电。7)调试模块:调试模块主要用到BDMo2.2.2系统软件结构在系统硬件结构的基础上,通过系统软件算法小车即可运行。系统的基本软件流程为:首先, 对各功能模块和控制参数进行初始化。然后,通过光电检测模块获取前方赛道的数据,然后 从采集的数据中提取赛道中心线,求得赛车与中心线位置的偏差,接着采用PID对舵机进 行反馈控制。同时通过速度传感器模块获取当前赛车的速度。根据检测到的速度,结合速度 控制策略,对赛车
3、速度不断进行适当调整,使赛车在符合比赛规则的前提下,沿赛道中心线 快速行驶。系统的基本软件结构如下图。升始各模及初始化号号姓爰1缱取羔绞舵机控制1燮取速度1控制速度图2-2基本软件结构第三章智能车机械结构的设计及调整在智能车比赛中,最主要的比赛内容是速度,而模型车的机械结构无疑是影响速度的关键因 素之一。鉴于这个原因,我们对模型车的机械结构做了很多的工作,进行了大量的调整,到 达了比较满意的效果。3.1智能车的组装、改造与优化智能车的机械部分是影响其行驶性能最直接的部分,其重要性不言而喻。一个不良的机 械系统会增加小车控制的难度,会为小车的速度提升带来障碍。因此,小车的机械性能应该 是优先考虑
4、的问题。此届比赛中光电组选用的车模为B型车模,智能车机械结构只使用竞 赛提供车模的底盘部分及转向和驱动部分。控制采用前轮转向,后轮驱动方案。智能车的大 致外形如下列图所示:图3-1智能车整体外观图3.1.1车模组装模型车的组装工作看似简单,却需要很多的耐心和经验。首先,仔细阅读说明书。通 过阅读模型车的装配图,可以了解各个不同零件的用途和安装顺序。然后,根据模型车的装 配图组装智能车模型。在组装过程中,不但要注意模型车的组装顺序,而且由于模型车零部 件较小,组装过程中要防止零部件滑落和丧失。特别是,由于模型车上的大部分零部件材质 均为塑料,在拧螺丝以及对零件进行加工时要格外的小心,以免损坏。3
5、.1.2、智能车前轮定位的调整1)主销后倾主销后倾角如图3-2所示,是指在纵向平面内主销轴线与地面垂直线之间的夹角。它在 车辆转弯时会产生与车轮偏转方向相反的回正力矩,使车轮自动恢复到原来的中间位置上。 所以,主销后倾角越大,车速越高,前轮自动回正的能力就越强,但是过大的回正力矩会使 车辆转向沉重。通常主销后倾角值设定在1。到3。模型车通过增减黄色垫片的数量来改变主销后倾角的,由于竞赛所用的转向舵机力矩不 大,过大的主销后倾角会使转向变得沉重,转弯反应迟滞,所以设置为0。,以便增加其转 向的灵活性。图3-22)主销内倾主销内倾如图3-3所示,定义为在同时垂直于车辆纵向对称平面和车辆支承平面的平
6、面 内,由真实的或假想的转向主销的轴线在该平面上的投影与车辆支承平面的垂线所构成的锐 角。主销内倾角的作用,是使车轮在受外力偏离直线行驶时,前轮会在重力作用下自动回正。 另外,主销内倾角还可减少前轮传至转向机构上的冲击,并使转向轻便,但内倾角不宜过大, 否则在转向时,会使轮胎磨损加快。主销内倾角越大前轮自动回正的作用就越强烈,但转向 时也越费力,轮胎磨损增大;反之,角度越小前轮自动回正的作用就越弱。图3-33)车轮外倾车轮外倾,如图3-4所示,在过车轮轴线且垂直于车辆支承平面的平面内,车轮轴线与 水平线之间所夹锐角。如图A所示,即由车前方看轮胎中心线与垂直线所成的角度,向外 为正,向内为负。其
7、角度的不同能改变轮胎与地面的接触点,直接影响轮胎的磨损状况。并 改变了车重在车轴上的受力分布,防止轴承产生异常磨损。此外,外倾角的存在可用来抵消 车身载重后,悬架系统机件变形所产生的角度变化。外倾角的存在也会影响车的行进方向, 因此左右轮的外倾角必须相等,在受力互相平衡的情况下不致影响车辆的直线行驶,再与车 轮前束配合,使车轮直线行驶并防止轮胎磨损不均。图344)前轮前束车轮前束如图3-5所示,同一轴两端车轮轮辗内侧轮廓线的水平直径的端点为等腰梯 形的顶点,等腰梯形前后底边长度之差为前束。当梯形前底边小于后底边时,前束为正,反 之则为负。车轮的水平直径与车辆纵向对称平面之间的夹角为前束角。由于
8、车轮外倾及路面 阻力使前轮有向两侧张开做滚锥运动的趋势但受车轴约束,不能向外滚动,导致车轮边滚边 滑,增加了磨损,通过调整前束可以使车轮在每个瞬间的滚动方向都接近于正前方,减轻了 车轮外轴所承受的压力和轮胎的磨损。图3-53.1.3智能车转向机构调整优化理想的转向模型,是指在轮胎不打滑时,忽略左右两侧轮胎由于受力不均产生的变形, 忽略轮胎受重力影响下的变形时车辆的的转向建模。在这种理想的模型下。车体的转向半径 可以计算得到。假设智能车系统为理想的转向模型,且其重心位于其几何中心。车轮满足转向原理,左 右轮的轴线与后轮轴线这三条直线必然交于一点。则转弯时,左右两个车轮的转角是不一样 的,要在实际
9、中仔细调试来获得最好的效果,最大的摩擦力。3.1.4智能车重心的优化底盘的高度对车的重心影响很大,一般来说,底盘的高度越低,车的转向性能越好,行 驶稳定性越佳。由于我们采取光电传感器采集路面信息的策略,传感器的安装,必然导致整 车的重心偏高,在高速过弯时则向心力比较大,同时由于惯性则车很容易向一侧翻倒。为了 防止这类事情的发生,不仅需要减轻传感器支架的重量,也要尽量降低小车底盘的高度。我 们把车底盘放低,从而降低整车的重心,防止车翻倒。虽此次比赛中有坡度在15度之内的 坡道,但坡道是圆弧形的拱坡,车在上下坡过程中不会出现碰触赛道的情况,故我们对车的 前后部的底盘高度都做了调整。以下是车前后部分
10、底盘高度调整方法:1)底盘前半部别离地间隙调整:我们在前轮处装入不同的调节块调节前轮的高度,从 而使小车前部离地间隙到达最低。2)降低电池的重心。电池的重量是很大的,降低电池重心可以大大降低整车的重心。3.1.5转向舵机的安装舵机转向是整个控制系统中延迟较大的一个环节,舵机的响应速度不仅与舵机的安装方 式有关,也与舵机输出臂的长度有极大的关系,输出臂越长越有利提高响应速度,但舵机在 输出力矩相同的条件下,力臂越长,作用力越小,所以当转轮遇到较大转向阻力时,会影响 舵机对转向轮控制的精度,甚至反而使转向轮的反应速度变慢。因此找到一个较好的舵机安 装方式及其最优的输出臂长对提高舵机的反应速度十分重
11、要。根据以往的经验,加长舵机臂 对提高舵机的响应确实有一定的效果,但是车身转动的惯性限制了车的转向。而舵机臂加长 会降低舵机定位的精度、提高重心、造成舵机损坏等。所以今年我们放弃了加长舵机臂,将 舵机从车的中心移到车头,直接安装在车的底盘上。这样既可以降低车的重心,又可以降低 车的转动惯量。安装示意图如下:图3-5舵机安装示意图3.1.7摇头舵机的安装由于激光发射只有两条线,而且线的长度有限,为了更好得识别路线,我们采用了 激光随动摇头的方法来固定激光传感器,这样就可以采集到一个平面内的路线,最大程度得 提高采集的精度。同时为了降低重心,传感器应该尽量低,但是太低了会导致前瞻无法到达理想的距离
12、前瞻即激光点到车辆前轮的距离,一般要到达35-45cm),经过长期调试,在保证前瞻且接收稳定的前提下,传感器高度应降低到15cm左右比较好。摇头舵机安装如图:图3-6摇头舵机具体安装图3-7摇头舵机位于整车的位置图3.2传感器的工作原理、选择与安装3.2.1传感器的选择关于技术报告和研究论文使用授权的说明本人完全了解第七届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、 使用技术报告和研究论文的规定,艮参赛作品著作权归参赛者本人,比赛组委 会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技 术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版 论文集中。参赛队
13、员签名:宋亮谭福臣隋正 带队教师签名:陈志斌汪玉坤日 期:2012年8月11日光电车的传感器主要有两种,也是大部分学校选用的,一种是红外传感器,另一种是激 光传感器。在确定智能车总体方案时,我们选择激光传感器来检测赛道,红外传感器来检测起跑线。在使用激光传感器时,为了获得更大前瞻距离,为控制系统后续处理赢得更多的时间, 在从众多光电传感器中选择了大前瞻的激光传感器,前瞻距离可以到达普通光电传感器的数 倍甚至十几倍,完全满足竞赛的要求。而且激光传感器相隔1ms相继发光,互不干扰。在选择红外对管时,为了提高灵敏度,我们选择了 ST188型,该型号对管发射功率高, 灵敏独高,检测范围是4-13cm,
14、可以满足使用的需求。3.2.2光电传感器的工作原理光电传感器检测路面信息的原理是由发射管发射一定波长的红外线,经地面反射到接收 管。由于在黑色和白色上反射系数不同,在黑色上大部分光线被吸收,而白色上可以反射回 大部分光线,所以接收到的反射光强是不一样,进而导致接收管的特性曲线发生变化程度不 同,而从外部观测可以近似认为接收管两端输出电阻不同,进而经分压后的电压就不一样, 就可以将黑白路面区分开来。图3.6光电传感器原理3.2.3传感器的设计激光传感器与普通的光电传感器原理都是一样,但是其前瞻能力远大于普通的光电传感 器,可以到达40-50厘米,对于智能车来说己经足够。在竞赛中,规则规定传感器最
15、多不 能超过16个但激光管不属于传感器),我选用了 14个激光管和6个激光接收器,分别固 定在两块相同的PCB电路板中,两块PCB呈"V”字排布,固定于摇头舵机上。激光传感 器由两部份构成,一部份为发射部份,一部分为接收部份。发射部份是用ULN2003进行驱 动,然后使用74HC238进行激光器的选择,使激光管相继发光;接收部份由接收管接收返 回的光强,经过电容滤波后直接接入G128单片机的PA 口,检测返回电压的高低。由于激 光传感器使用了调制处理,接收管只能接受相同频率的反射光,因而可以有效防止可见光对 反射激光的影响。红外传感器的设计中,我们选择使用8个红外对管分别固定于车前端
16、的两侧,我们使用 LM324对红外对管的反馈信号进行放大后输出至PS 口。在调节灵敏度时,使用10K的电 位器使灵敏度调制到最正确。3.2.4传感器的固定传感器的固定是关键,其安装位置、高度以及负仰角,直接影响图像的采集和整车的重 心。但是我们小车有摇头的原因,车的整体重心肯定在车的中心靠前位置,为了让车转向更 灵活,我们必修减轻车的重量,以此增加车的速度。为减轻重量,我们去掉一些没有必要的 金属或者换成塑料。传感器位置越高,则前瞻性越好,看到的赛道信息越丰富,有利于赛车 的预判和加减速,但对支架的刚性要求越高。在高速转弯时,整车的重心偏高,很容易发生 翻车等极恶劣的情况。因此我们将传感器高度
17、定为20cm,既保证了前瞻,又保证了稳定度 相等。安装示意图如下列图所示:传感器的固定3.2.5传感器的调试方法1. 观察光斑,先将其调整到一条水平直线;2. 用电脑连接,在线调试;3. 写入程序使传感器分组发光;4. 单个安装镜头并调试位置;5. 检查同组传感器是否相互干扰。3.2.6测速模块的安装智能车的测速模块选择的是编码器。旋转编码器旋转一周会产生200个脉冲,这已经充 分满足的小车的检测精度,从而提高了小车高速时速度控制的稳定性,大大减小了检测误差。 编码器安装主要考虑的问题是与齿轮的咬合,太紧会使电机转动吃力并且会发出很大的噪 声,太松有时候会丢齿。因此最好使得安装的编码器松紧程度
18、能够调整最好。安装方式如 下列图所编码器的安装方式U!U!智能车电路设计原理与实现4.1测速模块我们采用的测速模块是集成的编码器,用于测量系统的行驶速度。其使用简单方便,稳 定性强,识别精度很高,可到达每转200个脉冲。4.2系统模块核心电路板我们采用飞思卡尔提供的MC9S12G128作为主控制器,用来实现对小车的 控制。4.3坡道检测模块采用红外对管安装一定的角度来检测坡道。坡道和水平的赛道有一个夹角,当小车刚要 驶入坡道时,红外的照射距离变近,当照射在黑线以外的赛道上时,AD采集回来的值会明 显比水平赛道上大,经过程序处理后,便能识别出坡道。电路图如下:1R3VCC1T1、 1%11R11
19、J1厂H1V4kx_4 DPTOISO1T144.4电源模块系统电源模块的好坏是智能车系统稳定运行的基础,好的电源模块可以大大减小系统出 现疑难故障的几率。根据系统中各部分的供电需求,可以把电源系统分为以下几个部分:舵 机标称电压6V但实际中实验发现直接使用5V电压。固使用电池直接供电,电机驱动电路 直接使用电池电压,微控制器、传感器及其他外围电路采用5V电压,由于激光传感器是比 较耗电的模块,为了减少激光传感器对其他电路的干扰,我们用了两片LM2940来提供两路 5V电压,一路给激光传感器,另一路给微控制器和其他外围电路。电路图如下:VCCGNDVCCGNDOUTImLTHU.OQzogIN
20、I土一hhro2W理理理iblrr3.5电机驱动模块电机驱动方面,采用了目前主流的全控型的开关功率元件BTS7960进行脉宽调制控制。 它以H桥为基本原理,它大大简化了电路设计,且具有稳定、可靠、编程简单等优点。H 桥式电机驱动电路包括4个场效应管。通过两路PWM的差从而实现电机的正反转。电路图 如下:11131517119IN 143NDEN681A11 AO1 VI1V91 AZ1A31 A41 I Z11J1 V41 A*!OA 11yi12A29 AO<16 112Y2<9 A 4146 1 Jlex.1GonTrcc;ND(U1IN2274LS244U3U218 IN20
21、UT16 IN10UTBTL7960BTL796014 ENOUTGND10 GNDIKR4IKR300R2OUT寸IKRl975320 VCCWAWIHSHNINI eNoWASI % HNINI战I1KnHHHHT ft F, KINI OUTENOUTENOUTIN2OUTC3C43.6路径识别模块我们采用激光传感器作为识别单元。激光传感器由两部份构成,一部份为发射部份,一部分为接收部份。发射部份是用 ULN2003进行驱动,然后使用74HC238进行激光器的选择,使激光管相继发光;接收部份 由接收管接收返回的光强,经过电容滤波后直接接入H128单片机的PA 口,检测返回电压 的高低。由
22、于激光传感器使用了调制处理,接收管只能接受相同频率的反射光,因而可以有 效防止可见光对反射激光的影响。电路图如下:第五章智能车软件设计原理与实现5.1软件控制的总体思路软件的控制思想就是:让智能车符合大赛规则前提下,以最快的速度跑完赛道,赛道包 括直线,弯道,坡道,停止,十字线等元素。通过软件控制好智能车的转向和速度使智能车 到达最快速完成比赛。软件流程是:通过采集到的路况,计算出黑线的位置,然后设置舵机转角和电机的速度。5.2系统初始化1) 时钟超频。系统初始频率是8M,无法满足实际需要,所以我们选用比较稳定的64M, 而且能满足实际的需要。2) PWM的初始化。我们的智能车系统要用到三路P
23、WM,分别是摇头舵机,转向舵机, 电机。转向舵机我们是用组委会提供的舵机,由于电机和舵机是比较灵敏的器件,所以我们 采用级联来提高舵机的控制精度,对于周期的选择,经试验发现,摇头周期在3ms到4ms之 间比较适合,转向舵机周期设置为20ms,电机对精度的要求不是很高,所以我们采用单路 的PWM来控制,最终确定PWM的分配方案如下:电机: PWM通道2, 3级联,周期1ms转向舵机:PWM通道0, 1级联,周期10ms摇头舵机:PWM通道4, 5级联,周期4ms5.3模块设计5.3.1速度采集模块设计速度采集我们采用定时中断的方案,周期5mso即每5ms读取一次脉冲寄存器的值, 脉冲寄存器存储的
24、是编码器输入的值,脉冲越多,说明速度越快。5.3.2路况采集模块设计路况采集我们也是用定时中断的方案,由于采集速度的快慢直接关系到车辆对路况反应 的速度,但过快的采集速度会影响采集的精确度,因此我们经过计算,如果车以3米每秒的 速度前进的话,采集的速度为1ms 一次左右是比较合适的,最终我们确定路况采集周期为 3ms,即如果车以3米每秒的速度前进,采集速度为9mm 一次。激光开启个数的选择,我们综合考虑了多方面的因素,我们使用14个激光管可以准确 的检测两边的赛道。对于激光发射,我们是采用分时发射,即同一时刻只有一个激光发射,然后过一段时间 后全部接收管接收,根据发射的序号确定接收到的灯的位置
25、和状态。为了有效排除干扰,我 们对十组数据进行处理,得到黑线的位置。具体来说,我们设置采集中断的时间为1ms,流 程是这样的:第一个激光发射经过0.1ms中断-接收管接收存储-第二个激光发射 -0.1 ms中断-接收管接收存储.经过七个中断,七个激光都发射过一次,也就是说完 整采集了一次,用时0.7ms,完整接收完十次,用时7ms,然后对接收到的十次数据进行处 理得到黑线的位置,再把位置偏差传递到控制程序。路况信息有:直道、十字线、起跑线、坡道,模拟图片单边)如下:oooooomooooooo激光于直道OOOOOOOOOOOO激光于弯道5.4.1摇头舵机控制程序设计在车模整个行驶过程中,摇头舵
26、机都在不停的摆头,使得两排激光无法照在黑线两边。由于摇头舵机要求快速精确,摇头舵机的控制我们是采用增量PI算法控制。corner_y = comer_y +P_yabs(position) * (position-pos_old_old)+ I_yabs(position) * pn(position)这里的corner_y是要输出的转角值,abs()是取绝对值函数,pn()是取正负号的函数, position是路况采集输出的偏差,即黑线的位置15+15), pos_old_old是上一次的上一次的偏差。P_y和I_y是数组,这两个数组是调试的重点,直接关系到激光传感器摇头 的灵敏度,要是不够
27、灵敏,很容易丢线,就会导致小车失控。经过长期调试,我们总结了一 个有效方法,即先确定一个P值,然后调试I_y数组,I_y从小到大调,出现抖动后取前 一个值,再继续调后一个。5.4.2转向舵机控制程序设计转向舵机控制总体思路是:根据摇头的转角,再结合前瞻,就可以确定转向的角度。这第一章引言01.1大赛背景和概况01.2智能车应用前景0第二章智能车总体方案的设计22.1系统方案概述22.2系统总体结构的设计22.2.1系统硬件结构22.2.2主要模块32.2.2系统软件结构4第三章智能车机械结构的设计及调整63.1智能车的组装、改造与优化63.1.1车模组装63.1.2智能车前轮定位的调整73.1
28、.3智能车转向机构调整优化103.1.4智能车重心的优化103.1.5转向舵机的安装113.1.7摇头舵机的安装113.2传感器的工作原理、选择与安装123.2.1传感器的选择123.2.2光电传感器的工作原理133.2.3传感器的设计133.2.4传感器的固定14325传感器的调试方法143.2.6测速模块的安装15第五章智能车软件设计原理与实现 个转角理论上是可以计算出来的,但是还是应该以实际调试为准。if(comer_y-center_y>0)comer = center -Pl position_y|;else corner = center + P2 position_y:这个
29、公式的(corner_y-center_y)即摇头舵机的转角,中心值是0,因为机械上无法做到使 左右两边的转角完全一样,所以我们把转向控制分成左右两边独立控制,Pl和P2里面是 相对于摇头转角position_y)对应的转向转角。所以调试的转角主要就是调试Pl和P2.这里还有一个要注意的地方:当摇头转角比 较小的时候,即弯度比较小的时候,转向舵机的控制。如果小弯不转角,则小S弯就能近 似直线冲过去,在连续弯道也可以比较内切,这能大大优化跑车路线,这种方法适用于弯道 较多的场合;但是这带来一个缺点:直线跑不直,入弯打角慢,所以需要准确判断弯道类型 才可以。转向舵机的具体打的角度的调试我们是用各种
30、不同弧度的圆环来调试,即如果每个弧度 的圆环都能跑顺了,那这个转角就是正确的转角。5.4.3速度控制程序设计对速度的控制,通常我们认为应该是直线加速,弯道减速,但实际的调试发现不是这样 的。首先,直线速度太快会造成过急弯的时候来不及减速和打角,所以必定要减小弯道的速 度以配合减速,这样大大降低了弯道的速度,如果是弯道多的赛道,将是很不利的,而且直 线太快还会导致过弯的时候翻车,这是很危险的。其次,经过跑圆环我们发现,在弯道的时候,即使你把速度加到最大,智能车也无法到 达很快的速度,而是随着弯道弯度的不同,智能车都有一个最大速度,而这个速度是智能车 能承受的过弯速度,所以我们大胆尝试弯道速度加到
31、最大,实践发现只要智能车的硬件条件 够好,抓地力够好,跑的够稳定,这样弯道的速度能很快,又很稳定。当然实际设置弯道速 度的时候是不能设置为最大的,一般是要比直线低一点。也许大家都很疑问:这样的话不就全程速度差不多了?而且都没减速,过弯应该比 较困难。这个疑问一点都不奇怪,但是事实是:我们全程速度是几乎差不多的,过弯也没问 题,当然这依靠我们的优越的减速策略。具体的思路是这样的:只有长直道入弯和很大的弯时才减速一段距离,注意是一段距离,这样才能减到需要的速度,其他情况都保持最高速。 这样就需要准确判断直道和弯道了,而且要不断调试得出最大直线速度是多少,多长的直道 可以加到最大速,多大的弯度才需要
32、减速,减速要减多长距离才能顺利过弯等参数。这里的 路线判断和减速的距离确定都是靠计算编码器的脉冲结合摇头转角来综合判断的,即摇头转 角在一定小范围内且一直保持到小车走过一定距离比方3米)这样的情况就是进入直道了, 减速的距离是这样计算的:刚减速的时候记下脉冲的值,当脉冲到达一定数量我们是39 个脉冲是10cm)就停止减速。还有些辅助控制速度的策略,如目测下开始跑多长距离内都是直线或都可以用高速 通过,设定智能车在这段距离内用最高速跑,如果赛道开始阶段都是直线或大圆环的话,这 种策略将会大大提高智能车的成绩。具体速度的设定,我们采用了闭环增量PID调节。v_error = P*(s 1 -s2)
33、+(I*s 1 )+D*(s 1 -2*s2+s3);PWM4input = PWMDTY0+v_error;在减速的时候我们采用了电机反转,让减速更加迅速if(sl<-3)PWMDTY0=0;PWMDTY1=7O;return;PWMDTY1=O;5.4.4起跑线控制程序设计起跑线的判断要求很严格,因为这直接关系到智能车能否跑完全程,如果没停住的话也 几乎失去了晋级的时机,所以必须很谨慎。我们使用红外对管进行起跑线检测,智能车在起 跑时会检测一次起跑线,所以我们对起跑线检测两次,当第二次检测到起跑线时,智能车延 时20ms后进行刹车。第六章智能车调试6.1软件调试6.1.1软件调试平台
34、CodeWarriorCodeWarrior是由Metrowerks公司提供的专门面向Freescale所有 MCU与DSP嵌入 式应用开发的软件工具。其中包括集成开发环境IDE、处理器专家、全芯片仿真、可视化参 数显示工具、项目工程管理、C交叉编译器、汇编器、链接器以及调试器。CodeWarrior不 仅支持汇编语言,而且支持C、C+和Java高级语言。CodeWarriorlDE支持深入的C语言 和汇编语言调试:启动/停止、单步、设置跟踪触发器、校验/修改存储器和C变量、结构与 阵列,以及执行其他仿真功能。其中在本设计方案中最为重要的部分就是集成开发环境IDE 以及调试器。仿真调试窗口如图
35、6.1所示。图6-1仿真调试窗口Code Warrior 4.6可以很好方便的完成MCS12DJ256单击的新工程的建立,程序的编写、 下载和调试。通过BDM头不仅可以烧写程序,还可以在程序运行时实时查看各参数的值。6.1.2 CodeWarrior IDE 基本使用方法1) 运行“开始菜单一>所有程序一>Freescale CodeWarrior>CW for HC12 V4.6>CodeWarrior IDEV,选择 “File>New”。此后选择 MC9S12DJ256,:jFreescale CodeWarrior£il< Edit Yiw
36、 S.trch project Processor Expert Window1mcp| PAE Multilink Cycl. 3昭V修夺Files | Link Order | Targets |£il< Edit Yiw S.trch project Processor Expert Window1mcp| PAE Multilink Cycl. 3昭V修夺Files | Link Order | Targets |、h . H 国 f Path: C:Docvments and Settingssjcx桌面'新建文件夹lSourcesmai Filo readm
37、e, txt 幽 tips, txt, 3 Sources 踞浦c| 曲 datapag. c/ 王Startup Code,国。Prm国 M Linker Map WQLibraritiffl ClDbu“" Project Filt +j (23 Debugger Cmd FilesCo"n/ a»/a000000000a aooooooooon/n/zlTlTIzizlTlTlTlTlzlTItfinclude <hidef.h> /* commoh defines and macros */ #include <»c9sl2dg
38、l28.h> /« derivative information */ pragma LINK_INFO DERIVATIVE -Mc9sl2dgl28b"void main(void) /* put your own code here */Enablelnterrupts;for(;) /* wait forever */* please make sure that you never leave this function */按照提示选取期望的选项。直至建立工程文件。如下:2) 打开Startl2.c文件,找到代码#ifdef_HCS 12_SERIALMO
39、N#defineINITRM (volatile unsigned char *) 0x0010)#defineINITRG (volatile unsigned char *) 0x0011)#defineINITEE (volatile unsigned char *) 0x0012)#endif修改成:/#ifdef_HCS 12_SERIALMON#defineINITRM (volatile unsigned char *) 0x0010)#defineINITRG (volatile unsigned char *) 0x0011)#defineINITEE ("(vol
40、atile unsigned char *) 0x0012)第六章智能车调试之所以要进行这个步骤是因为,初始化代码是认为程序中有监控程序的,但是因为我们 是使用的BDM调试工具,所以就不需要监控程序了。如果不注释掉这两条语句,一旦将程 序烧写到片内的flash,会发现程序跑不起来,因为初始化过程在等待监控程序的响应,如 果没有监控程序,那么程序就会进入死循环的状态。3)添加代码:将自己的代码加入到工程文件中。4)如果文件编译通过,通过BDM下载。启动CodeWarrio4.6自带的Hiwave.exe程 序,该程序一般位于 CodeWarrio 4.6 的安装目录 “ Freescale Co
41、deWarrior CW for HCS12X V4.6prog”中,是用来往单片机下载程序和调试单片机的程序。启动后程序界面如图6.1所 zj O之后运行路径 C:Program Files Freescale CodeWarriorCW for HCS12X V4.6prog 下的 hiwave.exe文件选择TBDML HCS 12,在下拉菜单中选择“set speed”,输入晶振频率16.00, 然后这个下拉菜单中会出现“Flash”选项,点击这个选项,出现如下的对话框:图6-3程序擦除烧写界面在下载自己的程序前应该将板子中已经存在的程序擦除,选择有程序的部分,点击Erase,擦除完成
42、后,点击Load,选择自己所建立工程的文件夹中bin文件夹下后缀为".abs”的文件,点击打开,下载完成。至此己经基本完成了从程序代码编写和设置过程,到下载烧 制进S12芯片的主要过程;其中也包括程序开发和调试的基本步骤。6.2硬件调试为方便激光管和红外对管的调试,我们在智能车上加入NOKIA5110液晶显示屏,将 激光管与红外对管的接受信号进行AD后,以二进制数显示在显示屏上,方便硬件模块的调 试如图:图6-4显示屏安装图第七章总结本文主要介绍了基于Freescale的S12单片机控制下的智能车设计流程、激光传感器寻 线方案各个主要模块的工作原理和设计思路。回忆整个过程,我们在摄像
43、头的选择和测试上 花费了很长时间,不过我们坚信有了一个好的视角行走才会更加自如。各模块的电路我们都 经过了反复的测试以确定其能够稳定可靠。稳定性对于参赛的小车是至关重要的。另外对于 硬件电路的极好的维护性以及可更换性也是一个很值得着重考虑的方面。在赛车遇到突发情 况下尤其表达其优越性。智能车机械部分也是一个很关键的问题,特别是在过弯的情况下机械性能的优劣表达小 车的过弯性能尤为突出。车体的抖动和过弯速度比预计慢很大一部分是机械部分的问题。摄 像头组的还应注意车模整体的重心,重心过高对于过弯可能会造成一些不利因素。在这次比赛中,队员们的能力有了显著的提高。老师给予我们的指导和帮助让我们走的 更稳
44、、更远。同时在付出辛勤汗水的背后是收获成功的笑脸。7.2模型车的主要技术参数赛车基本参数长340mm宽304mm高108mm车重1.5kg功耗负载大于15W电容总容量680uF传感器激光和红外线共14个除了车模原有的驱动电机、舵机之外伺服电机个数舵机2个赛道信息检测视野范围近/远)35/45cm频率180Hz参考文献1 邵贝贝.单片机嵌入式应用的在线开发方法M.北京:清华大学出版社,2004.2 卓晴,黄开胜,邵贝贝等.学做智能车一挑战“飞思卡尔”杯M.北京:北京航空航天出版 社,2007.3.3 晓亮,尹志,阳郸.安徽科技学院光电一队技术报告.4 郑剑,林波,黄开霖福建工程学院光电一队队技术
45、报告.5 叱龙,王文涛,胡楠.陕西理工学院陕理工一队技术报告.6 沈长生 常用电子元器件使用一读通M.北京.人民邮电出版社,2004.附录附录A:源程序:#includeHinfrard.hn#includeninitial.hnchar quanzhong8= 6,6,6,8,-8,-6,-6,-6;float HW_MAX8=812,590,677,702,590,710,762,767;float HW_MIN8= 66,71,72,70,69,67,68,69);float HW_X8=(0,0,0,0,0,0,0,0;float position_p,position_d; uint
46、l6HW_Result8;/*检查各传感器状态值*/uintl6 ad8;void HW_Check()(uint8 i,j;for(j=0;j<8;j+)(adj=0;HW_Resultj=0;)for(j=0;jv4;j+) ad 0+=Get_ ADrecult(O);第四章智能车电路设计原理与实现164.1测速模块164.2系统模块164.3坡道检测模块164.4电源模块163.5电机驱动模块183.6路径识别模块19第五章智能车软件设计原理与实现205.1软件控制的总体思路205.2系统初始化205.3模块设计205.3.1速度采集模块设计205.3.2路况采集模块设计205.
47、4.1摇头舵机控制程序设计225.4.2转向舵机控制程序设计22543速度控制程序设计235.4.4起跑线控制程序设计24第六章智能车调试256.1软件调试256.1.1 软件调试平台CodeWarrior25CodeWarrior IDE 基本使用方法276.2硬件调试29第七章总结297.2模型车的主要技术参数30参考文献31ad 1 +=Get_ ADrecult( 1);ad 2+=Get_ ADrecult(2);ad3+=Get_ADrecult(3);ad 4+=Get_ADrecult(4);ad 5 +=Get_ ADrecult(5);ad6+=Get_ ADrecult(
48、6);ad7+=Get_ADrecult(7);for(i=0;iv8;i+)(HW_Resulti=adi/4;/ Display(HW_Result7);)void HW_Initi()uint8 i;for(i=0;i<8;i+)(H W_X i=H W_M AX i-H W_MINi;void GET_Position()uint8 i;position_p=0;归一化处理归一化处理for(i=0;i<8;i+)position_p+=(HW_Resulti-HW_MINi)/HW_Xi)* quanzhongi;if(position_p>20) position_
49、p=20;if(position_p<-20) position_p=-20;/ Display(position);)#includeHlaser.hH#include "initial.h"unsigned char Check_Table 14 =(0,0,0,0,0,0,0,000,0,0,0,0; 存放位置unsigned char JG_Table=(0x00,0x11,0x22,0x33,0x44,0x55,0x66);#define Y1#define Y2#define Y3#define Y4#define Y5#define Y6PORTB_PB
50、OPORTB_PB1PORTB_PB2PORTB_PB3PORTB_PB4PORTB_PB5void display_238()unsigned int i;for(i=0;i<7;i+)PORTA=JG_Tablei;delay(50000);)void jiguang_point(unsigned char n)(PORTA=JG_Tablen;Check_Tablen=! (Y111Y211Y3);Check_Tablen+7=!(Y4|Y5|Y6);)#include <hidef.h>/* common defines and macros */#include &
51、quot;initial.h"#include nderivative.h"/* derivative-specific definitions */#include H5110LCD.hnuint8 count=0,flag=0,flag 1 = 1 ,timeout=0,cnt=0,cache;int FreqTemp;int Freq;int OCOCnt;extern uint8 Check_Table14;uint8 table_cache2= 0,0);void main(void)PORT_Initial();LCD_init();SetBusCLK_nM(4
52、0);PWM_Initial();Dianji(33);TIM_Init();Enablelnterrupts;for(;)if(flag=l)(Turn_angle_SD();Turn_angle_FX();speed_pwm();PACNT=0;flag=O;#pragma CODE.SEG _NEAR_SEG NON.BANKEDvoid interrupt 8 TCO_INT(void) uint8 i;TC0=TC0+50000;TFLG 1=0x01;jiguang_point(count);count+;if(count=7)(count=0;flag=l;对赛道外进行处理,不考
53、虑检测到起跑线if(Check_Tablel = 1 &&Check_Table2=0)(Check_Table0 =1;if(Check_Table2= 1 &&Check_Table3=0)for(i=0;i<2;i+)Check_Tablei=l;if(Check_Table3=l &&Check_Table4=0)for(i=0;i<3 ;i+)Check_Tablei=l;if(Check_Table4=l&&Check_Table5=0)(for(i=0;i<4;i+)Check_Tablei=1;if(Check_Table5=l &&Check_Table6=0)(for(i=0;i<5;i+)Check_Tablei=l;if(Check_Table6= 1)for(i=0;i<6;i+)Check_Tablei=l;)if(Check_Tab!e7 =1)i< 14;i+)Che
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 送料机械结构方案课程设计
- 基于Snort网络监控实验课程设计
- 灰度化边缘检测设计课程设计
- 车间调度模拟退火优化策略课程设计
- 基于机器学习的垃圾邮件分类器分析课程设计
- PM数据采集系统设计课程设计
- 播音主持拼音课程设计
- 齿轮齿条传动课程设计
- “安全生产明白人”培训课件(上)
- 2026-2027浙江版四年级语文试卷及答案
- 陕西省XX煤矿有限公司2煤大巷煤柱回收设计
- 2025版临床用血技术规范解读课件
- 设备序列号管理制度(3篇)
- 老年人家属必学:基础照护知识快速入门
- 医疗器械自动化设备工程师岗位考试试卷及答案
- 护理学基础杨巧菊题库及答案解析
- 中国金融学 课件(西财版) 绪论
- 文物建筑勘查设计取费标准(2020年版)
- 驾驶员秋季行车安全培训课件
- 烙铁焊接技能培训
- GJB10157-2021军用可编程逻辑器件软件语言编程安全子集
评论
0/150
提交评论