【基于STC89C52型单片机的避障循迹小车设计6700字】_第1页
【基于STC89C52型单片机的避障循迹小车设计6700字】_第2页
【基于STC89C52型单片机的避障循迹小车设计6700字】_第3页
【基于STC89C52型单片机的避障循迹小车设计6700字】_第4页
【基于STC89C52型单片机的避障循迹小车设计6700字】_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

基于STC89C52型单片机的避障循迹小车设计摘要:目前对智能小车的应用十分地广泛,能在许多不同的领域完成工作。本文详细介绍了避障循迹小车的硬件和软件功能。它使用由STC开发的STC89C52型单片机来研究避障和循迹功能。经过严谨的构思以及参考前辈的经验,我们决定把小车做成四个部分:电动机模块、驱动模块、循迹模块、避障模块。在避障和跟踪传感器模块中,为了增加红外传感器的检测距离,采用PWM技术用于控制传感器发射管的导通和截止,PWM控制是一种调制脉冲宽度的技术。其工作原理是根据安装在车下方的红外探头模块跟踪黑色胶带,从而确定小车的下一个运行状态,并通过调节其PWM通道来实现轿厢的左右转向功能。通过控制器使小车沿给定路线跟随行驶。红外避障模块主要判断车辆行驶路径中是否有障碍物,避免碰到障碍物,并保持一定的安全距离。智能循迹和避障车辆可帮助人们在无人工作领域取得巨大成就。关键词:单片机循迹避障目录TOC\o"1-3"\h\u238241引言 6231811.1研究背景及意义 6214302整体设计方案 6223472.1系统整体方案设计 6295842.2编程语言选择 733703系统硬件模块设计 827683.1控制模块 8126613.1.1STC89C52 886883.1.2主控系统控制原理 965723.2驱动模块 10132103.2.1直流减速电机 1031643.2.2L298N芯片 10206463.3循迹模块 1244883.3.1循迹原理 12310543.3.2RPR一220传感器 1319603.4避障模块 13319463.4.1避障原理 14105643.5电源模块 14314654系统软件设计 14206544.1编程语言及系统开发软件 14162364.1.1KeilC51 15293074.2红外循迹功能流程图 15115574.3红外避障功能流程图 16196055系统调试 17243635.1系统调试 17305035.1.1调试方案 1763125.1.2循迹模块调试 18117035.1.3避障模块调试 1881955.2测试 2066885.2.1循迹功能测试 20185555.2.1避障功能测试 2130794结论 2324799参考文献 2531933附录 2614912附录1:源程序 26

1引言1.1研究背景及意义目前,单片机出现在生活中的频率越来越高,也说明它在现代生活中的应用越来越广泛了。单片机技术作为一种现代科学技术工具,非常广泛的使用在生活及科技上。它在技术上受到微处理器和超大型集成电路的支持,并受到各种市场应用需求的驱动。它具有运行稳定,集成度高,体积小和价格相对较低的特点。自单片机问世以来,便受到了社会各界的广泛关注,并已广泛应用于各种现代智能自动集成机械设备中,普及率十分高。其中,著名的Atmel早期开发的AT89C51型单片机引领起了单片机的热潮。它的功能十分强大,能广泛用于通信电子设备,计算机外设,仪器仪表,并且能实现工业实时控制以及在家用电器的领域也能实现巨大的作用。毫不夸张的说AT89C51在单片机领域风靡一时,其应用范围非常广泛。自瓦特发明了蒸汽机,第一次工业革命开始便开始了。人们从那时候就开始了机器人的研究发展。随着科学技术的发展,机器人的种类也越来越多:工业机器人、情感机器人、程序控制型机器人、移动服务机器人等等。随着新兴科技的发展,智能机器人现在能完成许多人类做不到的工作,我们的生活也因此方便快捷了许多。并且随着汽车工业的飞速发展,汽车研究也越来越受到重视。研究出智能的代步工具一直是人类的梦想。智能汽车现在正在迅速发展,从智能玩具到其他行业都取得了可观的成就。经过不断的研究和实验,这些智能小车基本上可以实现的功能是循迹、避障、寻光入库等。最近举行的这几届的全国电子设计大赛智能小车又在向声控系统发展,智能小车前途大好。2整体设计方案2.1系统整体设计方案经过不断的构思,本小车主要分为了四个模块,分别是电源、驱动、循迹、避障四个模块。小车采用前端驱动的方式,以STC89C52单片机为控制核心,同时两个前车轮上各自配备有两个直流减速电机,并通过单片机向驱动模块发出指令,对输入/输出端口检测到该信号并输出驱动信号(高/低电平信号)以使电动机正常运行。后端使用万向轮作为支撑,使汽车能在行驶中保持平衡。图一是小车整体设计框架,图二为小车结构图。图一小车设计图二小车结构2.2编程语言选择方案一:选择汇编语言,它是一种低级语言。很多可编程设备都会使用到汇编语言,例如:微控制器,微处理器,电子计算机等。其中使用的汇编语言比使用机器语言二进制代码编程容易。其中的原因显而易见,在汇编语言中使用的是助记符号以及地址符号而不是复杂的代码和操作数地址。这样就会使编程的难度被大大降低。在汇编过程中,当面对不同的电子设备时,会有不同的机器指令分别对应不同的汇编语言,并将这些语言转换为机器指令。汇编语言的可移植性差,通常每一种汇编语言都和它特定的机器语言指令集一一对应。汇编语言是面向机器的语言,还可以充分发挥机器的特性,并且获得的程序质量更好,但是它的不容易被理解,编程有些许困难。方案二:选择C语言,在编程界的有许多种类的编程语言,C语言是运用比较多的一种。它的特点显而易见,兼容了高级语言和汇编语言的优点。它向下兼容了许多低级语言的能力,并且数据运算能力十分强悍,在运用时非常的灵巧简便。如果要在硬件上直接直行C语言,他有一个编译转码的过程,所以它在硬件上运行速度不高,但是生成的程序执行速度非常快且质量好。由于这个原因,当我们面对硬件处理速度并不是很高的场合时,多数情况下可以使用C语言来编程。两者相较而言,汇编语言是一种符号化的机器语言,所以机器可以很快的识别它,于是它产生的代码不仅运行效率高,而且速度非常快。所以,当面对实时性要求较高的控制程序的场合,我们可以选择汇编语言。然而汇编语言的缺点也是不可忽略的,它难以被人理解,调试并不方便并且也非常容易出错。而且编写一段汇编语言程序的工作量十分巨大。相反,身为高级语言的C语言,不仅编程方便而且易于调试,人们也能非常容易的理解它,因此我选择C语言作为编程语言。3系统硬件模块设计3.1控制模块3.1.1STC89C52该车的控制模块采用STC89C52型为核心的单片机芯片。它具有体积小,功耗低,速度快,可靠性高,抗静电性强,抗干扰性强,价格低廉的特点。它配备了8X1024比特的系统可以反复擦写的闪存。STC89C52使用传统的MCS-51内核,但是已经进行了许多改进,以提供传统51单片机没有的芯片功能。为了方便许多嵌入式控制应用系统能够高度灵活和更高效的运行,STC89C52在单个芯片上配备了一个智能8位CPU和系统内可编程闪存。它具有以下标准功能:8X1024比特的系统可以反复擦写的闪存,随机存储器占了512字节,40个管脚中其中32位可用作输入/输出端口,此外还配备了看门狗定时器电路,其中配备了4KB带电可擦可编程只读存储器,MAX810复位电路,3个16位定时器/计数器,4个中断和中断源用来使CPU暂停执行当前程序,32位系统配备了7个4字节中断,串行端口是互相工作的。此外,STC89C52可以选择两种不同的省电模式,一种是是处于空闲模式之下,其CPU就会暂停运行,但是定时器或者计时器、随机存储器、中断以及串口这几个部件仍然可以继续运行不受影响。除此之外,在掉电保护这个保护之下还可以保存随机存储器中的内容,并且使振荡器被冻结,目的是使得使单片机一切工作停止,直到下一个中断或硬件复位为止。其中35MHz为最高运作频率,6T/12T可选。除此之外,还具备可编程Flash存储器、拥有灵敏的8位CPU、静态逻辑操作还可降至0Hz。这使得灵活性极高且效率高的解决方法能够运用于众多嵌入式控制应用系统得出了。由此可见,它是一个性能活动性高,且功耗消耗低的单片机。同时,智能小车的底板上有相应的单芯片插座,便于在编程程序时插入和取出芯片。图三显示了STC89C52微控制器芯片。图三STC89C52芯片3.1.2主控系统在主控系统中,我们将单片机输入/输出端口的高电平(1)来表示小车的行驶状态,低电平(0)表示小车停止:如果在I/O端口上检测到的信号为高电平,这意味着地面上的黑色胶带会把红外检测信号吸收,则表明小车正在黑色胶带上行驶或即将偏离跑道。同样,如果I/O端口检测到低信号,则表明车辆在浅色地面上行驶并且在正常跑道范围内。主控电路如图四所示。图四主控电路3.2驱动模块3.2.1直流减速电机在该车上选择在两个前轮上各安装一个重量轻、体积小、转动力矩大、方便的直流减速电机,分别控制小车的两个轮子的转速。这种电机拥有以下优点:转动效果好、轻便、易拼装、简易等。电机具有内置的减速齿轮组,内置齿轮组的对彼此的作用力可以很好的降低转速并增大转动力矩。两个前车轮上的电动机转速与小车行驶方向息息相关:当两个前车轮速度不相同时,小车会转弯,比如当左侧前车轮电动机转速大于右侧前车轮电动机转速,则说明在相同的时间内,左侧车轮开过的路径较远,从侧面证明了此时的小车向右转弯;当小车的两个前车轮转速相同时,表明在相同时间内,左右两侧车轮经过的路径相同,从侧面证明,小车保持直线行驶。3.2.2L298N芯片在该系统的驱动直流电动机中我们使用L298N芯片,为了使该芯片稳定性更好我们采用了SMT工艺,采用质量优秀的铝电解电容,使其能够满足驱动车轮上方的两个3-35V的直流减速电动机的条件,使电路稳定工作。因为单片机芯片也需要5v电源,所以也安排了5v输出接口。为了使电动机的转速和方向能更好的被控住,我们在其内部设立了两个电压高并且电流十分强的H型桥式电路。L298N电机驱动芯片收到由单片机发送来的PWM脉冲信号,进行停止和前进/后退方向的命令,从而使小车避开障碍物并自动校正方向,以达到沿着预设的轨道行走的目的。图五为驱动模块原理图,图六为L293H内部等效图(双H桥路)。图五驱动模块原理图图六双H桥路3.3循迹模块3.3.1循迹原理小车循迹功能意味着小车将根据人们预先指定的路线行驶,该循迹模块实验中使用了红外检测的方法。所以需要在白色地面上提前粘贴好黑色跑道﹐就是在白色的地板砖上用黑色的胶布铺设而成。智能小车小车采用2个RPR一220型红外光电传感器组成循迹模块,每个RPR220红外光电传感器均由一个红外发光二极管和一个红外接收晶体管组成。红外循迹的原理基于以下特征:不同颜色的物体对红外线的反射、吸收能力不同。众所周知,不同颜色的物体对红外线的吸收能力不尽相同,其中黑色吸收红外线的效果最好,所以我们在小车上安装红外传感器,传感器上的发射管定期地向地面发射红外辐射,从而达到小车循迹的目的。所以我们大胆设想,白色地板和粘在地板上的黑色胶带具有不同的红外吸收特性,黑色会完全吸收红外线,白色对红外线的吸特性差。于是发射到白色地板上的红外线被反射,装在小车底部的红外光电传感器会接收到此次信号。并且发射到黑胶带上的红外光将被吸收,根据接收到红外信号的强度红外接收管会迅速做出决断来给小车发出行进命令。如果左侧的红外光电传感器没有接收到返回信号,则L298N驱动器芯片将控制左侧的电动机停止转动,并且小车的前部将逐渐向左侧调整。如果右侧的红外光电传感器未收到返回信号,则L298N驱动器芯片将检查右侧的电动机是否停止旋转,并且小车的前部将逐渐向右调整。因此,想要判断小车的是否按着预定轨道行走,只需要通过红外光电接收器是否接收到红外信号来确定。3.3.2RPR一220传感器RPR-220它是一个集成的反射式光电探测器。它由砷红外发光二极管组成发射器,硅平面光电晶体管组成接收器,它具有非常高的灵敏度,能够很好地完成循迹功能。目前该传感器主要用来检测物体是否存在;物体通过某一位置的次数;物体是否到位,例如水位检测等。特点:1.使用塑料透镜用以提高灵敏度;2.内置的可见光过滤器以减小离散光的影响;3.紧凑的结构。它采用DIP4封装。发射器和接收器均由两个一长(正极)一短(负极)的引脚组成。器封装如图七示。图七DIP4器封装3.4避障模块3.4.1避障原理避障模块主要由两部分组成,一部分是从红外检测原理推导而来的,类似于循迹功能。在小车车头安装两个红外检测器,红外监测器由两个灯管组成,其中一个为电源灯,另一个是信号灯用来检测前方是否有障碍物。测试表明,它可以很好地用来检测小车前进路线的前面和左、右两边的情况。如果前部红外对管检测到红外线被反射回来,则表明前方有障碍物,并调用系统的避障子程序使小车自动避开障碍物。如果通过小车左侧的红外线检测到障碍物,它会自动调节前进方向,使小车向右移动。同样,如果在小车右侧通过红外检测检测到障碍物,它会调整行进方向并将车头向左移动。如果前方有一整个障碍物,则小车自动调用避障子程序并且后退来实现避障功能。3.5电源模块此次设计的智能小车系统中所有芯片所需的工作电压为5V,一节干电池的电压约为1.5V,为了使各部分系统都能正常的工作,在此设计中采用了4节干电池为系统提供6V电压,并且更换干电池也很方便4系统软件设计4.1编程语言及系统开发软件通常在单片机应用系统的开发过程中,C语言是人们最为常用的开发语言,因为C语言兼容了高级语言和汇编语言的优点。它向下兼容了许多低级语言的能力,并且数据运算能力十分强悍,在运用时非常的灵巧简便。因此本文选用C语言作为系统的开发语言,同时也借助KeilC51平台开发了系统软件。4.1.1KeilC51KeilC51是由美国的KeilSoftware这家公司所生产的,它是被归纳在51系列当中。这个软件能够对C语言软件以及单片机两者实现兼容,相较于汇编,C语言的结构性、可维护性,包括功能与可读性都具备更大的优势,便于用户操作。先使用汇编语言,再用C语言来开发,这样会对这个开发过程拥有更深的理解。在Keilc51中,既包含C编译器和链接器,也包含宏汇编,还可以对工程进行库文件管理,软件中还提供了仿真调试期,为开发人员提供了一个完整的开发流程。4.2程序总体设计小车按照特定路径循迹或避障,我们可以吧这个运动过程拆分成多个不同的步骤。每个步骤都有对应的数据,我们可以通过这些数据来选择不同的小车运行路径。同样的,小车的动作都用不同的函数表示,我们根据自己的需要写入一个主程序,在主程序中调用这些函数。在源程序中包括以下模块:前进程序、电机调速、延迟调用、中断程序等。4.2红外循迹功能流程图红外循迹流程图如下图八红外循迹流程图4.3红外避障功能流程图避障功能流程图如下图九避障功能流程图5系统调试5.1系统调试5.1.1调试方案系统调试主要采用测试子模块的方法,首先调试每个子模块,然后逐个调试更高级别的模块,最后执行集成调试。由于基本模块是整个系统中最重要的人机界面,所以在调试模块起初阶段,首先考虑调试基本模块。用户将会从这些模块中获取很多有用信息,从而使用户能够最快地找到问题,从而确保每个模块独立工作并集成相关模块。例如,在集成和调试过程中发现问题时,一一寻找并排故障,只需对模块间的接口进行简单修改和调试,达到简便快捷的效果。5.1.2循迹模块调试小车车头处安装的红外检测器,用作循迹功能。其工作原理是,黑线对循迹探头没有反射能力,所以我们伸出一根手指挡住右边的循迹探头,右边光线被反射,左边循迹探头无反射则检测为黑线。右边电机正转,左边电机反转,以实现向左转弯功能。当小车检测不到黑线时,可以依靠车头中间的电位器调整红外检测的分辨率,如此便能使小车成功检测到黑线。红外循迹模块如下图十。图十红外循迹模块5.1.3避障模块调试在小车前端设有两个避障模块,用来检测障碍物,黑色的灯是电源灯,白色的是信号值灯,如果前端的红外对管检测到有红外线被反射回来时,就表明前方有阻碍,信号值灯亮,然后调用避障子程序,使小车自动避开障碍物。例如,当校车左侧检测到障碍物时,小车的信号值灯亮起,并且向右行驶。如果探头同时检测到前方有障碍物时,电机反转使小车后退。右转弯避障如图十一所示,后退避障如图十二所示。图十一右转弯避障图十二后退避障5.2测试5.2.1循迹功能测试循迹测试过程中,采取让小车在黑色跑道(跑道是由黑色胶布在浅色地面上拉线完成)上前进,看其是否能完成循迹功能。通过测试结果可以发现:本小车可以很好地完成循迹功能,并且可以从起点到终点运行。小车循迹测试图如图十三所示。图十三循迹测试5.2.1避障功能测试通过一些纸盒子围城的简单围栏进行避障测试,把小车放在这个简单围栏中,让小

温馨提示

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

评论

0/150

提交评论