1、超越队长春工业大学第一届“飞思卡尔”杯全国大学生智能汽车邀请赛技 术 报 告附录C基于红外反射式传感器的赛道检测方法的研究学 校:长春工业大学队伍名称:超 越参赛队员:陈 军 刘 润 闫继杰带队老师:李 慧关于技术报告和研究论文使用授权的说明 本人完全了解第一届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:陈军 刘润 闫继杰 带队教师签名: 李慧 日 期:2006
2、年8月10日目 录第一章 引 言 11.1智能车整体设计思路 11.2技术方案概要 11.3技术报告内容 2第二章 智能车硬件部分安装和改造 32.1 智能车机械部分安装及改造 32.2 辅助电路板的设计安装 32.3 最小系统电路板的固定及连接 5第三章 智能车硬件电路设计 73.1 电源电路设计 73.2 直流电机驱动电路 83.3 路面信息检测电路 93.4 转向系统电路 10第四章 软件设计 114.1 HCS12 控制软件主要理论 114.2 算法说明 114.2.1路面信息检测 114.2.2 传感器优先级的设定 124.2.3智能车的转向角度控制 124.2.4智能车速度的控制
3、144.2.5 直道的限速 144.2.6 交叉线的通过 144.2.7 抗干扰措施 154.3 代码设计介绍 18第五章 智能车的调试 195.1 软硬件调试 195.2 智能车的整体调试 205.2.1 传感器及外围电路的调试 205.2.2 舵机的调试过程 205.2.3 直流电机的调试 205.2.4 整体调试 235.3 智能车的主要技术参数 23第六章 结 论 25参考文献 28附录A 程序清单 29附录B 硬件电路图 45附录C 基于红外反射式传感器的赛道检测方法的研究 47第一章 引 言1.1智能车整体设计思路根据第一届飞思卡尔全国大学生智能车邀请赛的要求,要求参赛选手在车模平
4、台基础上,设计一个能够自主识别路线的智能车,在专门设计的跑道上沿着轨道自主行驶,在稳定的前提下追求速度。借助大赛组委会提供的设备,以Freescale单片机MC9S12DG128B为控制核心,利用其内部的PWM(Pulse Width Modulation)模块输出PWM波【1】,通过H桥驱动芯片来驱动智能车。另外在智能车轨迹检测方面,在设计中使用反射式红外传感器对路面信息进行对称式分级采集,通过对传感器独特的设计与安装,使智能车不但善于直线的加速,在转向时也会有精彩的发挥。在行驶方向判断方面通过所设计的控制策略实现对左右转向的准确控制。在控制舵机转向方面,利用微控制器内部集成的ATD模块对传
5、感器的输出信号进行模数转换,综合判断轨迹变化方向,对舵机转向进行实时控制。此外,由于能量损耗使电源电压存在一定的不确定性,对此,选取一路ATD通道,对电源电压实时检测,增强系统的稳定性【5】。1.2技术方案概要智能汽车硬件总体框图如图1.1所示。设计了电源部分、驱动电机部分、检测电路部分以及转向电路等部分。图1.1 智能汽车硬件总体框图1电源部分图智能车的电源部分采用的是大赛提供的7.2V直流电源,给智能车的三个主要部分进行供电,第一部分就是智能车的驱动核心直流电机;第二部分就是智能车的转向核心舵机;最后一部分就是智能车的控制核心单片机。由于能量损耗使电源电压存在一定的不确定性。对此,选取一路
6、A/D通道,对电源电压进行实时检测,确保小车速度的稳定性。2驱动电路部分在智能车的驱动电路部分,由于单片机内部可以进行PWM波的输出,通过利用PWM技术及辅助的驱动芯片对驱动直流电动机进行驱动和制动【4】。3检测电路部分在智能车的检测电路部分,采用了7个功能相同的反射式红外传感器通过对白色跑道及黑线的不同来检测路面信息,使智能车沿着要求的轨迹行驶。4转向电路部分智能车转向电路主要采用了大赛给定的舵机,通过用单片机内部的PWM控制其实现智能车的转向。下文将对智能车的安装、改造过程,硬件电路板的设计及说明,软件控制的设计及说明方面,调试过程及对智能车的改造和创新将进行细致而充分的说明。1.3技术报
7、告内容本技术报告共分六章。其中第一章引言是对全文的概括;第二、第三章主要介绍智能车硬件的安装、改造及设计;第四章针对智能车软件的设计以及算法做了明确的说明;第五章系统地讲述了智能车调试的过程及主要技术参数;第六章为结论和改进思想。附录中包括程序清单,硬件电路图及研究论文。第二章 智能车硬件部分安装和改造整个智能车主要由车模、舵机、直流电机、最小系统电路板、辅助电路板、电池等组成。智能车的安装包括电池部分的安装、最小系统电路板的安装、舵机的安装以及辅助电路板的安装。2.1 智能车机械部分安装及改造电池固定安装在智能车自带的电池槽上,舵机的安装完全按照模型车说明书完成。最小系统电路板的安装主要是由
8、车模上辅助的三个支架配合一些固定用的细铁丝来将其固定在电池的正上方。另外,在不违反大赛规则的前提下,为了使智能车的转向性能更强,针对智能车的前端转向部分做了一些有效的改善。在调试过程中,由于智能车本身的机械构造方面的限制,智能车的最大转角不是很大,由于前轮连杆对前轮内圈的阻挡,在达到一定角度时,就无法再增大角度。为了增大智能车的最大转向角度,采取了用锉将智能车的内轮盘半径锉掉1毫米,使杠杆的移动范围增加,从而增加其最大转角。结果表明,小车比改造前的最大转向半径增加了1.2分米。在实验的过程中我们还发现,车体前端部分较重,尤其在转向的时候,智能车的前轮的减震装置下的黑色薄铁片容易刮到轮盘上,这样
9、不仅影响智能车在转向时的速度,严重时甚至无法前进。针对这个问题,将车模减震装置上黄色垫片从下面移到上面,改造后,十分有效地解决了该弊端。另外在智能车各个轴轮和电机齿轮处添加了润滑剂,用以提高智能车的速度和减少机械磨损。2.2 辅助电路板的设计安装 辅助电路板上主要集成了电源稳压电路、路面检测电路、电池电压检测电路、直流电机驱动电路及一些相关接口。路面检测电路部分由7个反射式红外传感器,7个电位器及一些电阻和电容等组成。为了使传感器探测得更远,将传感器布置在电路板的最前端,在中间用一个用于正舵的传感器,其它六个传感器分别对称放置在其两端用于智能车的转向和轨迹的纠错。相应的电位器、电阻、电容均布置
10、在对应传感器的附近。传感器安装的时候考虑到小车车身和车长的限制、赛道的宽度、电路板的宽度以及传感器检测的有效范围,传感器的安装如图2.1所示。图2.1 辅助电路板平面图如图2.1所示,中间传感器距离电路板最前端的距离为0.8cm,其它传感器均放在电路板的最前端,中间的传感器与其相邻的传感器之间的垂直距离为2.3cm,而其它传感器之间的距离为2.5cm。所有传感器距地面的高度均为1.2cm,传感器距前轮的距离最短为6.8cm而其它距智能车前轮的距离为7.3cm。电源稳压电路主要由稳压片L2940和两个电容组成。为了防止由于发热过于严重而烧坏或影响系统的正常工作,我们在稳压片上增加了一个散热片。电
11、池电压检测电路比较简单,由电阻和电位器组成。布置在稳压片附近。直流电机驱动电路主要由驱动芯片MC33886组成。 MC33886在工作过程时会发热,为使该芯片能长时间工作,十分有必要给MC33886附加一个散热片。但由于MC33886是贴片式封装,不能直接加散热片。我们采取了将MC33886底部朝上,用粗钢丝弯成两个连在一起的圆圈,并焊接到散热片上, MC33886被固定在两个小钢圈压和散热片之间, MC33886芯片底部的铜片直接与钢圈相接触,芯片的背面与散热片接触。这样,即能起到固定芯片的作用,还使芯片底部的铜片不仅与散热片相接触,还使铜片直接露在外面,大大地增加了散热范围,有效地解决了散
12、热问题。在使用过程中, MC33886只有轻微发热,效果十分理想。整个辅助电路板( 整体电路板的规格为19.0cm*6.5cm)安装在小车的最前端,用两个螺丝将其固定在智能车的前端。MC33886放置在电路板的右边,而稳压电路部分和电池电压采样电路部分放置在左边。在辅助电路板上靠近固定处,设置了一些插槽和接口,可以直接用线连接到单片机板上。各个电路部分对称布置,比较美观。为防止辅助电路板下垂,整个电路板的重心靠近固定点。另外还在智能车的前端安置了三个用细钢丝弯成的保护装置,既将细钢丝做成U字型,再将U字型的钢丝弯成一个向前倾的小角度固定在电路板的最前端,保护了安装在电路板最前端的传感器,形成类
13、似真车的保险杠一样的防护部分,当小车碰到障碍物时,首先碰到的是智能车的“保险杠”, 起到在智能车脱离跑道之后保护智能车及防止传感器被撞坏的作用。2.3 最小系统电路板的固定及连接本次小车的设计中,系统电路板采用大赛组委会提供的电路板,在车体上安装了三个固定支架,将系统电路板固定在电池的正上方,距电池约8.0cm 。对辅助电路板上需要连接到系统电路板的导线末端焊上了相应的插针,可以直接插在系统电路板的插槽上。第三章 智能车硬件电路设计3.1 电源电路设计按照大赛要求,采用大赛组委会提供的电池。电池不仅提供智能车的前进动力,而且智能车所用到的所有芯片均由电池供电。因此,电源系统对小车的整体性能起着
14、十分重要的作用。单片机和传感器的工作电压为+5V,而电池电压最高时将近8V。因此,为保证单片机工作的稳定型和可靠性,电源电路设计十分关键,尤其是稳压芯片的选择。在此次设计中,最先选用了常用的7805,但发现,当电池电压下降到7.0V时,单片机工作就不稳定,其主要原因就是7805的管压降较大,达1.2V。因此,选择了管压降较小的LM2904,其电路图如图3.1所示,经过测试,发现其管压降在0.3V左右,大大延长了电池的工作时间。同时,为了使芯片稳定工作,减少传感器输出信号的毛刺,消除干扰,在稳压片的输入端和输出端均并联了一个电容。在调试过程中,随着电池的使用和智能车行驶的过程中,电池不断的耗电,
15、电压逐渐下降,小车的整体速度和性能都会下降。因此,设计了一个电池电压采样电路,电路如图3.2。以7.5V电压为基准,当电池电压大于或小于基准值时,通过频繁采样电池电压采样点的电压,得到一个偏差值,将该偏差值实时地补偿到输入到电机PWM的占空比上,缓解电机两端的电压有效值的下降,从而减少小车因电池电压下降导致速度下降的影响,使智能车的速度更加稳定。实践证明,该方法在小车的调试阶段十分有效。 图3.1 电源电路图图3.2 电池电压采样电路3.2 直流电机驱动电路直流电机的转速控制采用PWM控制。由于单片机输出的脉宽无法驱动大赛提供的直流电机,因此需要通过驱动电路才能驱动电机,设计中采用大赛组委会提
16、供的MC33886芯片10。该H桥驱动电路如图3.3所示。图3.3 H桥驱动电路图其中D1、D2是MC33886的使能端,IN1、IN2为输入端,OUT1、OUT2为其输出端。将MC33886的输入端接到单片机的PWM输出口,在其输出端可以得到与单片机PWM输出口相应的并可以驱动直流电机的PWM信号。通过MC33886的两个输出端口,就能实现电机的转速控制,方向控制以及制动等。对该小车,考虑到小车对速度的要求,我们未使用刹车和倒车功能。因此,将电机一端接地,另一端接输出,只需一路输入和输出就可以实现对电机的转速控制。在使用过程中, MC33886工作时间稍长,发热会较严重。严重时, MC338
17、86甚至会出现过温保护,无PWM信号输出。尝试将两路输入并联使用,输出端也并联到一起并接到电机一端,电机另一端接地。使用该接法后, MC33886工作时间再长,也只有轻微发热。 这种输入端和输出端并联的方法在实际中不仅可以更好地驱动智能车,相同的电压和占空比时,速度更快,同时它还可以降低H桥上的压降,从而减小MC33886发热,防止器件由于温度过高而被烧坏。当单片机输出一定的占空比的PWM信号,电机就会向一个方向旋转,调整好电机的两个输入端,就可以驱动小车前进;当单片机输出占空比为0的PWM信号时,电动机两端的电压为0V,智能车就只能靠惯性滑行一小段距离,这样同样也可以降低智能车的速度,起到了
18、减速的作用。3.3 路面信息检测电路根据红外线在不同颜色的物体表面具有不同的反射性质的特点,我们可以利用反射式红外传感器完成对路面信息的检测。当发射管发射的红外线遇到白色纸质地板时发生大量漫反射,被反射回来的红外线被接收管接收,输出一定电压值;如果遇到黑线则红外光被大量吸收,接收管接收到红外光较弱,输出的电压很小。通过单片机的A/D转换器采样传感器输出的电压值,可以判断出相应传感器检测到的是白色跑道还是黑线。当A/D转换值很小时,可以认为检测到的是黑线,否则,当大于某一值时,则认为检测到的是白色跑道。 设计中,我们选择了ST168反射式红外传感器。电路如图3.4所示【12】【13】 。电位器用
19、于调节传感器发射功率的强弱。当电位器电阻值较小时,相应的发射功率会较强,在同一高度,照到同一材料上时,输出电压相对会较大。反之则较小。传感器输出端并联的电容,可以减少干扰。由于传感器不仅用于检测黑线和白色跑道,还用于控制小车的转向。因此,在该小车上,安装了7个相同的传感器,对称排列,用来检测小车偏离黑线的程度,然后控制小车的转向及角度。左边的传感器用于判断左转向的角度,右图3.4 反射式红外线检测原理图边的判断右转向的角度,最中间的传感器用于正舵。最边上的传感器检测到黑线时,说明小车偏离黑线已经较远,需要转一个大角度才能纠正小车的方向。越靠近中央,需要转的角度越小。3.4 转向系统电路转向控制
20、系统中最重要的部分是舵机。舵机的主要作用就是控制智能车的转向,其过程是首先单片机通过A/D转换器将传感器采集的路面信息进行处理,再通过PWM技术对智能车的舵机进行适时的控制。智能车舵机的转向是由脉宽调制来控制的,当红外传感器检测到信号满足舵机脉冲占空比的要求时,舵机就会使前轮转动一定的角度,7个红外传感器在智能车前对称排开。舵机对每个传感器做出的反应也是不一样的,中间的起到正舵的作用是智能车沿着跑道行驶,越靠近对称轴的传感器要求智能车的转向角度越小,越远离对称轴的传感器要求智能车的转向角度越大。舵机的控制信号为周期是20ms的脉宽调制信号,其中脉冲宽度范围为1ms2ms,由于舵机和智能车机械方
21、面的限制,舵机左右旋转的最大角度可达38度。因此,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。第四章 软件设计4.1 HCS12 控制软件主要理论智能车开发环境采用飞思卡尔HCS12系列微控制器开发软件Codewarrior3.1。该软件具有支持多种语言,开发环境界面统一,交叉平台开发以及支持插件工具等优点。在Codewarrior3.1界面完成编译后,通过清华大学Freescale MCU/DSP应用开发研究中心开发的BDM FOR S12工具,在Codewarrior4.1环境下
22、,向MC9S12EVKC模块下载程序。BDM FOR S12工具使用简单,十分方便【1】。 4.2 算法说明本次比赛要求小车能够自主识别路线,按照设定的轨迹行走,在不冲出跑道的前提下追求速度。因此,程序设计的基本原则是,首先考虑小车的稳定性,在此基础上,尽量提高小车的速度。经过多方面的考虑和反复的实验,在程序设计中,主要采用了以下一些算法。 4.2.1路面信息检测如何确保智能车沿着黑色轨道行驶是程序设计中的关键部分,尤其是对白色跑道和黑线信息的识别。传感器是放在同一高度的,通过调节串联在发射管上的电位器,可以调节发射管的发射功率,从而可以使传感器在照到白色跑道上时的电压输出保持在一定值左右。当
23、传感器的发射功率较大时,传感器检测到黑色和白色时的输出电压值有较大差别。将传感器的输出进行A/D转换后,将转换值保存到一个一维数组里,然后对数据进行二值化处理,即当某个数据小于一个值(记为black_value)时,认为相应的传感器检测到的是黑线,记为0,否则检测到的就是白线,记为1。这样就可以得到一个元素为1和0的一维数组_result7,共有7个元素,对应着7个传感器的信息。进行二值化处理后便于对数据进行分析。 black_value值可以用如下方法确定:首先将小车放置在跑道中间,这样最中间的传感器正好在黑线正上方,在小车启动前,先进行一次A/D转换,可以得到一个大约的黑线值,考虑到各个传
24、感器的差异以及转换的误差,将该黑线值加上一个偏差值,就得到了black_value的值。即使这样,采样白色时得到的值也远大于black_value值,充分保证了判断黑线和白色时的准确性。因此消除了更换跑道, 黑线的深浅以及跑道周围光线的明暗所带来的干扰,该方法也省去了以上因素变化时重新测试黑线值的必要。4.2.2 传感器优先级的设定7个传感器在辅助电路板的前端一字排开。从左到右,依次按照06对其进行编号。小车行驶到弯道时,尤其小车速度较快时,舵机需要快速反应。按照传感器的安装方法,很有可能两个传感器同时检测到黑线。在判断是否需要转向时,主要是依据传感器对应的信号是否从1变为0。那么在两个传感器
25、同时检测到黑线时,该打哪个角度对小车的转性控制比较重要,如果角度过小,就容易出现脱离跑道或无法顺利转弯的情况。针对此种情况,可以对传感器进行优先级的设定。两边的传感器相对中间的传感器来说,优先级更高。优先级依次为0、6、5、1、2、4、3号传感器。一维数组_result7里也依次按照优先级的顺序存放着传感器的信息。如元素0对应着0号传感器的信息,元素1对应6号传感器的信息。与上次保存的信息相比较,一旦检测到传感器的信息从1变为0,停止检测下一个元素。然后进行分析,控制小车的转向和速度。4.2.3智能车的转向角度控制该智能车的转向主要靠传感器检测到的信息进行判断【7】。受微控制器A/D转换通道数
26、量的限制,在辅助电路板上只安装了7个传感器。依据前文介绍的检测方法和转向控制方法,传感器越多,检测到的信息也越多,从而对小车的转角控制也越细,效果也会更好。但如果在算法上进行优化和改进,可以弥补传感器少的弊端。在对检测到的信息进行分析时,如果某个传感器的信息从1变为0时,即传感器检测到的信息是从白色变到黑色时,有两种情况,一种是黑线从左边进入到传感器正下方,另一种是从右边进入到传感器正下方。对这两种情况,黑线相对该传感器的位置是有较大差别的,因此小车的转角也应该不一样。如对于右边的5号传感器,黑线从左边进入时的角度就应该小于黑线从右边进入时的角度。所以判断出黑线移动的方向十分重要。根据如下方法
27、可以判断出黑线移动的方向。在上次数组_result7中,可以检测到0处于几号传感器对应的位置,将该值保存起来,然后将本次得到的_result7里的0处于几号传感器对应的位置也可以保存起来。因为传感器是按照顺序编号的,比较前后两次检测到黑线的传感器对应的编号值,就可以判断出黑线是向左偏移还是向右偏移了,还是没有移动。加上黑线移动方向这个条件,每个传感器检测到的信息在由白色变为黑色时,就对应了两个角度。但最边上的两个传感器由于只有一边有参照,所以还是只对应一个角度。这样,依靠算法获得了更多的角度,相当于间接地增加了传感器的个数。由于传感器的间距有大于黑线宽度(25mm)的,在检测时有可能出现传感器
28、检测到的全是白色,即_result7数组中可能全部为1。 并且5号和6号,0号和1号传感器之间距离为25cm,当黑线从左往右进入到5号传感器后,要经过较大距离后才能进入到6号传感器,0号和1号传感器也是如此,中间跨度太大。可以在黑线从左往右进入到5号传感器和进入到6号传感器之间增设一个角度,即在黑线从左往右移动时,当5号传感器检测到的信号由0变为1即由黑线变为白色时,舵机可以转一个角度,该角度应介于黑线从左往右进入5号和6号传感器时对应的角度之间。1号传感器也可以这样处理。这样避免了转大角度导致小车行驶不稳的问题。各传感器对应角度表见表4.1。 表4.1 传感器对应角度表传感器编号黑线进入传感
29、器的方向0123456从右向左入(度)-30-17-6061730从左向右入(度)-23-1201223从右向左出(度)-26-1026从左向右出(度)104.2.4智能车速度的控制智能车在直道上行驶时,速度相对较快,当突然遇到弯道时,由于舵机打角度需要一定的时间,小车很可能会因速度太快而冲出跑道。因此,考虑到舵机的转向时间,在智能车进入弯道时,舵机打完角度后,必须首先对智能车进行减速,这样可以限制智能车的速度。从整体来看,越靠近两边传感器检测到黑线时所对应的速度越慢。黑线在小车最中间时,小车速度最快。4.2.5 直道的限速虽然在弯道处,短暂的减速可以降低智能车的速度,但是其也是有局限性的。当
30、智能车的速度过大时,即使其有短暂的刹车,但由于惯性的作用智能车还是会以很高的速度冲出跑道,尤其是从较长的直道进入弯道时。对此,在智能车直线行驶的过程中也对智能车进行了适当的限速。解决该问题,最主要的是判断出小车是否行驶在直道上。但是,由于该智能车硬件方面的限制,无法进行远距离的探测,可以在信号检测和数据分析判断方面进行突破。对采样得到的路面信息,进行分析后,得到一个返回值,将该值赋给Turnflag变量,Turnflag值是从0到17,每个Turnflag值都对应着小车左转或右转的角度。当Turnflag值连续N次在最中间3个传感器对应的返回值时,可以认为小车形式在直道上。在这连续N次过程中,
31、设定一个计数变量,Turnflag值每等于一次最中间3个传感器对应的返回值时,计数变量加1,直到等于设定的N值,对计数变量清0,进行一次减速,然后以正常的速度行驶。因为最中间3个传感器如果计数变量还未增加到N时,一旦出现Turnflag不在最中间3个传感器对应的返回值时,计数变量也要清0。N值设的不宜过大,否则就起不到什么在作用。过小的话,也会影响小车的整体速度。调试时,可以将其设为90。4.2.6 交叉线的通过由于在规定的赛道上有十字交叉线,如果不对智能车进行调整,智能车走任何一条轨迹都是有可能的。因此,有必要对该情况进行判别。如上文介绍,路面信息经过采样后,放在_result7数组里,里面的元素为0和1,分别对应的是黑线和白色跑道的采样结果。根据传感器的设计和弯道的大小,最多只有两个传感器检测到黑线,即_result7数组中,最多只会出现2个0,根据这个特点,可以认为当该数组中出现3个或3个以上的0时,传感器采样到了交叉线,那么对该次采样的数据,不做任何处理,小车也不做任何调整。如果小车斜着经过交叉线时,没有3个传感器同时检测到黑线,根据传感器排列的优先级,若最左边的传感器先检测白色到黑线的变化,转一个向左的角度,但接着,将是右边
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1