毕业论文_走迷宫智能小车的研究与实现_第1页
毕业论文_走迷宫智能小车的研究与实现_第2页
毕业论文_走迷宫智能小车的研究与实现_第3页
毕业论文_走迷宫智能小车的研究与实现_第4页
毕业论文_走迷宫智能小车的研究与实现_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

摘要走迷宫智能小车主要是基于自主反应式智能系统原理。利用反射式红外传感器来导引,采用与地面颜色有较大差别的导引线,红外一体化接收头来检测障碍物的位置,通过改变单片机产生的PWM方波的占空比,使其能在设计范围内可实现任意角度移动,实现小车识别路线,进行自主迷宫探路,判断并实现自动避障,选择正确的行进路线。驱动电机采用直流电机,电机控制方式为单向PWM开环控制。控制核心采用MSP430单片机,仅用一块单片机就实现了信号采集,路线判断,电机控制。该技术可以应用于无人工厂,仓库,服务机器人等领域。总体规划对于走迷宫小车控制系统设计主要有三个方面一、控制电路设计;二、传感器选择以及安放位置设计;三、程序设计。从总的方面来考虑,传感器的使用数量应该尽量少以减少单片机的信号处理量,但是又必须能使小车行驶自如。控制电路要根据选用的电机和传感器来设计,主要考虑稳定性,抗干扰性。关键词MSP430迷宫算法避障寻迹PWMABSTRACTAMAZERUNNINGINTELLIGENTCARISMAINLYBASEDONTHEPRINCIPLEOFAUTOMATICRESPONSEINTELLIGENTSYSTEMITUSESREFLECTIVEINFRAREDSENSORTOGUIDEANDTHEPILOTWIRESAREVARYDIFFERENTFROMTHEGROUNDINCOLORITUSESINFRAREDRECEIVERTODETECTTHEPOSITIONOFTHEOBSTACLEANDISBYCHANGEOFPWMSQUAREWAVEPRODUCEDBYMCUTOREALIZEARBITRARYANGLEMOVINGAMONGTHEDESIGNEDRANGEANDINDENTIFYINGTHEROUTEITCANTOUCHESMAZEAUTOMATICALLY,JUDGEANDAVOIDTHEOBSTACLEAUTOMATICALLY,ANDCHOOSETHERIGHTMARCHINGROUTEITUSESDCMOTORASTHEDRIVINGMOTORTHECONTROLMODEOFTHEMOTORISUNIDIRECTIONALPWMOPENLOOPCONTROLTHISCONTROLMAKESMSP430MCUASITSCOREITONLYUSESONEMCUTOREALIZETHESIGNALCOLLECTIONANDROUTEESTIMATIONANDMOTORCONTROLTHISTECHNOLOGYCANBEAPPLIEDINTHEFIELDSSUCHASUNMANNEDFACTORYANDWAREHOUSEANDSERVICEROBOTTHEOVERALLPLANTHEDESIGNOFTHECONTROLSYSTEMOFMAZERUNNINGINTELLIGENTCARMAINLYINCLUDESTHREEPARTSFIRSTTHEDESIGNOFTHECONTROLCIRCUITSECONDTHECHOOSINGOFTHESENSORANDTHEDESIGNOFTHEMOUNTPOSITIONTHIRDPROGRAMDESIGNFROMAOVERALLPERSPECTIVE,YOUSHOULDUSETHESENSORSASFEWASPOSSIBLESOASTOREDUCETHESIGNALPROCESSINGAMOUNTOFTHEMCUANDATTHESAMETIMEYOUMUSTMAKETHECARMARCHFREELYTHECONTROLCIRCUITMUSTBEDESIGNEDACCORDINGTHEMOTORSANDSENSORSCHOSEN,MAINLYTAKETHESTABILITYANDTHENOISEIMMUNITYINTOACCOUNTKEYWORDSMSP430MAZEALGORITHMOBSTACLEAVOIDANCEPWM目录第一章绪论1第二章各部件的工作原理321前轮(导向轮)322电机423反射式红外传感器524红外一体化接收头6第三章硬件电路1131电机驱动电路1132反射式红外传感器电路1333红外一体化接收头电路1434处理器电路16第四章电路原理图19第五章控制算法2151黑线位置判别2152巡线算法2153搜线算法2354障碍物位置判别2355转弯控制2556迷宫探路控制26第六章相关软件29第七章总结3571本文总结3572进一步的工作35致谢37参考文献39附录一41附录二42第一章绪论当今社会,科学技术日新月异,时代前进的步伐越迈越宽,应用自动化设备,计算机处理,现代化通讯,数字化信息,现代化显示设备等高新技术而建立的现代化智能,监控等系统已经得到充分的发展与应用,智能机器人也就应运而生。同时,在建设以人为本的和谐社会的过程中,智能服务机器人能够完成考古发掘,海底揭密,宇宙探索等危险作业,以保证人身安全。国家中长期科学和技术发展规划纲要一文指出智能服务机器人是在非结构环境下为人类提供必要服务的多种高技术集成的智能化装备。以服务机器人和危险作业机器人应用需求为重点,研究设计方法、制造工艺、智能控制和应用系统集成等共性基础技术。重点研究低成本的自组织网络,个性化的智能机器人。20062020年,既是国家中长期技术发展计划实现阶段,也是我们最具有活力和最激情洋溢的时段。该智能小车模型是一辆完全由PCB拼装的小车。所有的机械结构和零部件都安装固定在电路板上。因此完全不需要机械加工,非常适合实验阶段机器人的研制。本文简述了智能巡线避障小车自主走迷宫的设计思路和实现过程。包括小车的机械结构、电路、软件、控制算法、调试方法等。可作为一般的设计参考。小车的左右后轮分别由2只6V直流减速电机提供动力;前导向轮是一只万向轮。430单片机的PWM发生器产生4路(分为两组)占空比可变的方波,经三极管进行扩流后分别驱动后轮左右电机。控制4路PWM的比例,不仅可以调节小车向前运动的速度,还可通过4路PWM占空比的差异,改变小车运动方向。5只反射式红外传感器位于小车前方,3只位于小车后方,小车周围还分布有7个红外一体化接收头来实现测距功能,将物体与小车的距离分为八个阶段,当物体离小车很近时实行相应的程序以躲避障碍,并用反射式红外传感器查找黑线位置,避免其脱离。第二章各部件的工作原理21前轮(导向轮)前轮是决定小车能否灵活拐弯的关键部分。这辆小车和汽车不同,不是靠前轮摆舵来控制转弯,而是靠左右后轮速度差来实现转弯控制。这样前轮实际上是从动轮。下图中,当小车左轮的速度高于右轮时,小车右转弯;反之,当小车右轮的速度高于左轮时,小车左转弯。前轮的速度可以分解为前进的速度和水平侧移的速度。普通的定轴的前轮只能垂直方向前进,水平方向是无法左右滑动的。因此小车不可能实现拐弯(实际的结果是因为前轮不能活动,右轮也成了从动轮,两轮速度一样,直线前进)。所以前轮一定要能够侧滑,并能转向。最简单的方法是使用万向轮。一般机械上使用的万向轮非常的笨重,实验效果很不理想。这里我们设计了一种简易的万向轮用一根镀锌铁丝弯成半圆形作为支架,穿一个小轮。当小车右转弯时,小轮相对于支架左滑动(其实是小轮因为地面摩擦而不动,支架右滑),转弯角也随之改变;小轮还会根据转弯量自动地调整到合适的角度。这种结构小轮是自由的,只要有轻微的力,就能使小轮滑动,转向非常灵活。图21前轮的结构需要注意的是万向轮的安装。要将U型半圆支架平行于地面,否则当小车左右转时极易发生坍塌现象。而且前轮对小车的运行轨迹影响很大,所以出了在安装时要保证U型支架平行于地面外,还需要对U型支架作相应的处理,比如润滑、将U型支架两端持平,以及还应保证前轮的活动空间,避免与前端的传感器和后端的电池盒发生碰撞、摩擦。实际我们所用的万用轮中间的孔较大,所以很容易发生侧移,我们可以用皮箱下面的小轮来代替现在我们所用的前轮,效果可能会好很多。22电机电机是我们的生活中不可缺少的动力源,常用的有交流电机和直流电机。这里小车的动力采用直流减速电机直接驱动,省去了齿轮组、传动部件等复杂的机械结构。这里选择了6V/300RPM的电机,速度和力矩都比较适中。直流电机的构造在绕有线圈的铁芯(转子)的外周,有相同数目的定子(永久磁铁)相向包围。通过整流器的电刷转子断续地得到电流,转子与定子的永久磁铁反复相吸、排斥,结果无论他们的相互位置如何,转子始终能够沿着一定的方向回转。在永久磁铁(NS)之间的线圈有电流通过时,产生电磁力,对应于永久磁铁产生的磁场,N极产生向上的力,S极产生向下的力。结果导致线圈旋转。在线圈旋转的同时,整流器也随之旋转,这样就能保证电流流向的自动切换以便维持转子向同一方向的连续转动。于是,线圈中不断地产生相同方向的旋转力。直流电机中的电刷与整流器实际上属于机械接触,由于在转轴转动的过程中他们的接触状态不断发生变化,往往产生电气噪声,这可能成为诱发CPU电路误动作的原因,因此为了克服噪声干扰,一般在电机电源端子上并联一个电容器。电机的安装采用焊接。电机背面2个电源端子用粗铜丝焊在电路板上,克服电机自由转动。电路板上刻有一比电机略长的槽口,卡住电机,用拉紧的铜丝焊在电路板将电机固定,克服前后运动。图23电机改进减速电机成本高,且300RPM以上的电机需12V供电,不方便。竞速车可改为录音机的磁带驱动电机(约3000RPM,车轮要减小)。用于固定电机的铜丝一般应用多股细铜丝线。若用单股而比较粗的铜线的话有可能会因为小车的抖动而使电机发生滑动,从而需要不断的对电机进行加固。23反射式红外传感器反射式红外传感器ST188采用高发射功率红外广电二极管和高灵敏度光电晶体管组成。检测距离可调整范围为415MM;采用非接触检测方式。可用于IC卡电度表脉冲数据采集、集中抄表系统数据采集和传真机纸张检测等。图24反射式红外传感器工作原理反射式红外传感器中包含一个发射器LED和一个光探测器(光敏二极管光敏三极管)。着两个元件被封装在同一个塑料壳体中,并且排列成适合他们工作的理想位置。LED发出的一束光被一个表面反射后又回到探测器中。图14是反射式红外传感器的工作原理图。封装在矩形壳体中的是发射器LED(由左侧的白色方块表示)和探测器装置(在右侧)。虚线表示光线从发射器LED中发出并反射回探测器;探测器检测到的光强大小取决于物体表面的反射率,而这一光强就是传感器的输出值。如图所示,选通信号(高电平)经过三极管扩流后送到传感器的K脚,如果检测到黑线,传感器C脚输出高电平;否则输出为低电平。图25反射式红外传感器及其检测距离与转换效率的关系图反射式传感器在高度受控的理想环境下的工作性能更好,因为影响它输出的外界因素有很多,如环境光的变动、传感器与被探测物体之间的距离,以及被探测物体的反射率等。为了减少环境光的干扰,首先需要调整传感器的方位使环境光不能直接射到探测器。反射式红外传感器ST188的最佳探测距离为614MM。所以将传感器垂直于地面并且调整传感器与地面的距离,大约在10MM左右。传感器引脚很细,容易晃动,需要穿过一块支撑板以增加强度;同时还可以通过铜柱的高度或增加垫片来细调传感器离地面的距离。图26传感器安装图24红外一体化接收头电视机、唱机等家电中广泛使用红外线遥控器。红外遥控器发出38KHZ调制的红外线,在接收端,被一体化红外接收头接收,解调出原始键码值。因为红外遥控使用广泛、成熟、大批量,所以相关红外接收、发射元件价格很低。本方案使用通用遥控器的一体化红外接收头作为检测元件。图27一体化红外接收头工作原理一体化接收头内部集成有带通滤波器,它只允许大约38KHZ的红外信号通过。这种仅对38KHZ敏感的特性,有助于消除环境光对遥控器接收的影响。如图,当红外线发射管IRLED)发出的38KHZ的红外线被一体化接收头接收时,接收头输出“0”。当没有侦测到红外线,或非38KHZ红外线(如日光灯干扰),输出“1”利用一体化红外接收头在38KHZ附近灵敏度的衰减的特性,可以实现测距功能。图2显示的是某品牌的红外线探测器(PANASONICPNA4602M)在38KHZ附近的灵敏度如果红外LED发送频率为42KHZ,接收头的灵敏度是频率为385KHZ的20左右。在非38KHZ频率下,探测器的灵敏度下降,为了让探测器探测到红外线的反射,物体必须离探测器更近,才能使反射的红外光更亮。图28接收头在38KHZ附近灵敏度曲线那么,最高灵敏度的频率可以探测最远距离的物体,较低灵敏度的频率可以探测较近距离物体。距离探测功能得以实现。选择8个不同频率,从最高灵敏度到最低灵敏度进行依次探测。首先尝试最高灵敏度频率,如果物体被探测到了,就让仅次于它的高灵敏度频率测试,观察是否可以探测到。依赖于不能再让探测器检测到的红外线频率,我们就可以大致推断物体距离处于哪个区域图29红外线测距原理如果需要更高的分辨率,还可通过扫频法找到临界频率,从而更精确的得到物体位置。下表是本人实测的频率距离关系(测量条件红外发光管通过5MA电流,用一张A4的白纸当障碍物)频率38KHZ41KHZ44KHZ48KHZ54KHZ60KHZ67KHZ69KHZ距离340CM300CM250CM200CM150CM100CM50CM25CM表1频率距离关系该方法的缺点是精度差,且对物体颜色深浅比较敏感。对于地图绘制等精度要求较高的场合不适用。但对于机器人避障功能或路径选择来说,已经足够。第三章硬件电路31电机驱动电路此部分是整个小车的大脑,是整个小车运行的核心部件,起着控制小车所有运行状态的作用。通常选用单片机作为小车的核心控制单元。这里选用MSP430X149单片机(如下有介绍)。考虑到小车必须能够前进、倒退、停止,并能灵活专性,在左右两轮各装一个电机分别进行驱动。当左轮电机转速高于右轮电机转速时小车向右转,反之则向左转。为了能控制车轮的转速,左右两轮的转速,可以采取PWM调速法,即由单片机的TAI和TBI输出一系列频率固定的方波,再通过功率放大来驱动电机,在单片机中编程改变输出方波的占空比就可以改变加到电机上的平均电压,从而可以改变电机的转速。左右两轮两个电机转速的配合就可以实现小车的前进、倒退、转弯等功能。这里采用简单小电流H桥集成功放电路。如图所示该电路上半部分采用S9013NPN三极管,下半部分采用S9012PNP三极管。它是一个既可靠又简单的电路,它的接口很简单,一是因为它仅有两个输入(A和B);二是因为当H桥集成功放电路的两边都导通时也不会造成电源短路(因为同边上下的三极管不会同时导通)。该H桥集成功放电路比任何将PNP三极管安置在上边的电路(该电路不会发生自动偏压)的效率都更高。该H桥集成功放电路工作时,若将A端置为高电平,而将B端置为低电平,电机将按一定的方向转动(参见图)。若将A端和B端电位对调,电机将朝另一方向转动。如果A端和B端的电位相同,电机将自由旋转。电路控制的真值示于表中。“0”为低电平,“1”为高电平。图31电机驱动电路如图所示,将PWM_L1加到A端,PWM_L2加到B端。当PWM_L1为高PWM_L2为低时,MG2通电开始顺时针转动;当PWM_L1为低PWM_L2为高时MG2逆时针转动。控制PWM_L1和PWM_L2信号高低电平的时间比,就可以控制MG的转速。同样的方法控制右轮。利用左右轮的速度差还可以转向。需要注意的是被二极管分流到电源两端的电力将造成主板电压的瞬变或噪声。更严重的是当采用PWM信号控制电机时,每次关断都会产生这种影响。如果导通三极管又重新开启,同时反向电动势电流仍然存在,结果三极管将直接导通电源正极和地。这一现象时间的长短取决于续流二极管的关断时间。这一电流称作过冲电流,它同样会产生噪声。基于以上原因,一条重要的对策是需要在H桥集成功放电路上加高速的旁路电容(瓷质电容或钽电容)来保护电路中的电子元件乃至电池。旁路电容的作用是平滑电流脉动和电源电压的瞬变。当电压出现尖峰时,电容将迅速地吸收这一能量,从而使电压保持恒定。当电压降低时,电容将向电路中回馈能量,从而使电压有所回升。改进该电路是用PWM来控制电机的。经试验验证该电路只有开关的作用,从单片机出来的PWM电压大约在35V左右,加到电机两边最多只有3V,这远远低于其耐压,因此转速也很慢,稍有摩擦就转不动了。因此需要再增加两个三极管来进行扩流,具体电路如下所示图32改进的电机驱动电路32反射式红外传感器电路这里的寻迹是指小车在白色地板上寻黑线行走,通常采用的方法是红外探测法。即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被安装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不倒红外光。单片机就是否反射回来的红外光为依据来确定黑线的位置和小车的行走路线。红外探测器探测的距离有限,一般最大不应超过15CM。这里用反射式红外传感器ST188。当小车在白色地面行驶时,装在车下的红外发射管发射红外线信号,经白色反射后,被接收管接收,一旦接收管接收到信号,输出端将输出低电平;当小车行驶到黑线时,红外线信号被黑色吸收后,将输出高电平,从而实现了通过红线检测信号的功能。将检测到的信号送到单片机的I/O口,当I/O口检测到的信号为高电平时,表明红外光被地上的黑线吸收了,表明小车处在黑色的引线上;同理,当I/O口检测到的信号为低电平时,表明小车行驶在白色地面上。为了提高控制精度,要求传感器排列紧密,越紧越好。但传感器排列紧密,传感器发射管的光线可能会从地面反射进入临近传感器的接收管。所以不能同时开启这些传感器。下图是传感器电路的一部分。其中6和7好传感器是用来记录车轮转过的圈数,以便于记录下小车走过的路径距离。图33反射式红外传感器电路传感器采取脉冲扫描式读。例如某时刻P_SEN1高电平,其余P_SEN25低,这样1、4号传感器的红外发射管亮,其余传感器不发射红外线。等待数据稳定后,读取1、4号传感器的数据。然后关闭1、4号传感器,打开2、5号传感器电源,依次类推,读取5个传感器的数据。这样可以保证任何时刻都不会有临近的传感器同时工作。从而保证了相邻传感器之间不会互相干扰。同时,红外发射管是除了电机之外耗电最大的器件,脉冲工作方式可以大大减少耗电量。33红外一体化接收头电路为了感应360度范围内的障碍物,传感器排布采用如下结构。图34红外测距环的传感器布置上图注意应把发射管安在接受管后面,防止小车行走时被破坏。每个传感器组由一只红外发射管、一只一体化红外接收头,和一只电容构成。可以测量该方向是否存在障碍物和判断障碍物的距离。电容用来稳定电路,防止电源和地发生短路。硬件原理采用一片MSP430X149作为控制器。利用TIMERA的频率发生器模式,产生38KHZ附近的若干频率,从P65输出方波。该方波经过晶体管Q18扩流来增加驱动能力,给7个红外LED供电。为防止互相干扰,7只LED轮流点亮,每次只亮一只LED,由IRE选择哪支红外LED被点亮。如果接收到反射回来的红外线,接收端将输出TTL电平,被单片机接收,然后执行相应的避障措施。如果未接收到任何信号,将一直输出高电平。因为一体化接收头只对38KHZ的方波敏感,而且它内部带有带通滤波器,所以需要在发送38KHZ的时候发送一段时间关闭一段时间,否则传感器会认为它是外界光而将返回的信号当作干扰信号而忽略掉。为了避免各个传感器之间的相互干扰,需要轮流打开接收器。另外,因为发光管发出的光是沿四面八方发送的,而且只要打开电源发射管就会工作,所以也为了避免因别的发光管带来的干扰,需要将发光管包的严严实实的。如图所示为红外一体化接收头的作原理上拉电阻一般选用1K,如果选用较大的电阻,其上拉的效果也不是很明显,有点大材小用的效果;如果选用较小的电阻,有可能方波的低电平就不会下拉到0附近。通过作试验,我们将上拉电阻选用300的电阻,结果38KHZ的方波的低电平大约在1V左右,这时单片机有可能会将它也看作高电平,也就是说相当于一直输出的是高电平。另外,还可以调整串联电阻的大小来调整传感器的测距范围。电阻越大,测量距离越小;电阻越小,测量距离越大。但因为单片机接收到的电流一般在5MA左右,所以串联电阻也不能很小,否则会烧坏单片机。经过试验,我们测得上拉电阻为1K串联电阻为100时它的测量距离最远,可达到3米以上。这七个传感器所起的作用是不同的。前排三个传感器用来检测前方是否有障碍物。若中间的传感器检测到障碍物,左前方的传感器再检测左边是否有障碍物如果没有小车左转弯;如果有,再判断右边是否有障碍物如果没有,则小车右转弯;如果有小车将向后退,在后退的过程中传感器还在不断的检测障碍物,一旦发现左边(或右边)没有障碍物时,小车将向左(或右)转弯。小车中间的两个传感器用来改变小车的转弯半径,避免小车在转弯的过程中撞到障碍物。小车后排的两个传感器是在小车后退的过程中防止小车撞到后面物体得到。因此,根据传感器所起的作用的不同,它们所要测量的距离方为也不同。所以分别给它们不同的串联电阻。经试验我们可以将前面三个传感器的串联电阻装成300的;左右两边的1K;后面的2K。34处理器电路小车采用一片MSP430X149作为控制器。它具有3路PWM控制器和串口。用到410个I/O口,其中红外一体化接收头传感器输入5个输出口8个,反射式红外传感器输入口5个控制口5个、电机控制口4个、JTAG占用4个I/O口。MSP430X149的特点是有五种节电模式;16位RISC结构,125NS指令周期;6个8位并行端口,且2个8位端口有中断能力;保密熔丝的程序代码保护;具有2个捕获比较寄存器的16位定时器TIMER_A,TIMER_B;两通道串行通信接口可用于异步或同步模式;串行在系统编程;多达60KBFLASHROM和2KBRAM等等。图35单片机工作原理系统采用32KHZ晶振作为定时采样用,主时钟用800K左右的DCO。另外留有JTAG口可以现场编程。并且还有19个引脚未用到,将来还可以扩展其功能。在做PCB板时已将这些引脚引出,可以直接使用。定时器TIMERA由一个十六位定时器和多路比较捕获通道组成。每一个比较捕获通道都可以十六位定时器的定时功能为核心进行单独的控制。它还具有以下特性输入时钟可以有多种选择,可是慢时钟,快时钟以及外部时钟。虽然没有自动重载时间常数功能,但产生的定时脉冲或PWM信号没有软件带来的误差。不仅能捕获外部事件发生的时间还可以锁定其发生时的高低电平。可实现串行通信;完善的中断服务功能;4种计数功能选择;8种输出方式选择和支持多时序控制等。TIMERA共有4种计数模式停止模式、增计数模式、连续计数模式和增减计数模式。我们用TIMERA的增计数模式来产生38KHZ的方波。具体原理为捕获比较寄存器CCR0用作TIMERA增计数模式的周期寄存器,因为CCR0为16位寄存器,所以该模式适用于定时周期小于65536的连续计数情况。计数器TAR可以增加计数到CCR0的值,当计数值与CCR0的值相等(或定时器值大于CCR0的值)时,定时器复位并从0开始重新计数。图28说明了增计数模式的计数过程。当定时器的值等于CCR0的值时,设置标志位CCIFG0捕获比较中断标志为1,而当定时器从CCR0计数到0时,设置标志位TAIFG(定时器溢出标志)为1。图36增计数模式计数过程中还可以通过改变CCR0的值来重置技术周期。当新周期大于旧周期时,定时器会直接增计数到新周期;当新周期小于旧周期时,改变CCR0时的定值器时钟相位会影响定时器响应新周期的情况。时钟为高时改变CCR0的值,则定值器会在下一个时钟上升沿返回到0,如果时钟为低时改变CCR0的值,则定时器接受新周期并在返回到0之前,继续增加一个时钟周期。可以随时间变化任意改变PWM信号的占空比,具体的做法是保持CCR0的值不变(周期不变)改变CCRX值(改变占空比)图37增计数模式时的输出实例TIMERA的输出模式由模式控制位OMX0、OMX1和OMX2决定,共有8种输出模式。除模式0外,其他的输出都在定时器时钟上升沿时发生变化。这里我们将输出模式选为输出模式7。用该方式产生占空比为50的38KHZ的方波;也可以通过改变CCRX的值来改变电机的转速,使其实现转弯、后退等动作。TIMERB的工作原理和TIMERA的相仿。第四章电路原理图三型寻迹避障智能小车由机械结构、寻迹电路、避障电路、电机控制模块和处理器电路五部分组成。(见附录三)机载计算机外部控制命令输入微控制器MSP430X149反射式红外传感器电路实现寻迹发送38KHZ脉冲发送PWM控制电机的转速红外一体化接收头实现避障图41总体结构图如图所示为小车的工作原理。打开电源时先初始化电机驱动电路、一体化接收头电路和反射式红外传感器电路。刚开机时小车的初速度很大,有可能不会沿着黑线运行,所以先让它空跑一段时间。小车在遇到障碍物之前,会沿着轨迹前进,遇到左拐弯时实行拐弯程序。若在跑道上放置障碍物,小车实行相应的避障程序。绕过障碍物时小车再继续按轨迹前进。这有点理想化,实际中不会很完美的将避障和寻迹两部分接合起来,所以对寻迹算法有很高的要求,要求当小车在绕开障碍物时一旦检测到黑线就能立刻反应过来按照黑线的轨迹来运行。我们将红外一体化接收头和反射式红外传感器分为两组。第一组包括前排的三个和之间的两个一体化接收头以及五个反射式红外传感器,主要是在小车前进中用来检测黑线和障碍物位置的;另外一组是在小车后退时用到的。这两组传感器分别作用,即在前进中开启第一组,后退时再开启另外一组。这样可以有效的利用单片机,也不会造成程序的混乱。第五章控制算法51黑线位置判别地面的黑线是导引线,位置读取和计算的准确度、稳定性将直接影响小车的控制和运行。下图是实际运行中出现的情况,黑块表示感应到黑线的传感器。传感器的排列比较密,可能12个传感器都能踩到黑线;转弯处车身倾斜甚至23个传感器都能踩到黑线。应该求黑线的中心位置作为结果。图51反射式红外传感器的运算图计算的方法是从左数,找到第一个黑色传感器编I,再从右数,找到第一个黑色传感器编J。IJ/2就是黑线中心位置。这样算出来的结果中有小数部分,用起来不太方便,因此我们将结果放大10倍,再减去之间位置时算出来的值。52巡线算法小车是一个非常典型的惯性系统。对于这一类被控对象,PID算法能简单有效的进行控制。对PID算法做个简单的说明假设小车中心线在黑线中心线上,偏差为0,小车正常行驶。如果某时刻检测到黑线偏左,就要向左转弯;如果检测到黑线偏右,就要向右转。偏得越多,就要向黑线方向打越大的舵角。这就是比例控制(P)遗憾的是,这种方法并不能将小车稳定在线上,因为小车有惯性。假设黑线偏左,说明小车偏右了,需要左传舵,等到小车回到中心的时候,停止转舵,可是小车的惯性会使车身继续左转,直到冲过黑线,黑线又偏右。然后控制过程反复,车身是在左右摇摆中向前行走的。这种摇摆叫做“超调”,超调越大,控制越不稳定,容易出轨。POSIT0POSIT055POSIT05POSITIJ/2为了克服惯性,最简单的办法是任何控制动作都提前一点。适当调整提前量可以抵消惯性;另外,即使偏移量相同的情况下,在不同半径的弯道,也需要不同的舵角。这些都是比例控制不能实现的。我们除了位置信息之外,还需要知道轨迹的变化趋势。为了实现提前控制,在时间上,除非延长传感器,否则没有办法提前获知转弯。那么我们只能在控制量上想办法。一个函数的导数,反映了该函数的变化趋势。同样我们可以用黑线位置的微分值来提前得到变化趋势。用本次位置减去前次位置求出差值,就大致知道偏移量的变化趋势。将该差值和比例相加后一起作为控制量,即可实现提前控制。这就叫做比例微分控制(PD控制)下图是小车的控制系统框图图52PID控制算法传感器位置求出后,减去中心值,得到和中心的偏差量。该偏差量乘以比例系数得到比例控制量。并且计算相邻若干次偏差量之间的差值,乘以微分系数,得到微分控制量。将比例控制量和微分控制量相加,作为最终的舵角控制量。积分控制在此系统中没有使用,原因是舵角到位置之间本身就是积分关系的,另外积分控制有相当大的滞后,对控制稳定性不利。一般在调节P和D时需要先调节P的值,因为比例系数较微分系数对小车的影响更大。在调节P的值时可以先将D的值置为0。当发现小车在偏离黑线却可以很快的转回来时,P就调的差不多了;D的调节相对简单。53搜线算法当小车因惯性、超调、控制失败、环境干扰、黑线中断等原因冲出黑线后,需要启用错误处理算法,重新搜寻黑线。这里用了一个最简单的方法当判断传感器没有读到黑线位置时,不运算也不输出,这样小车就会保持冲出黑线前最后一刻的姿态,继续前进。如果黑线中断或被遮挡,小车会沿原定路线走,如果小车因为超调、惯性拐出跑道,会继续满舵转圈寻找黑线。这种方法简单,但很多情况下会找不到跑道,在原地打转。所以我们应该改进算法,使小车在若干秒满舵转圈仍然找不到黑线时就放大转圈半径等。还有,小车如果在转弯时的速度太快,小车来不及处理,很容易脱离轨道,而且现在我们所采取的程序是让小车在转弯时如果弯度太大,一个轮的速度就会为0,而另外一个的则是全速前进。在走直线时,小车的速度也稍有减慢。所以我们需要对程序进行相应的修改,让小车在走直线时能全速前进;在拐弯时速度能慢下来。54障碍物位置判别1方案一如图所示,将障碍物与小车之间的距离分为以下八挡。当小车的正前方离障碍物的位置小于参数30时,将电机反转一定时间然后从左边绕开它,继续向前行进;同理,可以实现躲避左边、右边、后边的障碍物。并用反射式红外传感器来检测黑线的位置,使小车能按黑线前进。图53障碍物距离与参数的关系图图54矢量合成法计算距离用矢量合成法来计算障碍物与小车之间的距离,并将其转换为上图所示的关系。如上图所示,将每个传感器的数据看成一个推力矢量,并将它们分解在X轴和Y轴上,FXFCOSA,FYFSINA。注意由障碍物产生的矢量由传感器指向测距环中心,而由光线产生的矢量由测距环中指向传感器。将各个矢量分解在X轴和Y轴上后,求X轴和Y轴上的矢量和,将Y轴上的矢量和作为两轮的共同速度,而将X轴上的矢量和作为两轮的差速度,这样就能使小车产生避障的动作。这样算下来精度不是很高,而且传感器的位置本来就没有对某个点完全对称。2方案二用上面的算法会增加复杂性。最简单的方法是通过改变串联电阻的方法来改变传感器的测距范围,这样,既可以有效地躲避障碍物,而且也不用增加算法来判断离障碍物的位置,可以更加准确的躲避障碍物。55转弯控制前文已述,只要改变左右两轮的速度比,即可控制小车的转弯方向。软件上占空比可设置为01000,分别对应到寄存器数据的01000。按右图控制左右轮PWM寄存器的值,即可控制转向。图55电机转向及转速控制改进这种方法的速度控制是开环的。占空比和实际速度、实际转弯角之间并是很不严格的线性。加上电机的差异、负重的不同、电池电量的差别、轮胎大小的差别都会造成速度的差异。虽然上面的巡线算法可以将这些误差都包进反馈环而得以校正,但会造成控制性能的下降。车轮上可以安装反射辐条,或者打孔,用红外传感器计算脉冲频率而测量速度,并做速度反馈,将轮速严格保持在指令给定的速度上,控制性能会有明显提高。56迷宫探路控制如果迷宫不太复杂,且主要为纵横方向的直线,可采用让小车在路口始终左转或者始终右转的方法走迷宫,也就是让小车沿迷宫的边沿走,只要在出口处放置一个标记,让小车用光电传感器识别即可。另外也可以让小车在每个路口处记录下支路数,以及已经走过的支路,如果此路口不通,退回选择没有走过的支路。这样最终也能走处迷宫。最终我们将要让小车自主学习,因为小车是靠后轮驱动,我们通过两个反射式红外传感器记录下两个后轮转过的圈数(或者走过的路径),当小车第一次走出迷宫之后,再一次走时,他将通过最短的路径走出迷宫。另外迷宫图的设计如附件所示。(迷宫图的设计是一个很灵活的东西,制作过程我准备了更多的材料,我们在今后的实验过程中,可以根据需要对迷宫图加以改进,比如在复杂度,在迷宫所走路线的宽度等等都可以加以改进,当然对软件的要求也是越来越高。对于迷宫寻路程序,我们有两种思路无记忆自主搜索法和有记忆寻路法一)无记忆搜索法利用小车前面三个传感器来检测障碍,设置向前,向左,向右三个转向优先级的高低,来进行自主搜索。直行优先级最高,右边其次,再向左,最后进入死胡同后,后退调头。当小车被障碍物挡住,或者是其他原因卡住以后,小车将后退一段距离,然后再继续寻路。值得改进的地方是,让两边的传感器检测的距离较近一些,中间的传感器检测距离较远一些,对于迷宫探路更加方便。在这里首先需要改硬件电路,让两边给红外发光管定时扫描的定时器和中间的红外发光管定时扫描的定时器不一样就可以设置不一样的检测距离。二)有记忆探路法既然是有记忆的,就需要对小车走过的行的通的路线进行记忆存储,首先实现一个以链表做存储结构的栈类型,然后编写一个求解迷宫的非归程序。伪代码如下从入口开始DOIF当前位置可通当前位置入栈;IF当前位置是出口结束ELSE取得当前位置当前方向上的下一位置为当前位置;将新当前位置入栈;ELSE从栈中弹出栈顶元素为当前位置WHILE当前位置已无下一有效位置DEFINEPIRE1_HP2OUT/IRE1口选通,即打开传感器1的发光管P2DIR|BIT7/IRE2口选通,即打开传感器2的发光管P6DIR|BIT5/IRE3口选通,即打开传感器3的发光管P3DIR|BIT7/IRE6口选通P3DIR|BIT5/IRE7口选通P1DIR|BIT6/P16口为TA1输出方式,输出占空比为50的38KHZ方波P1SEL|BIT6TACTL|TASSEL_2TACLR/TIMER_A时钟源选为SMCLK,清TARTACCR068/CCR5约263US中断一次,即产生约38KHZ的PWM输出TACCTL1|OUTMOD_7/CCR6输出为RESET/SET模式TACCR134/产生占空比为50的PWMTACTL|MC_1/TIMERA用于增计数模式/系统时钟设定/DCO设置为1000KHZ/ACLK为LFXT1低频模式/MCLK为DCOCLK/SMLCK为DCOCLKVOIDINITCLOCKVOIDDCOCTL0X000X00BCSCTL1XT2OFFDIVA_00X05BCSCTL2SELM_0DIVM_0DIVS_0VOIDDELAYUNSIGNEDINTJ/延迟程序UNSIGNEDINTIFORI0IJIVOIDMEASURE_DISTANCE/1PIRE1_H/打开1号传感器DELAY34/延迟,等待数据稳定IFIRE1_IN0/如果接收到的信号为低电平,表明前方有障碍物DAT01ELSEDAT00PIRE1_L/关闭1号传感器/2PIRE2_H/打开2号传感器DELAY34/延迟,等待数据稳定IFIRE2_IN0/如果接收到的信号为低电平,表明左前方有障碍物DAT11ELSEDAT10PIRE2_L/关闭2号传感器/3PIRE3_H/打开3号传感器DELAY34/延迟,等待数据稳定IFIRE3_IN0/如果接收到的信号为低电平,表明右前方有障碍物DAT21ELSEDAT20PIRE3_L/关闭3号传感器/4PIRE4_H/打开4号传感器DELAY34/延迟,等待数据稳定IFIRE4_IN0/如果接收到的信号为低电平,表明右前方有障碍物DAT31ELSEDAT30PIRE4_L/关闭4号传感器/5PIRE5_H/打开5号传感器DELAY34/延迟,等待数据稳定IFIRE5_IN0/如果接收到的信号为低电平,表明右前方有障碍物DAT41ELSEDAT40PIRE5_L/关闭5号传感器VOIDMAINWDTCTLWDTPWWDTHOLDINITCLOCKINIT_SENSOR2WHILE1MEASURE_DISTANCE_NOP第七章总结71本文总结现在小车已经能够独立的完成寻迹和避障功能了。虽然有时候它不能很完整的走完所规定的路线,但从它转弯、直走的轨迹上来说,已经基本上是按轨迹很完美

温馨提示

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

评论

0/150

提交评论