基于CMOS图像传感器的视觉导航小车设计_第1页
基于CMOS图像传感器的视觉导航小车设计_第2页
基于CMOS图像传感器的视觉导航小车设计_第3页
基于CMOS图像传感器的视觉导航小车设计_第4页
基于CMOS图像传感器的视觉导航小车设计_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

./WORD格式整理版摘要以飞思卡尔公司的16位微控制器MC9S12DGl28作为核心控制单元,设计了智能循线汽车控制系统的软硬件,主要包括传感器选型及信号采集处理、电机和舵机的控制等部分。采用CMOS传感器作为信息采集模块,安装在小车前部,检测白色跑道上的黑色引导线。根据黑线的位置,通过所设计的电路和程序对传感器信号进行采集处理。从而获取车模相对赛道的偏移量、方向、速度等信息。通过编写控制程序,产生PWM脉冲信号,对模型车转向舵机以及驱动电机进行控制。最后完成了智能车工程制作及调试,并实现车模能够沿着赛道高速稳定地行驶。关键字:智能汽车;CMOS传感器;MC9S12DGl28;控制AbstractUsing16bitFreescalemicrocontrollerMC9S12DGl28astheelectmniccontrolunit<MCU>,thispaperdesignedanddevelopedasmartcarwhichtracksablacklineonthewhiteracewayasfastandstableaspossible.Thehardwareandsoftwareofthesmartcarweredesigned,whichincludedthelinetrackingmodule,motordrivingmodule,servoconttrollingmodule,andspeedsensormodule,etc.ItselectedCMOSsensorswhichnamedov7620todetecttheblackline.Therelativepositionofthecenterblacklineontheraceway,directionandspeedofthecarwereobtainedandanalysedbyMCU.,accordingtocontrollingalgorithms,PWMsignalsweresenttodrivetheDCmotorandturntheservo.Sothesmartcarcanrunbytrackingtheblackline.Keywords:Smartcar;CMOSsensors;MC9S12DG128;control目录14140第一章绪论 5197761.1选题背景 691141.2主要设计〔研究内容 6278491.3系统主要技术指标 7113191.4移动机器人视觉系统研究现状 7240431.5移动机器人视觉系统的技术要求 830215第二章系统总体结构方案设计 10282852.1系统总体结构及其功能 10106052.2方案设计 1060382.2.1处理器模块 1031662.2.2路径识别模块 11234662.2.3电机控制的选择 12252272.2.4显示选择 13139622.2.5速度检测模块的选择 13276102.2.6运动控制策略 1513938第三章系统的硬件设计 16234853.1单片机 16201143.1.1控制器介绍 16143733.1.2外部电路设计 19139903.2电源模块设计 20176983.3图像处理模块 2222123.3.1摄像头结构和工作原理 2226703.3.2检测黑线原理 2252583.3.3检测黑线方法 23108773.3.4CMOS摄像头的选取 24255403.3.5OV7620的介绍 24160603.3.6OV7620的输出特性 24288883.3.7图像存储方式 25192453.3.8图像采集系统 25320383.4电机驱动模块 26111383.4.1电机的选择 26322633.4.2电机的特性 27118713.4.3电机驱动模块的选择 27305793.4.4MC33886原理 27201723.4.5MC33886的使用说明 30183063.4.6驱动电路的设计 32148613.5速度检测模块 334073.6舵机控制模块 34281303.6.1舵机的介绍 34161233.6.2舵机工作原理: 35117023.6.3舵机的基本资料 3539993.6.4舵机的控制方法 3589673.6.5舵机的控制 3613082第四章智能小车的软件设计与实现 397504.1软件设计环境 39139424.2软件整体设计方案 3923754.3程序流程 4013574.4初始化 41158044.5程序代码 4312568第五章运动控制策略 45231645.1PID控制器结构设计 4519405.2PID运用 46106075.3速度PID控制算法 4865675.4方向控制策略 4951425.5速度给定控制策略 507733第六章总结 53172856.1主要工作情况及创新之处 53145246.2系统改进及发展前景 5322808致谢 5410673附录A程序5519915附录B中英文翻译 7224315参考文献 83第一章绪论对于移动机器人来说,定位和导航能力是非常重要的。在移动机器人相关技术研究中,导航技术是其核心技术,也是其实现真正的智能化和完全的自动移动的关键技术。移动机器人的导航方式很多,有惯性导航、磁导航、视觉导航、基于传感器<超声传感器、红外传感器、接触传感器等>数据导航、卫星导航等。这些导航方式分别适用于各种不同的环境,包括室内和室外环境,结构化环境与非结构化环境。其中,视觉导航方式具有信号探测范围宽、信息量丰富等优点,近年来广泛应用于移动机器人的自主导航,是移动机器人导航的一个丰要发展方向。目前国内外主要采用在移动机器人上安装车载摄像机的基于局部视觉的导航方式,视觉导航主要完成障碍物和路标的探测及识别。视觉导航技术作为移动机器人领域中一项关键技术,近年来已经被越来越多的学者所重视,并进行深入的研究。目前视觉导航技术已经成为移动机器导航方法的主流趋势,并且在交通、医学、娱乐、物流等领域的得到广泛的应用。目前多数机器人视觉系统采用的是CCD摄像机,此类视觉体系中必须配置专用的视屏采集卡才能获得数字图像信息。而近年来发展起来的CMOS图像传感器,由于其采用了CMOS工艺制造,因而可以将A/D等器件集进去,使得图像传感器的集成度大大提高,进行数字通讯更为方便,硬件的搭建更为简单。因此将CMOS图像传感器应用到移动机器人领域是一个发展的趋势。1.1选题背景现代机器人技术在人工智能、计算机技术和传感器技术的推动下获得了飞速发展,其中移动机器人因具有可移动性和自治能力,能适应环境变化被广泛用于物流、探测、服务等领域。移动机器人的核心技术之一是导航技术,特别是自主导航技术。由于环境的动态变化和不可预测性、机器人感知手段的不完备等原因,使得移动机器人的导航难度较大,一直是人们研究的重点。目前常用的一种导航方式是"跟随路径导引",即机器人通过对能感知到某些外部的连续路径参考信息做出相应的反应来导航。如在机器人运动路径上敷设金属导线或磁钉,通过检测金属导线或磁钉的特征信息来确定机器人的位置。从导航的角度看,这种方法的优点是可靠性较高,但功能单一,如不能在行进的同时对目标进行识别、避障,对环境的适应能力较弱、灵活性较差、维护成本较高,因此限制了其在移动机器人中的应用。随着计算机技术、数字图像处理技术及图像处理硬件的发展,基于计算机视觉的导航方式在机器人导航中得到广泛关注。在实际应用中,只需要在路面上画出路径引导线,如同在公共交通道路上画的引导线一样,机器人就可以通过视觉进行自主导航。相对于敷设金属导线、磁钉等方法,这种方法增强了系统的灵活性,降低了维护成本。视觉信息中包含有大量的数据,要从中提取有用的信息,需要复杂的算法及耗时的计算。视觉导航小车是一种基于视觉导航技术的轮式移动机器人。其视觉信号采集系统的实现方法很多,有PC机或嵌入式工控机、基于CPLD/FPGA、基于视频专用DSP、基于单片机、基于专用采集专用采集压缩芯片等等。单片机系统虽然运算速度相对较低,但其成本在各种方案中最低,对于速度要求低、分辨率要求低、算法简单的系统仍很实用。如何保证视觉导航系统在正确理解路径信息的前提下仍具有较好的实时性和鲁棒性,是该方法要解决的核心问题。1.2主要设计〔研究内容本设计主要通过CMOS图像传感器获得路面引导线图像信息,利用高速单片机进行图像降噪处理以及路径识别。实时调整小车姿态与速度,达到巡线行驶的目的。设计实现的主要功能:<1>利用CMOS图像传感器进行路径识别;<2>可识别启动标识线及停止标识线;<3>可驱动直流电机带动车轮,并用测速功能;<4>电池电压检测,低压提示;<5>电机堵转过流保护。1.3系统主要技术指标本系统所实现的主要技术指标如下: <1>小车驱动电源7.2V;<2>最高行驶速度10米/秒;<3>续航行驶距离200米。1.4移动机器人视觉系统研究现状移动机器人有多种导航方式,根据环境信息的完整程度可以分为基于地图导航、基于陆标导航、环境未知导航。基于地图的导航是在机器人内存有环境的完整信息,并在预先规划出的一条全局路线的基础上,采用路径跟踪和避障技术,实现机器人导航。当机器人对周围环境并不完全了解时,则可采用基于陆标的导航策略,也就是将环境中具有明显特征的景物存储在机器人内部,机器人通过对陆标的探测来确定自己的位置,并将全局路线分解成陆标与陆标之间的片段,再通过一连串的陆标探测和陆标制导来完成导航任务。环境未知导航是机器人处于一个未知环境中,完全依靠传感器感知周围环境,建立环境模型,搜索目标从而完成导航任务。显而易见,导航的难易程度是和先验获得环境信息的数量和完整性紧密相连的,因而基于地图的导航研究是起步最早的,也是问题解决得较好的一种方式,并提出了路径优化的概念如能量最优、移动距离最优等优化指标,但其缺点是无法处理动态变化的环境,因而限制了它的应用领域。基于陆标的导航和环境未知导航就必须依赖机器人自身的传感器信息和机器人的控制策略来处理未知环境的导航问题,相比较而言,拥有路标的系统可以通过路标对机器人的位置进行修正,在环境未知情况下,对机器人的定位技术、运动策略的要求就更高了。可用于移动机器人导航的信号类型很多,如视觉传感器<包括单目视觉,双目立体视觉>、声纳、GPS、激光测距仪、罗盘和里程计<光电码盘>等。实际上一般实用的机器人不会只是依靠一种传感设备进行导航,而是多传感器共同作用,增加信息的完整性和冗余度,采用多传感器融合技术,以达到运动控制的精确和稳定。通过视觉信息进行导航控制是随着计算设备运算速度和存储容量的快速发展、图像处理技术的进步而提出来。视觉系统在导航中主要起到环境探测和辨识的作用。视觉导航的优点在于其探测的范围广,取得的信息丰富,其难点在于机器人导航使用的视频图像信号数据量很大,要求较高的实时数据处理能力,同时从图像中提取对导航有价值的信息也是一个富有挑战性的工作。移动机器人视觉导航中视频处理的过程包括三个阶段:视频采集、图像处理及特征提取、图像分析与理解。就图像处理和特征提取而言,到目前为止,虽然众多的研究人员提出了图像增强、图像分割、图像匹配,以及运用人工神经网络、模糊理论、随机过程模型对图像进行处理等多种方法,相关的文献也极多.但基本上都是针对某一个领域的应用而没有一种普遍适用的算法,由此也产生了如医学图像处理,红外图像处理,动态图像处理等多个分支研究方向。图像分析与理解要解决的问题是,为完成某一任务需要从图像中获取哪些信息,如何利用这些信息获得对环境和知识的理解。图像理解系统有几个鲜明的特点:①分阶段的信息处理带来了信息的多层表示②对图像的解释,是以某种形式的描述实现的③图像的正确解释离不开知识的导引。由于知识的表示也是缺乏统一性的,这无疑增加了视觉导航的难度。1.5移动机器人视觉系统的技术要求由移动机器人导航的特点和机器视觉处理的特殊性,我认为移动机器人导航视觉系统要达到以下技术要求:<1>根据系统要求准确地分辨目标物,有一定的抗干扰能力。<2>能对目标物定位,为机器人的运动控制提供参照物、障碍物的位置信息,并能满足精度要求。<3>满足系统实时性的要求。基于上述的要求.移动机器人视觉系统有以下关键问题需要解决:<1>摄像机成像模型的获取。视觉导航的一个基本问题就是找到空间的目标点与成像点之间的对应关系,而这是由摄像机的成像模型决定的,因而需要进行摄像机标定。<2>特征选择。图像处理能提供的图像特征很多,如边沿,角点,纹理,灰度,颜色以及动态图像帧间信息等,并且每种特征的提取方式又有多种。因此特征的选择相当重要。如果特征选取不当,由于目标或摄像机的运动,选取的特征也会随着时间发生变化。因此感兴趣的特征是与场景中的变化区域相联系的。所以,应该利用时间和空间的变化来选择特征。<3>实时性要求。在移动机器人视觉导航应用中,需要机器人具有迅速的反应能力,因而实时性是主要的性能指标。根据机器人环境的不同,采取不同的定位方式,以及在移动中对路径的规划与跟踪,都需要实时性强、可靠性高的算法。<4>可靠性及误差校正。第二章系统总体结构方案设计2.1系统总体结构及其功能系统总体结构如图2-1所示。图2-1系统结构图功能:通过CMOS图像传感器获得路面引导线图像信息,利用高速单片机进行图像降噪处理及路径识别。设计的基本原理为:系统采用一块高性能单片机,完成从视频采集到视频处理,最终实现速度和转向控制的一套寻线行走功能。2.2方案设计方案选择在系统设计中占有很重要的比例,好的方案既能减轻设计的工作量,又能节省成本使系统安全可靠。2.2.1处理器模块处理器可采用以下两种方案:处理器采用功能较低的MCS-51系列单片机;处理器采用集成度较高、功能较为强大的MC系列单片机。方案一:采用MCS-51系列单片机作为处理器该单片机的主要特点如下所述:1片内存储容量较小:原因是受集成度的限制。ROM一般小于8KB,RAM一般小于256B,但可以在外部扩展。通常ROM,RAM可分别扩展至64KB。2可靠性高:因为芯片是按工业测控环境要求设计的,故抗干扰的能力优于PC机。系统软件<如:程序指令,常数,表格>固化在ROM中,不易受病毒破坏。许多信号的通道均在一个芯片内,故运作时系统稳定可靠。3便于扩展:片内具有计算机正常运行所必需的部件,片外有很多供扩展用的<总线,并行和串行的输入/输出>管脚,很容易组成一定规模的计算机应用系统。4控制功能强:具有丰富的控制指令:如:条件分支转移指令,I/O口的逻辑操作指令,位处理指令。5实用性好:体积小,功耗低,价格便宜,易于产品化。由于该单片机内部不具有AD转换功能,故该单片机与传感器进行数据通信时中间需进行AD转换。方案二:采用MC9S12系列单片机作为处理器MC9S12系列单片机是MC68HC12系列单片机的更新替代产品。这种单片机的中央处理器CPU12由以下三部分组成:算术逻辑单元ALU、控制单元和寄存器组。CPU外部总线频率为8MHz,内部运算速度可达25MHz。寻址方式有16种。内部寄存器组中的寄存器、堆栈指针和变址寄存器均为16位。它具有很强的高级语言支持功能。CPU12的累加器A和B是8位的,也可以组成16位累加器。为了实现视频采集,考虑综合性价比、设备安装等因素,核心控制器选用Freescale公司的16位高性能单片机——MC9S12DG128〔以下简称S12。它的指令处理时钟可以达到38MHz,其A/D转换器的工作时钟可以达到16MHz,用于采集视频。同时它拥有8路PWM通道,控制舵机和直流电机完成转向和速度控制;8路捕捉/比较通道获取作为速度传感器的编码器脉冲信号;串行通信接口用于无线调试;多达64个IO〔通过IO复用方式足够用于状态显示及参数设置。另外,其拥有128k的flash存储空间,无需进行存储器扩展,在片内就可以实现视频数据存储和调用。2.2.2路径识别模块1.CCD和CMOS的介绍CCD利用光电效应制作的半导体器件,起步早,技术已相当成熟,在生产生活中得到了广泛的应用。构成CCD的基本单元是MOS<金属-氧化物-半导体>结构。CCD的基本功能是电荷的存储和电荷的转移。工作时,需要在金属栅极加一定的偏压,形成势阱以容纳电荷,电荷的多少基本与光强成线性关系。电荷读出时,在一定相位关系的移位脉冲作用下,从一个位置移动到下一个位置,直到移出CCD,经过电荷-电压变换,转换为模拟信号。CMOS是一种高集成度大规模集成电路,仍使用光敏元件为感光器件,光敏元件在排列方式上与CCD电荷耦合器件相同,只是在光电转换后信息传送方式不。CMOS芯片内部提供了一系列控制寄存器,通过总线编程来对自动增益、自动曝光、白色平衡、γ校正等功能进行控制,编程简单、控制灵活。直接输出的电视机制式图像信号可以很方便地和后续处理电路接口,供处理器AD模块对其进行采集和处理器处理。2.CCD和CMOS光电传感器优缺点比较<1>光电转换CMOS和CCD使用相同的感光元件,具有相同的灵敏度和光谱特性,但光电转换后的读取信号方式不同。CMOS光传感器经光电转换直接产生电压信号,读取十分简单,特别的在监控领域,CMOS传感器的信号输出大部分是PAL电视机制式,信息读取十分方便。而CCD存储的电荷信息的转移和读取输出需要有时钟控制电路和三组不同的电源配合,较为复杂。<2>信息的读取速度CCD电荷耦合器需要在同步时钟控制下以行为单位一位一位输出信息,速度较慢,而CMOS光电传感器在采集光信号的同时就输出电压信号,速度比CCD快。<3>电源及耗电量CCD电荷耦合器大部分需要三组电源供电,耗电量高,一般需要12V以上供电电压。而CMOS光电传感器只需要一个电源,耗电量低,一般供电范围是6—9V,功耗相对CCD有很大的降低。<4>成像效果CCD技术起步早,技术比较成熟,消噪效果好,成像质量相对CMOS光电传感器好。3.方案选取综合以上CCD和CMOS的优缺点,虽然CCD在成像质量上优于CMOS,但对于只需在白色的背景下识别黑线,CMOS能胜任,并且着重考虑到功耗,最终我们选用了CMOS摄像头作为识别路径的传感器。电机控制的选择选用Mabuchi公司生产的RS-380SH直流电机作为主驱动电机,通过PWM信号控制。通过电机驱动模块的调节,可以很直观的对速度及智能车的运行状况进行调节。在速度控制方面,一般是通过改变加在电机两端的电压来实现的,可以是连续改变〔加直流电压,也可以断续改变<加脉冲电压>。根据不同的驱动电路可以采用不同的方式。最好是采用硬件配合软件的方法,因为毕竟采用软件来调节是比较精确和方便的。方案一:采用继电器对电动机的开或关进行控制采用继电器对电动机的开或关进行控制,通过开关的切换对赛车的速度进行调整。这个方案的优点就是电路较为简单,缺点就是继电器的响应时间慢、机械结构易损坏、寿命较短、可靠性不高、而且安装在小巧的智能车上不太适宜。方案二:采用达林顿管组成的H型PWM电路用单片机控制达林顿管使之工作在占空比可调的开关状态,精确调整电动机的转速。开关的速度快,稳定性也高。但是比起集成电路的芯片控制还是逊色了不少,电路也较复杂。方案三:采用桥式驱动器MC33886电机驱动芯片通过芯片同单片机的控制完成电机的调速、正反转控制,其控制原理简单,并且稳定性极强。但是发热量很大,特别是需要采用反转控制时。MC33886芯片功能强大,电路简单,其主要缺点是发热量大。因此选用第三套方案,并将两块MC33886并联起来使用,这样既能提高带载能力,又降低了芯片的发热量。2.2.4显示选择显示模块是系统的人机界面,好的显示器件能准确显示系统信息,并且给读取数据带来了很大的方便。方案一:使用多个数码管显示LED数码管是利用二极管发光显示数字和字母,具有亮度大、接口设计比较容易,价格相对较便宜等优点。但是由于它工作电流较大、不能显示汉字,显示的信息量有限,若在此题目中应用就会受到很大的限制。方案二:采用液晶显示液晶特别是具有汉字显示功能的液晶显示器,来实现显示功能,不仅可以实现基本的显示信息,而且可以显示丰富的符号指示信息以及文字指示信息,信息量丰富且直观易懂。而且液晶显示有功耗低,体积小,重量轻,寿命长,不产生电磁辐射污染等优点。采用液晶显示模块可以使图像处理结果实时显示出来,方便调试和演示,成本也较低。本系统选用北京青云电子科技发展有限公司开发的NHC_34彩色液晶显示控制模块。该模块支持256色彩色显示,每个像素点用1个字节表示,分辨率为320×234;支持标准Intel8位异步总线时序,有2页显示缓存,可任意设定显示页和操作页。2.2.5速度检测模块的选择速度检测电路的基本原理为:在很短的时间内,通过光电传感器来测量固定在后轮的轴上的码盘通过的孔数,输送到单片机的脉冲累加器外部引脚,经过换算计算出智能车的实际速度,为速度PID控制环节提供可靠的数据。智能车的实际行驶速度是智能车速度控制的控制输入量,准确实时的测量智能车的速度才能实现智能车的速度控制,即纵向控制。常用的测速方案有以下几种:方案一:光电测速传感器图2-2光电测速传感器原理是传感器开孔圆盘的转轴与转轴相连接,光源的光通过开孔盘的孔和缝隙反射到光敏元件上,开孔盘随旋转体转一周,光敏元件上照到光的次数等于盘上的开孔数,从而测出旋转体旋转速度。灵敏度较高,但容易受外界光源影响。方案二:测速发电机原理是将旋转机械能转化成电信号,适合于测量速度较高的旋转物体的速度。采用电磁感应的原理。但市场上测速发电机应用于低压市场的比较少,而且都比较重,不适用于模型车,并且要将侧速发电机安装到电动车上需要对电动车模型进行较大改动,由于其质量较重,可能会严重影响电动车的机动性能,除非自制。优点是测速准确、稳定、快速,可以直接由AD转换器读入单片机测得当前速度值。图2-3测速发电机方案三:霍尔传感器工作原理是:利用霍尔开关元件测转速,内部具有稳压电路、霍尔电势发生器、放大器、施密特触发器和输出电路,其输出电平和TTL电平兼容。在待测旋转体的转轴上装上一个圆盘,在圆盘上装上若干对小磁钢,小磁钢愈多分辨率越高。霍尔开关固定在小磁钢附近,当旋转体以角速度M旋转时,每当一个小磁钢转过霍尔开关,霍尔开关便输出一个脉冲,计算出单位时间的脉冲数,即可确定旋转体的速度。缺点是磁钢的间距不好控制。方案四:红外反射式光电传感器该方案与赛道识别模块的方案一类似,即在转盘上贴一圈黑白相间的纸带。根据黑白纸带对红外线的反射率不同产生一连串的高低电平,再通过计算出单位时间的脉冲数来得出智能车的即时速度。方案比较:霍尔传感器测速结构简单,车轮旋转一周产生的脉冲数量有限,不利于速度的实时控制;编码器产生的脉冲数很多,测速精确,但是价钱昂贵。光电码盘测速结合了前两者的优点,码盘光栅距较小,对速度的反应很灵敏,速度检测最终采用光耦元件投射码盘的检测方法。2.2.6运动控制策略目的是提高寻线行走速度。摄像头的使用,正是为了增加前方线路探测距离,给运动控制提供充足的决策时间。因此,其运动控制策略也基于此方案。本系统采用预瞄与PID相结合的方法实现速度和转向控制。基于单片机采集的视频,判断车体前方道路情况,可以明显区分弯道直道以及弯道曲率大小。而在不同道路情况下,车体受自身机械结构和电机特性等因素影响,有不同的行驶表现。在弯道行驶中存在最佳入弯速度,弯道行驶速度以及弯道行驶路线。而在直道行驶中,虽然车体速度越快越好,但是为了安全地完成直道入弯道,必须进行入弯提前减速。这点是摄像头方案在速度上优于红外光电传感器方案的关键:足够充分的预判距离,保证了足够充分的减速时间和距离,取得最快入弯效果。第三章系统的硬件设计通过上面的关键技术分析可以看到,系统的硬件电路主要负责以下几个方面的功能实现:图像数据采集、图像数据处理、数据存储、时钟电路,通过单片机控制小车电机等几部分组成。硬件模块图如3-1所示。下面将具体介绍整个系统各个主要组成部分的功能、选型以及具体连接方式。图3-1硬件模块图3.1单片机单片机是指一个集成在一块芯片上的完整计算机系统。尽管它的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。在诸多的单片机芯片中我们通过严格的筛选最终确定选用飞思卡尔公司生产的MC9S12DG128B单片机作为本设计使用的。3.1.1控制器介绍核心控制器选用Freescale公司的16位高性能单片机——MC9S12DG128〔以下简称S12。它的指令处理时钟可以达到38MHz,其A/D转换器的工作时钟可以达到16MHz,用于采集视频。同时它拥有8路PWM通道,控制舵机和直流电机完成转向和速度控制;8路捕捉/比较通道获取作为速度传感器的编码器脉冲信号;串行通信接口用于无线调试;多达64个IO〔通过IO复用方式足够用于状态显示及参数设置。另外,其拥有128k的flash存储空间,无需进行存储器扩展,在片内就可以实现视频数据存储和调用。MC9S12系列单片机是MC68HC12系列单片机的更新替代产品。这种单片机的中央处理器CPU12由以下三部分组成:算术逻辑单元ALU、控制单元和寄存器组。CPU外部总线频率为8MHz,内部运算速度可达25MHz。寻址方式有16种。内部寄存器组中的寄存器、堆栈指针和变址寄存器均为16位。它具有很强的高级语言支持功能。CPU12的累加器A和B是8位的,也可以组成16位累加器。CPU12的寄存器包括如下5个部分:〔18位累加器A、B或16位累加器D。〔216位变址寄存器X、Y是用来处理操作数的地址。可用于源地址、目的地址的指针型变量运算。〔3堆栈指针SP是16位寄存器。〔4程序计数器PC是16位寄存器,它表示下一条指令或下一个操作数的地址。〔5条件码寄存器CCR。MC9S12DG128的存储器有以下3种:〔1128KBFlash存储器;〔212KB的RAM;〔34KB的EEPROM。MC9S12DG128有可复用的地址数据总线。它可以工作在单片方式,也可以通过总线扩展存储空间和增加I/O接口电路芯片,工作在扩展方式。地址总线20位,数据总线16位或8位,地址和数据总线占用3个8位并行I/O接口,在单片方式下这24位可做普通I/O接口用。MC9S12DG128有两个8路10位精度A/D转换器。MC9S12DG128的脉宽调制模块〔PWM可设置成4路8位或者2路16位,逻辑时钟选择频率宽。MC9S12DG128的串行接口有以下3种:〔1两个异步串行通信接口模块SCI;〔2一个总线接口;〔3一个同步串行外设接口SPI。MC9S12DG128有2个具有位输入信号沿产生中断、唤醒CPU功能的8位并行口,即16个位输入终端通道,这16位也可以设为输出。MC9S12DG128时钟发生器有以下2种:<1>具有锁相环频率合成器。这是时钟发生器中的重要电路。它的存在使外部32KHz晶振就可以产生8MHz的总线频率。<2>使用0.5到16MHz的低功耗晶振做锁相环,产生高达25MH的片内总线时钟。MC9S12系列单片机的外部供电电压为5V,分别为单片机的内部电压调整器,IO端驱动器,AD转换器提供电源。图3-2MC9S12DG128B单片机下面是MCS12DG128的结构图以及其引脚分配图。S12CPU128KBFLASH2个8路10位ADC增强型8路16位定时器8位8路/16位4路PWM2个SCI口3个SPI口I2CJ1850通信口最多5个增强型CAN总线接口5v变2.5V电压调整器12KBRAM4KBEEPROM16位键盘唤醒IRQI/O口图3-3MC9S12DG128B单片机的结构3.1.2外部电路设计1、时钟电路时钟电路是由石英晶体振荡器和一些电容、电阻组成,,虽然简单的单片机可以使用集成到单片机内部的RC振荡电路产生单片机工作所需要的时钟,但是这种简单的时钟电路频率的稳定性得不到保证,而外部晶振能提供稳定的频率为16M的振荡,该单片机内部的压控振荡器和锁相环〔PLL得到一个高稳定的时钟源。PLL电路每锁定一个工作频率就需要一个特殊外部滤波电路,以消除锁相器产生的噪声电压,从而使压控振荡器输出稳定的振荡频率。把由外部得来的振荡提高为24M的总线时钟和48M的CPU工作时钟,供给单片机使用稳定,可调的时钟信号。如下图3-4所示:图3-4时钟电路2、外部复位电路所谓复位,就是让微处理器进入一个初始化程序,使CPU恢复初始状态。MC9S12DG128的外部复位是通过复位信号接口接收到/RESET信号。此信号为低电平时,微处理器就复位;外部RST引脚提供了使用外部电路强制MCU进入复位状态的手段,在RST引脚上加一个低电平有效信号将导致MCU进入复位状态。最好能提供一个外部上拉或对RST引脚去耦以防止强噪声引起复位。在低有效的RST信号撤出后,MCU将保持在复位状态至少12个时钟周期,从外部复位状态退出后PINRSF标志〔RSTSRC.0被置位。其接口电路图如图3-5所示:图3-5复位电路3.2电源模块设计智能车系统采用7.2V的蓄电池进行供电,但由于各个模块所需要的电压不同,因此需要进行电压调节。其中,S12开发板、舵机需要5V电压;摄像头工作电压也为5V;直流电机需要7.5V左右的电压。为了让各模块相互独立,我们使用LM2576为S12开发板、摄像头和舵机供电,,M33886为直流电机供电。其中,LM2576-5.0为单片降压式开关电压调整器,输出电压5.0V;最大输出电流3A;具有热关闭和限流保护功能。该智能车在5V电压下的负载电流需求不超过350mA,因此,采用LM2576供电完全能满足要求。图3-6LM2576-5V电路图LM2576系列开关稳压集成电路的主要特性如下:1最大输出电流:3A;2最高输入电压:LM2576为40V,LM2576HV为60V;3输出电压:3.3V、5V、12V、15V和ADJ<可调>等可选;4振荡频率:52kHz;5最大稳压误差:4%;6转换效率:75%~88%<不同电压输出时的效率不同>;7控制方式:PWM;8工作温度范围:-40℃~+125℃;9工作模式:低功耗/正常两种模式可外部控制;10工作模式控制:TTL电平兼容;11需外部元件:仅四个<不可调>或六个<可调>;12器件保护:热关断及电流限制;13封装形式:TO-220或TO-263。LM2576内部包含52kHz振荡器、1.23V基准稳压电路、热关断电路、电流限制电路、放大器、比较器及内部稳压电路等。为了产生不同的输出电压,通常将比较器的负端接基准电压<1.23V>,正端接分压电阻网络,这样可根据输出电压的不同选定不同的阻值,其中R1=1kΩ<可调-ADJ时开路>,R2分别为1.7kΩ<3.3V>、3.1kΩ<5V>、8.84kΩ<12V>、11.3kΩ<15V>和0<-ADJ>。将输出电压分压电阻网络的输出同内部基准稳压值1.23V进行比较,若电压有偏差,则可用放大器控制内部振荡器的输出占空比,从而使输出电压保持稳定。3.3图像处理模块3.3.1摄像头结构和工作原理摄像头一般由镜头、传感器芯片、外围电路组成。传感器芯片不能单独工作,还需外围电路支持,才能将光信号转换成电信号。光线经物体发射,通过镜头聚焦,焦点恰好在传感器芯片的感光元件上,从而转换成电信号。输出信号制式为PAL电视机制式的摄像头,一般有四条线:正极,地线,音频输出线,视频输出线。CMOS摄像头供电电压一般为6-9V,视频信号峰峰值为1V。黑线吸收光线,将不会反射,传感器感光元件阵列相对应的感光元件不产生电压信号,即一个低压信号,而对应白线反射光线,通过镜头聚焦,在相对应的感光元件出产生一个相对高电压信号,一般峰峰值为1V。常用的摄像头视频输出信号是PAL电视机制式,它的工作原理与电视机的工作原理相似:在一定分辨率下,每秒扫描25帧图像,每帧图像含有625行信息,分为奇、偶场,进行个隔行扫描,总共每秒50场信号,每场有312.5行信息,从奇数行开始扫描,即依次扫描第1、3、5、7、9……,当扫描完奇数场后,再开始扫描偶数场,构成一帧图像。如图3-7所示:图3-7奇数场图3-7偶数场3.3.2检测黑线原理由于智能车系统对实时性的要求很高,过于复杂的黑线提取算法,会导致决策周期溢出,使程序崩溃,所以必须采用简单高效的图像识别算法。路径识别中,黑线和白色底板存在很多大灰度比,在图像信号上会形成相应高低不同的电压值,当检测到黑线是,图像信号中将形成一个"凹"形槽,通过DG128对信号进行采集,并对数据处理,就可以得到黑线相对小车的位置,一帧完成后,能计算出路径的整个斜率和偏离量。3.3.3检测黑线方法检测黑线的方法目前主要有二值化算法,逐行搜索的算法,边缘检测算法,下面是具体介绍。1、二值化算法二值化算法的思路是:设定一个阈值valve,对于视频信号矩阵中的每一行,从左至右比较各像素值和阈值的大小,若像素值大于或等于阈值,则判定该像素对应的是白色赛道;反之,则判定对应的是黑色的目标引导线。记下第一次和最后一次出现像素值小于阈值时的像素点的列号,算出两者的平均值,以此作为该行上目标引导线的位置。该算法的思想简单,但是这种提取算法的鲁棒性较差,当拍摄图像中只有目标引导线一条黑线时,尚能准确提取出该目标引导线,但当光强有大幅度变化或图像中出现其他黑色图像的干扰时,该算法提取的位置就有可能与目标引导线的实际位置偏离较大。2、逐行搜索的算法采用逐行搜索的算法,首先找到从白色像素到黑色像素的下降沿和从黑色像素到白色像素的上升沿,然后计算上升沿和下降沿的位置差,如果大于一定的标准值,即认为找到了黑线,并可求平均值算出黑线的中心点。于上升沿、下降沿的检测,可以通过上上次采样数与这次采样数的差值的绝对值是否大于一个阈值来判断,如果"是"且差值为负,则为上升沿;如果"是"且差值为正,则为下降沿。这里,阀值可以根据经验设定,基本上介于30~46之间〔当A/D模块的参考电压为2.5V时,也可以采用全局自适应法设定,每次采样后首先都遍历一次图像,得到图像灰度值的平均值,然后用这个平均值乘以一个调试系数即可得到所要的阈值。该算法较二值化方法而言,抗环境光强变化干扰的能力更强,同时还能削弱或消除垂直交叉黑色引导线的干扰。3、边缘检测算法由于黑色的目标引导线是连续曲线,所以相邻两行的左边缘点比较靠近。跟踪边缘检测正是利用了这一特性,对直接边缘检测进行了简化。其思路是:若已寻找到某行的左边缘,则下一次就在上一个左边缘附近进行搜寻。这种方法的特点是始终跟踪每行左边缘的附近,去寻找下一列的左边缘,所以称为"跟踪"边缘检测算法。该算法的优点:在首行边缘检测正确的前提下,该算法具有较强的抗干扰性,能更有效地消除垂直交叉黑色引导线的干扰,以及引导线外黑色图像的影响,始终跟踪目标引导线。另外,较之前两种算法,跟踪边缘检测算法的时间复杂度更低,因此效率更高。但该算法的问题在于:由于是在连续邻域上跟踪引导线边缘,若第一行左边缘位置的检测位置和实际导引线偏差较大,就会产生一连串的错误,甚至造成智能车失稳。综上所述,从算法的简洁性和实用性综合考虑,直接边缘检测算法相对于其他两种算法是一个较好的选择。3.3.4CMOS摄像头的选取根据MC9S12DG128Datesheet中的说明,DG128的AD最高采集频率为2MHz,可以采集到的像素点有:64/〔121/2=10〔个由计算可知,在最高采集频率,8位AD的情况下,只能采集到300以上个像素中的10个,横向上的分辨率十分低,不足以满足识别路径的要求。所以在选购CMOS摄像头时,尽量选取像素较低的,同时考虑到功耗,最后选择OV7620。3.3.5OV7620的介绍OV7620是美国OmniVision公司出品的彩色/黑白CMOS图像传感器。这是一种自带图像敏感阵列和A/D转换元件、能直接提供8/16位CCIR601、CCIR656等格式视频数字信号的彩色/黑白图像传感器,图像输出最高速度可达60S/s,最大图像分辨率为644×492,5V供电;它具有自动增益、自动曝光、自动白平衡、边缘增强、伽玛校正等控制功能;可以通过IC总线进行设置;同时OV7620具有图像开窗输出的功能,即允许用户可根据实际使用需要设置其内部寄存器,使其只输出完整图像中的任意一矩形区域内的信号,其范围从4×2到644×492。这种功能从硬件上屏蔽了图像中不需要的部分,只保留用户需要的部分图像,大大减少了图像的数据量,提高了系统的效率。3.3.6OV7620的输出特性OV7620工作方式和输出格式非常多,可以适应不同的应用场合,针对系统,采用了单通道Y输出,以及逐行扫描的工作方式。这些工作方式的实现是通过MCU的I2C编程控制的。当OV7620设置工作方式稳定后,它就会输出视频数据,同时还有3个重要的参考信号输出:帧同步信号SYNC,水平同步信号HREF,和像素时钟信号PCLK。每一个帧同步信号SYNC周期包含480个水平同步信号HREF脉冲,而每一个HREF周期包含640个PCLK时钟脉冲。每一个PCLK时钟输出一个像素的视频数据<8位标准的Bayer-pattern彩色RGB数据>。图3-8为OV7620的时序图。

图3-8OV7620的时序图3.3.7图像存储方式根据640×480的像素输出特点,将512KB的RAM分成512行,每行1KB空间,由A0~A9共10条地址线选通行内地址记为低位地址:ADDR-L;高位A18~A10共9条地址线选通各行记为高位地址:ADDR-H。为保证OV7620采集的数据同步写入SRAM中,用CPLD宏单元设计了2个地址计数器:低位计数器ADDR-L和高位记数器ADDR-H。当图像数据采集开始时<SYNC信号低有效>,记数器由0开始记数,每来一个像素时钟PCLK使低位计数器顺序加1,完成1行像素的写入,OV7620产生的行同步信号HREF使低位计数器清0,并使高位记数器顺序加1,改变行地址直到完成480行写入后产生帧同步信号,并使高位计数器清0,这样完成1帧图像数据的缓存,详细的图像采集信号时序如图2。512KB的SRAM芯片实际上只用了640×480约300多KB的存储空间。芯片工作方式设定在PCLK信号的下降沿更新数据;在上升沿,数据是稳定时期,在PCLK信号的下降沿更新SRAM的地址信号ADDR;在PCLK信号上升沿使/WR信号有效,然后写数据到SRAM中。3.3.8图像采集系统本系统使用图像传感器与单片机之间的数据连接,使图像传感器自动地将图像数据写入MCU图像采集系统结构框图如图3-9所示。图3-9图像采集系统结构框图3.4电机驱动模块3.4.1电机的选择电机驱动是小车重要的模块之一。驱动电机采用直流伺服电机,我们在此选用的是RS-380SH型号的伺服电机,这是因为直流伺服电机具有优良的速度控制性能,它输出较大的转矩,直接拖动负载运行,同时它又受控制信号的直接控制进行转速调节。在很多方面有优越性,具体来说,它具有以下优点:<1>具有较大的转矩,以克服传动装置的摩擦转矩和负载转矩。<2>调速范围宽,高精度,机械特性及调节特性线性好,且运行速度平稳。<3>具有快速响应能力,可以适应复杂的速度变化。<4>电机的负载特性硬,有较大的过载能力,确保运行速度不受负载冲击的影响。可以长时间地处于停转状态而不会烧毁电机,一般电机不能长时间运行于停转状态,电机长时间停转时,稳定温升不超过允许值时输出的最大堵转转矩称为连续堵转转矩,相应的电枢电流为连续堵转电流。3.4.2电机的特性图3-10电机的特性数据图3-11电机的特性曲线3.4.3电机驱动模块的选择选用Freescale公司的MC33886全桥驱动芯片,通过两路半桥实现电机正反转。这里的电机反转并不为实现倒车,而主要用于车体减速。在进行电机正反转切换时,电机驱动电流会随着负载增大而瞬间放大,因此需要增大稳压能力,保证系统正常工作电压,避免单片机自动重启。3.4.4MC33886原理MC33886作为一个单片电路H-桥,是理想的功率分流直流马达和双向推力电磁铁控制器.它的集成电路包含内部逻辑控制,电荷泵,门控驱动,及低读选通<on>金属-氧化物半导体场效应晶体管输出电路.33886能够控制连续感应直流负载上升到5.0安培,输出负载脉宽调制的频率可达10千赫。一个故障状态输出可以报告欠压,短路,过热的情况.两路独立输入控制两个半桥的推拉输出电路的输出.两个无效输入使H-桥产生三态输出<呈现高阻抗>.MC33886制定的参数范围是-40°C≤TA≤125°C、5.0V≤V+≤40V。集成电路也可以工作在40V通过降低规定的定额值。集成电路能够在表面安装带散热装置的电源组件.其特性为:工作电压:5-40V,导通电阻:120毫欧姆输入信号:TTL/CMOS,PWM频率:<10KHz由于芯片内集成了两个半桥,为了增大驱动能力,所以把两个桥并联使用,并通过芯片资料上给芯片散热的方法,安装了适量的散热片。由于四片所以不需要太多的散热片。在错误报告端口即FS端口外还加了上拉电阻,当FS被拉低时表明芯片出现了短路保护、欠压保护或过温保护,则需及时给D1和D2置位,让芯片输出高阻态,防止芯片进一步过热,以至于烧坏芯片。芯片封装:图3-12MC33886芯片外部引脚的封装图图3-13MC33886简化应用图图3-14MC33886工作原理图图3-15终端功能描述3.4.5MC33886的使用说明〔1PWM频率限制:<10KHz图3-16MC33886的使用曲线<1>图3-16MC33886的使用曲线<2>〔2全部电容容量和不得超过2000微法;电容最高充电电压不得超过25伏。〔3电机加速与减速限制,避免对于工作电源的影响;图3-16MC33886的使用曲线<3>3.4.6驱动电路的设计驱动电路采用飞思卡尔公司的电机驱动芯片MC33886。原理图如3-17所示。图3-17MC33886的原理图这是一片MC33886的外围电路,两片33886并联起来使用。单片机通过IN1,IN2给33886输入一定占空比〔a%的PWM波,33886的OUT1和OUT2输出一个大小为〔a%*V+的电压,从而驱动电机。用两片的原因:由于一片33886的额定输出流为5A,而且此芯片比较发热。且电机在额定电压下〔即7.2V堵转时电流为16A,这个电流远远大于33886所承受的电流,所以如果用一片来驱动当电机堵转时间稍长时,芯片会由于电流过大而烧掉。当两片33886时,虽然每一片所承受电流大小有限,但两片所能承受的电流会很大,则如果达到电机电流极限也就是16A时,理想状态下每片平均分配8A的电流。通过控制MC33886的四根输入线可以方便地实现电机正转、能耗制动及反接制动。当S1、S4导通且S2、S3截止时。电流正向流过直流电机,智能车前进;当S2、S3导通且S1、S4截止时,电流反向流过直流电机.利用这个过程可以使车处于反接制动状态,从而迅速降低车速;当S3、s4导通且S1、S2截止时,没有电源加在直流电机上,直流电机电枢两端相当于短接在一起。由于电机轴在外力作用下旋转时,电机可以产生电能,此时可以把直流电动机看作一个带了很重负载的发电机,此时电机上会产生一个阻碍输出轴运动的力,这个力的大小与负荷的大小成正比。这时电机处于能耗制动状态。驱动芯片MC33886内部具有短路保护、欠压保护、过温保护等功能,由于频繁加速减速,长时间工作时MC33886芯片发热厉害,严重时甚至会出现过温保护,产生中断信号。所以将芯片的错误状态FS中断接入S12引脚PJ1,出现过温保护时,关闭电机以免烧坏MC33886。图3-18驱动模块电路图由CPU发出PWM波通过33886驱动芯片控制电机的电压。PB6、PB7输出控制信号,PWM0、PWM1输出PWM波,经由IN1、IN2、D1、D2/口输入。OUT1、OUT2输出电机调速信号。通过预设的DUTYCYCLE对电机的转速进行调解。3.5速度检测模块设计的电路图如3-19所示:图3-19速度检测模块当电机转动时、会在555定时器的第2个端口产生一定频率的信号〔大致为正旋波,频率与电机的转速有关。经过555定时器组成的斯密特触发器的整形,out_put端会产生同频率的矩形波信号,这样的信号就可以被单片机采集了。555斯密特触发器电路的阈值电压为VCC/3和VCC*2/3。因此需要通过R1和R2的选取将In_put的低电平电压调到VCC/3以下,高电平电压调到VCC*2/3以上。3.6舵机控制模块3.6.1舵机的介绍一般来讲,舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计5k、直流电机、控制电路板等。控制电路板接受来自信号线的控制信号〔具体信号待会再讲,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。舵机的基本结构是这样,但实现起来有很多种。例如电机就有有刷和无刷之分,齿轮有塑料和金属之分,输出轴有滑动和滚动之分,壳体有塑料和铝合金之分,速度有快速和慢速之分,体积有大中小三种之分等等,组合不同,价格也千差万别。

舵机的输入线共有三条,红色中间,是电源线,一边黑色的是地线,这辆根线给舵机提供最基本的能源保证,主要是电机的转动消耗。舵机的控制信号为脉宽调制〔PWM信号,其中脉冲宽度为5ms-2.5ms,相对应舵盘的位置为0到80度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。舵机内部有一个基准电路,产生周期20ms,宽度为5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。3.6.2舵机工作原理:控制信号控制电路板电极转动齿轮组减速舵盘转动位置反馈电位计控制电路板反馈;3.6.3舵机的基本资料智能车使用韩国FUTABA公司的S3010舵机完成转向控制。型号:S3010尺寸:40.0*20*38.1<mm><L*W*H>重量:41〔g动作速度:6.0V时0.16+0.02〔Sec/60度〕输出扭矩:6.0V时6.5+1.3〔Kg.cm〕动作角度:60+10度使用电压:4.0V~6.0V舵机的特性曲线如图3-20所示:3.6.4舵机的控制方法三线连接法:黑线:地线红线:电源线〔5V白线:信号线〔PWM信号<1>当单片机信号是1ms正脉冲时,舵机转向-60度位置<2>当单片机信号是1.5ms正脉冲时,舵机转向度0度位置<3>当单片机信号是2ms正脉冲时,舵机转向+60度位置图3-20舵机的特性曲线图3-21舵机控制信号3.6.5舵机的控制用单片机作为舵机的控制单元,使PWM信号的脉冲宽度实现微秒级的变化,从而提高舵机的转角精度。单片机完成控制算法,再将计算结果转化为PWM信号输出到舵机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠。单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次是脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比。当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断。这样既节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高。具体的设计过程:例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为20ms-2ms=18ms,所以开始时在控制口发送高电平,然后设置定时器在2ms后发生中断,中断发生后,在中断程序里将控制口改为低电平,并将中断时间改为18ms,再过18ms进入下一次定时中断,再将控制口改为高电平,并将定时器初值改为2ms,等待下次中断到来,如此往复实现PWM信号输出到舵机。用修改定时器中断初值的方法巧妙形成了脉冲信号,调整时间段的宽度便可使伺服机灵活运动。为保证软件在定时中断里采集其他信号,并且使发生PWM信号的程序不影响中断程序的运行<如果这些程序所占用时间过长,有可能会发生中断程序还未结束,下次中断又到来的后果>,所以需要将采集信号的函数放在长定时中断过程中执行,也就是说每经过两次中断执行一次这些程序,执行的周期还是20ms。舵机的电路设计相对简单,所需电源电压由电源模块中的5V稳压电源提供,通过S12脉宽调制模块所产生的PWM波进行舵机驱动控制。PWM0和PWM1两个8位通道组成一个16位PWM波发生器,关闭PWM0输出通道,直接由PWM1输出16位PWM波驱动舵机。电路图如3-22所示。图3-22舵机接线图3.6.6舵机的调整舵机自身硬件特性决定:在给定电压一定时,空载和带载时的角速度ω分别保持恒值,而线速度υ=ωR,正比于转臂的长度R。当舵机所需转动幅度一定时,长转臂要比短转臂转动的角度小,即响应更快。如图14所示,对于转臂1和2,当R1<R2且转动相同的位移时,转角θ1>θ2。因此对于相同的角速度ω,可得转臂响应时间t1>t2。显然利用舵机的转距余量可以提高系统整体的响应速度。舵机转臂加长结构分析如图3-23所示:图3-23舵机转臂加长结构分析舵机的响应速度为:在4.8V情况下旋转60度用时0.2秒,这样的响应速度能够要通过控制舵机转动提前量才满足该小车的转弯要求,为了更高限度的提高舵机响应速度,一方面也通过机械的方式,利用舵机的输出转距余量,使角速度变大,加快舵机响应速度;另一方面提高舵机控制信号PWM波的频率,虽然舵机能转多少度由PWM波的占空比控制,转动速度由舵机电压及舵机性能决定,但是较高的PWM波频率可以使使舵机更快的获得占空比的信息,更早地响应转向指令。舵机是个瞬间强力工作的机构,因此它会产生强烈的电流冲击。为了提高舵机的响应速度,采用6v电源给舵机供电,使用了一个肖特基管及一个普通二极管把7.2v电源降压1.2v供给舵机,并使用了两个470uF的钽电容给它稳压。细化PWM控制量,使转臂变化更加灵活、均匀。为了使较远处黑线位置能够正确的控制舵机转向,舵机必须有较高的角度分辨率,为此使用一个串联的16位PWM电路控制产生的200Hz的PWM信号来精确快速的控制舵机转向,通过适当配置,舵机角度从极左到极右在理论上共有9000个分档,完全能满足角度调节的需要。第四章智能小车的软件设计与实现4.1软件设计环境由于此次的算法比较复杂,并且MC9S12DG128B这单片机内部总共有128KB的存储空间,存储容量绰绰有余,所以采用比较直观,编写较为容易也容易调试的C语言进行软件算法的编写。在CodeWorrier当中建立好项目以后,在MC9S12DG128B.H头文件当中还对单片机当中所有一的寄存器有一个宏定义,这样,就进一步的简化了软件的编写,而小用过多的纠缠于地址的计算当中,提高开发的效率。与此同时,C的源代码简洁易懂,可移植性很强,这样也利于在多人共同开发软件的情况下,将程序的模块化处理、开发、调试。除此之外,此款单片机的存储空间有一128kB,其分为了RAM,EEPROM,PAGEDFLASH以及UNPAGEDFLASH这五种可以用来存储程序代码的部分。采用C编程时,CodeWorrier集成开发环境已经在建立项目的同时,自动生成了SIMULATORLINKER.PRM文件对数据存储空间进行了定义,对复位、中断向量以及堆栈大小的定义也是在这个文件当中。所以,我们并不需要具体的定义程序代码以及数据区、堆栈区在单片机中的存储方式、以及具体的程序起始地址,这也简化了开发过程。鉴于C虽然可以有一地址操作但是开发环境在默认状态下不允许开发人员任意的定义数据、程序存储地址,而嵌入式的系统开发又不想PC环境下的C可以有一屏幕直接显示的数据输出。为了解决这一问题,在SIMULATOR.MAP文件当中找到了由开发环境自动分配的变量地址,从而利于程序的调试,编写。4.2软件整体设计方案根据此次我们对于智能车的整体设计方案,我们从传感器得到的外部信息输入有:摄像头得到的车前方的黑线图像数据,速度传感器得到的智能车即时速度。要进行的外部控制输出有:舵机转向输出以及驱动电机动力输出。我们所采用的寻路、速度控制算法总体来说可以这样描述:根据摄像头所得到的图像信号,经过数字图像处理过后<滤波,取特征值>,提取黑线的两个边缘从而对智能车的转向方向以及姿态、速度等进行控制。速度传感器得到的智能车运行速度则是对转向角度进行修正,另外的,为了保持智能车的稳定运行,去除电池电压对于车速度的影响,依靠速度传感器反馈形成闭环的速度控制,有一速度传感器的信号由程序自动调整电机输出的占空比,从而让小车以相对平稳的速度运行。软件系统架构图如下:图4.1软件系统架构图4.3程序流程我们所采用算法的特点在于:我们通过摄像头,成功的得到了车前方黑线的图像数据,通过图像处理的算法以及将摄像头探测范围加大,我们甚至可以预测前方的黑线走向,从而做到在弯道时的提前转向,从内侧弧以较短的路径通过弯道。在直道时,我们以较为靠前的数据来控制转向,从而从根本上预防了在直线时的左右摆动的状况。在速度控制方面,一方面,根据当前的速度以及前方的道路状况来决策下一状态的速度策略。另一方面,在速度控制上采用闭环的控制策略,真正做到控制速度,而不是控制在一定电压状况下的PWM波输出。针对这次采用的主控芯片为一单片机,计算能力有限,所以在而临大规模的数据计算来进行数字图像处理时,我们采用的处理算法都比较简单但是效果已经足够我们使用。而且在计算时就充分考虑到了后期的分析,识别处理,从而在摄像头处理部分有非常简单但是高效的代码。由于系统的输入输出数量较多,算法相对也经历了较多步骤。所以为了便于调试,在程序中采用了模块化的编程方法。将每一个步骤编成一个子函数,通过函数调用的方式来逐步的实现寻路以及速度控制、状态输出等等。这样不仅便于编程,同样在调试,查错以及对算法进行改进。在C的程序调用时,免不了要进行参数传递,在多种传递方式当中,我在程序的大部分采用了最简单也是在单片机开发时最适宜的全局变量的传递方法。将需要传递的参数都设定为统一的全局变量,在程序的任何一个部分都可以调用。这种方式充分考虑到了单片机的寻址方式,减少了堆栈操作。同时带来的好处时,我可以在调试的过程中从存储空间的固定位置看到我想要观察的数据。这种思想在嵌入式系统的开发过程中,能够大大的简化查错的步骤、及时的了解到程序的运行状态。图4-2程序总流程图4.4初始化初始化模块有:锁相环,AD模块,PWM模块,I/O模块,中断及复位模块。MCU初始化:VOIDMCUint<VOID>{//禁止总中断DISABLE_INTERRUPTS;//CLKSEL的第7位置0,选择系统时钟源为OSCCLK//在PLL程序执行之前,内部总线频率=OSCCLK/2//CLKSEL.7决定内部总线时钟来源//=0时,BusClock=OSCCLK/2;=1时,BusClock=PLLCLK/2CLKSEL&=0X7f;//此时,BusClock=OSCCLK/2//禁止PLLPLLCYL&=0Xbf;//PLLCTL.6〔pllon设为0,先关闭PLL//根据需要的时钟频率设置SYNR和REFDV寄存器//计算公式:PLLCLK=2*OSCCLK*<<SYNR+1>/<REFDV+1>>SYNR=0x01;//对PLLCLK增频的因子REFDV=0X00;//对PLLCLK分频的因子//打开PLLPLLCTL|=<1<<6>;//PLLCTL.6〔pllon设为1;开PLL//通过判断CRGFLG寄存器的LOCK位,确定PLL是否稳定While<<CRGFLG&0x08>==0x00>;//时钟频率稳定后,允许锁相环时钟源作为系统时钟源CLKSEL|=<1<<7>;//执行后,BusClock=PLLCLK/2//设置是否允许IRQ中断INTCR&=0xbf;//IRQCR.6<IRQEN>=0禁止IRQ中断〔默认开〔2锁相环初始化:16MHz无源晶体振荡器产生的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论