收藏 分享(赏)

三江学院三江摄像头2队(新).doc

上传人:nanchangxurui 文档编号:6832050 上传时间:2022-08-17 格式:DOC 页数:43 大小:1.82MB
下载 相关 举报
三江学院三江摄像头2队(新).doc_第1页
第1页 / 共43页
三江学院三江摄像头2队(新).doc_第2页
第2页 / 共43页
三江学院三江摄像头2队(新).doc_第3页
第3页 / 共43页
三江学院三江摄像头2队(新).doc_第4页
第4页 / 共43页
三江学院三江摄像头2队(新).doc_第5页
第5页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第三届全国大学生智能车竞赛技术报告第三届“飞思卡尔”杯全国大学生智能汽车邀请赛技 术 报 告学 校: 三江学院队伍名称: 三江摄像头2队参赛队员: 邢小强 汤佩和 金寅锋带队教师: 杨正理 孙书芳关于技术报告和研究论文使用授权的说明本人完全了解第二届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名: 带队教师签名: 日 期: 目录目录III第一章 引言11.1大赛背景

2、和概况11.2智能车应用前景1第二章 赛车整体设计思路22.1系统设计方案要求、目标22.2系统硬件结构22.3系统软件结构3第三章 赛车机械部分设计53.1 车体结构设计53.1.1 前轮倾角的调整53.1.2 后轮差速机构调整63.1.3 舵机的安装方式63.1.4 摄像头的固定73.2 测速模块设计与安装83.3主板的安装9第四章 系统硬件电路设计104.1 S12微控制器的组成104.2电机驱动电路模块104.3图像处理模块124.4电源模块14第五章 软件设计方案175.1图像采集和数据处理175.2速度控制195.2.1 速度传感器模块195.2.2 速度检测的初始化及速度获取20

3、5.2.3 速度的控制205.3舵机转向控制215.4起始线的识别22第六章 赛车调试236.1软件调试平台CodeWarrior236.2 CodeWarrior IDE基本使用方法24第七章 模型车的主要技术参数27第八章 结论28参考文献29附件A程序源代码3040第一章 引言1.1大赛背景和概况“飞思卡尔”杯全国大学生智能汽车竞赛是由教育部高等学校自动化专业教学指导分委员会主办,飞思卡尔半导体公司协办的全国性的比赛。与以往的专业竞赛不同,智能车大赛是以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科交叉的科技创新比赛,已经成为各高校展示科研成

4、果和学生实践能力的重要途径,同时也为社会选拔优秀的创新人才提供了重要平台。第三届“飞思卡尔”杯全国大学生智能汽车竞赛于2008年7月中旬举行分区比赛,8月上旬举行全国总决赛。竞赛内容包括:以飞思卡尔HCS12单片机为核心控制模块,以CCD或光电检测元件检测赛道引导线,引导改装后的模型汽车以最快的速度按照大赛组委会所设定的赛道行进,以赛车在最短时间跑完全程的队为优胜队。该竞赛是涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科的科技创意性比赛,极具挑战性与竞争性。 该比赛已经列入教育部主办的全国大学生五大竞赛之一。1.2智能车应用前景智能车要实现在城市繁忙道路上完全无人驾驶,尚有

5、很多研究工作要做。但是通过这辆车来研究一些关键技术,并且把它们应用到实际工程中去,还是可行的。譬如在汽车定位、导航中的应用;又如多种传感器信息处理,如果将二维图像与激光雷达的信息融合起来,可以得到更确切的道路或环境的信息;传感器技术和自动驾驶技术可以实现汽车的自适应巡航,辅助人们把车开得又快又稳、安全可靠;汽车夜间行驶时,如果装上红外摄像头,就能实现夜晚的汽车安全辅助驾驶;在仓库、码头、工厂、机关、营房、住宅区或者危险、有毒、有害的工作环境里,自动驾驶或遥控驾驶技术有着广泛的应用前景,如无人值守的巡逻监视、设备的维护修理、物料的运输、消防灭火等等,有单位曾希望他们设计出遥控驾驶的消防车。第二章

6、 赛车整体设计思路2.1系统设计方案要求、目标智能车竞赛所使用的车模是一款带有差速器的后轮驱动模型赛车,由大赛组委会统一提供。通过设计基于Freescale 公司开发的MC9S12DG128单片机的自动控制器控制模型车在封闭的跑道上自主循线运行。自动控制器是以单片机MC9S12DG128为核心,配合有传感器,电机,舵机,电池及相应的驱动电路,它能够自主识别路径,控制模型车高速稳定运行在跑道上。智能车竞赛要求参赛队伍设计一辆以组委会提供的车模为主体的可以在赛道上自主寻线的模型车,比赛成绩为单圈最好成绩。设计自动控制器是制作智能车的核心环节。可靠性是取得成绩的有力保障。在提高车速的同时保证智能车的

7、稳定性。同时尽量简化电路设计,提高灵活性。2.2系统硬件结构按照预计的设计,我们设计出了系统结构图。我们力求在最简的硬件系统上实现我们所要的效果,使得系统更高效。在组委会提供的车模基础上,通过MC9S12DG128采样视频信号,获得图像数据。然后根据图像数据,提取目标指引线。图像采集模块主要有摄像头、S12的A/D模块、外围芯片LM1881和电路组成。舵机模块主要控制智能车的转角。驱动模块用于提供赛车的驱动,主要由MC33886芯片及其电路组成。速度传感器模块由小型光电编码器和ect脉冲捕捉功能构成。提供速度闭环控制。硬件系统结构如图2.1所示。图2.1 硬件系统结构2.3系统软件结构有了系统

8、硬件结构做后盾,通过软件算法给小车注入思想后就可以跑起来了。系统的基本软件流程为:首先,对各功能模块和控制参数进行初始化。然后,通过图像采集模块获取前方赛道的图像数据,然后S12利用边缘检测方法从图像数据中提取赛道黑线,求得赛车与黑线位置的偏差,接着采对舵机进行反馈控制。同时通过速度传感器模块获取赛车的速度。根据检测到的速度,结合速度控制策略,对赛车速度不断进行适当调整,使赛车在符合比赛规则的前提下,沿赛道快速行驶。系统的基本软件结构如图2.2 所示。 图2.2 软件流程图第三章 赛车机械部分设计3.1 车体结构设计此次比赛选用的赛车车模采用1/10 的仿真车模。赛车机械结构只使用竞赛提供车模

9、的底盘部分及转向和驱动部分。控制采用前轮转向,后轮驱动方案。软件程序和控制算法是要在一定的机械结构上才能充分发挥的。所以机械部分不能小视。在对车体的机械结构有了感性认识后,针对具体的设计方案来调整小车的机械结构。3.1.1 前轮倾角的调整前轮是转向轮,它的安装位置由主销内倾、主销后倾、前轮外倾和前轮前束等4 个项目决定,反映了转向轮、主销和前轴等三者在车架上的位置关系。主销内倾是指主销装在前轴略向内倾斜的角度,它的作用是使前轮自动回正。角度越大前轮自动回正的作用就越强烈,但转向时也越费力,轮胎磨损增大;反之,角度越小前轮自动回正的作用就越弱。主销后倾是指主销装在前轴,上端略向后倾斜的角度。它使

10、车辆转弯时产生的离心力所形成的力矩方向与车轮偏转方向相反,迫使车轮偏转后自动恢复到原来的中间位置上。由此,主销后倾角越大,车速越高,前轮稳定性也愈好。主销内倾和主销后倾都有使汽车转向自动回正,保持直线行驶的功能。不同之处是主销内倾的回正与车速无关,主销后倾的回正与车速有关,因此高速时后倾的回正作用大,低速时内倾的回正作用大。前轮外倾角对汽车的转弯性能有直接影响,它的作用是提高前轮的转向安全性和转向操纵的轻便性。前轮外倾角俗称“外八字”,如果车轮垂直地面一旦满载就易产生变形,可能引起车轮上部向内倾侧,导致车轮联接件损坏。所谓前束是指两轮之间的后距离数值与前距离数值之差,也指前轮中心线与纵向中心线

11、的夹角。前轮前束的作用是保证汽车的行驶性能,减少轮胎的磨损。前轮在滚动时,其惯性力会自然将轮胎向内偏斜,如果前束适当,轮胎滚动时的偏斜方向就会抵消,轮胎内外侧磨损的现象会减少。3.1.2 后轮差速机构调整当赛车在正常过弯时 (假设无转向不足亦无转向过度),4 个轮子的转速皆不相同,依序为:外侧前轮外侧后轮内侧前轮内侧后轮。此次所使用车模配备的是后轮差速机构。差速器的特性是:阻力越大的一侧,驱动齿轮的转速越低;而阻力越小的一侧,驱动齿轮的转速越高。以此次使用的后轮差速器为例,在过弯时,因外侧后轮轮胎所遇的阻力较小,轮速便较高;而内侧后轮轮胎所遇的阻力较大,轮速便较低。 差速器的调整中要注意滚珠轮

12、盘间的间隙,过松过紧都会使差速器性能降低,转弯时阻力小的车轮会打滑,从而影响车模的过弯性能。好的差速机构,应该在电机不转的情况下,右轮向前转过的角度与左轮向后转过的角度近似相等,不会有迟滞或者过转动的情况发生。调整的原则是:两传动齿轮轴保持平行, 齿轮间的配合间隙要合适,过松容易打坏齿轮,过紧又会增加传动阻力,白白浪费动力;传动部分要轻松、顺畅,容易转动,不能有卡住或迟滞现象。电机转动时抓住其中的一只轮子,另一只依然能稍稍转动为佳。3.1.3 舵机的安装方式舵机转向是整个控制系统中延迟较大的一个环节,为了减小此时间常数,通过改变舵机的安装位置,而并非改变舵机本身结构的方法可以提高舵机的响应速度

13、。分析舵机控制转向轮转向的原理可以发现,在相同的舵机转向条件下,转向连杆在舵机一端的连接点离舵机轴心距离越远,转向轮转向变化越快。这相当于增大力臂长度,提高线速度。针对上述特性,将舵机安装做了相关的改动(如图3.1)。这样安装的优点是:1)改变了舵机的力臂,使转向更灵敏2)舵机安装在了正中央,使左右转向基本一致 3)舵机转角更稳定。图3.1 舵机安装方式3.1.4 摄像头的固定摄像头的安装位置应合适选取。安装位置太低,会导致视域不够广阔,影响寻线的有效范围;安装位置太高,导引线会变得过窄而无法被检测到,而且赛车系统会因重心抬高而稳定性变差。摄像头的固定难度较大,摄像头架设的高度较高,要求材料要

14、轻,所占空间小,刚度大,与车模地板连接牢固,摄像头角度可调。摄像头安装必须居中,最好做到可调。摄像头不会过分影响模型车的重心,模型车的总体重心还应该靠后。摄像头角度要在不影响视野的前提下,尽量靠近垂直方向。因为这样可以尽量减小最远点与最近点之间的变形差距,考虑到摄像头的可调性,将摄像头支架分为底座和立杆。这样可调性增加,更加灵活。摄像头安装如下图3.2所示。图3.2摄像头安装方式3.2 测速模块设计与安装为了使得赛车能够平稳地沿着赛道运行,需要控制车速,使赛车在急转弯时速度不至过快而冲出赛道。通过控制驱动电机上的平均电压可以控制车速,但是如果开环控制电机转速,会受很多因素影响,例如电池电压、电

15、机传动摩擦力、道路摩擦力和前轮转向角度等。这些因素会造成赛车运行不稳定。通过速度检测,对车模速度进行闭环反馈控制,即可消除上述各种因素的影响,使得车模运行得更稳定。 车速检测的方式有很多种,例如用测速发电机、转角编码盘、透射式光电检测和霍尔传感器检测。经过对去年测速方案和其它学校方案的比较,本次设计中速度传感器采用的是OMRON公司生产的E6A2-CS3C型光电编码器。它由5-12V的直流供电,安装方式如图3.3所示。速度传感器用螺钉固定在塑料片上,塑料片固定在后轮支架上,这样固定好之后,就有了较高的稳定性。光电编码器上的齿轮是由于原先是没有的,所以是在经过计算后订做的。速度传感器通过后轮轴上

16、的齿轮与电机相连。如图3.3 光电编码器安装位置3.3主板的安装设计时,考虑到底盘已有孔洞及车体上的支架位置,在制PCB板时就留好洞孔。将电路板支起一定高度,应高于减震弹簧以免发生短路。将支柱固定牢,因为在小车的长久跑动过程中由于撞击等因素很有可能会松动。应经常检查,防范发生短路等故障。日常接触的时候也应保护主板,防止器件被碰掉。还有就是容易触碰到的元件在做板时就应当注意将其转移。安装的过程主要考虑其稳定性。第四章 系统硬件电路设计4.1 S12微控制器的组成MC9S12DG128 微控制器采用增强型16 位S12CPU,片内总线是时钟频率最高可达25MHz,片内资源包括128KB 的Flas

17、h 存储器、8KB 的RAM、2KB 的EEPROM;两个异步串行通信接口、两个串行外围接口、一组8 通道的输入捕捉或输出捕捉的增强型捕捉定时器、两组8 通道10 路模数转换器、一组8 通道脉宽调制模块、一个字节数据链路控制器、29 路独立的数字I/O 接口、20 路带中断和唤醒功能的数字I/O 接口、5 个增强型CAN 总线接口,并支持背景调试模式(BDM)。4.2电机驱动电路模块33886 作为一个单片电路H-桥,是理想的功率分流直流马达和双向推力电磁铁控制器.它的集成电路包含内部逻辑控制,电荷泵,门控驱动,及低读选通(on) 金属-氧化物半导体场效应晶体管输出电路.33886 能够控制连

18、续感应直流负载上升到5.0 安培,输出负载脉宽调制( PWM-ed)的频率可达10kHz一个故障状态输出可以报告欠压,短路,过热的情况.两路独立输入控制两个半桥的推拉输出电路的输出. 两个无效输入使H-桥产生三态输出(呈现高阻抗) .33886制定的参数范围是-40CTA125 C、5.0VV+28V。集成电路也可以工作在40V通过降低规定的定额值。集成电路能够在表面安装带散热装置的电源组件.图4.1C33886的一个简单应用电路图4.1 MC33886典型应用电路在使用MC33886时,采用两片并联使用,提高RS380SH的功率,提得提速更快。这样做有两个优点,其一是提高电机的输入电流,增大

19、电机的实际功率,使电机能在不增加动力源的情况下,性能大幅度提高;其二是减小单片MC33886的功耗,MC33886发热现象比较严重,上面须加上一定面积的散热片来缓和一下,在这里用两片MC33886来为同一个电机供能,可以有效地减小单片MC33886的功耗,发热现象也可以得到部分缓解。电路设计如图4.2。MC3386发热问题比较突出,特别是其正反转较为频繁的时候。在使用时在其上面加装散热片,以增大其散热面积。图4.2 C33886驱动电路4.3图像处理模块摄像头的信号经过LM1881视频分离芯片分离出行信号和场信号,场信号代表一个图像开始标志,行信号是DG128进行AD 采集标志。LM1881(

20、如图4.3)是针对电视信号的视频同步分离芯片,它可以直接对电视信号进行同步分离,准确地获得所需的视频图像信号,使用者可根据需要对该同步信号进行时序逻辑控制.图4.3 LM1881应用原理图视频信号中除了包含图像信号之外,还包括了行同步信号、行消隐信号、场同步信号、场消隐信号以及槽脉冲信号、前均衡脉冲、后均衡脉冲等,因此,若要对视频信号进行采集,就必须准确地把握各种信号问的逻辑关系。LM1881就是针对视频信号的同步分离而生产的,LM1881可以从0.52V的标准负极性NTSC制、PAL制、SECAM制视频信号中提取复合同步、场同步、奇偶场识别等信号,这些信号都是图像数字采集所需要的同步信号,由

21、此便确定采集点在哪一场,哪一行。这几种重要的输出信号的时序参看图(4.4)。图4.4 输出信号时序LM1881将视频信号中的行同步脉冲、消隐脉冲和场同步脉冲提取出来,并将它们转换成数字信号交给单片机的I/O口。最后整个采样电路如图4.5所示。图4.5摄像头采样电路4.4电源模块电源管理在整个电路中起着举足轻重的作用,电源芯片选择的好坏直接影响系统能否正常工作。它不仅为单片机提供工作电压,而且为各个控制芯片提供工作电压。因此,电源管理芯片的好坏直接影响系统的稳定性。但由于电机带负荷的大电流特性,直接影响供电电源的质量,进而影响整个系统。从整个系统稳定可靠的角度出发,我们选择了一款低压差芯片TPS

22、7350,该芯片最具特色的优点是当输出电流为100mA时,最大压差只有35mV,只需很少的外围器件就能满足应用要求。此外,充分使用该芯片的复位功能,减少了芯片的使用量,提高了系统的稳定性。电源模块主要包括单片机电源模块、舵机电源模块、摄像头电源模块。图4.6所示是电源管理电路的框图。图4.6 电源管理框图图4.7所示是使用TPS7350为整个智能车系统提供+5V的工作电压的原理图。图4.7 +5V工作电压原理图图4.8所示是使用TPS7350为整个智能车系统提供+6V的工作电压的原理图。图4.8 +6V工作电压原理图第五章 软件设计方案5.1图像采集和数据处理视频信号经过LM1881同步分离,

23、行同步信号接到S12的ECT通道2是上,利用定时器中断对行同步引发的外部中断进行处理;场同步信号接到是S12的T口上。当场信号发生跳变时,对行信号计数器清零。在行中断服务函数中,每来一个行同步则行计数器加1,当行计数等于所需采样行时,开始对此行信号进行AD 转换,直到下一个行同步信号到来。行中断服务函数的流程图如下图5.1所示。图5.1 行中断服务函数的流程图经过实验发现在S12超频在32Hz的情况下,视频信号一行最多能采样到63个点,已经满足跑道的识别精度。在行数的选择上考虑到对起始线的识别,我们提取了15行。图像的采样效果如下:图 5.2 采样数据 从图5.2可以看出黑色的值大概在1B左右

24、,而白色大概在38左右;黑白颜色的值差别比较明显。黑线提取我们采用边缘检测(灰度的跳变),具体的算法思路是:设定一个阀值(白线与黑线值的差),对每一行从左往右相邻两像素值做差(左减右),如果所得的差值大于所设定的阀值,则判定其右的相素点为黑色指引线的左边缘,记录下该相素点的横坐标。如果始终没有检测到大于阀值的情况,则该行的黑色指引的横坐标保持上一场时值。 虽然采用了边缘检测提取黑线,但由于赛道缝隙或其他黑色像点的干扰,会导致某些行的黑线位置发生跳变,为了解决这个问题,增强提取黑线的可靠性,采用了中值滤波对前面获取的黑线位置进行处理。中值滤波的思想是:对于某行的黑线位置,如果它的位置正好在前后两

25、行的中间,则保留原有位置;否则,以这三行中黑线位置居中的代替该行黑线位置。5.2速度控制5.2.1 速度传感器模块为了使得赛车能够平稳地沿着赛道运行,需要控制车速,使赛车在急转弯时速度不至过快而冲出赛道。通过控制驱动电机上的平均电压可以控制车速,但是如果开环控制电机转速,会受很多因素影响,例如电池电压、电机传动摩擦力、道路摩擦力和前轮转向角度等。这些因素会造成赛车运行不稳定。通过速度检测,对车模速度进行闭环反馈控制,即可消除上述各种因素的影响,使得车模运行得更稳定。速度检测我们采用了光电编码器,通过检测一段时间内采集的脉冲数,来达到检测速度的变化。将光电编码器的脉冲输出引脚接到ECT通道2。5

26、.2.2 速度检测的初始化及速度获取通过一段时间内对脉冲数的检测,采用模数计数器向下溢出中断,每20ms采样一次光电编码器输出的脉冲数并同时产生一次中断。因为电编码器是200个脉冲每转,采用了16位计数器,才能达到不会产生计数器益处的情况。其初使化如下: MCFLG_MCZF=1; MCCTL_MODMC=1; /循环计数方式 MCCTL_MCZI=1; MCCTL_MCEN=1;/模数计数器使能 MCCTL_MCPR=3;/设置16分频 MCCNT=40000;/设置中断时间20ms MCCTL_FLMC=1; TIOS_IOS0=0;/设置PT0输入捕捉 TCTL4=0x12; PBCTL

27、_PBEN=1; 每次通过对PACN10值的读取,就可以知道速度的变化情况。5.2.3 速度的控制对速度控制我们采用了bang-bang,让电机稳定在一定的速度下,实际调试时速度的控制效果不错,电机的响应速度很快。为可提高整体的速度,在直道尽力的加快速度,但会带来入弯的时候会冲出的情况,为此我们采用了反向制动,把速度瞬速降低在一个很低的速度,能够顺利的入弯。具体的算法流程图如下:图5.3 算法流程图5.3舵机转向控制根据实际测试,确定了舵机的摆到中心位置时所对应的PWM值steer_center,及左右转向极限所对应的PWM值steer_left和steer_right。舵机转向采用了P控制,

28、根据跑道的曲率变化情况,分别设置不同的P值。首先确定舵机摆到中心位置steer_center时,黑线的的位置car_center。然后根据不同的跑道情况采用PWMDTY01=steer_center+w2*P这个公式进行控制,其w2是所采样到的黑线位置和car_center的差值,P值则根据黑线的曲率变化而设定。对于S道的处理有两种方法:一是把S道和别的跑道区别开来,然后一遇到S道就直接过去,或是尽量在很小摆动的情况下通过S道。第一种方法,我们发现S道不能完全的和别的跑道区别开来,所以就放弃这种方法而选择第二种,通过减小P值来尽量减小在S倒的摆幅,效果比较不错。5.4起始线的识别根据今年的比赛

29、规则,在跑完两圈后赛车需要自动停止在起始线之后三米的赛道内。因此,我们针对起始线提出了识别和处理的方法。要在三米内自动停止,首先要正确的识别起始线。起始线的识别有两中方法:一是在车体前增加红外管;二是直接用摄像头识别。第一种方法要增加较多的红外进行识别,而且实际调试的时候发现其错误识别的概率较高。第二种方法通过对黑线边缘(上升沿和下降沿的)的统计,来判断是否拍到起始线。通过不断的调试,起始线的识别正确率很高。当小车在靠近起始线的过程中,由于起始线的采样频率比较高,会连续几场都看到起始线,这样会使得小车一看到起始线就停止。为了防止这种情况的发生我们采用了积分滤波的方法,通过和原始数据比较达到正确

30、识别起始线,具体算法实现如下:图5.4 起始线算法流程图第六章 赛车调试6.1软件调试平台CodeWarriorCodeWarrior是由Metrowerks 公司提供的专门面向Freescale 所有MCU 与DSP 嵌入式应用开发的软件工具。其中包括集成开发环境IDE、处理器专家、全芯片仿真、可视化参数显示工具、项目工程管理、C 交叉编译器、汇编器、链接器以及调试器。CodeWarrior不仅支持汇编语言,而且支持C、C+和Java高级语言。CodeWarriorIDE支持深入的C语言和汇编语言调试:启动/停止、单步、设置跟踪触发器、校验/修改存储器和C变量、结构与阵列,以及执行其他仿真功

31、能。其中在本设计方案中最为重要的部分就是集成开发环境IDE 以及调试器。仿真调试窗口如图6.1所示。Code Warrior 4.6可以很好方便的完成MCS12DG128B单击的新工程的建立,程序的编写、下载和调试。通过BDM头不仅可以烧写程序,还可以在程序运行时实时查看各参数的值。图6.1 仿真调试窗口6.2 CodeWarrior IDE基本使用方法 运行“开始菜单所有程序Metrowerks CodeWarriorCW12V3.1CodeWarrior IDE”,选择“FileNew”。此后选择MC9S12DG128B,按照提示选取期望的选项。直至建立工程文件。如下:图6.2 建立软件环

32、境过程 打开Start12.c 文件,找到代码#ifdef _HCS12_SERIALMON#define _INITRM (*(volatile unsigned char *) 0x0010)#define _INITRG (*(volatile unsigned char *) 0x0011)#define _INITEE (*(volatile unsigned char *) 0x0012)#endif修改成:/#ifdef _HCS12_SERIALMON#define _INITRM (*(volatile unsigned char *) 0x0010)#define _INI

33、TRG (*(volatile unsigned char *) 0x0011)#define _INITEE (*(volatile unsigned char *) 0x0012)/#endif之所以要进行这个步骤是因为,初始化代码是认为程序中有监控程序的,但是因为我们是使用的bdm 调试工具,所以就不需要监控程序了。如果不注释掉这两条语句,一旦将程序烧写到片内的flash,会发现程序跑不起来,因为初始化过程在等待监控程序的响应,如果没有监控程序,那么程序就会进入死循环的状态。 添加代码:将自己的代码加入到工程文件中。 如果文件编译通过,通过BDM 下载。启动CodeWarrio 4.1

34、自带的Hiwave.exe 程序,该程序一般位于CodeWarrio 4.1 的安装目录“MetrowerksCWfor HCS12X V4.1prog”中,是用来往单片机下载程序和调试单片机的程序。启动后程序界面如图6.1所示。之后运行路径C:Program FilesMetrowerksCW for HCS12X V4.1prog 下的hiwave.exe 文件选择TBDML HCS12,在下拉菜单中选择“set speed”,输入晶振频率16.00,然后这个下拉菜单中会出现“Flash”选项,点击这个选项,出现如下的对话框:图10.6 程序擦除烧写界面在下载自己的程序前应该将板子中已经存

35、在的程序擦除,选择有程序的部分,点击Erase,擦除完成后,点击Load,选择自己所建立工程的文件夹中bin文件夹下后缀为“.abs”的文件,点击打开,下载完成。至此已经基本完成了从程序代码编写和设置过程,到下载烧制进S12 芯片的主要过程;其中也包括程序开发和调试的基本步骤。第七章 模型车的主要技术参数赛车基本参数长30.5cm宽16.0cm高34.0cm车重1.4kg功耗负载大于12W电容总容量554uF传感器CMOS摄像头1个除了车模原有的驱动电机、舵机之外伺服电机个数0赛道信息检测视野范围(近/远)10/60cm频率50Hz第八章 结论本文主要介绍了基于Freescale单片机的智能车

36、设计流程、摄像头寻线方案各个主要模块的工作原理和设计思路。回顾整个设计过程,我们在最初的摄像头头选择和测试上花费了很长时间,不过我们坚信有了一个完美的视角行走才会更加自如。各模块的电路都要经过反复的测试以确定其是否稳定可靠。稳定性对于参赛的小车是至关重要的。另外对于硬件的极好的维护性和可更换性也是一个很值得考虑的方面。在遇到突发情况下尤其体现其优越性。智能车机械部分也是一个很关键的问题,特别是在过弯的情况下体现的尤为突出。车体的抖动和过弯速度比预计慢很大一部分是机械调试的问题。摄像头组的还应注意车体的重心,重心过高对于过弯可能会造成一些不利因素。在这次比赛中,大家的能力有了显著的提高。老师给予

37、的帮助让我们走的更稳。同时在付出汗水的背后是收获的笑脸。参考文献1. 邵贝贝.单片机嵌入式应用的在线开发方法M.北京:清华大学出版社,2004.2. 谭浩强.C语言程序设计M.北京:清华大学出版社,2005.3. 王威等,HCS12微控制器原理及应用 .北京:北京航空航天大学出版社,2007.4. 卓晴,黄开胜,邵贝贝等.学做智能车挑战“飞思卡尔”杯C.北京:北京航空航天大学出版社,2007.附件A程序源代码#include /* common defines and macros */#include /* derivative information */#pragma LINK_INFO

38、 DERIVATIVE mc9s12dg128b#include system.h#include ect.h#include sci.h#include ad.h#include pwm.h#ifndef _SYSTEM_H_#define _SYSTEM_H_#define VALUE 2 /*阀值*/#define VALUE1 23#define ROWCOUNTMIN 65#define ROWCOUNTMAX 325#define ROWCOUNTIMAGE 15#define LINEMIN 5#define LINEMAX 55#define steer_center 2600

39、#define steer_left 2870#define steer_right 2350#define SPEEDMIN 0#define SPEEDMAX 190word rowcount;word rowimage;byte ImageData0LINEMAX;byte ImageDataROWCOUNTIMAGELINEMAX;byte blackwireROWCOUNTIMAGE-1;byte upwireROWCOUNTIMAGE-3;byte A,B,C,K;static char aa7;int pulsecount_low;byte count1=0;byte count

40、2=0;byte ii, jj,mm,kk;void Init_PLL(void);void PortInit(void);short FuzzyLogic(short stand);int pulsecount;int high1;int high ;static byte f1=0,f2=0;static int x1=0,x2=0;#endifvoid Init_PLL(void) /初始化系统时钟,FLASH和EEPROM的工作频率 REFDV=0x03; SYNR=0x07; /system clock=16MHz*(SYNR+1)/(REFDV+1)=32MHz while(0=C

41、RGFLG_LOCK); /wait for 时钟频率稳定锁相环时钟锁定 CLKSEL=0x80; /选定锁相环时钟 FCLKDIV=0x49; ECLKDIV=0x49; /使FLASH和EEPROM的擦除工作频率在200KHz左右 /*端口处理*/ void PortInit(void) DDRT_DDRT1=0;/*场信号输入*/ PERT_PERT1=1; PPST_PPST1=0; PUCR_PUPEE=1; DDRB=0xff;void AD_Init(void) ATD0CTL2=0xC0;/*启动AD转换,转换结束后自动清除CCFx位*/ ATD0CTL3=0x08;/*转换序

42、列长度为1*/ ATD0CTL4=0x81;/*8位转换精度,采样时间为2*AD时钟周期AD转换时间为8Mz*/ ATD0CTL5=0xA0;/*右对齐无符号,单通道采样,通道0*/ ATD0DIEN=0x00;/*禁止数字输入*/ ATD1CTL2=0xc0; ATD1CTL3=0x04; ATD1CTL4=0x83;/87 ATD1CTL5=0xb0; ATD1DIEN=0x00;void ECT_init(void) TIOS_IOS2=0; /设置通道为输入捕捉 TSCR1=0x80;/定时器使使能,正常工作 TSCR2=0x01;/禁止定时器益出中断,预分频系数为2 TFLG1=0x

43、04; TIE_C2I=1; MCFLG_MCZF=1; MCCTL_MODMC=1; /循环计数方式 MCCTL_MCZI=1; MCCTL_MCEN=1;/模数计数器使能 MCCTL_MCPR=3;/设置16分频 MCCNT=40000;/设置中断时间20ms MCCTL_FLMC=1; TIOS_IOS0=0;/设置PT0输入捕捉 TCTL4=0x12; PBCTL_PBEN=1; / TIE_C0I=1; void PWM_OPEN(void) PWME=0x00;/关闭pwm PWMCTL_CON01=1; /PWM01合并为16位输出 PWMPRCLK=0x34;/时钟A=2M,时

44、钟B=4M PWMSCLA=100;/时钟SA=A/(2*100)=10K PWMSCLB=1; /时钟SA=B/(2*1)=2000K PWMCLK=0b00011100; /pwm01-A;pwm23-SB; pwm4-SA; PWMPOL=0xff;/极性位为1 PWMCAE=0x00;/左对齐 PWMPER01=40000;/舵机PWM周期=A/40000=50HZ PWMDTY01=2600;/舵机中心位置 PWME_PWME1=1;/舵机使能 PWMDTY2=110; PWMPER2=200;/电机频率=SB/200=10K PWME_PWME2=1;/电机使能 PWMDTY3=0

45、; PWMPER3=200;/电机频率=SB/200=10K PWME_PWME3=1; /电机使能 PWME_PWME3=1; /*PWMPER4=200; PWMDTY4=100; PWME_PWME4=1;*/ /*SCIopen*/void sciopen(void) SCI0BD=208; SCI0CR1=0; SCI0CR2=0x0c; /*-发射端程序-*/void SciTx(unsigned char text) unsigned char temp; temp=SCI0SR1; /*clear flag*/ while (!(SCI0SR1&0x80); /* wait for output buffer empty */ SCI0DRH=0; SCI0DRL=text;/*-接受端程序-

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 教育专区 > 胎儿教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报