广东工业大学广工一队智能汽车邀请赛设计报告.docx
- 文档编号:25023261
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:37
- 大小:112.51KB
广东工业大学广工一队智能汽车邀请赛设计报告.docx
《广东工业大学广工一队智能汽车邀请赛设计报告.docx》由会员分享,可在线阅读,更多相关《广东工业大学广工一队智能汽车邀请赛设计报告.docx(37页珍藏版)》请在冰豆网上搜索。
广东工业大学广工一队智能汽车邀请赛设计报告
摘要:
2
第一章引言1
第二章方案选择3
2.1系统硬件框图3
2.2黑线识别传感器的选择3
2.3电机驱动的选择5
2.4速度检测传感器的选择6
2.5稳压电源的选择6
2.6软件运行平台的选择7
2.6.1简述7
2.6.2操作系统的选择:
7
2.6.3使用UCOS的优越性:
8
第三章功能实现原理以及算法9
3.1速度测量的原理及方法9
3.2黑线检测的原理及方法9
3.3路径走向预测原理及方法11
3.4加减速机构的原理及方法13
3.5转弯角度控制原理及方法14
3.6容错性15
第四章小车的制作和参数17
4.1模型车机械部分安装及改造17
4.2使用单片机的硬件资源17
4.3硬件参数17
4.4实跑数据18
第五章结论19
参考文献21
附录A23
1、系统任务调度23
2、UCOS的移植程序24
3、部分核心程序26
摘要
本系统使用了FreeScale的16位单片机MC9S12DG128作为主控芯片,嵌入UCOS操作系统作为小车的应用软件运行平台,运行稳定,调试快捷,使用IRF540驱动电机,利用红外发射接收管作为的路径识别传感器,充分利用单片机的片上资源,使用LCD显示路径信息数据以及键盘输入进行相关参数设置。
关键词:
MC9S12DG128、UCOS操作系统、IRF540驱动电机、红外发射接收管
Abstract:
Thesystemused16bitMC9S12DG128FreeScaleMCUandembeddedUCOSoperatingsystemastheapplicationsoftwareoperatingplatform,Itcanmaketheoperatingstabilityanddebuggingfast,drivenelectricaluseIRF540,useinfraredlaunchreceptionofLEDtoidentificationthetrails,andmakefulluseoftheresourcesonthechip.TheuseofanLCDdisplaystrailsinformationandkeyboardisusedtosetuprelatedparameters.
Keywords:
MC9S12DG128UCOSoperatingsystemIRF540infraredlaunchreceptionofLED
第一章引言
本智能小车采用了飞思卡尔公司的S12DG128单片机作为主控芯片,内嵌入UCOS操作系统为程序设计提供基本软件平台。
LM2575则为其提供稳定的+5V电压。
使用了较为便宜的红外发射接收管作为黑线位置的检测,使用片上AD模数转换进行数据的采集。
从而可以进行识别路径。
电机驱动采用的是IRF540,还使用了霍尔元件来测量速度,相关的信息在128*64LCD模块上显示,为收集到现场调试的数据提供了很好人机界面。
本报告分成四章,第一章引言部分主要介绍智能汽车制作基本情况,第二章:
简述制作过程的方案选择.例如:
黑线识别传感器的方案选择,软件运行平台的选择,电机驱动方案的选择等等,通过对各种的方案的比较分析,选取最适合设计方案.第三章:
功能实现原理以及算法,是智能汽车设计的重点及难点.讲述各种控制算法原理及实现的方法。
如:
黑线检测,路径走向预测,加减速机构,转弯角度控制,数据的容错性控制等等原理及方法。
第四章:
综述:
综合简述了在智能汽车制作调试过程所遇到的问题及解决的方法。
在一个多月的时间内,经过队员的共同努力下,智能汽车制作终于完成。
希望通过这份报告,我们队的智能汽车的制作经验对大家有所帮助。
由于时间仓促,不当之处恳请读者指正。
第二章方案选择
2.1系统硬件框图
系统硬件电路原理图如下图所示。
主要包括MC9S12DT128单片机最小系统、路况采集模块、速度检测模块、稳压电源模块、电机驱动模块、数据显示模块、键盘输入。
2.2黑线识别传感器的选择
(1)使用红外发射接收管来检测黑线:
用红外发射管发射红外线,经过赛道的反射回来,由于白纸和黑线吸收红外线的强度不同,不同位置上的红外接收管接收到强弱不同的红外光,因此可以判断出黑线相对小车的位置。
这种检测的方法明显的优点是检测速度快,检测的方法简单,成本相对低廉。
但是比赛规定传感器不能超过16个,这样就限制了水平分辨率。
不能精确的分辨黑线的位置,同时也许垂直分辨率可能只有一线,不能很好的预测路径的走线。
总的来说使用这种方法优点很明显,缺点也很明显。
(2)使用线阵的ccd图象传感器:
由于线阵的ccd图象传感器水平分辨率很高,虽然垂直分辨率只有一线,但是可以克服红外发射接收管水平分辨率低的问题,当然成本会很高,处理数据量也比红外发射接收管的增大了很多,检测速度比红外发射接收管慢,但不影响正常使用。
(3)使用面阵的ccd图象传感器:
面阵的ccd图象传感器成象是一个平面,无论是水平分辨率还是垂直分辨率都很高,识别上具有很大的优势,可以做到提前预测路径,是最理想的路径检测传感器;但是数据量比前两种方案都大很多,单片机的速度不经超频难以胜任(比赛规定不可以使用辅助处理器)。
这样稳定性可能因超频而降低了。
同时因为小车的移动引起传感器的摆动,可能会影响成象的准确,需要使用软件的特殊处理,更加加剧了单片机的负担。
仔细分析红外可以通过软件处理的方法把水平分辨率致少可以提高一倍,13对红外发射接收管利用细分的方法可以得到25个检测点(长度是22厘米),这个分辨率用在路面黑线位置的检测也够了。
路径的走向检测可以通过加快检测的频率,联合当前和前面的数据处理并做出判断,事实上这个效果非常好,只要红外探测的距离足够远,路径的变化还是可以预测的,但是这种由于没有摄象头预测距离那么远、那么精确,只能知道当前的状态,此后需要试探式前进,这样试探的算法变的非常重要。
总的来说使用红外发射接收管来检测黑线这个方案具有其他两种所不具有的优势:
廉价、快速、算法简单。
因此我们选择了方案
(1)。
图2.2红外发射驱动电路
图2.3红外接收电路
2.3电机驱动的选择
电机的驱动可以使用专用的电机驱动芯片、达林顿管驱动、场效应管驱动。
和小车配送来的电机驱动芯片MC33886,内部具有过流保护电路,刹车效应好,接口简单易用,虽然能够提供比较大的驱动电流,但对于小车骤然加速时所需的电流还是不够的,发热量也比较大,若使用达林顿管作驱动管,其等效电阻
也相对比较大,发热量也会比较大,不利于电机转速的骤起骤降驱动,使用场效应管作为驱动管,其导通电阻可以达到毫欧级,且可以提供强大驱动电流,但要另外需要加制动电路,考虑到要小车起动越快越好这一主要因素,最后选用场效应管做驱动电路,再另外加一个制动电路,电路如图2.4所示:
图2.4电机驱动电路
2.4速度检测传感器的选择
考虑到小车在加速和减速时可能会出现轮胎与赛道打滑的现象,就采用检测被动轮的转速作为小车的当前速度。
速度检测的方法主要有透射光栅轮检测、霍尔开关检测。
透射光栅轮的栅距比较小,对速度的反应很灵敏,精度比较高,速度的实时检测比较好,但是由于小车车身的结构比较复杂,很难安装在前面两个被动轮上检测速度,实现难度很大。
霍尔开关的开关速度比较快,精度容易调节(只需调节小磁铁块的个数与间距),安装方便,磁铁可以直接安装在车轮上,安装难度相对比较容易,由于小车的速度不是很快,完全可以满足小车速度的测量。
综合以上两种传感器的优缺点,设计中采用霍尔开关来测量速度。
元件如图2.5所示。
图2.5霍尔开关接线图
2.5稳压电源的选择
提供单片机电源的常用电源稳压芯片是7805,因为它具有外围元件简单,价格便宜的优点。
但是,从实际使用的场合来考虑,小车的电源只7.5伏左右,一但电压下降到7伏以下时,7805输出的5伏稳压就难以保证,造成单片机的复位;使用开关稳压管LM2575来输出5伏稳压,稳压管的输入电压可以下降到6.5伏还可以稳出5伏的电压,考虑到小车电机的驱动电流比较大,优其是在小车的起动与加速时,可能会造成电池比较大的输出压降。
考虑到这一点,LM2575是最佳的选择。
图2.6LM2575稳压电路
2.6软件运行平台的选择
2.6.1简述
本设计采用UCOS2.26嵌入操作系统作为应用程序的设计的基本平台。
使得应用程序的编写变得简易。
降低了程序的维护难度,而且满足小车控制的实时性的要求。
2.6.2小节主要介绍的是本次智能小车系统设计过程中,是否使用嵌入式操作,选择哪个嵌入式的操作系统。
2.6.3小节介绍使用UCOS操作平台的所体现出来的优越性。
2.6.2操作系统的选择:
本小节主要是比较分析使用操作系统与没有使用操作系统的优劣性。
结合本次智能小车系统的设计的难度及片上资源的情况。
决定选择嵌入式操作系统UCOS。
在没有嵌入式操作系统的情况下,可以减少ROM和RAM的资源的消耗,但程序的编写变得复杂,程序顺序流难以控制。
加大了调试难度,一旦程序出错,检错困难使得程序员难以集中精力编写算法程序。
而且团队的分工合作难以谐调。
功能程序的添加以及应用更新会造成全局的影响难以预见。
使用操作系统时,大大地提高了开发的效率及开发的周期。
如当中断发生时,可以由系统自己高效地保护现场CPU寄存器组。
还可以支持中断嵌套,这样,程序员不必理会程序的顺序流的保护,控制及断点的恢复等等操作。
可以把按完成某些功能划分任务,通过设置任务的优先级及任务的调试机制,可以高效地控制应用程序的顺序流的控制。
降低编程的难度,提高系统的性能,便于程序代码的测试,同时可以把HS12的功能模块当作系统的驱动程序。
然后经过测试稳定达到要求后,可以直接的挂接到系统上去,这样就减少各个功能模块之间的出错的干扰。
编程员不必理会底层驱动程序编写情况,直接可以调用底层功能模块提供的API接口函数及操作系统提供的函数便可以控制好程序的顺序流的设计,所以选择操作系统作为软件的基本平台。
在众多的嵌入式操作系统中(如Vxwork,UCOS,ucLinux)中,UCOS内核小,代码开放,移植的难度低,而且网上有很关于UCOS移植的成功例子。
对硬件的资源要求比较低。
具有较好的可裁剪性,UCOS操作系统内核可以经过裁剪到最小只有2K左右。
RAM占用量要视任务的个数,任务栈大小设置及事件控制块的个数等等而定。
HS12内部有128KB的FlashROM,2KBEEPROM,8KB的RAM,所以结合HCS12片上资源,移植嵌入操作系统UCOS2.26。
消耗片上ROM,RAM资源是非常少的,根本上不会造成的内存资源的紧张。
选择UCOS2.26版本的嵌入式操作作为本次系统设计的软件基本平台。
2.6.3使用UCOS的优越性:
UCOS是一个基于优先级的可剥夺型的实时多任务内核,95%以上的代码用C语言编写,可移植性好,该内核简单易懂。
对于小系统的设计尤为适合。
结合S12片上资源,其优越性主要表现为以下的几点:
(1)任务切换速度快,经测试,任务的之间的切换时间为400—460个CPU时钟周期,如果使用CPU的时钟周期为f=48MHZ,一次的任务的切换只需:
8.4---9.6us足以高效地控制小车的实时性能。
(2)提高了开发的效率及开发的周期,降低应用程序的复杂性。
增强了系统的可维护性,可以按照任务模块修改当前任务的程序而不影响其它任务的程序,使得队员之间的分工合作谐调。
只需编写或修改更新自己的功能模块程序。
无需关心功能模块的编写情况
所以选择UCOS嵌入式操作系统是最为适合不过了。
第三章功能实现原理以及算法
3.1速度测量的原理及方法经过测量车轮胎的周长为17厘米,所以把一个圆周分成17份,通过霍尔传感器,小车每前进一厘米产生一个上升沿的方波脉冲输出。
使用HS12上的输入捕捉功能对输入脉冲进行二次的捕捉后。
计算出二次脉冲之间的时间t,从而可以较精确地计算出速度v=1/t(cm/s)。
3.2黑线检测的原理及方法
黑色的物体对红外线的吸收比白色物体强很多,利用这个特性,通过红外接收管接收经路面发射回来的红外发射管发出的光线的强度不同,可以判断出黑线还是白纸。
在这个过程中遇到的问题主要有:
如何消除红外管发射接收管的邻近干扰;如何消除环境光线强度对接收管的干扰;如何解决功耗过大的问题;如何提高分辨率。
减少红外管发射接收管的邻近干扰可以使用黑色的空心套管套住红外接收管的来减少邻近红外发射管的影响,在一个是选用直线性好的线性红外发射管。
这是在硬件上减少干扰的方法。
但是实际操作中发现干扰依然很大,原因是黑色的空心套管的长度受到限制。
这样就只能求助于软件了,具体是红外发射管不是同时点亮,而是隔足够远的距离的两个发射管同时点亮。
这样就可以把邻近干扰降到最底了。
实际测量中使用1.6cm长,直径为3mm的黑色套管套住红外接收管时,发射管发射的红外线对相隔一个管的红外接收的干扰几乎已经很小了。
功耗过大的问题主要是为了减少接收电路的复杂性,没有使用放大器对接收管输出进行放大,而是通过提高发射管的发射功率来获得更高的接收灵敏度。
上面提到红外管发射接收管的邻近干扰问题时已经提出不能同时点亮所有的发射管了。
所以采用轮流驱动的方式既可以减少临近干扰,又可以降低功耗,一举两得。
红外接收管从有接收到红外线到饱和稳定需要一定的时延,为了缩短处理时间,可以采用预亮的方法。
所以对13对红外发射接收管编码后,轮流驱动顺序:
第一次:
亮:
1、8预亮:
5、12延时a/d转换1、8
第二次:
亮:
5、12预亮:
2、9延时a/d转换5、12
第三次:
亮:
2、9预亮:
6、13延时a/d转换2、9
第四次:
亮:
6、13预亮:
3、10延时a/d转换6、13
第五次:
亮:
3、10预亮:
7延时a/d转换3、10
第六次:
亮:
7预亮:
4、11延时a/d转换7
第七次:
亮:
4、11延时a/d转换4、11
环境光线强度对接收管影响很大,特别是在阳光很充足的白天。
消除这种干扰可以用交流调制的方法,但是我们面临的将是庞大而复杂的硬件电路和功耗的上升。
还有一种方法就是用直流驱动,比较接收电路输出的电平,根据环境的不同而设定不同的比较门限电压。
这样比调制的抗干扰性能差,而且比较麻烦。
但是如果用a/d转换器采样了接收电路的输出电平后用软件滤波后再作比较处理,对提高抗干扰性能是一个不错的方法。
在s12dg128里有16个通道的a/d转换器,足够用了,这样不但节省了硬件,还降低了功耗,充分利用了s12dg128里的资源。
提高分辨率使用了细分的方法,可以把检测的有效点数提高到红外发射管个数的两倍,例如使用了13对红外传感器可以检测25个有效点。
3.3路径走向预测原理及方法
描述路径的变化可以用两个描述量来表示:
一个是路径的抖动强度,应用数字PID位置型控制算法的思想,先对小车现在检测到的路径位置与前几次走过的路径位置求差值,把差值放大后进行累加,然后再减去一个衰减常数,得到了小车走过的一段距离内车子前进方向与路径摆动的强度,这种路径的抖动强度说明了小车是否进入了蛇行走线的状态或者小车遇上了弯道。
当路径变化很快时,由于衰减常数比变化值小,就会在短路程内把数据累加得很大,当超过一定值的时候就可以认为小车处在了危险状态。
如果小车是处在蛇行走线的状态时,速度过高了会进入恶性循环,最终小车会完全偏离黑线,冲出跑道。
所以路径的抖动强度可以检测小车是否进入这种危险状态,需不需要启动平复程序把速度降到安全范围内。
另个是路径偏离小车前进方向的速度。
同样是应用数字PID位置型控制算法的思想,与路径的抖动强度不同的是只对路径偏离小车前进方向的单一方向置求差值、放大、累加、衰减。
这样就描述了路径向单一方向偏离的速度,当弯度越大,在单位路程内路径偏离就越大,经过累加衰减后的值也越大,那么偏离的速度就越大,偏离的速度事实上知道了拐弯弯度的大小。
这个量通知了转弯控制程序和加减速控制程序要作出什么样的动作。
现在知道了如何描述小车的状态量的方法,程序如图3.7程序流程图所示
3.4加减速机构的原理及方法
加减速的性能是直接影响小车的速度的。
加速不能突然把控制速度的PWM的占空比加太多,要不可能出现打滑,导致小车旋转,这样是一个很危险的动作,直接危害小车的安全,另一方面如果加得不够迅速的话又会使小车加速太慢而影响速度,所以需要有一个柔性加速的过程。
但描述一个速度的加减不应该是精确的,是不确定的,要适应不同的路径就只能用模糊的控制方法,根据小车的状态来加减速。
运用数字PID位置型控制算法已经知道了当前的路况,而综合数字PID增量型控制算法得到了将要转动的角度,事实上现在我们根据当前速度就已经知道了要加速还是要减速了。
对于加速我们发现用单位距离触发加速程序明显比用时间来触发平稳得多,而加速性能毫不逊色。
结合当前速度和黑线所处的位置来决定控制电机PWM的占空比要加多少。
现在小车外部捕捉中断是小车每走1cm中断一次的,如果当前速度是150cm/s,黑线的位置处在中心附近,那么我们可以大胆加速,每次增加1.25%的PWM的占空比,加起速来平缓迅速而且不出现打滑,这就是我们简单的柔性加速控制的想法。
这样和速度联系的相当紧密,要不然速度很慢的时候,加速也会很慢,同样影响速度,所以设定一个与速度相关的初始占空比更好一点,这样可以祢补速度慢,加速慢的缺点。
减速性能越好,就越能保证越高的速度速入弯,相当于提升了小车的最高速度。
在减速过程中要不断监控速度,因为速度不能减得太低,太低了不会严重影响减速后的起动,不利于小车行走的速度的增加。
总之减速的程度与跑道的弯度很大关系,能把弯度预测的越准确,提前得越早,小车过弯的速度也越快。
当然减速还要结合当前的速度,如果在安全的速度之下就没必要减速了,如果远低于安全速度还应该要加速。
图3.8的流程图是由小车走1cm的距离触发一次的,当中断来到的时候触发一个UCOS任务,在任务中调度这个函数,完成一个循环。
3.5转弯角度控制原理及方法
给舵机输入一个固定频率不同占空比的PWM,舵机会转过不同角度,但毕竟舵机反应的速度是比较慢的,这就需要用软件来祢补硬件的不足了,最基本的一点是当速度足够慢的时候,舵机是可以反应过来的。
小车在行进中要不断的调整前轮的转向,在路径波动强度较低的时候,不能突然地改变转向太多,特别是高速的时候,这样会引起小车走蛇型线的。
为了在直线行走的时候避免走蛇行线,转弯控制需要加上柔性控制。
越是靠近小车的中心轴,角度的改变的比例就越小,可以分成几个区间,根据黑线的位置,靠近小车的中心轴的改变得平缓一点,远离小车的中心轴的改变得剧烈一点。
这样得到了基本的转弯角度。
上面所描述的控制还是太粗略,在实际应用中还是不够的,这就要应用到数字PID增量型控制算法了,把从当前的控制数据当成前面的控制数据处理后的动作反馈回来的信号,经过比较,发现如果没有达到或者超过预想的效果的话,就增加或者是减少,形成了图3.9流程图中的加速处理输出和回转角度输出,这样在送进柔性处理程序里,得到结合路径的当前位置得到了更加合理的转角输出。
3.6容错性
在路径是数据采集过程中,开辟了一个循环的字符型数组,把每次的路径处理结果添加到数组里,小车的动作执行程序就根据数组里的数据执行相应的动作。
当检测出错,例如检测到的是全部是亮点,或者是不连续的的黑点,有或者是很长的连续黑点,这些都属于出错,新添进数组里的数据和上次不变。
第四章小车的制作和参数
4.1模型车机械部分安装及改造
对于模型车的组装是根据模型车的装配图按需要将主要部件组装起来,首先调节好小车前轮的后倾角,使小车直线行驶时能够保持稳定;再调节好小车前轮的外倾角和前束角,使小车转变轻便自如;为了使小车在行驶时更加稳定,在装配后轮时,我们选用了使小车车身最低的零部件。
从测量小车实时速度的角度来考虑,测速传感器安装在从动轮上是最佳的选择,因为如果装在后轮上,在加减速时轮胎与赛道可能会出现打滑的现象,测出来的速度就不准确了。
所以速度传感器就装在前轮上。
要想提高小车的速度和转变性能就要预知前面的路况,因为我们用的是红外线探测路径的方法,所以传感器探测点越前越好,再将传感器的高度和前向倾角增大,探测到的距离就更远了。
4.2使用单片机的硬件资源
本系统充分利用了S12DG128单片机上功能模块资源,使用ATD功能模块中13路A/D模数转换对红外接收管接收到信号的电平强弱进行A/D转换,简化了光电检测电路。
采用ECT模块中的(ModulusDown-Counter)减数计数器作为UCOS系统时钟,使用ICO输入捕捉功能模块为小车提供较为精确的速度测量。
2路的PWM输出可调脉冲波形控制舵机的转向角和电机的驱动。
充分利用片上IO引脚,使用了25个IO引脚控制红外发射接收管的开关以及LCD,键盘输入输出端口
4.3硬件参数
a)模型车改造后的重量约1.5kg,车身长35cm,宽20cm,高度13.5cm,
车模所用的电池标称容量为2000mAH。
b)表A.1系统功耗
负载强度
轻负载
中等负载
重负载
电池电压(V)
7.71
7.55
7.41
电流强度(A)
1.91
2.56
3.28
功耗(W)
14.73
19.33
24.30
c)所用电容总容量约为1500uF。
d)所用传感器有红外发射接收对管和霍尔开关管两种,红外发射接收对管共用了13对,霍尔开关管用了1个
e)只用到车模原有的驱动电机、舵机。
f)赛道信息检测精度可达0.83cm(20cm内分布25个点),检测频率为每厘米一次。
4.4实跑数据
在根据韩国赛道参数做出来的二维平面跑道中,我们测下了如下的记录:
表4.1小车实跑数据
圈次
1
2
3
4
5
出道次数
0
0
0
0
1
一圈的时间(s)
14.57
14.21
14.37
14.60
14.94
由上面的数据和实际观察中,我得出了这样的结论:
小车在直线跑道中,如果晃动的幅度比较大,和次数较多的话,小车的速度就很难提得上来;其中小车在拐弯的时候最容易摔出跑道,所以在转弯的时候,小车一定要能刹得住车才可能顺利走出跑道,还有在进入蛇形路线的前进中,小车的进入角度犹其重要,一旦角度过偏的话,就很容易冲出跑道,增加所用的时间。
第五章结论
现在智能小车的设计已经告一个段落,回顾设计过程的诸多辛酸,不由舒心地笑起来。
确实设计过程中问题重重,首先遇到的是路径检测传感器的邻近干扰,功耗过大的问题,在我们队员共同努力之下,很好的解决了这个问题,详细请看第三章的功能实现与算法。
在传感器问题解决之后遇到了速度与转弯的矛盾,速度高了,转弯就来不急,要顺利的转弯速度却上不去,为了协调这个问题,必须找到哪里是直线,哪里是弯道,在直线上跑的速度要快,而在弯道上跑的速度要慢,最后发现可以用两种变量描述,一种是路径的波动强度,一种是路径的偏离速度,详细请看第三章的功能实现与算法。
而我们觉得最难解决的问题是如何实现柔性转弯和柔性加速,这个结合了模糊控制的方法,成功的解决了。
还有一点我们觉得使用了UCOS作为软件的运行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 广东工业大学 一队 智能 汽车 邀请赛 设计 报告