基于51单片机小车的循迹避障系统.doc

上传人:xin****828 文档编号:6718934 上传时间:2020-03-02 格式:DOC 页数:42 大小:2.74MB
返回 下载 相关 举报
基于51单片机小车的循迹避障系统.doc_第1页
第1页 / 共42页
基于51单片机小车的循迹避障系统.doc_第2页
第2页 / 共42页
基于51单片机小车的循迹避障系统.doc_第3页
第3页 / 共42页
点击查看更多>>
资源描述
毕业论文(设计)题目:基于51单片机的小车循迹避障系统 学 院: 电气工程学院 学 号: 姓 名: 专业年级: 指导老师: 基于51单片机的小车循迹避障系统专业:电子信息工程 姓名: 指导教师: 摘 要 随着社会的发展,智能化越来越受到人们的关注。本设计通过模拟汽车的自动行驶及避障功能,来实现智能化。在此设计中,用STC89C52单片机作为主控芯片,处理接收到的各种信号,并作出相应的反馈;用红外对管来进行黑线检测,从而达到循迹的目的;用超声波传感器来感知障碍物,实现避障功能;用L298N芯片来进行驱动,通过编写的程序,保证了电机的左右转动,从而达到小车设计时预定的目标。在本小车的设计中,有着严格的设计过程,采用了模块结构框图设计、程序流程图设计、程序设计以及电路图设计等多个设计步骤。这样就可以保证在设计过程中的严密性,不会因为单一设计体系而使整个系统功能出现错误。由于小车在设计过程中,采用了模块化的设计思路,所以在进行调试时非常方便。我们可以分别对每一个功能部分来进行调试,驱动部分调试时,只要给电机向前或者向后的信号,就可以调试出其功能。循迹部分调试时,只要通过检测到黑线,判断是否沿黑线行驶,即可以调试出。在进行避障调试中,我们可以把障碍物放在小车前方,然后看小车两个轮子的转向。这种模块化的设计思想不仅简化了设计过程,而且对我们以后的设计也会有一定启发。 关键词 智能化,单片机,红外对管,超声波传感器ABSTRACT Along with the development of society, more and more intelligent attention. This design by simulating a car driving and automatic obstacle avoidance, to achieve intelligent. In this design, with STC89C52 SCM as the master chip, processing various signals received, and make corresponding feedback; using Infrared to tube to detect the black line, so as to achieve the purpose of tracking; using ultrasonic sensors to perceive obstacles thing to realize obstacle avoidance function; using L298N chip to be driven by written procedures to ensure that the motor is rotating around to achieve the desired goal when designing the car. In car design, a rigorous design process, using a block diagram of the module design, program flowchart design, programming and multiple design steps Schematic design. This ensures that the design process rigor, the error does not occur because of a single design system and make the entire system functions. As the car in the design process, using a modular design concept, so very convenient during debugging. We were part of each function for debugging, debugging driving part, as long as the motor forward or backward signal, you can debug the functionality. When debugging tracking part, simply by detecting the black line, to determine whether the black line running along, that you can debug a. Avoidance during commissioning, we can put an obstacle in front of the car, and then look at the car two steering wheels. This modular design not only simplifies the design, but also for our future designs also have some inspiration.Key Words : Intelligent,SCM,Infrared to tube,Ultrasonic sensors目 录第1章 绪论11.1 智能小车的研究意义11.2 智能小车的现状11.3 论文研究内容与主要结构2第2章 方案选型32.1车体设计32.2 电机驱动选择32.3 PWM调速技术42.4 循迹模块技术52.5 避障模块技术72.6 控制系统模块82.7 电源选择9第3章 硬件电路设计103.1总体设计103.2电源电路设计103.3驱动电路设计113.4 循迹部分电路133.5 避障部分电路143.4主控电路设计16第4章 程序设计174.1主程序设计概述174.2主程序流程图174.3 驱动程序流程图184.4 循迹程序流程图184.5 避障程序流程图19第5章 制作安装与调试205.1 小车的安装205.2小车运动模式调试205.3小车循迹调试215.4小车避障调试235.3小车的功能24结 论25参考文献26致 谢27第1章 绪论1.1 智能小车的研究意义随着社会的发展,科技的发展日新月异。于是,智能一词越来越受到人们的关注。而科技代替人工的说法,早已被提上人们的日常生活了。目前,由于私家车的普及,伴随着的就是各种车祸的产生。如何避免此类情况,是人们需要深思的一个问题。在我所研究的自动循迹避障系统中,我们可以利用小车来模拟汽车自动避障功能,来避免现实中汽车因与障碍物碰撞而产生的车祸。因此,自动循迹避障小车对于在进行自动避障的时候,有着非常重要的现实意义。1.2 智能小车的现状2013年年底,工业和信息化部颁布关于推进工业机器人产业发展的指导意见,将机器人产业推到了公众的视线内。随着全球工业化进程的推进,机器人制造业正逐渐获得长足发展。智能小车作为移动机器人的基础,在智能全球化的浪潮中,受到越来越大的冲击,更多的高新技术和硬件设备被应用其中,使智能小车走出了只能用于比赛的模式,而更加广泛的服务于大众。从20世纪80年代起,由于计算机、电子、通信等方面的技术飞速发展,使得越来越多的技术从理论走向实际。于是,在国外掀起了智能机器人研究浪潮,世界各国或者国际机构都加大了对机器人的研究力度,并投入了巨大的经费。其中,各种具有广阔应用前景和军事价值的移动式机器人都受到西方各国的普遍关注。韩国科学技术部在20世纪末推出的“二十一世纪的尖端研究计划”,其中包括服务机器人,可适应恶劣环境机器人,微型机器人和扫雷机器人项目。欧盟在信息社会技术计划中,展开了探测火山情况的机器人、可以用来评价地震灾害危险性的攀爬式机器人,以及利用机器人的交互式行为的博物馆临场感等项目研究。2013年Irobot公司新推出一款机器人名叫braava,它可以模仿人工跪地姿势,利用室内GPS导航系统先进的北极星技术生成室地图,确定方向,以及标记障碍物和记忆经历过的地区。自2012以来,在政策层面上,国家大力支持发展工业机器人,用来提高我国的工业实力。从其中可以看出,由于国家层面的各种规划和制度的出台,让我国机器人的发展得到更进一步的提升。并且提出要大力推动工业的自动化控制系统完善,工业机器人技术的研发,关键材料和配件等装置的研发和市场化,这对于中国国产机器人在将来的发展与应用有着明显的积极作用。2005年11月,我国教育部自动化专业指导分委员会与飞思卡尔半导体公司签署了双方长期合作协议书,协助我国举办“飞思卡尔”智能小车大赛。于是,我国智能小车比赛才开始发展。而且,在我国自主举办的全国大学生电子设计大赛中,智能小车出现的频率也居高不下。 1.3 论文研究内容与主要结构论文主要研究的内容就是小车的循迹与避障,因为在实现整个系统时,如何确保小车按照所设定的路线行进,是至关重要的。在进行避障循迹小车研究时,我们首先要确保电路图的设计合理。这样的话,在后面进行的硬件调试时,才可以避免因为电路原理的错误,而使得设计达不到预定要求。论文主要由九部分组成,第一部分:主要介绍选题的目的意义,以及选题目前在国内外的发展现状。这样我们在进行课题设计的时候,有很大的参考意义;第二部分:主要是在论证小车设计方案的优劣,并根据实际情况,例如实现难易程度、生产成本以及后续的维护是否方便来进行筛选,得出最后本小车的设计方案;第三部分:小车的系统硬件电路设计,我们在实现小车功能时,必须通过构建硬件电路;第四部分:系统软件设计,这是一个很重要的部分,因为只有通过系统软件的控制,小车才可以按照设定功能进行一系列动作,比如循迹以及避障;第五部分:小车的测试,这是对小车设计完成后,其功能是否达到最初的设计规划,是设计工作是否准确完成的一个很重要的指标;第六部分:总结,是对整个小车设计过程中所遇到的一些问题,所付出的努力,还有最后的结果进行一个大致总结;第七部分:致谢,对于这几个月中,老师以及领导在对本次论文设计编写过程中所给予的帮助;第八部分:参考文献:在小车设计及论文编写过程中,所参考的一系列的资料,进行一个归纳整理;第九部分:附录,最要用来展示小车的整体硬件电路情况以及小车的系统程序,这样便于阅读。 第2章 方案选型2.1车体设计在本次设计中,所采用的是两轮驱动的车体。顾名思义,指的是用两个电机来驱动小车的两个轮子,能够使得动力分布的更均匀,可以减少车体滑动。相对于四轮驱动的安全性、灵活性来说,两轮驱动也比较高。可以按照行驶路面状态的不同而将发动机输出扭矩分别分布在两个轮子上,提高小车的行驶能力。而且,两轮驱动在车体结构及元器件分布上,也相较于四轮来说更加密集。两轮驱动在控制上,相对于四轮驱动也比较容易,在设计时更加便于实现。2.2 电机驱动选择 小车要向前行驶,必须要有动力来驱动轮子,因为我们在控制小车的行进时,并不是每个轮子的转向转速都一样。在转弯的时候,就必须区别每个轮子的转速快慢和转向,所以就必须用到电机驱动模块来对小车进行驱动。直流电机在驱动时,只需要合适的直流电压就可以进行驱动。而且,直流电机可以承受反复冲击,对于小车在急速转弯或者反复前后转动时,有很好的容纳性。在调速特性方面,直流电机可以很方便的进行调速,且调速范围广。在控制时只要加上合适的电压就会转,我们并不需要精确的计算其所转的圈数。步进电机则是靠脉冲信号来进行驱动,对于脉冲信号来说,我们不能直接使用直流电压产生,必须借助于单片机的I/O来产生,这样的话在进行设计时,就会增加I/O的使用数量,使得设计难度增加。我们在电机选择时,可以选用直流电机。因为通过对两种电机的综合性能比较,直流电机在控制是更加方便,而步进电机在控制时,相较于直流电机来说,比较困难一点,因此我们不采用步进电机,选择更加简单的直流电机。电机的驱动电路为“H桥式驱动电路”(如图1所示),整个电路是由四个晶体管和一个电机组成。在电路中,四个晶体管分别表示H的四个角,分别接上“+”、“-”电压,这样通过四个脚的电压输入,就可以驱动电机。而电机在H型电路中,是表示中间的横杠。在实际使用的时候,如果我们用单独的元器件来实现H桥式电路的话,是比较困难的。因此,我们可以采用市面上的已有封装的芯片。这样的话,我们只要在进行电路设计时,考虑芯片的工作电压范围,功率以及所需的控制信号即可,就不用再通过自己来一个一个搭建电路。 图1 H桥式驱动电路 2.3 PWM调速技术 由于小车在进行自动循迹和避障时,两个驱动轮的速度并不是一样的,这个时候我们要对小车各个轮子速度控制,就必须使用到一种调速技术,即为脉冲宽带调制技术(PWM),简称为脉宽调制。PWM调速主要是利用微处理器来控制,它可以使模拟电路中的信号进行数字化输出,从而可以对电路进行有效的控制。而且,PWM技术在使用单片机等控制芯片的系统中,可以让控制方面变得更加简洁、高效。 PWM技术的实现主要有两种方法,一种是硬件调制法,另外一种就是软件生成法。硬件生成法(如图2所示)是把所希望得到的波形作为调制信号,我们可以根据需要的波形来进行改变参数选择。被调制信号作为载波信号,通过对载波信号的幅频、相频等进行调节,可以得到所需要的PWM信号波形。由于三角在实现时比较容易,而且其各种参数的调制也方便,因此我们一般将其作为载波信号。由于各种复杂的信号都可以认为是许多不同的正弦信号叠加而成,我们可以把正弦波作为调制信号,这样我们得到的信号波形就是PWM信号。软件生成方法是利用计算机软件技术来实现产生PWM波的调制,这种技术产生信号更加容易。而且在进行PWM波形变换时,只要在软件程序里进行简单的修改,即可以进行实现。由于硬件调制法电路是属于模拟电路,其结构比较复杂,而且在实现电路设计和搭建时,相比较起来不方便,难以实现精确的控制。而软件生成法就比较简单,只要在控制程序里加上PWM调制就可以。因此,我采用软件生成法来实现PWM波形。图2 PWM硬件电路2.4 循迹模块技术在小车进行循迹时,我们要考虑小车对循迹黑线检测的灵敏性。CCD图像传感器在实现的时候,有比较好的灵敏性,而且可以进行路径成像。其通过将光信号转变为模拟信号,在经过信号放大和A/D转换,可以产生便于单片机识别的数字信号。红外对管则是由于红外线接收二极管在光线下照明,通过调用产生的光电流。如果连接到外部电路上的负载,所需的电信号通过负载获得,并且这个电信号会随光的改变而发生相应的变化。这种获得的信号相对比较模糊,而且受光强度影响较大。在本次设计中,由于我们只要考虑小车对黑线的检测,并不需要有实际的成像效果,加上CCD图像传感器价格昂贵。基于实用、成本等综合因素,我考虑使用红外对管进行循迹。小车上使用了五对红外对管(如图3所示),这样可以很准确地检测出黑线位置,并循迹行走。图3 红外对管实物红外对管是将光信号转换为电信号(如图4所示)的光敏器件或者光电变换装置。可见光信息源、红外光信息源、紫外光信息源等都直接或者间接地辐射出一定功率的光能,包括含有一定信息量的光能量由红外对管接收后,红外对管能够按一定的规律将光能中所包括的模拟或者数字信息转化成相应的电信号,从而可以以电信号的形式还原出光能中所携带的信息。 图4 红外光电传感器工作原理2.5 避障模块技术 小车进行避障时,我们需要提前探知其前方是否存在障碍物,这样就可以在行进过程中,自动选择远离障碍物的路线。在避障模块的选择时,有两种选择,一种是使用红外避障,还有一种是超声波避障。红外避障是通过发射和接收光信号,在通过一系列的转换变为数字信号,来判断前方障碍物。这种方式容易受到其他光的干扰,使得检测结果不准确。而且由于其光束比较集中,在探测时其探测的区间较小,可能会造成避障不成功。超声波避障则是利用声波信号遇到障碍物返回,测量其间隔时间来进行避障的。超声波的测量范围很广,可以测量方向、距离等。测量距离可以采用主动测距法和被动测距法:被动测距法是传感器只有接受信号的功能,包括方位法和视差法;主动测距法是传感器既发射信号又接收信号,包括TOF法、脉冲回波法、FM-CW法等。声波在传递过程中,是发散形式的,可以大角度的检测,这样就可以保证不会存在死角。而且声波的使用也比较广泛,像雷达探测,金属探伤等。本小车采用了HC-SR04超声波避障模块(如图5所示),在其性能方面,有比较好的探测距离和角度。采用I/O口TRIG触发测距,利用接收到信号后的电平差,来进行信号控制,从而选择驱动小车两个轮子来进行避障。模块由5V电压供电,接入端为VCC口,TRIG为触发控制信号输入口,回响信号则由端口ECHO进行输出。 图5 HC-SR04超声波模块图6 超声波脉冲响应时序图表1 HC-SR电气参数 电气参数HC-SR04超声波模块工作电压DC 5V工作电流15mA工作频率40Hz最远射程4m最近射程2cm测量角度15度输入触发信号10uS的TTL脉冲输出回响信号输出TTL电平信号,与射程成比例规格尺寸45*20*15mm2.6 控制系统模块 在本小车设计的控制系统中,我们采用STC公司生产的一款单片机STC89C52。由于在小车的整个运行过程中,其需要处理的数据比较多,在驱动电机时,就需要通过单片机的I/O口来输出控制信号,使得小车实现前进、后退以及转弯等功能。在小车运动过程中,还需要接收很多的控制信号,像循迹信号、超声波信号等。这样就可以实现小车的速度控制、循迹行驶以及躲避障碍物等功能。STC89C52单片机(如图7所示)有40个I/O口,其中P0、P1、P2、P3为并行I/O口。芯片时钟的产生有两种,内部时钟和外部时钟,而内部时钟就是通过单片机引脚XTAL1和XTAL2外界晶振得到的。还有多个中断源及优先级等,可以对程序执行功能的优先进行区分,通过中断来进行高优先级的指令。52单片机是8位单片机,拥有8K字节Flash,512字节RAM,内置4KB EEPROM,以及复位电路等。在单片机的4个并行I/O口中,P0与P3、P1与P2拥有相似的功能,除了P1口是单功能口外,其余都为双功能口。 图7 51单片机引脚图2.7 电源选择在小车电源选择时,我们需要特别注意,因为系统单片机的额定工作电压为5V。对于电机来说,用5V驱动又不能让小车行驶,而过高的电压可能会使系统芯片烧坏。因此,我们需要通过计算得到小车的可允许电压电流范围,一般采用9V12V为好,本小车采用9V供电。这样既可以保证电机驱动所需电压,又不会因为电压过大而造成元器件的烧坏。第3章 硬件电路设计3.1总体设计 图8 小车总体框架图 小车的整体系统(如图8所示)是以51单片机为CPU,通过红外对管来进行黑线检测循迹行走,通过超声波探测器进行障碍物感知,进行避障功能实现,通过驱动模块来实现电机的驱动,从而达到小车的运动。 系统电路图见附录1:3.2电源电路设计 在小车的电源系统,采用9V直流供电,为了防止在误操作时接入过高的电流使整个电路烧毁,一般会在电路中接入防击穿电容。图9 小车电源电路3.3驱动电路设计图10 驱动电路框架图 在驱动电路部分设计时,我们要考虑的是驱动芯片的选择,一般是在L298N和L293D这两款芯片中选择。对于L298N芯片,是使用的15脚直插式封装模式,具有四通道驱动逻辑电路,可以很方便的驱动两个电机。而且它的工作电压以及单通道输出电流都比较高,一般可达到46V和2A。L293D在功能上和L298N基本一样,但是它的工作电压和通道电流都相比于L298N要小,其采用的是直插式16脚SOIC-20封装模式。所以,在应用时,一般使用L298N而不采用L293D,从经济方面来考虑,L298N也更具有优势。L298N输出电压的方式有两种,一种是直接通过电源的调节来进行电压输出;另一种就是直接使用单片机上的输入输出口提供电压信号。 图11 L298N引脚图 小车采用两轮驱动,使用L298N芯片组成的电路来驱动电机,驱动电路中,采用7805稳压芯片进行稳压。由于电机驱动所需要的电压很大,因此使用9V电压直接通过驱动芯片供电。通过八个LED灯来分别显示每个车轮的转动方向。图12 电机驱动电路该驱动芯片可驱动2 路直流电机,使能端ENA、ENB 为高电平时有效,控制方式及直流电机状态表如下所示。如果PWM直流电机的速度控制,需要设置IN1和IN2,确定电机的旋转方向,并使输出PWM脉冲,可以实现转速控制。请注意,当使能信号是0,电动机自由停止状态;若使能ENA信号为1,并且IN1 和IN2 都为00 或11 时,电机处于制动状态。表2 L298N驱动状态表ENAIN1IN2直流电机状态0XX停止100制动101正转110反转111制动 7805(如图13所示)作为稳压芯片,在我们日常使用中,是使用最广泛的。并且使用起来很简单、很方便,只要简单的接入电路中,给它一个稳定的直流电压源即可。 7805一共有三个引脚,引脚1是INPUT即为整流器输入电压,引脚2为GND,公共接地端,引脚3是OUTPUT输出稳压后的5V电压. 图13 LM7805引脚图3.4 循迹部分电路图14 循迹模块框架 在进行小车循迹电路设计时,我们要考虑到当红外对管检测到黑线以后,如何进行下一步操作。首先将红外对管接收的光信号转化为电流信号,再将模拟电流信号转化为数字信号。在这里我们就可以使用电压比较器,进行电压比较,来确定检测到的黑线在哪一边,再通过控制电机的转动来驱动小车循着黑线行驶。一般常用的电压比较器芯片为LM339和LM393,其中LM339为四电压比较器,而LM393为双电压比较器。由于我们采用五个红外对管进行黑线检测,所以使用了一个LM339和一个LM393。图15 循迹模块电路3.5 避障部分电路图16 超声波模块框架图 在小车避障时,我们选用超声波避障模块,主要是因为其在进行检测时,受到外界干扰较少,检测距离相对较远,可以多角度多范围的进行检测,这样可以减少避障失败的可能。超声波电路主要由一个声波发射口,一个声波接收口以及MAX232和EM78P153组成。其中MAX232该产品是一款兼容RS232标准的芯片,EM78P153是采用高速CMOS工艺制造的8位单片机芯片。通过扬声器T发出的超声波,如果遇到障碍物返回后,被传感器接收到。通过各级三极管放大电路,将所得信号放大。放大信号被传送到EM89P153单片机,通过处理,得到所需要的数字信号。然后再通过通信接口芯片MAX232,与STC89C52单片机通信,将信号传到52单片机。最后通过52单片机的处理,得到小车避障所需的控制信息。图17 超声波检测电路MAX232为16脚直插式封装芯片,其主要的作用是来进行电平转换。其内部主要结构可分为三部分:由端口16以及四个电容构成的电荷泵电路,由引脚7-14组成的数据转换通道电路以及供电电路,一般可以产生-12V和+12V两种电压。EM89P153单片机芯片,其内部有512*13位一次性的ROM,程序代码可以通过EM下载到EM89P153芯片中。工作电压范围为2.0V-6.0V;片内有4MHz校准RC振荡器;振荡器起振时间预分频系数可编程;片内可按位编程;两个双向I/O口;5级堆栈;3个中断源,外部中断,输出引脚状态变化中断,TCC溢出中断;8位实时定时/计数器(TCC);每个指令周期为两个时钟周期。3.4主控电路设计小车的主控电路是以52单片机作为控制芯片,结合复位电路、晶振电路来控制整个系统的运行。在电路中,我们一般使用的晶振位12MHz,这样的话,单片机的每一个机器周期为1uS,这样在利用单片机时钟进行计时时,比较方便。 图18 最小单片机系统第4章 程序设计4.1主程序设计概述在小车整体设计过程中,不仅有着大量的硬件电路设计,更多的是对于系统软件的分析设计。因为在硬件电路搭建完以后,只有通过软件程序的控制,才可以让小车按照设想的运行路径进行行驶,达到所需要的功能。由于小车整体功能比较多,如果在最开始程序设计时就进行整体设计的话,无疑会对整个设计工作带来困难,而且在设计完成后进行运行调试时,也会造成困难。因此,我在设计程序时,采用了模块化设计,即先对每一个部分子功能模块进行设计,在验证各个功能程序的完整性以及正确性以后,再把各个子程序组合成一个完整的程序。4.2主程序流程图 图19 系统程序流程图4.3 驱动程序流程图图20 驱动程序流程图4.4 循迹程序流程图图21 循迹程序流程图4.5 避障程序流程图 图22 避障程序流程图第5章 制作安装与调试5.1 小车的安装在小车各个部分的电路焊接完成后,我们就开始对小车进行整体组装。利用购买的高强度塑料制成的模型作为小车的车体,然后分别将各模块按照功能安装固定好。红外循迹模块固定在车体底部,因为其作用是来检测地面黑线存在,而且其工作距离也有一定限制,所以不能放在离地面太高的地方。超声波探测模块则应该置于小车正前方,其目的主要是用来发现前方障碍物,其安装高度要合适。对于驱动模块和最小单片机系统,安装在小车正中间,因为其要与各模块之间进行连接。供电电源则放在小车车尾,这样有利于小车整体重量的均匀分布,也可以在进行充电时,更加方便拆装。5.2小车运动模式调试 对小车的左右转弯进行调试时,可以在程序里给定每个电机引脚信号,看小车的转动是否满足所设定的方向。通过调试可知,小车的运动方向与初始设置相同,能够实现。图23 小车驱动调试图为了便于明确知道小车电机转向的控制信号,表3给出了每个I/O的控制信号,通过对其进行不同的改变,可以选择在不同情况下电机的各种运动状态,从而得到小车行驶的数据。表3 运动调试结果I/O口P0.0P0.1P0.2P0.3结果输入电平1010直线前进1001右转弯0110左转弯0101后退1111停止 5.3小车循迹调试小车的循迹是通过五路红外对管实现,当左侧检测到有黑线时,左侧LED指示灯会亮(图24),当右侧指示灯亮时,那么小车检测到的黑线在右侧(图25),如果当小车在黑线中间是中间指示灯会亮(图26),这时候,小车就会循着黑线一直行进。图24 左侧检测黑线图25 右侧检测黑线图26 中间检测黑线在进行循迹测试时,黑线的宽度对我们循迹成功也有一定的影响,因此,我还进行了黑线宽度的测试,其结果如表4:表4 黑线宽度调试循迹次数黑线宽度123450.5cm失败失败成功失败失败1cm成功失败成功成功成功1.5cm成功成功成功成功成功2cm成功成功成功成功成功5.4小车避障调试 在进行小车避障调试时,当把障碍物放置在小车的行驶路线上时,如果被检测到,那么小车会在安全距离内旋转180度进行避障处理。图27 小车避障调试在进行避障功能测试时,还需要对障碍物大小进测试,因为这样可以更加准确的得到调试结果。结果如表5:表5 障碍物大小调试结果 避障次数障碍物大小123450.0025失败失败失败失败失败0.01成功失败成功成功成功0.04成功成功成功成功成功5.3小车的功能通过对小车的各项功能进行测试,可以发现,在合适的工作条件下,小车基本可以达到设计要求。因此,本设计完成了预先的设计任务,实现了所有功能。小车可以进行循迹功能,检测到黑线以后,会沿着黑线进行行进。可以进行避障功能,在检测到障碍物以后,小车会原地旋转180度进行避障处理,然后继续行驶。结 论经过几个月的辛苦努力,本设计循迹避障小车通过验证,基本实现了最初的设计目标。在最开始进行选题时,觉得这个课题比较简单,可是在课题设计过程中,我发现其实并没有想的那么简单。首先是在硬件电路方面的设计,对于硬件电路设计,并不是说只要把元器件选好了,把线一连接就可以了,我们在进行电路设计时,还要考虑诸多因素,比如元器件使用难易,价格如何,还有就是电路中各个元器件的工作电流电压,所消耗的功率,这些都是要考虑的。所以在进行电路设计时,我查阅了大量的资料,结合前人的研究成果,通过分析电路中电流电压的关系,最终选择出合适的元器件,完成了整个硬件电路的设计。在程序方面,这是一个占工作量比较大的部分,因为小车的各种功能是靠程序的选择控制的,只有保证程序的正确性,才能保证小车功能的实现。程序设计时,我对于以前的各种相关的设计进行了参考比较,觉得使用模块化设计更加方便于我们的编写。在进行各功能验证时可以很简单,而且还可以在以后继续使用某一需要的功能程序,而不必要重新编写。在进行实物焊接以及组装时,可以考验我们的动手能力,并对我们的生产工艺进行了解。焊接时的虚焊、错焊,还有组装时的结构不合理等等,都在此次设计过程中体现出来了。 参考文献1 于金霞 王璐 蔡自兴 未知环境中移动机器人自定位技术北京:电子工业出版社 20112 李仁定 电机的微机控制 北京:机械工业出版社 2004 3 赵虎 叶朝斌 无刷直流电机无传感器PWM 智能控制器ML 4428及其应用 载国外电子元器件 1998年第5期4 苏震 现代传感技术原理、方法与接口电路北京:电子工业出版社 2011 5 于金霞 王璐 蔡自兴 未知环境中移动机器人自定位技术北京:电子工业出版社 2011 6 赵建领 弓雷 51系列单片机开发宝典北京:电子工业出版社 2012 第2版 7 王允上 学用单片机制作机器人 北京:科学出版社 20118 徐德 邹伟 室内移动式服务机器人的感知、定位与控制 北京:科学出版社 20089 陈永真 宁武 蓝和慧 新编全国大学生电子设计竞赛试题精解选 北京:电子工业出版社 200910 马广云 潘琢金 彭甫阳译 英汉双解嵌入式系统字典北京:北京航空航天大学出版社 200611 陈赜 邹道胜 电子创新设计技术 北京:科学出版社 200812 吴国庆 王格芳 郭阳宽 现代测控技术及应用 北京:电子工业出版社 200713 谭民 徐德 侯增广 王硕 曹志强 先进机器人控制 北京:高等教育出版社 200714 何社成 袁跃进 电机光电显示改进应用电路济南:山东科学技术出版社 200715 R西格沃特 IR诺巴克什 自主移动机器人导论 西安:西安交通大学出版社 200616 陈继荣 智能电子创新制作机器人制作入门 北京:科学出版社 200717 李全利 单片机原理及接口技术 北京:高等教育出版社 2009 第2版18 求是科技 8051系列单片机C程序设计完全手册 北京:人民邮电出版社 200619 沈红卫 基于单片机的智能系统设计与实现 北京:电子工业出版社 200520YamatoI,etal1NewconversionsystemforUPSusinghighfre2quencylinkJ1IEEEPESC,198821YamatoI,etal1HighfrequencylinkDC/ACconverterforUPSwithanewvoltageclamperJ1IEEEPESC,199022 http:/www.pdf.la23 http:/www.elecfans.com24 http:/home.eeworld.com.cn/?fromuid=54140125 http:/www.21ic.com 致 谢 经过几个月的忙碌,我的毕业设计课题也终于告一段落。在本次设计中,我很感谢我的指导老师,感谢她在我设计过程中给予我的一系列帮助和指导,感谢她对我的严格要求,才让我的设计顺利完成。我也要感谢电气工程学院的各位领导和老师,感谢他们四年来对我的关心和培养,感谢他们对于我学习生活上给予的帮助。还要感谢我班级同学和舍友,感谢他们四年来对我提供的帮助、支持和鼓励。 大学即将过去了,在这四年里,我们有过欢乐,有过悲伤,我们付出过,也收获过。在即将离去之际,我可以对我的大学生活自豪的说一句,我来过,我无悔。附 录1: 系统电路图 附 录2: 源程序#include /调用单片机头文件#define uchar unsigned char /无符号字符型 宏定义 变量范围0255#define uint unsigned int /无符号整型 宏定义 变量范围065535#include uint shudu_l,shudu_ll; /测速变量bit flag_1s ;sbit c_send = P16; /超声波发射sbit c_recive = P17; /超声波接收uchar flag_hc_value; /超声波中间变量long distance = 888; /距离uint set_d; /距离bit flag_csb_juli; /超声波超出量程uint flag_time0; /用来保存定时器0的时候的bit flag_300ms ;uchar miao,fen,shi; /秒,分,时uint juli;/* 名称 : delay_1ms()* 功能 : 延时1ms函数* 输入 : q* 输出 : 无*/void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j110;j+);void delay_10ms(uint q)uint j; for(j=0;j= 10) /10次之后就确定寻迹模块的中间传感器到黑线上了if(dat = L) /如果是左转90度就让右转的方法制动 right_s();else left_s(); /如果是右转90度就让左转的方法制动delay_10ms(5);go(); break; /break退出while(1)这个死循环else /没有在黑钱上就给i_z变量清零i_z = 0;/*小车左转90度*/void left_s_90_while() /小车向左转90度go(); /前进一小会让小车转90度时刚好让黑线在小车的中间delay_10ms(12);left_s(); /左转90度注意这个延时不能太长 只要能让寻迹模块中间的传感离开黑线就好delay_10ms(18);che_90_180_break(L);/*小车向右转90度*/void right_s_90_while() /go(); /前进一小会让小车转90度时刚好让黑线在小车的中间delay_10ms(12);right_s(); /左转90度注意这个延时不能太长 只要能让寻迹模块中间的传感离开黑线就好delay_10ms(18);che_90_180_break(R);/ 白线为 1 黑线为 0void xunji()if(xun_ll=1) & (xun_l=1) & (xun_z=0) & (xun_r=1) & (xun_rr=1)go(); /小车前进if(xun_ll=0) & (xun_l=0) & (xun_z=0) & (xun_r=0) & (xun_rr=0) stop(); if(xun_ll=1) & (xun_l=1) & (xun_z=0) & (xun_r=0) & (xun_rr=1) |(xun_ll=1) & (xun_l=1) & (xun_z=1) & (xun_r=0) & (xun_rr=1) |(xun_ll=1) & (xun_l=1) & (xun_z=1) & (xun_r=0) & (xun_rr=0) |(xun_ll=1) & (xun_l=1) & (xun_z=1) & (xun_r=1) & (xun_rr=0) right(); /小车右转if(xun_ll=1) & (xun_l=0) & (xun_z=0) & (xun_r=1) & (xun_rr=1) |(xun_ll=1) & (xun_l=0) & (xun_z=1) & (xun_r=1) & (xun_rr=1) |(xun_ll=0) & (xun_l=0) & (xun_z=1) & (xun_r=1) & (xun_rr=1) |(xun_ll=0) & (xun_l=1) & (xun_z=1) & (xun_r=1) & (xun_rr=1) left(); /小车左转if(xun_ll=1) & (xun_z=0) & (xun_r=0) & (xun_rr=0) go(); delay_10ms(1);if(xun_ll=1) & (xun_z=0) & (xun_r=0) & (xun_rr=0) right_s_90_while(); /小车右转90度if(xun_ll=0) & (xun_l=0) & (xun_z=0) & (xun_rr=1) go();delay_10ms(1);if(xun_ll=0) & (xun_l=0) & (xun_z=0) & (xun_rr=1) left_s_90_while(); /小车左转90度 /*小延时函数*/void delay()_nop_(); /执行一条_nop_()指令就是1us_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /*超声波测距程序*/void send_wave()c_send = 1; /10us的高电平触发 delay();c_send = 0; TH0 = 0; /给定时器0清零TL0 = 0;TR0 = 0; /关定时器0定时flag_hc_value = 0;while(!c_recive); /当c_recive为零时等待TR0=1;while(c_recive) /当c_recive为1计数并等待flag_time0 = TH0 * 256 + TL0;if(flag_hc_value 1) | (flag_time0 65000) /当超声波超过测量范围时,显示3个888TR0 = 0;flag_csb_juli = 2;distance = 888;flag_hc_value = 0;return ;else flag_csb_juli = 1; if(flag_csb_juli = 1)TR0=0; /关定时器0定时distance = TH0; /读出定时器0的时间distance = distance * 256 + TL0;distance += ( flag_hc_value * 65536);/算出超声波测距的时间 得到单位是msdistance *= 0.017; / 0.017 = 340M / 2 = 170M = 0.017M 算出来是米if(distance 350) /距离 = 速度 * 时间distance = 888; /如果大于3.8m就超出超声波的量程 /*处理距离函数*/void smg_display()if(flag_1s = 1)flag_1s = 0;shudu_ll = shudu_ll * (float)2.55; / 2.55 = 20.4 / 8 = 2.55 算出每一个脉冲的轮子走了多少距离juli += shudu_ll; /计路程/ write_sfm_jl(1,11,juli / 100); /显示路程write_sfm2(1,3,shudu_ll); /显示速度write_sfm2(2,4,shi);write_sfm2(2,7,fen);write_sfm2(2,10,miao);/*定时器0、定时器1初始化*/void time_init() EA = 1; /开总中断TMOD = 0X11; /定时器0、定时器1工作方式1ET0
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 其他分类 > 大学论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!