基于单片机的智能小车的设计——毕业论文

上传人:good****022 文档编号:116418086 上传时间:2022-07-05 格式:DOC 页数:54 大小:1.94MB
返回 下载 相关 举报
基于单片机的智能小车的设计——毕业论文_第1页
第1页 / 共54页
基于单片机的智能小车的设计——毕业论文_第2页
第2页 / 共54页
基于单片机的智能小车的设计——毕业论文_第3页
第3页 / 共54页
点击查看更多>>
资源描述
基于单片机的智能小车的设计基于单片机的智能小车的设计摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入。同时带动传统控制检测,日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用。单片机是把主要计算机功能部件都集成在一块芯片上的微型计算机。它是一种集计数和多中接口于一体的微控制器。而51单片机是单片机中最为典型和最有代表性的一种。本设计主要应用AT89S51作为控制核心,与显示器、驱动电路等相结合的系统。基于单片机设计。利用单片机AT89S51作为报警装置的控制器,能充分发挥AT89S51的数据处理和实时控制功能。使系统工作处于最佳状态,提高系统的灵敏度。当产生信号驱动小车前进时,通过寻迹模块里的红外对管是否寻到黑线产生的电平信号再返回到单片机,单片机根据程序设计要求做出相应的判断送给电机驱动模块.控制小车让其在黑线上实现前进后退以及转向。关键词:单片机 寻迹 报警 红外 电机驱动48AbstractWith the rapid development of science and technology in recent years, SCM applications are continually deepening. Traditional control test drive at the same time, the rapidly growing update. In real-time detection and control of the microcomputer application system, the microcontroller is often used as a core component. SCM is the main feature integrated computer chip in a micro-computer. It is a set of multi-counting and the interface in one of the micro-controller. The 51 single-chip microcontroller is the most typical and most representative one.The design of the main application AT89S51 as the control, and display driver integrated circuits and other systems. Based on single chip design. MCU AT89S51 using the controller as an alarm device that can give full play to AT89S51 of data processing and real-time control functions. Make the system work in the best condition, improve the system sensitivity.When two signal driven forward by car tracing module,the infrares on whether to produce level signals through the black,retutn again according to requirement of design procedure of judgment for motor driver module,it controls the car turning back forward of running on the black line.Keywords: SCM,Tracing, Alarm device, Level signals, Motor driver module目录摘要IAbstractII目录III前言11 设计任务及方案21.1 设计任务及要求21.2 设计方案论证21.2.1 控制器选择21.2.2 电机驱动芯片的选择31.2.3 路况检测模块42 系统硬件电路与实现52.1 红外遥控及解码模块52.1.1 二进制信号的调制62.1.2 二进制信号的解调72.1.3 二进制信号的解码72.2 单片机红外接收硬件电路的实现82.3 电机驱动模块92.4路况检测模块132.4.1 寻迹模块142.4.2 智能防撞报警模块163系统软件设计与实现173.1整体程序的构架183.2红外遥控解码的实现193.3电机驱动213.4 小车寻迹213.5 小车防撞报警224 小车系统原理图245 系统调试265.1 遥控发送接收调试265.2 电机驱动调试275.3 寻黑线和防撞的调试27总结27致谢28参考文献29附录30元件清单30系统程序31前言当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。作为机械行业的代表产品汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。无容置疑,电子信息化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为电子信息化学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。为了适应智能控制的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。所以立“智能循迹小车”一题作为尝试。此项设计是在以杨老师提供的小车为基础上,采用AT89C52单片机作为控制核心,实现能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。1 设计任务及方案1.1 设计任务及要求此次的设计任务是设计一款基于单片机的智能小车的设计。设计要求如下:具有单片机核心控制模块;具有红外遥控解码模块;具有电机驱动模块;具有路况检测模块;具有光感模块;具有声控模块;具有七段数码管显示模块;具有报警模块;1.2 设计方案论证1.2.1 控制器选择方案一:采用MSP430单片机MSP430是德州仪器 (TI)的一种RISC混合信号处理器,MSP430产品系列为电池供电测量应用提供了最终解决方案。作为混合信号和数字技术的领导者,TI创新生产的MSP430,使系统设计人员能够在保持独一无二的低功率的同时同步连接至模拟信号、传感器和数字组件。MSP430优点:0.1uA RAM 保持;0.8uA实时时钟模式;250uA/MIPS有效;高性能模拟器件;是精确测量的理想选择;先进的16位RISC CPU使得新的应用仅需一段代码即可实现;系统内可编程闪存允许更改代码、更新字段和记录数据。但是,MSP430每个管脚的驱动能力较弱,有利于低功耗,但是在电源方面,处理器使用的功耗相对输入几乎没有多大影响。MSP430使用的主频相对较低,处理速度较慢,在本系统中要使用电机驱动控制,对管脚输出都有较高的要求。所以在本系统中使用MSP430不利于系统的控制。方案二:采用AT89S51单片机1AT89S51是一种低功耗、高性能CMOS8位微控制器,具8K在系统可编程 Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程 Flash,使得 AT89S51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S51具有以下标准功能:8k字节Flash,256字节 RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S51可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。方案选择:综上所述:通过以上方案比较,在本系统中控制器选用第二个方案,使用AT89S51作控制器。因为该单片机成本低廉,操作起来方便,因此本设计控制器选用此方案。1.2.2 电机驱动芯片的选择方案一:采用L298N L298N为SGS-THOMSON Microelectronics 所出产的双全桥步进电机专用驱动芯片( Dual Full-Bridge Driver ) ,内部包含4信道逻辑驱动电路,是一种二相CEs838电子-技术资料-电子元件-电路图-技术应用网站-基本知识-原理-维修-作用-参数-电子元器件符号-各种图纸和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器,接收标准CEs838电子-技术资料-电子元件-电路图-技术应用网站-基本知识-原理-维修-作用-参数-电子元器件符号-各种图纸TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号,CEs838电子-技术资料-电子元件-电路图-技术应用网站-基本知识-原理-维修-作用-参数-电子元器件符号-各种图纸但在智能小车电路中单片机IO 端口的使用匮乏。该设计也不用于速度控制,相对来讲LG9110成本较低。方案二:采用LG9110LG9110是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片IC之中,使外围器件成本降低,整机可靠性提高。该芯片有两个TTL/CMOS兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反转运动,它具有较大的电流驱动能力,每通道能通过750-800mA的持续电流,峰值电流能力可达1.5-2.0A;同时它具有较低的输出饱和压降;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用安全可靠。LG9110被广泛应用于玩具汽车电机驱动、步进电机驱动、和开关功率管等电路上。方案三:使用分立原件搭建电机驱动电路 使用分立原件搭建电机驱动电路造价低廉,在大规模生产中使用广泛。但分立原件H桥电路工作性能不够稳定,较易出现硬件上的故障,故我们放弃了这一方案。综上所述:通过以上方案比较,在本系统中电机驱动芯片选用第二个方案,使用LG9110作为驱动电路。因为该LG9110驱动能力强,成本低廉,操作起来方便,因此本设计控制器选用此方案。1.2.3 路况检测模块采用红外发送接收探头来检测实时路况信息,并传回单片机处理。红外发射探头发射红外信号,遇地面或障碍物反射回红外接收探头,红外接收探头接收到从地面或障碍物反射回的红外信号之后给单片给一个电平信号,来判断整体路况信息。2 系统硬件电路与实现本设计采用了AT89C52单片机作为主控芯片来处理各个模块的运营,系统硬件总框图如图2.1AT89C52遥控模块路面检测模块电机驱动模块报警模块显示模块 图2.1 系统硬件总体框图2.1 红外遥控及解码模块红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,低成本,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。红外遥控由发送和接收两个部分组成。发送部分由主芯片将待发的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号红外信号接收端普遍采用价格便宜,性能可靠的一体化红外接收头(如HS0038,它接收红外频率为38KHz,周期为26us)接收红外信号,它同时对信号进行放大、检波、整形,得到TTL电平的编码信号,再送给单片机,经单片机解码并执行,去控制相关对象。如图2.1.1所示。遥控器一体化红外接收头单片机发送接收解调解码图2.1.1 红外遥控解码框图 2.1.1 二进制信号的调制二进制信号的调制由遥控器的主芯片来完成,它把编码后的二进制信号调制成频率为 38KHz的间断脉冲串,相当于用二进制信号的编码乘以频率为38KHz 的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号。如图2.1.2所示,A是二进制信号的编码波形,B 是频率为38KHz(周期为26us) 的连续脉冲串,C是经调制后的间断脉冲串(相当于C=AB),用于红外发射二极管发送的波形。图2.1.2中,待发送的二进制数据为 101。如图 2.1.2所示。 图2.1.2 二进制信号的调制2.1.2 二进制信号的解调二进制信号的解调由一体化红外接收头HS0038来完成,它把收到的红外信号经内部处理并解调复原,输出图2.1.3中波形E(正好是对图2.1.2中波形A 的取反),HS0038的解调可理解为:在输入有脉冲串时,输出端输出低电平,否则输出高电平。一体化红外接收头HS0038的 1脚GND接电源地,2脚VCC接+5V,3脚OUT为数据输出(TTL电平,反相输出),可直接与单片机相联。 图2.1.3 HS0038解调出的波形2.1.3 二进制信号的解码二进制信号的解码由接收单片机来完成,它把红外接收头送来的二进制编码波形通过解码,还原出发送端发送的数据。如图2.1.3,把波形E解码还原成数据信息101。图2.1.4为红外信号的编码格式传输开始8位数据传输结束20个脉冲高位在前,低位在后10个脉冲 图2.1.4 红外信号的编码格式2.2 单片机红外接收硬件电路的实现图2.2.1中,一体化红外接收头IR的圆形面为红外接收面,它与SE303红外发射管的有效收发直射距离为35m。 图2.2.1 红外接收电路3脚接电源,2脚接地,一脚接单片机的P3.3(外部中断0),当有红外信号输入时,1脚解调之后将数据信息传送给单片机引起单片机中断,从而对红外信号进行解码。2.3 电机驱动模块在几乎所有的遥控车大都采用了直流电机来控制小车的行为,直流电机有两个控制端,通过改变输入电平的不同来改变电机的运转。图2.3.1为电机驱动模块的硬件电路图。图2.3.1电机驱动模块 在图2.3.1中,单片机通过控制P0.0P0.3引脚电平的高低来控制直流电机M1、M2的正反转。当P0.0P0.3输入为1010时,两电机均处于正转状态,此时小车表现为整体前进;当P0.0P0.30输入为0101时,两电机均处于反转模式,小车整体表现为后退。当P0.0P0.3输入为1001以及0110时,一电机正转,另一电机反转,从而实现了左右转向功能。很显然,仅仅只靠单片机来驱动小车的行为是不现实的,因为单片机自身管脚输出的高电平的电压是很微弱的,这种电压直接控制电机会使得电机马力不足,没能够带动整个小车运行,所以在这种情况之下,最适合的就是运用电机驱动芯片来完成小车的驱动,这里我们采用了一款价格低廉的电机驱动芯片L9110来完成它的使命,实际上L298N这款芯片能够更好的驱动电机,并能实现电机调速的功能,但由于小车自身重量因数和电压问题我们就采用L9110了。下面给出关于L9110的相关数据手册。 图2.3.2 LG9110的实物图特点: 低静态工作电流; 宽电源电压范围 2.5V-12V; 每通道具有800mA连续电流输出能力; 较低的饱和压降; TTL/CMOS输出电平兼容,可直接连接CPU; 输出内置钳位二极管,适用于感性负载; 控制和驱动集成于单片IC之中; 具备管脚高压保护功能; 图2.3.3 LG9110管脚图管脚定义如表2.3.1表2.3.1 LG9110的管脚定义序号符号功能1OAA路输出管脚2VCC电源电压3VCC电源电压4OBB路输出管脚5GND地线6IAA路输入管脚7IBB路输入管脚8GND地线L9110电机驱动芯片有八个管脚,其中两个电源管脚和两个接地管脚,另外有两个输入(IA/IB)、和两个输出管脚(OA/OB),两个输出管脚接,电机的两极,而两输入管脚和单片机连接,从而控制电机的状态。图2.2.4为L9110的硬件连接图。图2.3.4 LG9110硬件连接图2.4路况检测模块采用了红外发射和接收探头来探测路况信息。红外发射管发射红外信号,经路面反射传回给红外接收管进行判断处理。由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”情况和前方是否存在障碍物。笔者在该模块中利用了简单、应用也比较普遍的检测方法红外探测法。 图2.4.1为路况检测模块的硬件设计原理图。 图2.4.1 路况检测模块硬件连接图上电之后红外发射管V1、V6、V3导通,向地面以及前方实时发射红外信号,当遇到白色墙或路面时,红外信号经白色路面有较强发射,这时红外接收探头V2、V5、V4刚好接收到红外信号,使得这些探头导通,将低电平送给P3.5、P3.6、P3.7让单片机进行判断处理。路面检测模块分为小车寻黑线的检测和前方是否有障碍物的检测两部分。2.4.1 寻迹模块所谓寻迹,就是我们建立一条画画有弯曲黑线的白纸跑道,该智 利用红外线在不同颜色的物理表面具有不同的反射性质的特点。在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号。 黑线要有一定宽度,应该是大于两红外线发射探头的距离,如图2.4.2所示。 图2.4.2 小车前方探头实物这里的红外线发射探头为前端向下伸出的透明的探头,所以黑色跑道宽度应该至少大于两透明探头的距离,才能保证小车正常运行。小车放在黑色跑道上时,打开电源时,小车前端向下伸出的红外线发射探头发射红外线,如果小车在黑线上,小车发出的红外线就遇到黑色时,不产生反射。当左边稍微跑出黑色跑道时,发出的红外线就会遇到白色而产生反射,这时旁边的黑色接收探头接收到反射信号,从而使接收探头导通。原理图如下图所示,当D2接收到红外信号时,会使P3.5产生一个低电平,进而送给单片机进行处理,单片机接收到来至左侧的接收头给的低电平时,给予小车右转操作;同理,当小车右边跑出黑线时,右侧探头识别之后会给小车低电平,提示小车应该进行左转操作。这样就完成了整个小车的寻迹功能。2.4.2 智能防撞报警模块智能防撞报警是现代智能小车的一个非常有研究价值的课题,十分有现实意义。智能小车能够自识别前方是否有障碍物。如果有则自动调节小车的运动轨迹来成功避免撞到障碍物所带来的损失,同时在遇到障碍物时,能够提示报警,以提示主人应注意安全。将小车放置在空旷的路面上,小车的前端两探头感应前面是否有障碍物,与此同时,朝下的四个探头也会同时接收来自地面路况的信息,当小车运行到悬崖边上时,小车上面主控芯片单片机就会接收到此时的路况信息,进而去改变小车的运行路径。同时发出报警信号。报警模块硬件图如图2.4.3所示。 图2.4.3 防撞探头实物 当前面有障碍物时,单片机分析之后送给P0.6一个高电平信号,使得三极管V1导通,从而引起SB1蜂鸣器导通,发出报警信号。当前方无障碍物时,另一个红外接收探头则接收不到由发射头发射出来的红外信号,当前方遇到障碍物时,发射头发出去的红外信号被前方障碍物反射回来,此时刚好被接受探头接收,探头接收到信号时,将会使其中一个管脚变为低电平,再传送给单片机;同理小车在判断前方是否有悬崖时也一样,当前方没有出现悬崖时,小车朝下的探头发出去的红外信号就会经路面反射,而且只要小车在路面上行驶,那么红外信号就会一直被反射进而被接收,也就会使得单片机与红外接收探头其中一脚相连的管脚一直至0,当前面遇到悬崖时,红外信号发射出去之后,由于红外接收头的接收距离有限,就会检测不到有传回的红外信号,此时就会给单片机一个高电平,单片机识别之后便会做出相应的修正动作,并给蜂鸣器一个信号,使得蜂鸣器出现报警提示。3系统软件设计与实现遥控器输入单片机解码电机控制(前进后退左右转)黑线寻迹防撞报警在系统软件设计时,我们将所有的模块程序嵌入到遥控器中,这种嵌入式主要是为了便于控制,且不占CPU,因为遥控模块、寻迹模块、以及避障模块等都同时用到了实时检测扫描,这样不仅占用CPU,而且多个程序一块运行还会产生冲突。各个模块衔接如图3.1所示。 图3.1 程序模块连接遥控器发送红外信号时,开启单片机外部中断0,主程序进入中断函数,进行解码。解码处理完成之后,将遥控信息反馈给主程序,主程序对比遥控器输入值之后进入相应模块执行相关操作,各模块最终会处理是由电机驱动来完成的,所以在图3.1中最终箭头是指向电机控制模块的。3.1整体程序的构架程序框图如图3.1.1所示图3.1.1 整体程序框图3.2红外遥控解码的实现整个控制程序都嵌入到了遥控模块这一单元里边,所以红外遥控的解码是贯穿整个设计的主线,起到了整个系统入口的作用。当遥控器上按下按键时,1脚收到遥控器发送的红外脉冲信号并解码出脉宽波形,同时使单片机产生中断,并开启定时器、脉冲个数计数。记录出每来一个脉冲的时间和脉冲总个数,等到一帧的数据发送完成之后,单片机结束计数,并关闭定时器。之后进入判断阶段,首先判断这一帧数据中的脉冲个数,如果脉冲个数大于31个则将数据丢弃,如果刚好则判断接收的脉冲是0还是1,接收完之后将这些数据保存起来,再来比对数据的对错,首先比对前导码是否正确,也就是看一下当前遥控器是不是与小车匹配的遥控器,如果都正确之后再来将码值存起来。主程序用一个swich函数来对相应码值进行对应函数的调用就可以了,比如按下了上键,则调用前进函数来完成小车前进动作。如图3.2所示初始化中断口是否有遥控信号输入是否有抖动进入解码计数脉冲个数同时计数单个脉冲宽度脉冲个数是否为32个数据解码并判断数据码和数据反码取非之后是否相等执行相关模块否是是否是否是否 图3.2 解码程序框图3.3电机驱动从宏观上讲,电机驱动在小车运行中占据主导,也是小车接收到命令之后的最终输出,任何一个模块所执行命令的外在表现。电机驱动包括驱动电机前进、后退、左转、右转以及暂停功能,这些功能不仅仅只是遥控器按下上下左右之后才执行,而是每一个模块都会有执行电机驱动模块的操作,所以在设计程序时,最优设计应该是将这些前进、后退、左右转向单独编译成一个函数块,每一个子模块的运行就只需调用这些函数就可完成。这样做就节省了很大的程序空间。举个例子,在编写前进函数时,为了满足小车前进功能,只需将P0.0P0.3赋值1010就可完成,其他左转右转只是改变相应P0.0P0.3的码值则可实现。当然为了使得更准确,可以添加一下延时函数在内部,以避免操作太快给电机带了的损坏。3.4 小车寻迹在主程序中只要检测到遥控器上按下了寻迹功能键之后,主程序直接调用寻迹函数,来实现寻迹功能。这里介绍一下寻迹模块编写的一些思路。要实现寻迹就必须清楚寻迹原理,在前面的技术介绍中,已经介绍了他的原理。这里不做过多说明,以免冗余。寻迹函数的编写是一个实时扫描单片机管脚P3.5/P3.6,P3.5管脚代表左方探头传回的信息,P3.6代表右边探头传回的信号。当左方探头跑出黑线时,会给P3.5至0,单片机检测到P3.5为0时,便调用右转向函数,来完成右侧转功能,当右方探头跑出黑线时,同样会使P3.6至0,这时再调用左转向函数来调节小车的位置。图3.4为小车寻迹模块的程序流程图初始化探头跑出黑线了吗哪边探头有输入前进后退右转左转是否左左右均有右 图3.4 寻迹程序流程图3.5 小车防撞报警 主人命令开启防撞功能时,小车主程序调用防撞报警函数,在防撞报警函数打开时进入实时检测P3.7脚,当前方遇到悬崖或障碍物时,小车内部防撞函数调用电机驱动函数来调节小车行经来避免掉入悬崖或撞击障碍物,并触发报警信号引起报警。图3.5为防撞报警模块的程序流程图。初始化前方有悬崖或障碍物吗前进后退并报警左转并报警是否 图3.5 防撞报警程序流程图 4 小车系统原理图硬件电路总设计图如图4.1所示 图4.1 硬件电路原理图最终主板PCB图前板PCB5 系统调试把原理图画、最终PCB画好之后再根据实验室现有的实验条件进行制版,并一并把所有元器件焊接上,在焊接时应注意以下几点: 、电解电容容有正负极之分,长正短负; 、二极管有正负极之分,长正短负; 、话筒有正负之分,负极与外壳相连; 、蜂鸣器有正负之分,长正短负; 、三极管按照电路板封装焊接; 、集成电路即芯片,安装时要注意缺口对应(缺口对应位置和封装对应位置要一致)。(缺口在芯片或芯片底座的一端); 、数码管焊接时注意数码管上的小数点要与电路板封装上的小数点对应;、每个电机都需要焊接瓷片电容104。焊接完之后,还需对小车各个模块进行调试,以确保硬件的完好。5.1 遥控发送接收调试由于遥控器是由厂家直接提供的,为了确保遥控器能够正常发送红外信号,必须提前进行测试,但遥控器是集成的,而红外线发射灯又是透明的,当发送的时候人眼观察不到任何现象,那么怎样知道遥控器是否正常呢?这里教你一小招,将遥控器装上电池,然后将你自己的手机的照相功能打开,将手机上的摄像头对准你遥控器前面的发射灯,然后按下遥控器上的任何一个按键,观察手机照相功能里面的遥控器发射灯是否点亮,如果灯已被点亮,则说明遥控器能够正常发射红外信号,否则遥控不能发射红外信号。这一招很简单,在家里也能用,平常家里面的遥控电视机遥控器不灵了就可试着采用这一方法,进而初步判断是不是遥控器已坏或者遥控器上面电池没电了。在上面已经介绍了遥控器的测试,现在再来谈谈红外接收头的调试,如果遥控器能够正常工作,下一步就应该测试一下接收头是否正常接收了。小车上电之后将接收头的1号管脚接上示波器,然后一直按下遥控器上面的按键,观察示波器上面波形,如果能够发现有重复的高低脉冲,但看不清具体的脉冲宽度,则说明红外线能够正常接收红外信号。如果接上之后没什么反应,也未见其波形,初步推断是接收头有问题,或许是元器件已坏,也可能是焊接时有虚焊或短路,这时应该再次检查电路连接。以上步骤都完成且正常之后可烧写遥控小程序以此来检查所用程序是否能够正常解码。5.2 电机驱动调试最直接的方法来判断电机是否完好就是那一节干电池做电源,将两极分别接在直流电机的两极,来观察能否实现正转反转,当然在接之前最好在直流电机两引脚之间接上一个104的瓷片电容,这样做是防止由于电流过大将电机烧坏。完成之后再烧电机驱动程序,程序里边在执行完正转之后设置一个延迟时间,烧写完程序之后再运行小车,观察小车前进后退敏不敏捷,左右转向弧度大小怎样,如果不满足自己要求,则可改变延迟时间的长短来实现,不断进行调试。已达到最佳效果。5.3 寻黑线和防撞的调试首先检查前板探头是否正常,红外信号发射探头可继续采用检测器正常与否中使用的方法,黑色接收探头正常与否可参考原理图,将小车置于白色跑道上,正前方放一障碍物,注意障碍物表面一定不能为黑色,然后用万用表测量一下P3.5、P3.6、P3.7管脚电压。观察是否为0电压,如果为0,则正常工作,如果不为0,则可能电路存在问题,需检查电路完整性。然后再次烧写寻迹和防撞报警程序,并自己建立边缘为白色,跑道为黑色的实验台,观察小车在自动寻迹功能上是否能正常实现,并观察小车在弯曲跑道上的转向弧度是否合理,如果不合理则应调节内部延时间。以跑道要求。总结毕业设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。这次的毕业设计通过搜集相关资料和撰写论文对我来说是一次非常难得的锻炼机会,可以说已经囊括了大学期间大部分的知识,从选题到定稿,从理论到实践可以把所学的专业知识充分运用起来解决具体的问题,不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,能够使所学知识融会贯通。对于我来说这不仅仅是一次毕业设计,更重要的是在过程中提高了我学习的能力、解决问题的能力和实际工作的能力,这些技能和方法都会对将来的工作有很大的帮助。回顾起此次毕业设计,至今我仍感慨颇多,可以说得是苦多于甜,但是可以学到很多很多的东西。在设计和写论文的过程中遇到很多问题,可以说得是困难重重,发现了自己还有很多的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,这次课程设计也让我对以前所学过的知识有了温故知新。参考文献1 宋建国:AVR单片机原理及应用A,北京航空航天大学出版社,1998.2,P35-P45 2 黄继昌:传感器工作原理及应用实例A,北京人民邮电出版社,1998.6,P32-P353 雷辉:基于AT89C2051的智能防撞报警器设计,电气时代J,2005.1,P44-P464吴爱萍: 基于AT89S51的多功能红外遥控器设计期刊论文-仪表技术与传感器 2008(8)5洪刚:一种简易红外遥控键盘的设计期刊论文-重庆科技学院学报(自然科学版) 2008(4)6王建跃:红外遥控器编码方法期刊论文-工矿自动化 2005(z1)附录元件清单位号名称位号名称M1电机1接线座SIUILED数码管M2电机2接线座IR1红外接收头X1前端探测板接线座RX110K排阻9脚DC15KZ111.0592晶振R1220IC1STC89C52RCR2150IC2MAX232CPER31MIC3L9110集成电路R447KIC4L9110集成电路R54.7KC110uF/16VR6560C2104R7560C3104R8560C4104R9560C510uF/16VR10560C610uF/16VR11560C730PFR12560C830PFR13560C9104R14220C1010uF/16VR1510KC1110uF/16VR16560C1210uF/16VR17560C1310uF/16VR18560D1D8红色发光二极管R19560D9绿色发光二极管R20560S1按键开关R21560S2按键开关R22560S3按键开关R23560COM1DB9针串口R24560D1D2LED(前板用)R2510KV1发射头(前板用)R26560V2接收头(前板用)RL1光敏电阻V3发射头(前板用)SB1蜂鸣器V4接收头(前板用)B1话筒V5发射头(前板用)R1220(前板用)V6接收头(前板用)R2560(前板用)R3220(前板用)R415K(前板用)R515K(前板用)R6220(前板用)R7560(前板用)R815K(前板用)9012红外遥控发射器V1V28550J1J2跳线帽系统程序#include /包含51单片机相关的头文件#define uint unsigned int /重定义无符号整数类型#define uchar unsigned char /重定义无符号字符类型uchar code LedShowData=0 x03,0 x9F,0 x25,0 x0D,0 x99, /定义数码管显示数据 0 x49,0 x41,0 x1F,0 x01,0 x19;/0,1,2,3,4,5,6,7,8,9uchar code RecvData=0 x07,0 x0A,0 x1B,0 x1F,0 x0C,0 x0D,0 x0E,0 x00,0 x0F,0 x19;uchar IRCOM7;static unsigned int LedFlash; /定义闪动频率计数变量unsigned char RunFlag=0; /定义运行标志位bit EnableLight=0; /定义指示灯使能位/*完成基本数据变量定义*/sbit S1State=P10; /定义S1状态标志位sbit S2State=P11; /定义S2状态标志位sbit B1State=P12; /定义B1状态标志位sbit IRState=P13; /定义IR状态标志位sbit RunStopState=P14; /定义运行停止标志位sbit FontIRState=P15; /定义FontIR状态标志位sbit LeftIRState=P16; /定义LeftIR状态标志位sbit RightIRState=P17; /定义RightIRState状态标志位/*完成状态指示灯定义*/sbit S1=P32; /定义S1按键端口sbit S2=P34; /定义S2按键端口/*完成按键端口的定义*/ sbit LeftLed=P20; /定义前方左侧指示灯端口sbit RightLed=P07; /定义前方右侧指示灯端口/*完成前方指示灯端口定义*/sbit LeftIR=P35; /定义前方左侧红外探头sbit RightIR=P36; /定义前主右侧红外探头sbit FontIR=P37; /定义正前方红外探头/*完成红外探头端口定义*/sbit M1A=P00; /定义电机1正向端口sbit M1B=P01; /定义电机1反向端口sbit M2A=P02; /定义电机2正向端口sbit M2B=P03; /定义电机2反向端口/*完成电机端口定义*/sbit B1=P04; /定义话筒传感器端口sbit RL1=P05; /定义光敏电阻端口sbit SB1=P06; /定义蜂鸣端口/*完成话筒,光敏电阻,蜂鸣器.端口定义*/sbit IRIN=P33; /定义红外接收端口/*完成红外接收端口的定义*/#define ShowPort P2 /定义数码管显示端口extern void ControlCar(uchar CarType); /声明小车控制子程序void delay(unsigned char x) /0.14mS延时程序 unsigned char i; /定义临时变量 while(x-) /延时时间循环 for (i = 0; i13; i+) /14mS延时 void Delay() /定义延时子程序 uint DelayTime=30000; /定义延时时间变量 while(DelayTime-); /开始进行延时循环 return; /子程序返回void ControlCar(uchar CarType) /定义小车控制子程序 M1A=0; /将电机1正向电平置低 M1B=0; /将电机1反向电平置低 M2A=0; /将电机2正向电平置低 M2B=0; /将电机2反向电平置低 LeftLed=1; /关闭前方左侧指示灯 RightLed=1; /关闭前方右侧指示灯 Delay(); /将此状态延时一段时间 switch(CarType) /判断小车控制指令类型 case 1: /前进 /判断是否是前进 M1A=1; /将电机1正向端口置高 M2A=1; /将电机2正向端口置高 ShowPort=LedShowData1; /数码管显示前进状态 break; /退出判断 case 2: /后退 /判断是否是后退 M1B=1; /将电机1反向端口置高 M2B=1; /将电机2反向端口置高 ShowPort=LedShowData2; /数码管显示后退状态 RightLed=0; /将前方右侧指示灯置低(亮) LeftLed=0; /将前方左侧指示灯置低(亮) break; /退出判断 case 3: /左转 /判断是否是左转 M1B=1; /将电机1反向端口置高 M2A=1; /将电机2正向端口置高 ShowPort=LedShowData3; /数码管显示左转状态 LeftLed=0; /将前方左侧指示灯置低(亮) break; /退出判断 case 4: /右转 /判断是否是右转 M1A=1; /将电机1正向端口置高 M2B=1;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 其他分类 > 社科论文


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

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


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