1、第三届“飞思卡尔”杯全国大学生智能汽车邀请赛技 术 报 告附录B:摄像头黑线识别算法和滤波方法学 校: 哈尔滨工程大学队伍名称: 极品飞车1号参赛队员: 孟恭 王璐 齐昭带队教师: 管凤旭 张爱筠关于技术报告和研究论文使用授权的说明本人完全了解第一届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名: 带队教师签名: 日 期: 目录摘 要4第一章 引言51.1 概述51
2、.2 整车设计思路5 1.2.1 控制系统设计5 1.2.2 电源系统设计6第二章 系统硬件设计72.1 传感器选型及安装方案设计7 2.1.1 巡线传感器的选择7 2.1.2 测速传感器的选择82.2 模型车机械设计与实现9 2.2.1 前轮倾角调整9 2.2.2 底盘高度调整19 2.2.3 车身重心调整10 2.2.4 舵机安装102.3 系统电路设计与实现10 2.3.1 电路板设计与制作11 2.3.2 电源管理电路12 2.3.3 图像采集电路13 2.3.4 电机驱动电路16 2.3.5 测速部分设计17第三章 系统软件设计183.1 MC9S12DG128片内资源简介183.2
3、 软件设计与编程18 3.2.1 时钟模块19 3.2.2 PWM模块19 3.2.3 ECT模块20 3.2.4 串口模块21 3.2.5 普通IO模块21第四章 赛车主要技术参数23第五章 结论24 参考文献25附录 A:智能车源程序26附录 B:摄像头黑线识别算法和滤波方法40摘 要本文详细阐述了极品飞车号的总体设计过程以及测试、调试过程。该系统以Freescale16 位单片机MC9S12DG128 作为系统控制处理器,采用基于面阵式CCD传感器的图像采样模块获取赛道图像信息的循线竞速智能车系统,该系统利用MC9S12DG128单片机内部的ECT模块,配合从视频信号中分离出的同步信号,
4、可以将通过硬件二值化后的图像信息存入单片机内部的RAM中,然后通过软件对图像信息进行处理,得到各种路径参数。这种方案解决了图像采集速度和存储数据空间的技术难点,这样不仅保证了所采集数据的准确性,而且提高了采集速度,易于实现系统的实时控制。经测试智能车系统取得了较高的稳定性和速度。测速模块采用稳定可靠的光电码盘测速方式。直流电机采用PI控制算法,实现电机速度快速响应与稳定控制。各功能模块的紧密配合,实现了路径的准确识别、电机的快速响应、舵机的精确控制。本文还对模型车的机械结构调整进行了说明。关键词:飞思卡尔;MC9S12DG128;循线;面阵CCD;二值化第一章 引 言1.1. 概述 为响应教育
5、部关于培养大学生的综合知识运用能力、基本工程实践能力和创新意识,以及倡导理论联系实际、求真务实的学风和团队协作的人文精神号召,我们组队积极参加了第三届“飞思卡尔”杯全国大学生智能汽车邀请赛。从2007年11月开始着手进行准备,历时近8个月。鉴于CCD 传感器视距远、信息丰富的特点以及新技术路线带来的挑战,我们在今年的方案设计中选择了面阵式CCD 传感器,并采用硬件二值化的方法降低图像信息量。这种方案解决了图像采集速度和存储数据空间的技术难点,以在有限计算能力下获得最高的分辨率和赛道中心检测精度这样不仅保证了所采集数据的准确性,而且提高了采集速度,易于实现系统的实时控制,从而使智能车能够满足高速
6、运行下的动力性和稳定性需求,获得了良好的综合性能和赛场表现。本技术报告将针对我们的传感器信号处理设计、安装、底盘参数选择、电路设计、控制算法等方面进行阐述,并列出了模型车的主要技术参数。1.2. 整车设计思路 1.2.1 控制系统设计 该控制系统采用摄像头作为图像采集传感器,智能车共包括一下几个模块: 1)控制芯片MC9S12DG128。作为整个系统的核心部分,S12 单片机负责接收赛道图像数据、智能车当前速度等反馈信息,并对这些信息进行恰当的处理,并产生一定的控制量来对舵机和电机进行控制。2) 图像采集模块.图像采集模块由CCD摄像头、S12 的ECT模块、视频分离芯片LM1881以及相应的
7、辅助电路组成。它的主要功能是获取前方赛道的图像数据,以供S12作进一步分析处理。速度传感器模块由附在驱动齿轮上的黑白间隔的彩带和反射型光电传感器组成,考定时检测反射型光电传感器电脉冲脉冲累积数来间接求得赛车的速度值。3) 电机驱动模块,舵机驱动模块.舵机模块和驱动模块分别用于实现赛车转向和驱动。辅助调试模块主要用于赛车系统的程序烧写,功能调试和测试,赛车状态监控,赛车系统参数和运行策略设置等方面。4) 速度传感模块,采用增量式光电编码器实现对智能车的测速。本赛车系统的结构示意图如图 1.2.1:图1.2.11.2.2 电源系统设计由于在赛车运行过程中车轮摩擦阻力变化频繁,并且加速制动剧烈,从而
8、造成电池负载变化剧烈,输出电压幅度也剧烈变化,所以加强了电池端的滤波。电源系统如图所示: 图1.2.2 电源管理系统第二章 系统硬件设计 2.1 传感器选型及安装方案设计 2.1.1 巡线传感器的选择 方案一:基于光电传感器阵列的智能控制光电传感器的排列方法、个数、彼此之间的间隔都与控制方法密切相关。但一般的认识是:在不受到外部因素影响的前提下,能够感知前方的距离越远,行驶效率越高。由于光电传感器电路板不可能伸出车体太远,因此大多制作者调整了光电传感器电路板与地面的夹角,使光电传感器可以感知更远一点的跑道情况。图2.1.1(a)、图2.1.1(b)是两种典型的光电循迹方案。2.1.1(a)中模
9、型车采用了8对光电传感器且分布得较宽,2.1.1(b中模型车只采用了3对光电传感器,放置在向外伸出的小电路板上,探测的范围较小。具体何种方案合适,与光电传感器扫描前方的距离和宽度以及控制策略密切相关。 在光电循迹方案中,为了得到质量较高的接收信号,一般还附加了由电阻、电容组成的RC高通滤波器。这样就能够一定程度上避免由外部光线因素引起的路线识别不正确问题。有的模型车设计的传感器离地面较远,为了能够接收更多的从发光传感器反射过来的光线,也有使用凸透镜的情况。基于反射式红外传感器的光电传感器阵列的路径检测方法具有较高的可靠性与稳定性,信息更新速度快且易于单片机处理。但是它易受环境光线干扰,而且存在
10、着检测距离近的问题,硬件电路复杂。为了获得远方的信息需要将传感器伸得尽可能远,从而增加了车体高速行驶时的转动惯量,限制了智能车的最高速度。图2.1.1(a) 光电传感器方案(8对) 图2.1.1(b) 光电传感器方案(3对) 方案二:基于线阵CCD传感器的智能控制基于线阵CCD传感器的路径检测方法具有探测距离远(后文将这种前方探测距离称为“前瞻”)的优势,能够尽可能早地感知前方路径信息并进行预判断,实现提前减速过弯。而且这样还能够提高转弯的最高速度。同时还可以结合利用单片机内部的A/D,在小车前方虚拟出24个光电传感器。采用单一传感器,硬件结构简单且高速运行时转动惯量小,从而增加了小车的最高速
11、度。这样不仅能克服传统光电传感器的缺点,又能够精确地感知黑色引导线的位置,为智能车的稳定运行提供保障。但是,在调研过程中我们发现这种线阵摄像头在市场上很少,不易购买。 图2.1.1(c) 使用面阵CCD传感器的智能车 方案三:基于面阵CCD传感器的智能控制 基于黑白面阵CCD传感器的路径检测方法具有以上两种方案的所有优点,同时面阵CCD输出的是复合视频信号,采集到的信息将是前方整个一幅图像。利用S12单片机内部的A/D转换器,并配合从视频信号分离出的同步信号,该单片机可以直接将图像信号采集到其内部的RAM中,然后通过软件对图像信息进行处理。这样不仅可以识别道路的中心位置,同时还可以得到赛路的方
12、向、赛道的曲率等信息。这样可以有效地对车模进行运动控制,提高车模路径跟踪速度和运行速度。但是面阵CCD的延迟比较大(20ms),因此对信息的采集和处理有一定的约束。综合以上分析,为了更多的获得路况信息和取得大的前瞻,本设计选择方案三,并对其进行了改进。2.1.2 测速传感器的选择为了使得智能车能够平稳地沿黑色引导线运行,除了控制前轮转向舵以外,还需要比较精确地控制车速,使智能车在急转弯时不会由于速度过快而冲出跑道。根据自动控制原理可以知道闭环的系统一般比较稳定,通过一定的方法实时测量智能车的速度,从而形成闭环控制,使得智能车更加准确的运行。一般可以采用以下几种测速方法: 方案一:霍尔传感器测速
13、。在后轮的轴附近安装一个霍尔传感器,相对应的再在轴上安装多个小型永磁铁,根据霍尔传感器特点,用一个上拉电阻将其接至5V,随着后轮的转动就会形成多个脉冲信号。根据单位时间内的脉冲数量据可以测得当前车速。方案二:反射式光电管测速。在后轮的轴上安装一个黑白相间的光码盘,然后通过一侧安装的反射式光电管读取光码盘转动的脉冲。方案三:投射式光电管测速。采用具有齿槽结构的圆盘固定的后轴上,采用直射式红外光传感器读取齿槽圆盘的转动脉冲。方案三:光电编码器测速。光电编码器可以分为增量式光电编码器和绝对式光电编码器。增量式光电编码器可以输出正比于转速的脉冲,记录单位时间内的脉冲数就可以间接测取实时速度。鉴于光电编
14、码器安装简单,输出信号比较规整,所以我们采用方案三。2.2 模型车机械设计与实现2.2.1 前轮倾角调整现代汽车在正常行驶过程中,为了使汽车直线行驶稳定,转向轻便,转向后能自动回正,并减少轮胎和转向零件的磨损等,在转向轮,转向节和前轴之间须形成一定的相对安装位置,叫转向车轮定位,也叫前轮定位。前轮定位包括主销后倾(角)、主销内倾(角)、前轮外倾(角)和前轮前束四个内容。这是对两个转向前轮而言,对两个后轮来说也同样存在与后轴之间安装的相对位置,称后轮定位。后轮定位包括车轮外倾(角)和逐个后轮前束。这样前轮定位和后轮定位总起来说叫四轮定位。1. 主销后倾角:主销的轴线相对于车轮的中心线向后倾斜的角
15、度。前轮重心在主销的轴线上由于主销向后倾斜使前轮的重心不在车轮与地面的接触点上,于是产生了离心力,主销后倾形成的离心力,可以保证汽车直线行驶的稳定性还可以帮助车轮自动回正。主销后倾角延长线离地面实际接触越远,车速越高,离心力就越大。后倾角越大,车速越高,车轮偏转后自动回正的能力越强。但回正力矩过大,将会引起前轮回正过猛,加速前轮摆振,并导致转向沉重。通过增加垫片的数量,可以改变主销后倾角。综上所述,智能车采用了23的主销后倾角。2.主销内倾角:主销的轴线相对于车轮的中心线向内倾斜的角度称为主销内倾角。保证汽车直线行驶的稳定性,靠前轴轴荷,也可以帮助车轮自动回正。主销内倾轴线延长线在没超过前轮中
16、心线的前提下,离前轮中心线越近,转向角越大,转向轮抬起的越高,车轮的回正力矩就越大。此外,主销内倾角还使得主销轴线与路面交点到车轮中心平面与地面交线的距离减小,从而减小转向时驾驶员加在方向盘上的力,使转向轻便,同时也可减少从转向轮传到方向盘上的冲击力。但主销内倾角也不宜过大,否则不仅会使车转向变得很沉重,也加速了轮胎的磨损。通常汽车主销内倾角不大于8。3.前轮外倾角:从前后方向看车轮时,轮胎并非垂直安装,而是稍微倾倒呈现“八”字形张开,称为负外倾,而朝反方向张开时称正外倾。如果车轮垂直地面一旦满载就易产生变形,可能引起车轮上部向内倾侧,导致车轮联接件损坏。所以事先将车轮校偏一个外八字角度,这个
17、角度约在1左右。4.前束:前束是指两轮之间的后距离数值与前距离数值之差,也指前轮中心线与纵向中心线的夹角。前轮前束的作用是保证汽车的行驶性能,减少轮胎的磨损。前轮在滚动时,其惯性力会自然将轮胎向内偏斜,如果前束适当,轮胎滚动时的偏斜方向就会抵消,轮胎内外侧磨损的现象会减少。2.2.2 底盘高度调整按照常规,车辆底盘高度越低,车辆重心越低,后轮抓地力越好,前轮转向越敏感。因此在很多赛车比赛中,提高速度有效方法就是降低底盘高度。在前轮转向机构处,增加一块垫片,略微降低了赛车前部的底盘高度,使底盘呈现一种前低后高的倾斜状态。但是地盘过低,会导致智能车在上坡过程中轮胎的悬空,也会导致智能车在赛道上行驶
18、时产生较大的静电,因此,合适选择地盘高度能够有效提高小车的性能。2.2.3 车身重心调整除了对车辆重心纵向的调整之外,车辆重心的前后方向调整,对赛车行驶性能,也有很大的影响。根据车辆运动学理论,车身重心前移,会增加转向,但降低转向的灵敏度(因为大部分重量压在前轮,转向负载增大),同时降低后轮的抓地力;重心后移,会减少转向,但增大转向灵敏度,后轮抓地力也会增加。因此,调整合适的车身重心,让车模更加适应比赛赛道是很关键的。但是由于赛道未知,只能通过舵机转向性能,以及后轮驱动能力,来调整重心,使其适应各种赛道。根据实际调试经验,鉴于当前舵机响应延时比较严重,经常在普通弯角出现转向不足的问题,因此,需
19、要将赛车重心适当前移,增加转向性能。转向灵敏度的降低,只体现在蛇行道上,可以通过算法弥补。通过调整电路板及电池安装位置,可以在不增加车重的情况下,控制车辆重心。以上对车模结构进行的调整,可以增加后轮抓地力,改善前轮转向性能,为小车在赛道上的表现提供了最佳的机械支撑。2.2.4 舵机安装 图2.2.4(a) 图2.2.4(b)我们的舵机采用了中位的固定方法如图2.2.4(a)所示。这样可以使左右转向对称,而且舵机的拆装也较为简便。如果采用偏置的固定方法如图2.2.4(b)所示,虽然结构比较紧凑,比较节省空间,但左右的转向幅度会不同,左右转向不对称,这是程序控制上都无法校正的。2.2 系统电路设计
20、与实现智能车系统是以单片机MC9S12DG128为核心,配合由面阵CCD传感器、光电编码器、直流电机、舵机、电池以及相应的驱动电路构成。总体硬件框图如图所示图2.2 系统整体硬件框图2.3.1 电路板设计与制作为了使得电路更加紧凑、外部引线更少,我们独立设计了一块核心控制电路板。如图2.3.1 所示,电路板上包括了S12 单片机工作所必需的稳压模块、时钟模块和复位模块,同时还包括了视频信号提取电路、电机驱动电路、BDM 调试接口以及其他一些电路。图2.3.1 主板2.3.2 电源管理电路在电源管理电路中,所用电池为电压7.2V,容量1800mAh的六芯镍镉电池组。该电池可以直接给舵机和直流电机
21、供电。而通过稳压至5V给单片机和光电码盘供电,通过DC-DC升压模块给CCD传感器供电。电源管理电路如图所示 图2.3.2(a) 电池滤波 图2.3.2(b) 整车电源系统2.3.3 图像采集电路极品飞车1号采用面阵式CCD摄像头对赛道信息进行采集。对于CCD摄像头的图像采集有一下两种方案可以选择:第一,利用S12单片机内部的A/D转换器,并配合从视频信号分离出的同步信号,该单片机可以直接将图像信号采集到其内部的RAM中,然后通过软件对图像信息进行处理。这样不仅可以识别道路的中心位置,同时还可以得到赛路的方向、赛道的曲率等信息。这样可以有效地对车模进行运动控制,提高车模路径跟踪速度和运行速度。
22、但是面阵CCD的延迟比较大(20ms),因此对信息的采集和处理有一定的约束。第二,利用单片机的增强型捕捉定时器(ECT-Enhanced Capture Timer)模块。通过硬件进行图像的二值化,然后将二值化图像以及通过视频分离芯片LM1881分离出的行同步信号和场同步信号,读入单片机的增强型捕捉定时器(ECT-Enhanced Capture Timer)模块,用中断方式控制ECT采集有效的路况信息。通过比较研究,我们发现在所采集的图像信息中,只需分清黑色的跑道和白色的背景即可。因此,为了降低图像处理难度,可以先把复合视频信号进行二值化处理,即把图像和背景作为分离的二值(0,1)对待。方案
23、一是采用S12单片机的10位A/D转换器采集复合视频信号,同时由同步信号控制采集时序。采集完一场图像后,使用软件设定视频阈值来二值化分割,如公式(1)。 1.1式中,f(x,y)二值化后数据;u(x,y)为原始数据;为阈值。由于单片机的A/D转换器采集速度比较低,进行10位A/D转换需要7us。这样,如果使用这种采集方法,采集的图像每行像素将很少,图像的水平分辨率很低。解决这个问题,我们可以将S12适当超频或降低A/D精度等方式。通过研究视频分离信号,我们得到了一种更简单有效地方法硬件二值化。也就是将复合视频信号通过一个比较器与某个阈值电压比较后的二值化信号,由I/O口读入单片机RAM中。这样
24、就大大减少了图像采集时间,提高了图像采集速度。但是虽然解决了采集时间的问题,可图像数据依然需要占据很大的存储空间。进一步地,如果将二值信号后读入单片机的增强型捕捉定时器(ECT-Enhanced Capture Timer)模块。视频分离芯片LM1881将复合视频信号分离出行同步信号和场同步信号,用中断方式控制ECT采集有效的路况信息。1) 硬件二值化电路 如图所示 图2.3.2(a) 硬件二值化电路在硬件二值化电路中使用电位器分压设定一个电压阈值(3脚),它与复合视频信号(2脚)一起进入电压比较器MAX903,输出端(7脚)即可得到二值化信号。2) 视频分离电路 视频同步信号分离芯片(简称L
25、M1881)可从摄像头信号中提取信号的时序信息,如行同步脉冲、场同步脉冲和奇、偶场信息等,并将它们转换成TTL 电平直接输给单片机的I/O口作控制信号之用LM1881 的端口接线方式如图2.3.2(b)所示 图2.3.2(b) 视频分离芯片LM1881其中,引脚2为视频信号输入端,引脚1为行同步信号输出端,引脚3为场同步信号输出端,当摄像头信号的场同步脉冲到来时,该端将变为低电平,一般维持230us,然后重新变回高电平。引脚7 为奇-偶场同步信号输出端,当摄像头信号处于奇场时,该端为高电平,当处于偶场时,为低电平。事实上,我们不仅可以用场同步信号作为换场的标志,也可以用奇-偶场间的交替作为换场
26、的标志,在本方案中我们没有用到该信号。LM1881信号时序图如图2.3.2(c)所示: 图2.3.2(c) LM1881信号时序图由LM1881 及其外围电路构成的摄像头采样电路如图所示。摄像头视频信号端接LM1881的视频信号输入端,同时也接入MAX903进行硬件二值化。LM1881的行同步信号输出端和场同步信号输出端分别接入S12的PT0和PT1,二值化信号接入S12的PT2。 2.3.2(d)摄像头采样电路2.3.4 电机驱动电路电机驱动使用的是MC33886。由于使用的直流伺服电机堵转时候的最大电流达到17.2A,而一片MC33886芯片提供的最大工作电流为5A,为了提供足够的驱动电流
27、,防止芯片被烧坏或者驱动能力不够而导致系统复位,本设计方案采用了四片驱动芯片脚对脚并联的方式。这样做在提高了驱动能力的同时,降低了发热量,提高了系统的稳定性。电路如图3.4所示。图2.3.4 电机驱动电路2.3.5 测速部分设计由于需要对车进行速度控制,需要将速度信号作为反馈信号返回给控制器,鉴于测速装置的工作稳定性和测速精度,我们采用光电编码器进行测速,由于只需要测速度信号,而不需要测量位移信号,为了便于信号输出,选用500线的增量式光电码盘对车速进行测量。500线的增量式编码盘每秒可以产生500个脉冲,但由于其A,B相可以产生两相正交方波信号,通过硬件的合理设置,可以对码盘进行四倍频,达到
28、2000脉冲每秒,码盘的Z相用于寻找基准零点,在本作品中,只需要测量小车的速度,而不需要测量其位移,所以不需要使用Z相,码盘的输出送入单片机的脉冲计数器中,通过周期性的读取计数器的值,获得速度信息,用计数器值作为速度的度量。第三章 系统软件设计 3.1 MC9S12DG128片内资源简介MC9S12DG128 微控制单元作为MC9S12 系列的16位单片机,由标准片上外围设备组成,包括16位中央处理器、128KB的Flash 存储器、8KB的RAM、2KB的EEPROM、两个异步串行通信接口、两个串行外围接口、一组8通道的输入捕捉或输出捕捉的增强型捕捉定时器、两组8 通道10 路模数转换器、一
29、组8通道脉宽调制模块、一个字节数据链路控制器、29路独立的数字I/O接口、20路带中断和唤醒功能的数字I/O 接口、5个增强型CAN总线接口。同时,单片机内的锁相环电路可使能耗和性能适应具体操作的需要。MC9S12DG128片内资源表如图3.1:图3.1 MC9S12DG128片内资源5.2 软件设计与编程在整个系统设计中,用到了5个单片机基本功能模块:时钟模块、PWM 输出模块、ECT 模块、串口通信模块以及普通IO 模块。根据系统实际需求,对各个模块进行了初始化配置,通过对相应数据寄存器或状态寄存器的读写,实现相应的功能。5.2.1 时钟模块S12 单片机中有四个不同的时钟,即外部晶振时钟
30、、锁相环时钟、总线时钟和内核时钟。 当前电路板采用的是16MHz 的有源晶振,因此外部晶振时钟为16MHz;默认设置下,锁相环时钟为36MHz,总线时钟为8MHz,内核时钟为16MHz。锁相环时钟与外部晶振时钟的倍、分频关系由SYNR、REFDV 两寄存器决定。总线时钟用作片上外围设备的同步,而内核时钟则用作CPU 的同步,它决定了指令执行的速度。时钟模块初始化程序如下:#define PLLTimer 36 / REFDV = 15; SYNR = PLLTimer - 1; while(!CRGFLG_LOCK); /等待系统时钟稳定CLKSEL_PLLSEL = 0x01; /选择PLL
31、时钟作为系统时钟5.2.2 PWM 模块脉宽调制模块有8 路独立的可设置周期和占空比的8 位PWM 通道,每个通道配有专门的计数器。该模块有4 个时钟源,能分别控制8 路信号。通过配置寄存器可设置PWM 的使能与否、每个通道的工作脉冲极性、每个通道输出的对齐方式、时钟源以及使用方式(八个8 位通道还是四个16 位通道)。驱动舵机的PWM信号的频率为50Hz,电机的PWM信号的频率为10KHz,为了提高舵机的响应速度,将舵机的PWM频率增大到100Hz。为了提高控制精度,我们将两路8 位通道合并为一个16 位通道来控制舵机和电机,这样可使舵机和电机的控制精度从1/255 提高到1/65536。P
32、WM 模块的初始化设置过程为: PWME = 0x00; / 关所有输出 PWMPOL = 0xff; PWMPOL_PPOL4 = 1; PWMPOL_PPOL5 = 1; PWMPOL_PPOL2 = 0; PWMPOL_PPOL3 = 0;/ 5通道和3通道两个16位输出通道反向,用于电机控制/ PWMCLK = 0x00; / 选择时钟A,B /* PWMPRCLK寄存器决定了时钟A和时钟B与主频率之间的关系 PCKA2 PCKA1 PCKA0 Value ofClock A 0 0 0 bus clock 0 0 1 bus clock / 2 0 1 0 bus clock / 4
33、 0 1 1 bus clock / 8 1 0 0 bus clock / 16 1 0 1 bus clock / 32 1 1 0 bus clock / 64 1 1 1 bus clock / 128 PCKB2 PCKB1 PCKB0 Value ofClock B 0 0 0 bus clock 0 0 1 bus clock / 2 0 1 0 bus clock / 4 0 1 1 bus clock / 8 1 0 0 bus clock / 16 1 0 1 bus clock / 32 1 1 0 bus clock / 64 1 1 1 bus clock / 128
34、 */ /*A和SA及B和SB之间的换算挂关系Clock SA = Clock A / (2 * PWMSCLA)Clock SB = Clock B / (2 * PWMSCLB)*/ PWMPRCLK = 0x00; / bus clock:40M;Clock A-0分频,Clock B-0分频 PWMCLK_PCLK1 = 1; / 01通道选择Clock SA为时钟源 PWMCLK_PCLK3 = 0; / 23通道选择Clock B为时钟源 PWMCLK_PCLK5 = 0; / 45通道选择Clock A为时钟源 PWMSCLA = 0x08; / Clock SA = Clock
35、 A / ( 2 * PWMSCLA) Clock SA = Clock A / 8 PWMCTL = 0xff; / 将两个8位的PWM输出通道组合成一个16位的PWM输出通道PWMCAE = 0x00; / 所有的PWM输出为左对齐方式输出PWMPER01 = 40000; / 舵机驱动,PWM周期为10MsPWMDTY01 = MIDSERVOMOTORDST; / 舵机初始化,找到中间位置 PWMPER45 = 4000; / 电机驱动PWMDTY45 = 2000; / 电机初始化PWMPER23 = 4000; / 电机驱动PWMDTY23 = 2000; / 电机初始化5.2.4
36、 ECT 模块增强型捕捉定时器模块能实现输入捕捉和输出波形产生两大功能。在最终的方案中,有四路信号输入ECT端口。首先是由视频信号提取芯片(1881)得到的行同步、场同步和由比较器输出的视频二值信号。利用ECT 模块的脉冲捕捉工作方式,可以获得赛道引导线的位置信息,完成数据点的采集。同时,光电码盘的脉冲也通过ECT进行采集,ECT工作于脉冲累加工作方式,这样,通过单位时间内ECT端口得到的脉冲数,可以得到智能车的运行速度。TIE = 0; TIOS = 0; / 所有的端口设置成输入捕获模式TSCR1 = 0x90; / 使能时钟模块,读取数据自动清零/ 设置了三个通道的比较捕获模式:初始化为
37、捕获下降沿TCTL4_EDG0B = 1, TCTL4_EDG0A = 0;TCTL4_EDG1B = 1, TCTL4_EDG1A = 0; TCTL4_EDG2B = 0, TCTL4_EDG2A = 0; TSCR2 = 0x01; / 确定行分辨率 PACTL_PAEN = 1; / 使能脉冲计数器 PACTL_PAOVI = 1; / 使能溢出中断TIE_C0I = 1; / 使能场同步中断5.2.6 串口模块串口通信模块设有两个串行通信接口SCI1 和SCI0。使用时,可以对波特率、数据格式(8 位或9 位)、发送输出极性、接收唤醒方式等进行选择。另外,发送和接收可分开使能,模块中
38、还提供了多种避免传输错误的选项。在本次设计,我们利用其中一个串口SCI0,将所需要的信息通过串口传到上位机上进行必要的处理和分析,以提高调试的效率。串口初始化部分程序:SCI0BD = 0x0041; / 设置出口通信波特率38400 SCI0CR2_RE = 1; / 使能接收 SCI0CR2_RIE = 1; / 使能接收中断SCI0CR2_TE = 1; / 使能发送串口发送程序:while(!SCI0SR1_TDRE); / 等待发送缓冲区空 SCI0DRL = SCI_Data_MSB; while(!SCI0SR1_TDRE); SCI0DRL = SCI_Data_LSB;串口接
39、收程序:while(!SCI0SR1_RDRF); SCI_DATA_REC = SCI0DRL;5.2.7 普通IO根据系统设计,普通IO 的用途主要有:按键(用于选择运行模式)指示灯(用于显示所选择的模式)第四章 赛车主要技术参数 4.1 智能车主要技术参数改造后智能车的主要技术参数如表1所示:表1 模型车最后参数名称/单位参数模型车重量(带电池)/kg1.2模型车长宽高/cm3116.524.5电路功耗/W电容总容量/F约600传感器种类及个数CCD1;光电码盘1除车模原有驱动电机、舵机之外伺服电机个数无赛道信息检测精度跑道信息检测频率50Hz第五章 结论 本设计基于自动控制原理,利用路
40、径识别模块得到的道路偏差使智能车实现循迹跟踪,采用PWM技术控制电机的转速和转向。装备CCD传感器后车速有了更大的提高空间,直线与普通弯道的识别均可以达到预期的效果。通过测试,经过改进的循线竞速智能车性能有了提高。可以展望,以后可以设计记忆算法第一圈匀速稳定行驶将跑道的信息记录下来并处理;第二圈不用路径识别传感器,使用上一次的处理过的记忆信息跑完全程。第二圈时将处理过的用来控制电机和舵机,这样就能够实现:以最大速度冲直道;提前减速入弯并快速加速;甚至直冲蛇形道。这种方法能够最大限度的提高智能车的平均速度,但是它存在着一定的风险很容易冲出跑道,而且需要较高的稳定性。这些都是今后智能车设计制作时的
41、努力方向。参考文献1卓晴.黄开胜.邵贝贝.学做智能车挑战“飞思卡尔”杯.北京:北京航空航天大学出版社,2007.3.2陈伯时。电力拖动自动控制系统运动控制系统.北京:机械工业出版社,2005.3陶永华.新型PID控制及其应用.北京:机械工业出版社,2002.4邵贝贝.单片机嵌入式应用的在线开发方法.北京:清华大学出版社,2004.5王庆有.图像传感器应用技术.北京:电子工业出版社,2003.9.附录A: 智能车源程序#include includes.h/2008年6月18日23:16:43unsigned char No8 = /0 1 2 3 4 5 6 7 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f ;void(*fun8)(void); / 指向函数的指针数组,用于调用选定的函数段/ 视频数据unsigned int dataDATALENGTH2;int dataWidth0DATALENGTH;int dataWidth1DATALENGTH;int dataPosition0DATALENGTH;int dataPosition1DATALENGTH;