![毕业论文-智能避障小车设计_第1页](http://file4.renrendoc.com/view/051ac8608d534c27739a547630e2c5be/051ac8608d534c27739a547630e2c5be1.gif)
![毕业论文-智能避障小车设计_第2页](http://file4.renrendoc.com/view/051ac8608d534c27739a547630e2c5be/051ac8608d534c27739a547630e2c5be2.gif)
![毕业论文-智能避障小车设计_第3页](http://file4.renrendoc.com/view/051ac8608d534c27739a547630e2c5be/051ac8608d534c27739a547630e2c5be3.gif)
![毕业论文-智能避障小车设计_第4页](http://file4.renrendoc.com/view/051ac8608d534c27739a547630e2c5be/051ac8608d534c27739a547630e2c5be4.gif)
![毕业论文-智能避障小车设计_第5页](http://file4.renrendoc.com/view/051ac8608d534c27739a547630e2c5be/051ac8608d534c27739a547630e2c5be5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE12PAGE46封面PAGE1HUNANUNIVERSITY毕业论文论文题目智能避障小车设计学生姓名学生学号专业班级自动化1103学院名称电气与信息工程学院指导老师学院院长2015年5月6日摘要避障是智能小车应具备的基本功能之一,以P89C51RA芯片为核心,运用红外传感器采集小车遇到的障碍物的信息,并且能自主的控制小车,智能的对障碍物进行躲避。该论文按照设计要求对智能小车避障进行设计,文中对其工作原理进行了一定说明。为了达到成本低,简单易操作,并且实用性好的要求,先在室内完成达到智能车能够躲避障碍的要求。关键词:P89C51RA,智能,红外避障传感器/HtmlReport.aspx?id=copydetect_35de6b99-5545-40b0-8ad6-595b47da92fa&reportid=2ea7bf42-2f03-4557-85bc-a4a3012860cdAbstractTheobstacleavoidanceisoneofthemainfunctionsthatanindependentlyintelligentcarriageshouldbeprovided.UsetheP89C51RAasakeycomponent,collectingtheenvironmentalinformationandcontrollingtheintelligentcarriage,akindofobstacleavoidancesystemofintelligentcarriageisdesigned.Inthissystem,infraredobstacleavoidancesensorsareusedtodetectthebarries,whicharefrontofdistancebetweentheintelligentcarriageandthebarriers.Thesystem'sdesignissimple,andhaslowercostandbetterrealtimefeatures.Andatthesametime,thissystemhasobtainedanticipatedexperimentalresultsintheindoorenvironment.Thatis:theintelligentcarriagecanarriveatthedestinationwithoutanycollision.Keywords:P89C51RA;intelligent;infraredobstacleavoidancesensors湖南大学毕业论文原创性声明本人郑重声明:所呈交的论文是本人在老师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。学生签名: 日期:2015年5月日毕业论文版权使用授权书本毕业论文作者完全了解学校有关保留、使用论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权湖南大学可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本论文。本论文属于1、保密,在______年解密后适用本授权书。2、不保密√。(请在以上相应方框内打“√”)学生签名: 日期:2015年5月日指导教师签名: 日期:2015年5月日目录目录目录摘要 IAbstract II目录 I第一章绪论 11.1小车避障系统设计的意义 11.2小车避障系统 21.2.1主控系统 21.2.2机械系统 41.2.3电机驱动模块 41.2.4传感器系统 51.2.5电源电路的选型 61.2.6里程检测模块 71.2.7显示模块 7第二章主控制单元 82.1整体构思 82.2主控制部分 92.2.1CPU介绍 92.2.2CPU功能 112.2.3CPU相关电路 122.3主程序设计 122.3.1关于定时与计数器 122.3.2程序 13第三章驱动单元 143.1直流电机的驱动原理 143.2直流电机的驱动电路 15第四章躲避障碍物单元 174.1避障传感器电路 174.1.1近距离避障传感器 174.1.2远距离避障传感器 184.2避障方法 194.2.1前方有障碍物 194.2.2侧面有障碍物 214.3避障程序 22第五章显示单元 225.1里程和时间显示 225.2显示模块硬件 225.2.1ZLG7289A介绍 245.2.2ZLG7289A串行接口 265.2.3ZLG7289A控制指令 27第六章在系统编程 316.1在系统编程(ISP)介绍 316.2单片机与PC机的连接 316.2.1连接介绍 31参考文献 32附录 33结论 44致谢 45湖南大学毕业设计湖南大学毕业设计第一章绪论1.1小车避障系统设计的意义是的,在我们身边科学技术已经到了相当发达的地步正如我们生活中所见,它为我们带来了很大的便利,尤其是交通方面。现在,几乎出门都是代步车,可是,这么多的车辆就造成了交通事故的频繁发生,实例是很多的,报纸新闻也随处可见类似的事件。交通事故的发生是源于多方面原因的。当然,如果我们的车能够在事故发生之前辨别出危险的情况,拉大与险情的距离,如果当我们的汽车发现前方有障碍时在人脑还没有反应过来之情就避开障碍,这种情况就可以最大程度的避免事故的发生,因此,这就要求我们车向智能化发展。自从人类文明开化以来,人们就想各种各样的方法来使自己的劳动更加轻松,是自己时时刻刻保持着安全,然而车辆越来越多,人们无可避免的会面临各种各样的险情,当事故发生的越来越多的时候,聪明的人类开始想各种各样的方法是自己避免危险。机器人的出现给了这些人启发,他们想到了智能车的思想,就这样智能避障车成了无可替代的选择。人类文明越来越先进,机器人种类越来越多,于是,随之而诞生的传感器也越来越多,其中视觉传感器机器人和智能避障的‘眼睛’。视觉系统最有代表性的应用是智能车和各种无人机以及机器人的自动导航系统,现在基于视觉系统的图像处理以及模式识别的应用越来越发达,基于各种算法的视觉系统如雨后春笋般大量涌现。目前来说视觉传感器的核心大多是摄像管或CCD承担的,现在的CCD已经有了自动聚焦的功能,可以自动的判断物体位置,通过自动聚焦是拍摄的物体更加清晰。可是目前来说CCD为什么没有大范围使用呢?它不仅造价方面比较昂贵,并且它的体积也是比较大,所以这两个方面就对它的广泛应用造成了阻滞,并且它的使用方式也比较麻烦,所以在对图像的要求不是很高的时候考虑使用接近觉传感器是一种比较好的做法。智能小车要实现避障功能必须有传感器做‘眼睛’,还必须有障碍物来做障碍。避障控制系统是基于自动导引小车(AVG—auto-guidevehicle)系统,它要能够依靠传感器自动及时的避开障碍,选择合适的路线。使用传感器感知路线和障碍并作出判断和相应的执行动作。1.2小车避障系统机器人的种类越来越多,该智能小车也是其中一种。该智能小车大体上可以分为3个部分:CPU、传感器检测部分、执行部分。该智能小车可以实现自动避障,还可以扩展循迹等功能,它能自动的感知障碍物的存在,从而对障碍物进行躲避,避免危险情况的发生。而该智能小车不需要对图像进行清晰的感知,只需要识别出事障碍物即可,因此不需要使用价格比较搞得CCD传感器,只需要用价格低廉,方便使用的红外传感器即可。而可以用直流电动机来充当智能小车的执行部分,用它来控制智能小车的速度力度以及运行方向。直流电机可以用单片机来驱动,第一种方法:选择有PWM功能又不需要占用资源的单片机,并且能够实现高准确度的调速调向;第二种方法:我们可以编写软件来模拟出PWM的输出方式,这样的优势是可以选择多种单片机芯片,这样做的缺点是控制精度不是太高。经多方面考虑,我决定用第二种方案。运用P89C51RA芯片,然后在配合编写程序软件来实现。还有显示部分通过软件可以显示行使时间和路程。1.2.1主控系统根据设计要求,我认为要解决智能小车的自动避障,就是解决软件的程序编程问题,而且这是一个多输入量的复杂程序。多方查资料,我认为可以有一下两种方案进行选择。方案一:仅采用CPLD作为核心部件的方案如下图所示:选择CPLD芯片(如Altera公司的EPM7128S芯片)作为核心部件,来达到该智能小车的避障,并且用该芯片来计算小车的里程数以及小车的运行时间等。CPLD具有很多优势:它可以灵活的进行编程,对初学者来说更易于掌握、它还具有很高的集成度,它可以承受更多元件的构成、它的设计开发周期很短、这样就可以很快的进行更新换代,它还有很宽的使用范围,在很多领域都可以看到它的存在、它还具有非常先进的开发工具,这样就确保了生产的芯片具有很高的精密性、最主要的是它的造价非常低,这就大大降低了设计成本或者说商家的成本,并且它还可以实现较大规模的电路设计,由于它具有这么多的优点所以它被广泛的推广应用,在实际应用过程中它最实用的编程语言有VerilogHDL和VHDL。而CPLD在控制方面比单片机有一定的不足。设计的该智能小车速度不可能很快,于是芯片对障碍信息的处理要求不是特别高,然而CPLD的处理速度特别快,因此运用MCU芯片就可以了。如果非要用CPLD芯片,那么在控制方面肯定会遇到很多麻烦。因此,这种方案不完善,舍弃。里程检测里程检测红外遥控障碍检测CPLD避开障碍显示行驶里程、时间等指示灯显示行驶路线以CPLD为核心的原理框图方案二:仅采用单片机作为核心部件的方案下图所示:控制系统的核心用单片机来代替,用单片机控制来实现智能车的避障、显示路线、时间、里程等。在了解了我要设计的智能避障小车的各种因素之后,我明白实现小车的自动控制是重中之重,在大学的课程中我们进行了对单片机的了解以及运用,它操作简便,控制精准,最主要的我有这方面的基础知识。在我对小车进行设计的时候,通过综合多方面考虑,运用单片来做控制系统核心是在适合不过的了。单片机的资源丰富、控制功能强、价格便宜、寻址功能优就可以充分体现了。所以综合看来用单片机做核心部件这个方案是比较合理,可以选取该方案。以单片机为核心的原理框图以单片机为核心的原理框图单片机里程检测红外遥控障碍检测避开障碍显示行驶里程、时间等指示灯显示行驶路线这是一个多变量输入的复杂的程序控制系统,我需要选用可以处理多输入量的标准单片机,不能用简单的只有I/O口程序存储小的小体积单片机,所以我选P89C51RA单片机作为本设计核心控制装置,51单片机不仅能对片内某些特殊功能的寄存器某位进行处理,还能进行位的逻辑运算,功能特别强大,使用起来也比较方便,更可贵的是它价格也比较便宜。在考虑了各种因素之后,我认为可以只采用一片单片机进行控制,利用P89C51RA单片机的资源,进行对智能避障小车的设计。1.2.2机械系统智能避障小车的设计要求小车的机械系统具有稳定、简单、易行的优点,而四轮运动系统具备车身动态的稳定、牵引力大,通过性好,而且安全系数高等特点。驱动部分:因为该智能避障车的功率比较小,车上又装有电池、直流电机等各种电子器件,相对重量比较大。为了是小车能顺利运行,且行驶平稳,于是我在直流电机跟轮车轴之间设计了减速齿轮。显示部分:将显示模块放置小车前部上方,利于观察。电池的安装:我把电车安装在车的底盘处,这样能使小车的重心在车的底部这样能保证的车的平稳运行,增强车的抓地力,减小车运行方向的偏差。1.2.3电机驱动模块这个模块经过综合考虑,我觉得有三个方案可以供选择。方案一:通过运用继电器对开关的控制,从而对智能避障车的速度和方向进行控制。这个方案设计的电路比较简单,但是继电器存在响应慢,有一定不稳定性,并且容易损坏等缺点。方案二:可以采用分压的想法,运用电阻的搭配或者电位器来调节电动的进行分压,但是电阻分压只能用于级别有限的调节,而电位器价格方面又比较昂贵,而在该智能车的设计中使用的直流电动机的电阻又比较小,这样的话设计起来就比较困难,因此该方案不是理想方案。方案三:最合理的一种方法就是用功率三级管来控制直流电机,这样可以把功率放大。设计这样的电路和原理都比较简单,并且低成本,并且能够提高电机的转速加速,就可以控制小车的加速,经过考虑,这里我决定采用由达林顿管组成的H型PWM电路。运用单片机通过对电路占空比的调节来控制直流电动机的转速,从而可以调控小车的速度。该电路占用单片机很少的内存资源,并且它的调节运行速度比较快,不会造成很大误差,所以它的工作效率非常高;H型PWM电路可以基本上实现对小车速度和方向的控制;因为电子管具有稳定性强,开关速度快的优点,所以它在各个电路中有比较广泛的运用,尤其是在PWM调速电路中。PWM调速系统具主电路简单、运用电子元件少、开关频率高很高的定位速度和精度、稳定性高、低速性能好、动态响应好、抗干扰能力强、调速范围宽、并且带负载能力强等优点。因此该方案是比较理想的方案。1.2.4传感器系统该系统一般有两个方案可供选择。方案一:采用红外传感器,通过红外光的反射与接收,来判断障碍物的位置,该装置只有当障碍物反射红外光时才会有信号的采入,接收信号的强弱只与小车距障碍物的距离有关。因此通过小车接受到的红外光信号的强弱就可以判断小车距离障碍物的距离,这样就可以避免小车与障碍物发生碰撞。下面我们来讨论一下如何选取红外探测器,并且了解其工作方式:1、如何选取红外探测器:红外探测器有很多优点,它的发射功率大,并且有极强的抗干扰能力,因此他在工业生产以及社会生活各方面有特别广泛的应用,红外探测器一般情况下可以分为主动式和被动式两种工作方式,什么是主动式红外探测器呢?它本身带有可以自动接收和发射的红外光源,它自己把红外光发射到障碍物上,然后经过障碍物反射然后再进行接收,这样就可以判断出小车与障碍物的距离,这样就可以提前采取措施,避免小车与障碍物碰撞。被动式红外探测器没有自带红外光源,但是该探测器可以通过接受障碍物反射回来的其他特征光谱或者通过温度差异进行成像,然后判断障碍物的距离以及位置等。直流直接驱动方式稳定性太差而且还具有带动负载能力弱等缺点;交流调制式调节方式完全解决了这些不足,它的抗干扰能力,稳定性都比较强,可以很好检测小车与障碍物的距离和障碍物的位置,但是交流调制式驱动方式的电路设计比较复杂。设计该小车的目的就是通过智能的方式躲避小车行驶过程中可能遇到的障碍物,那么如果提前知道了知道障碍物到小车的距离就可以安全的避过障碍物,因此我们可以选择主动式的红外探测器来作为避障感应装置,它不仅操作简单,造价低,而且它的安全性能以及稳定性都是具有很大的优势。主动式红外探测器一般有下面三种三种形式。红外发光管红外接收管红外发光管红外接收管分立元件型透射遮挡型反射型图1-3红外探测器的形式主动式红外探测器常用的驱动方式一般分为两种:交流调制方式和直流直接驱动方式。通过多次试验以及长期的运用,我们知道直流直接驱动方式具有很大的缺点,它的稳定性太差,而且它的带动负载能力较弱等;交流调制式调节方式完全避免了这种情况的发生,它的稳定性,抗干扰能力都比较强,可以很好检测并且及时的判断出小车与障碍物的距离和障碍物的位置,但是交流调制式驱动方式的电路设计比较复杂,对于初学者来说要花费很大功夫去了解认识它。方案二:可以通过超声波传感器来探测距离障碍物的距离,当障碍物接触和反射超声波的时候就会有信号的输入,通过测量超声波传感器感应小车发射出去然后又接收到的超声波时候的时间差,再根据超声波传播的速度,运用数学知识就可以知道小车距离障碍物的距离,然后把这个信号传输到单片机进行处理,从而单片控制小车进行对障碍物的躲避,从而就可以避免了危险的发生。因为超声波传播速度特别快,如果小车与障碍物的距离近的话时间差就不容易测量,因此该方法比较适合测量小车与障碍物的距离较远时。方案二中用到的超声波换能器的价格比较昂贵,并且该电路的设计特别复杂,而我们进行试验的时候是在室内,小车距离障碍物的距离不是太远,因此运用该方案的时候必定会存在很大的误差,不能很好或者很安全的躲避障碍物,所以本设计中药选用红外传感方式,因为检测时小车距离前方障碍物有一定距离,环境光会有很大的干扰,所以我考虑选择交流调制方式,它的有点是抗干扰能力强,并且有较强的稳定性;为了使设计简便,小车的侧边距离障碍物时又比较近,因此在侧边可以选择直流交互时检测器。1.2.5电源电路的选型电源电路也具有两种方案可供选择。方案一:只在小车上安装一个电源对小车的各个器件供电。这种方式电路设计比较简单,易于设计,并且操作简单;可是这种方式没有考虑到电动机启动瞬间电流特别大,造成电压不稳定,输出信号不平滑,而且还容易造成单片机掉电,因此这种方法不是一个好方法。图1-4稳压电路方案二:为了避免方案一种那种情况发生,可以采用稳压电路进行供电。使用一个独立的电源对电动机进行单独供电,使用另一块电源对小车的其他器件进行供电,它们之间就不会相互影响,那么在刚启动电路时也不会造成电压的不稳定等。这样做法虽然不如单电源方便灵活,但可将电动机驱动所造成的干扰完全消除,进一步提高系统稳定性。1.2.6里程检测模块这里采用山地车测里程所用的码表那种形式,利用磁力感应车轮的转速(就是每分钟走了几圈),然后将转速乘以车轮的周长(就是车轮在地上走一圈是多远,这个新买的码表要自己设置的),然后就可以得到车走的里程了。可以运用这样的方式,把那个磁感应装置安装在小车的车轮上进行感应,通过感应就可以知道小车车轮转了多上圈,在乘以小车车轮的周长就可以知道小车走的里程了。1.2.7显示模块显示模块综合来看可以有两个方案可供选择。方案一:通过单片机,直接驱动LED,通过8个I/O口驱动八个LED,8个I/O口驱动LED的八段发光二级管,此方法占用大量的I/O口。方案二:可以使用数码管显示,这种显示方式比较简单,并且有低能耗,抗老化,耐操作等优点。总结一下,这次设计智能小车,可以自主的进行对障碍物的躲避,并且能够按照既定路线进行行驶,并且可以根据编写的软件程序可以控制小车行驶的速度和控制小的方向。主要是以P89C51RA单片机为核心,采用电磁效应进行里程统计,红外传感器进行对障碍物的检测,进而对障碍物进行躲避,使自动寻迹小车准确跟踪轨迹路线;采用直流电机对车的转向进行控制,由软件实现了小车自动行驶、自动避障等多种功能。第二章主控制单元2.1整体构思从上面第一章的分析我们可以看出,用单片机作为核心部件设计简单,易操作,并且达到了设计的要求,所以可以选定用单片机的设计方案,其模拟设计图如下图所示。LEDLED显示模块(时间、里程)P89C51RA侧体左侧红外传感器车体右侧红外传感器车体左前红外传感器车体右前红外传感器控制直流电机驱动器路程传感器图2-1系统总原理框图该图从理论上说明了此智能避障小车系统的工作原理,它利用P89C51RA芯片作为核心控制期间,通过编写软件程序输入进而对小车避障进行控制,并且利用P89C51RA芯片控制直流电动机来的转速以及转向来控制小车的速度以及方向,利用红外传感器的感应系统来控制小车与障碍物的距离,避免小车与障碍物接触,这样就可以避免危险事故的发生,左前方和右前方的红外传感器是判断小车与障碍物前方的距离,控制小车及时的改变方向,防止小车前方与障碍物的碰撞,而小车侧面安装红外传感器是为了避免小车躲避障碍物时与障碍物发生刮擦,还运用了LED显示模块,用来显示时间和里程等。2.2主控制部分2.2.1CPU介绍CPU芯片P89C51RA2xx包含8K/16K/32K/64K可并行可编程的非易失性FLASH程序存储器,并可实现对器件串行在系统编程(ISP)和在应用中编程(IAP)。管脚描述注:为了避免上电时的“latch-up”效应,管脚(Vpp除外)上的电压最大不能超过Vcc+0.5,最低不能低于Vss-0.5。2.2.2CPU功能上面介绍了该芯片的各个引脚的功能,并且说明了芯片的主要控制模式,我们可以运用该芯片控制小车的各个模块,用它作为主控系统,控制小车进行智能的避障操作,它控制小车左前右前左侧和右侧的红外传感器来控制小车与障碍物的距离,这样运用这些功能可以避免小车与障碍物发生碰撞或者刮擦,CPU的另外一个功能就是要控制直流电动机的转速以及转向,这样就可以控制小车的行驶速度以及可以控制小车什么时候进行躲避障碍物。2.2.3CPU相关电路 CPU复位电路如上图所示,该芯片有两个主要电路,一个是发生时钟信号的时钟信号电路,一个是CPU复位电路。其中时钟信号电路有两种形式(如上图)。一种形式是内部方式,一种形式是外部方式。它们的原理图大致是上图的形式。2.3主程序设计2.3.1关于定时与计数器对于P89C51RA2芯片,定时器和计数器分别有4个模式:模式0、模式1、模式2、模式3,其中模式0、模式1、模式2、模式3基本相同,模式3不同如下所述,而定时器2未用到就不赘述。1.模式0模式0是一个13位定时器/计数器。在这种模式下,16位寄存器TH0和TL0,只用13位,而TLO的高三位并没有使用,它的其他5位占这13位的低5位,剩下的8位被THO分配。下表是定时器的的特殊功能寄存器TMOD。定时器/计数器特殊功能寄存器TMODGATEC/M1M0GATEC/M1M0INT0端出现的正脉冲的宽度可以用这一特性来测量。2.模式1模式1基本上与模式0工作方式相同,定时器0工作在模式1,溢出时间为50ms,每20次中断,相当于定时1秒钟。设计中,仅用了定时器0和计数器1。霍尔传感器检测的低电平信号直接由计数器1计数,计数器设初值后形成5ms的中断,时间和红外线脉冲的形成都利用了此中断,详见程序。总程序详见附录1。2.3.2程序中断程序框图如图2-1,软件设计主流程图如图2-2,总程序清单见附录1。5ms到,定时器1产生中断5ms到,定时器1产生中断时间显示程序I/O输出100Hz脉冲返回主程序图2-1中断流程图开始开始初始化MCU初始化7289启动小车前行是否有障?左侧左前或前右前右侧右避子程序左避子程序避左前障碍程序避右前障碍程序距离显示返回NY图2-2主程序框图第三章驱动单元3.1直流电机的驱动原理直流电机是由直流电源供电,输入电能,输出的是机械能。下图是一个“HH桥式电机驱动电路桥式驱动电路”,你看它的结构形状是不是像大写字母H,它就是因此而得名的。H的上下左右4个边都是由三极管充当的,H中间的那一个横杠是由直流电机充当的,该图只是示意图,还有其他必备的电路没有给出,比如说每个三极管都有一个驱动电路,这些电路没有画出。这个H桥式电路要想工作,必须由对角线上的两个三极管同时工作才能给电机供电,这样才能使电路运转。而可以控制三级管的导电方式以及导通方向可以来控制电机的转动方向。例如当Q1与Q4导通时,电流就会从Q1的正极导向Q4的负极,电流的流向就决定的电机的转动方向,这个时候电机就会沿着顺时针方向旋转,同理,Q2与Q3导通时电机就会逆时针旋转。
3.2直流电机的驱动电路如下图所示,该图是直流电机的一种驱动电路。也是通过三极管的导通方式来控制电机的转动方向进而来控制小车的速度和方向。当不同的三极管导通或者关闭时,小车会呈现四种工作状态:前进、倒后、左转、右转,通过这种控制方式就可以控制小车进行简单的障碍物的躲避。小车分别呈现这几种工作时,I/O脉冲的各个状态如下表所示。那么怎样来控制小车的速度呢?我们知道电机的转速决定了小车速度的快慢。电机转速越快,小车速度就快;电机转速慢,小车的速度就慢。所以说我们可以通过控制直流电机的转速的快慢来控制小车的速度。I/O的脉冲控制直流电机动作P0.3P0.2P0.1P0.0状态1001前行0110后退1010左转0101右转小车驱动第四章躲避障碍物单元4.1避障传感器电路避障传感器电路可分为近距离避障电路和远距离避障电路,近距离电路时为了判别当小车距离障碍物较近时小车什么时候对障碍物进行躲避比较合适,它由四个传感器组成大致上,分别安装在左前方、右前方以及小车的两侧。它们可以控制小车躲避障碍物时应该拐多大的弯度,侧面的传感器是为了控制小车侧面与障碍物的距离,避免刮擦小车的发生。远距离传感器是为了判别小车的前方有没有障碍物,进而可以比较早的发现障碍物的存在,可以提前感知,它一般由两个传感器组成,安装在小车的前面,发现小车前方有障碍物时,减慢小车的速度,可以及时进行障碍物的躲避,就可以降低危险事件的发生。4.1.1近距离避障传感器反射式光电传感器电路上图就是近距离避障电路的一部分,这个电路的优点是大大提高控制的准确度,可以最大程度的对障碍物进行判别,它有效的运用红外线进行反射接受装置,当小车发射出去红外线时,如果前方有障碍物它会被发射回来,然后就可以根据反射回来的红外线进行判断障碍物距离小车的距离以及怎样进行躲避。红外线有很强的抗干扰能力,因此,该电路大大提高了判别的准确度。这样就很大程度上提升了小车安全性能。如下图所示,小车上安装反射式光电传感器示意图。由于小车的侧面距离障碍物的距离比较近,受到外界的光电干扰就比较小,因此可以采用简单的方式,这样也可以简化电路的设计。反射式光电传感器反射式光电传感器安装位置图4.1.2远距离避障传感器红外线传感器远距离传感器感知图如上图所示,由于距离比较远,受到的干扰比较大。所以我们要才用抗干扰能力比较强的交流调制工作方式。根据变频器调压方式不同,交-直-交变频器分为PAM(埋伏调整)和PWM(脉宽调制)两种。一般PWM指的是波宽控制,使用的是方波,控制占空比ups分好几种,一般为了减小体积,都会使用20khz以上的方波否则的话会很大的。由于器件关系,很少会用到100khz以上的具体是使用一个锯齿波和其作比较。安装位置图以及LM358引脚图如下图所示。红外传感器红外传感器安装位置图LM358引脚图在设计的电路中我使用了一个芯片LM358,它起到了保护电路的作用,LM358的引脚图如上图所示。LM358内部是两个电压比较器A1、A2。比如可以使A1A2分别担任过流保护和过热保护,在A1A2的正端接基准电压,负端接要保护的取样电压,当取样电压有较大的变化时,A1A2输出端的电平会做出相应的变化,使保护动作。4.2避障方法4.2.1前方有障碍物前方有障碍物的情况分为三种:正前方有障碍物、左前方有障碍物、右前方有障碍物。如果正前方或左前方有障碍物时的避障方式如下图所示:发现障碍物-->左打方向盘后退-->后退的同时回正方向盘-->然后右拐前进,这样就可以避开障碍物了,效果图如下图所示。前方或左前方遇障前方或左前方遇障后退左拐后退右拐前进避障效果图4.2.2侧面有障碍物当小车侧面有障碍物时,小车进行躲避障碍物的效果图如下图所示,躲避方式如下图所示,就不一一赘述了。仅左长传感器有信号时,继续前行仅左长传感器有信号时,继续前行左长和左短传感器都有信号时,右拐左长和左短传感器都有信号时,右拐右拐前行,左长无信号左拐前行并右拐越过障碍侧避障效果4.3避障程序避左前障碍物程序流程如图4-8。左前有障碍物左前有障碍物返回主程序小车右拐,检测I/O口,进入switch循环小车后退大步,记下步伐无碍,左拐前行记下的步伐再右拐小车后退左拐图4-8避左前障碍程序框图第五章显示单元5.1里程和时间显示里程显示采用的是模拟自行车上码表的工作方式,采用电磁效应来计算出小车的车轮转了多少圈,在根据小车车轮的周长就可以算出小车行走的里程数。5.2显示模块硬件此设计采用的是广州周立功有限公司研发的具有很大实用性的64键的键盘智能控制芯片(ZLG7289A)以及被普遍运用的串行接口8位LED数码管。该硬件显示模块的连接图大致如下图所示:LED显示5.2.1ZLG7289A介绍ZLG7289A是64键键盘智能控制芯片及串行接口8位LED数码管。ZLG7289A是一片智能的驱动芯片,它不仅可以同时驱动八位共阴式的数码管,而且它还具有串行接口。ZLG7289A是一片很容易操作的芯片,它的内部含有可直接接受BCD码或16进制码的译码器,此外,它还具有多种控制指令,比如段寻址、左移、消隐、右移、闪烁等。ZLG7289A芯片还具有片选信号。电特性(Vcc=5.0V,Fosc=16MHz,=25℃)如下表所示。该芯片有很广泛的用途,其中几个最典型的运用如下所示:工业控制器,仪器仪表,条形显示器,控制面板等等该芯片的特点如下:串行接口,无需外围元件可直接驱LED(循环左移)/(循环)右移指令具有段寻址指令,方便控制独立LED64键键盘控制器,内含去抖动电路表5-1电特性续上表表5-2ZLG7289A引脚功能说明5.2.2ZLG7289A串行接口ZLG7289A采用的通讯方式是串行方式与微处理器通讯的方式,从DATA引脚送入芯片的数据,该数据由CLK端同步。当片选信号由高电平变为低电平的时候,DATA引脚上的数据就会发生一定情况的变化,它在CLK引脚的上升沿被写入ZLG7289A的缓冲寄存器进行缓存。ZLG7289A的指令结构一般情况下有三种类型:类型1:不带数据的纯指令,该指令的宽度为8个字节,每个字节代表一个脉冲,那么该指令8个字节就表示微处理器需发送8个CLK脉冲。类型2:带有数据的指令,该指令的宽度为16个字节,那么微处理器就需发送16个CLK脉冲。类型3:读取键盘数据指令,该指令的宽度为16个字节,这16个字节又分为2种情况,前8个字节为微处理器发送指令,它把指令发送到ZLG7289A,后8个B字节返回指令,是指返回到ZLG7289A的键盘代码。一个脉冲分为上升沿和下降沿,在执行该指令的时候,ZLG7289A的DATA端就是在不同的脉冲状态进行调整输入和输出状态的,它在第9个CLK脉冲的上升沿时会变成输出状态,并在第16个脉冲的下降沿恢复为输入状态,等待接收下一个指令。该芯片的串行接口的时序图如下图5-3、图5-4、图5-5:图5-3纯指令时序图(单字节命令)图5-4带数据指令时序图(命令字在前,输入数据在后)图5-5读键盘指令时序图(命令字在前,键值在后)5.2.3ZLG7289A控制指令ZLG7289A的控制指令分为二大类纯指令和带有数据的指令。纯指令1.复位清除指令D7D6D5D4D3D2D1D0101001002.测试指令D7D6D5D4D3D2D1D010111111这是一个用于测试的指令,全亮的LED灯处于闪烁状态的时候执行。3.左移指令D7D6D5D4D3D2D1D010100001使所有的显示自右向左从第1位向第8位移动一位,包括处于消隐状态的显示位。但对各位所设置的消隐及闪烁属性不变。移动后最右边一位为空无显示。例如原显示为:12345678,其中第2位2和第4位4为闪烁显示执行了左移指令后显示变为:2345678,第二位3和第四位5为闪烁显示。4.右移指令D7D6D5D4D3D2D1D010100000所做移动为自左向右从第8位向第1位移动移动后最左边一位为空。5.循环左移指令D7D6D5D4D3D2D1D010100011移动后原最左边一位第8位的内容显示于最右位,第1位在上。例中执行完循环左移指令后的显示为:23456781,第二位3和第四位5为闪烁显示。6.循环右移指令D7D6D5D4D3D2D1D010100010这是一个与5相反的移动指令。带有数据的指令1.按方式0译码D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010000a2a1a0DPXXXd3d2d1d0X=无影响,命令由二个字节组成。其中a2,a1,a0为位地址,具体分配如下:a2a1a0显示位00010012010301141005101611071118d0-d3为数据收到此指令时,ZLG7289A按译码方式0进行译码如下表:d0-d3(十六进制)d3d2d1d17段显示00H0000001H0001102H0010203H0011304H0100405H0101506H0110607H0111708H1000809H100190AH1010-0BH1011E0CH1100H0DH1101L0EH1110P0FH1111空无显示DP位控制小数点,DP=1时小数点显示DP=0时小数点不显示。2.按方式1译码D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D011001a2a1a0DPXXXd3d2d1d0X=无影响,译码方式该指令的译码按下表进行。d0-d3(十六进制)d3d2d1d17段显示00H0000001H0001102H0010203H0011304H0100405H0101506H0110607H0111708H1000809H100190AH1010A0BH1011B0CH1100C0DH1101D0EH1110E0FH1111F3.下载数据但不译码D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010010a2a1a0DPABCDEFG其中a2,a1,a0为位地址,参见下载数据且译码指令。A-G和DP为显示数据,分别对应7段LED数码管的各段。4.闪烁控制D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D010001a2a1a0d8d7d6d5d4d3d2d1此命令控制各个数码管的消隐属性。d1-d8分别对应数码管1-8,0=闪烁1=不闪烁,开机后缺省的状态为各位均不闪烁。5.段点亮指令D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D011100000XXd5d4d3d2d1d0该指令作用为点亮数码管中某一指定的段或LED矩阵中某一指定的LED,指令中X=无影响d0-d5段地址范围从00-3FH具体分配为第1个数码管的G段地址为00HF段为01H….…A段为06H,小数点DP为07H,第2个数码管的G段为08H,F段为09H,……,依此类推直至第8个数码管的小数点DP地址为3FH。6.段关闭指令D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D011000000XXd5d4d3d2d1d0段寻址命令,作用为关闭熄灭数码管中的某一段指令结构与段点亮指令相同请参阅上文。第六章在系统编程6.1在系统编程(ISP)介绍支持在板上下载程序到片内的FLASH不再需要烧录器把编好的代码文件烧进去了,跟是否螚单步调试无关。单片机仿真器就是一个设备,设备上一个仿真头的管脚和要仿真的MCU是一样的,把仿真头接在原来安装MCU的地方来代替MCU,然后再电脑端的仿真程序来模拟MCU各个管脚的变化,达到测试MCU外围元件的目的,到这一步的时候已经是程序完成了,主要是测试个外围元件的歌者状况是否正常。6.2单片机与PC机的连接6.2.1连接介绍连接的示意图如下图所示;PC机和单片机串行通信接口参考文献[1]谢自美·电子线路设计.试验.测试[M]·华中科技大学出版社,2004[2]宗光华·机器人的创意设计与实践[M]·北京航空航天大学出版社,2004[3]肖景和·红外线热释电与超声波遥控电路[M]·人民邮电出版社,2003[4]靳桅·单片机原理及应用[M]·西南交通大学出版社,2004[5]王毅编著·单片机器件手册[M]·人民邮电出版社,1994[6]何立民·单片机应用系统设计[M]·北京航空航天大学出版社,1995[7]软件Keiluvision2、ISP说明书,芯片89C51RA2xx说明书[8]丹尼斯.克拉克机·器人设计与控制[M]·科学出版社,2004[9]杨帮文·新编传感器实用宝典[M]·机械工业出版社,2005[10]周坚编·单片机C语言轻松入门[M]·北京航空航天大学出版社,2006[11]OppenheinAV,SchaferR·Discrete-TimeSignalProcessing[M]·EnglewoodCliffs,NJ:Prentice-Hall,1989[12]ProakisJG,ManolakisDG·IntroductontoDigitalSignalProcessing[M]·NewYork:MacmillanPublishingCompany,1988·234附录智能小车源程序代码:#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineaP1&0xf0#definestopP1|0x0fsbitcs=P1^4;sbitclk=P1^5;sbitdio=P1^6;sbitp21=P2^1; sbitp22=P2^2; sbitp25=P2^5;sbitp24=P2^4;sbitp27=P2^7;sbitp28=P2^8;sbitp36=P3^6;sbitp37=P3^7;ucharfront=9,back=6,left=10,right=5,j1=0,j2=0;ucharshort_delay() //显示短延时 { uchari; for(i=0;i<20;i++); }long_delay() //显示长延时 { uchari; for(i=0;i<70;i++); }voiddisply(ucharx) //7289写数据函数 { uchari; for(i=0;i<8;i++) { if(_crol_(x,i)&0x80){dio=1;}//接受指令 elsedio=0;//输出键值 clk=1; short_delay(); clk=0; } }/**********距离显示函数****************/voidjuli(dd) { cs=0; short_delay(); disply(0x87); disply((((dd%1000)%100)%10)%10); cs=1; long_delay(); cs=0; short_delay(); disply(0x86); disply(((dd%1000)%100)/10); cs=1; long_delay(); cs=0; short_delay(); disply(0x84); disply((dd%1000)/100); cs=1; long_delay(); cs=0; short_delay(); disply(0x85); disply(dd/1000); cs=1; long_delay(); }/*************显示距离************/voidxianshi(void) { intdd; //距离单元;J2=TL1;//磁片计数 dd=(j2*17/10); //距离存储,一圈17厘米 juli(dd); }voiddelay(void) //上电延时,步伐大小 { uchari; for(i=0;i<0x35;i++); }/***********小车驱动***************/voidfx(ucharx,uchary,ucharn) { uchari,i1; for(;n>0;n--) { i=0xdf; //控制节奏快慢 do{P1=x;delay();}while(i--); for(i1=0;i1<4;i1++) { i=0xef; do{P1=y;short_delay();}while(i--); } } }/*********左和前方有障碍物********/voidbb(void) {intk=0do{ fx(a|back,stop,3); fx(a|left,stop,2); fx(a|back,stop,3); fx(a|right,stop,2);fx(a|front,stop,4);k++; xianshi(); switch(P2&0x36) {case0x31:;break;//左和前有障碍case0x21:;break;//左和左前有障碍case0x20:;break;//左前有障碍case0x02:biyan_left();break;//左短有信号跳转到右避函数case0x04:biyan_right();break;//右短有信号跳转到左避函数case0x10:aa();break;//右前有障碍case0x14:aa();break;//右和右前有障碍case0x34:aa();break;//右和前有障碍case0x30:;break;//前有障碍default:; }}while(P2&0x36!=0); fx(a|left,stop,2);fx(a|front,stop,3*k);fx(a|right,stop,2); }/**********右和前方有障碍物********/voidaa(void){intl=0do{fx(a|back,stop,3); fx(a|right,stop,2); fx(a|back,stop,3); fx(a|left,stop,2);fx(a|front,stop,4);l++; xianshi(); switch(P2&0x36) {case0x31:bb();break;//左和前有障碍case0x21:bb();break;//左和左前有障碍case0x20:bb();break;//左前有障碍case0x02:biyan_left();break;//左短有信号跳转到右避函数case0x04:biyan_right();break;//右短有信号跳转到左避函数case0x10:;break;//右前有障碍case0x14:;break;//右和右前有障碍case0x34:;break;//右和前有障碍case0x30:bb();break;//前有障碍default:; } }while(P2&0x36!=0);fx(a|left,stop,2);fx(a|front,stop,3*l);fx(a|right,stop,2); }/**********左避函数************/voidbiyan_right(void){intm=0; do { xianshi(); switch(P2&0x0C) {case0x0C:fx(a|left,stop,1); //右短,右长有信号,左转 fx(a|front,stop,1);m++,break; case0x04:fx(a|left,stop,1); //右短有信号,左转 fx(a|front,stop,1); m++;break; default:; } }while(P2&0x0C!=0);fx(a|right,stop,2);//右侧无障碍,右拐,回原方向fx(a|front,stop,1*m);fx(a|left,stop,1);}/*************右避函数**************/voidbiyan_left(void){intn=0; do { xianshi(); switch(P2&0x03) {case0x03:fx(a|right,stop,1); //左短,左长有信号,右转 fx(a|front,stop,1);n++;break;case0x02:fx(a|right,stop,1); //左短有信号,右转 fx(a|front,stop,1); n++;break; default:; } }while(P2&0x03!=0);fx(a|left,stop,2);//左侧无障碍,左拐,回原方向fx(a|front,stop,1*n);fx(a|right,stop,1);}voidcc(void)//正前方有障或左前方有障{ fx(a|back,stop,2); fx(a|left,stop,4); fx(a|back,stop,5); fx(a|right,stop,4);fx(a|front,stop,2);}voidee(void)//右前方有障{ fx(a|back,stop,2); fx(a|right,stop,4); fx(a|back,stop,5); fx(a|left,stop,4);fx(a|front,stop,2);}main(){P2=0xFF; //设置p2口为数据采集口 IE=0x8a; //开计数器1,定时器0TMOD=0x61; //计数为方式2,定时为方式1TH0=0x4C; //5ms定时,给初值TL0=0;TH1=0;//计数器初始值TL1=0;TCON=0x50; //启动定时/计数器CS=0;CLK=1;short_delay();disply(0xA4);//复位7289CS=1;long_delay(); do {fx(a|front,stop,1);switch(P2&0x36) { case0x00:fx(a|front,stop,1);break; //前进case0x31:bb();break;//左和前有障碍case0x21:bb();break;//左和左前有障碍case0x20:bb();break;//左前有障碍case0x02:biyan_left();break;//左短有信号跳转到右避函数case0x04:biyan_right();break;//右短有信号跳转到左避函数case0x10:aa();break;//右前有障碍
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度拆迁安置房预售合同范本(2025版)
- 2025年生物科技产品采购合同范本模板
- 2025年度餐厅窗口承包及广告投放合同
- 2025年度二手商铺贷款买卖双方合作协议
- 2025年度海洋工程担保型买卖合同
- 2025年低噪声对旋式局部通风机项目建议书
- 保安工作在社区安全提升中的实例计划
- 促进社区志愿服务团队建设的方案计划
- 学习资源共享与图书管理计划
- 主管年度员工关怀任务计划
- 路桥工程检测技术 课件 1公路工程试验检测管理
- NB/T 11459-2023煤矿井下直流电法勘探规程
- 2025高中物理《课时作业》人教版选择性必修第1册课时分层作业(八)
- 脑卒中-脑卒中的康复治疗
- 十七个岗位安全操作规程手册
- 爆花(2023年陕西中考语文试卷记叙文阅读题及答案)
- 疫情统计学智慧树知到答案2024年浙江大学
- 自主签到培训课件-早安!幼儿园
- 小学项目化学习案例
- 2024住院患者静脉血栓栓塞症预防护理与管理专家共识要点(全文)
- 2024-2030年中国大宗商品行业市场深度调研及发展趋势与投资前景研究报告
评论
0/150
提交评论