普 通 本 科 毕 业 设 计
题目: 智能小车设计
学 院 软件与通信工程学院 学生姓名 李尔博 学 号 0083075 专 业 通信工程 届 别 2012届 指导教师 朱华贵 职 称 副教授
二O一二 年 五 月
普通本科生毕业设计 诚信承诺书
毕业设计题目 学生姓名 指导老师 所在学院 李尔博 朱华贵 专业 智能小车设计 通信工程 职称 软件与通信工程学院 学号 0083075 副教授 诚信承诺 本人慎重承诺和声明: 我承诺在毕业设计活动中遵守学校有关规定,恪守学术规范,在本人的毕业论文中未剽窃、抄袭他人的学术观点、思想和成果,未篡改研究数据,如有违规行为发生,我愿承担一切责任,接受学校的处理。 学生(签名): 年 月 日
摘 要
智能作为现代社会的新生产物,是未来的发展的一个重要方向,它可以按照预定的模式在特定的环境里自动的运作,无需人为管理,便可以完成预期目标。本设计主要体现多功能小车的智能模式,设计中的理论方案、分析方法及特色与创新点等对智能化机器人,智能家用电器等自动半自动机器人的设计与普及有一定的参考意义。
整个智能小车设计主要以单片机为控制核心,通过无线遥控实现小车前后左右的移动,以及对小车功能模式的转换;通过红外线光电传感器,实现小车的避障功能和循迹功能。设计采用对比选择,模块独立,综合处理的研究方法。结合实际情况对比方案优劣选出最优方案进行设计。从最小系统到无线遥控,红外循迹和避障,都严格按照科学严谨态度完成。通过调试检测各模块,得到正确的信号输出,实现其应有的功能。最后将各个调试成功的模块结合到小车的车体上,结合程序,通过单片机的控制,将各模块有效整合在一起,达到所预期的目标,完成最终设计与制作,能使小车在一定的环境中智能化运转。
【关键词】智能小车 避障 循迹 智能化
I
Abstract
Intelligence is an important direction for the future development as a new product of modern society. It can operate automatically in a specific environment according to the predetermined pattern and will be able to complete the intended target without user’s management. This excogitation mainly reflects multi-function car intelligent mode, the design of theory scheme and analytical method, features and innovations etc. which have some reference value on the design and popularity of semiautomatic robot automatically such as intelligent robots, intelligent household appliances.
This dissertation discusses mainly on the design of the intelligent car in single-chip processor as the control core. To realize the car moving around and transform the mode of the small car function, it uses wireless remote control; to realize the small car obstacle-avoidance function and comprehensively car tracing function, it uses the infrared sensor. This excogitation adopts the research methods of contrast selected, independent modules, comprehensive treatment method. After the comparison between Pros and cons, the best program design will be elected combining with the actual situation. It is complete in accordance with the rigorous scientific attitude from the smallest systems to the wireless remote control, infrared tracking and ultrasonic obstacle avoidance. The right signal outputs can be gotten to achieve its function by the debugging detection module. Finally on the commissioning of the module into the bodywork of the car, with procedure and by single-chip processor control, it will be effectively integrated with the module, achieve the intended objectives, final design and production that can make cars intelligently operate in a certain circumstances.
【Key words】Intelligent toy car; Obstacle avoidance; tracking; Intelligent
II
目 录
1 绪论 ................................................................................................................... 1
1.1 研究的背景和意义 .................................................................................. 1 1.2 国内外研究现状 ...................................................................................... 1 1.3 研究的内容和方法 .................................................................................. 4
2 系统方案设计 ................................................................................................ 5
2.1 方案比较与选择 ...................................................................................... 5
2.1.1 核心控制单元方案比较与选择 ................................................... 5 2.1.2 电机驱动单元方案比较与选择 ................................................... 5 2.1.3 循迹单元方案比较与选择 ........................................................... 6 2.1.4 避障单元方案比较与选择 ........................................................... 6 2.1.5 遥控单元方案比较与选择 ........................................................... 7 2.1.6 电源方案 ....................................................................................... 7 2.2 总体设计框图 .......................................................................................... 8
3 系统硬件电路设计 ....................................................................................... 9
3.1 最小系统电路 .......................................................................................... 9
3.2 电机驱动电路 ........................................................................................ 10
3.2.1 PWM调速原理 ........................................................................... 10 3.2.2 L298工作原理 .......................................................................... 11 3.3 循迹探测电路 ......................................................................................... 11 3.4 避障模块检测电路 ................................................................................ 13 3.5 无线遥控控制电路 ................................................................................ 14
3.5.1 超再生接收电路和无线电发射器工作原理 ............................. 14 3.5.2 超再生简易无线电遥控器原理 ................................................. 15
4 系统软件设计 .............................................................................................. 18
4.1 电机控制子程序设计 ............................................................................ 18 4.2 红外循迹模块子程序设计 .................................................................... 19 4.3 红外避障模块子程序设计 .................................................................... 20 4.4 无线遥控模块子程序设计 .................................................................... 22
4.4.1 无线遥控模块模式判断子程序 ................................................. 22 4.4.2 无线遥控模块方向控制模式子程序 ......................................... 22 4.5主控制模块主程序设计 ......................................................................... 23
5 系统测试 ....................................................................................................... 25
5.1电机驱动测试 ......................................................................................... 25 5.2红外循迹测试 ......................................................................................... 25 5.3无线遥控测试 ......................................................................................... 26
6 总结与展望 ................................................................................................... 27
6.1总结 ......................................................................................................... 27 6.2展望 ......................................................................................................... 27
参考文献 ............................................................................................................ 28 致 谢 ................................................................................................................. 29 附 录1 ............................................................................................................. 30 附 录2 ............................................................................................................. 32
II
江西财经大学普通本科毕业论文(设计)
1 绪论
本课题设计主要是制作一款能进行智能判断并能做出正确反应的小车。小车具有以下几个功能:循迹功能,能按照路面的黑色轨迹行驶;自动避障功能,小车在行驶过程中能识别障碍物,做到准确无误的躲避障碍物;无线遥控功能,通过超再生简易接收发器来控制小车的运行模式,以及独立控制小车的移动方向。
1.1 研究的背景和意义
随着计算机,微电子技术的快速发展,智能化技术的开发越来越快,智能程度也越来越高,应用的范围也得到了极大的扩展。智能小车系统以迅猛发展的汽车电子技术为背景,涵盖了电子,计算机,机械,传感技术等多个学科。同时,当今机器人技术的发展日新月异,其应用于考古,探测,国防等众多领域。无人飞船,外星探测,智能化生产等等无不得益于机器人技术的发展。一些发达国家已经把机器人设计制作竞赛作为创新教育的战略手段。从某种意义上来说,机器人技术反映的是一个国家综合技术实力的高低,而智能小车是机器人的雏形,它的控制系统的研究与制作将有助于推动智能机器人控制系统的发展[1]。随着智能化技术的发展,对于智能化技术的研究也越来越受关注。全国电子竞赛与各省电子竞赛几乎每次都有智能小车方面的题目,全国各大高校也都重视该项目的研究,可见智能小车具有较大的研究意义。
1.2 国内外研究现状
智能车辆作为智能交通系统的关键技术,是许多高新技术综合集成的载体。智能车辆驾驶是一种通用性术语,指全部或部分完成一项或多项驾驶任务的综合车辆技术。智能车辆的一个基本特征是在一定道路条件下实现全部或者部分的自动驾驶功能,下面简单介绍国内外智能小车研究的发展情况。
(1)国外智能车辆研究现状
国外智能车辆的研究历史较长,始于上世纪50年代。它的发展历程大体可以分成三个阶段:
第一阶段:20世纪50年代是智能车辆研究的初始阶段。1954年美国Barrett
1
江西财经大学普通本科毕业论文(设计)
Electronics 公司研究开发了世界上第一台自主引导车系统AGVS(Automated Guided Vehicle System)。该系统只是一个运行在固定线路上的拖车式运货平台,但它却具有了智能车辆最基本得特征即无人驾驶[2]。早期研制AGVS的目的是为了提高仓库运输的自动化水平,应用领域仅局限于仓库内的物品运输。随着计算机的应用和传感技术的发展,智能车辆的研究不断得到新的发展。
第二阶段:从80年代中后期开始,世界主要发达国家对智能车辆开展了卓有成效的研究。在欧洲,普罗米修斯项目于1986年开始了在这个领域的探索。在美洲,美国于1995年成立了国家自动高速公路系统联盟(NAHSC),其目标之一就是研究发展智能车辆的可能性,并促进智能车辆技术进入实用化。在亚洲,日本于1996年成立了高速公路先进巡航/辅助驾驶研究会,主要目的是研究自动车辆导航的方法,促进日本智能车辆技术的整体进步。进入80年代中期,设计和制造智能车辆的浪潮席卷全世界,一大批世界著名的公司开始研制智能车辆平台。
第三阶段:从90年代开始,智能车辆进入了深入、系统、大规模研究阶段。最为突出的是,美国卡内基.梅隆大学(Carnegie Mellon University)机器人研究所一共完成了Navlab系列的10台自主车(Navlab1—Navlab10)的研究,取得了显著的成就[2]。
目前,智能车辆的发展正处于第三阶段。这一阶段的研究成果代表了当前国外智能车辆的主要发展方向。在世界科学界和工业设计界中,众多的研究机构研发的智能车辆具有代表性的有:
德意志联邦大学的研究:1985年,第一辆VaMoRs智能原型车辆在户外高速公路上以100km/h的速度进行了测试,它使用了机器视觉来保证横向和纵向的车辆控制。1988年,在都灵的PROMRTHEUS项目第一次委员会会议上,智能车辆维塔(VITA,7t)进行了展示,该车可以自动停车、行进,并可以向后车传送相关驾驶信息。这两种车辆都配备了UBM视觉系统[3]。这是一个双目视觉系统,具有极高的稳定性。
荷兰鹿特丹港口的研究:智能车辆的研究主要体现在工厂货物的运输。荷兰的Combi road系统,采用无人驾驶的车辆来往返运输货物,它行驶的路面上采用了磁性导航参照物,并利用一个光阵列传感器去探测障碍。荷兰南部目前正在讨论工业上利用这种系统的问题,政府正考虑已有的高速公路新
2
江西财经大学普通本科毕业论文(设计)
建一条专用的车道,采用这种系统将货物从鹿特丹运往各地。
日本大阪大学的研究:大阪大学的Shirai实验室所研制的智能小车,采用了航位推测系统(Dead Reckoning System),分别利用旋转编码器和电位计来获取智能小车的转向角,从而完成了智能小车的定位。
另外,斯特拉斯堡实验中心、英国国防部门的研究、美国卡内基梅隆大学、奔驰公司、美国麻省理工学院、韩国理工大学对智能车辆也有较多的研究。
(2)国内智能车辆研究现状
相比于国外,我国开展智能车辆技术方面的研究起步较晚,开始于20世纪80年代。而且大多数研究处在于针对某个单项技术研究的阶段。虽然我国在智能车辆技术方面的研究总体上落后于发达国家,并且存在一定得技术差距,但是我们也取得了一系列的成果,主要有:
中国第一汽车集团公司和国防科技大学机电工程与自动化学院与2003年研制成功我国第一辆自主驾驶轿车。该自主驾驶轿车在正常交通情况下的高速公路上,行驶的最高稳定速度为13km/h,最高峰值速度达170km/h,并且具有超车功能,其总体技术性能和指标已经达到世界先进水平。
南京理工大学、北京理工大学、浙江大学、国防科技大学、清华大学等多所院校联合研制了7B.8军用室外自主车,该车装有彩色摄像机、激光雷达、陀螺惯导定位等传感器。计算机系统采用两台Sun10完成信息融合、路径规划,两台PC486完成路边抽取识别和激光信息处理,8098单片机完成定位计算和车辆自动驾驶。其体系结构以水平式结构为主,采用传统的“感知—建模—规划—执行”算法,其直线跟踪速度达到20km/h,避障速度达到5-10km/h。
智能车辆研究也是智能交通系统ITS的关键技术。目前,国内的许多高校和科研院所都在进行ITS关键技术、设备的研究。随着ITS研究的兴起,我国已形成一支ITS技术研究开发的技术专业队伍。并且各交通、汽车企业越来越加大了对ITS及智能车辆技术研发的投入,整个社会的关注程度在不断提高。交通部已将ITS研究列入“十五”科技发展计划和2010年长期规划。相信经过相关领域的共同努力,我国ITS及智能车辆的技术水平一定会得到很大提高。
可以预计,我国飞速发展的经济实力将为智能车辆的研究提供一个更加广阔的前景。我们要结合我国国情,在某一方面或某些方面,对智能车进行
3
江西财经大学普通本科毕业论文(设计)
深入细致的研究,为它今后的发展及实际应用打下坚实的基础。
1.3 研究的内容和方法
本课题研究的内容主要有以下几个方面:根据系统功能的要求,进行系统的硬件与软件的整体设计。选择性价比最佳的器件来进行硬件设计,采用模块化的软件设计方法,使程序结构清晰,可读性强。系统硬件方面设计包括:外围电路的合理设计。主要内容有:核心控制模块,电机驱动模块,循迹模块,避障模块和遥控模块的方案选择与设计。系统软件方面设计包括系统主程序,过程控制程序,外部中断程序等。
根据课题功能要求,本文采取以下研究步骤来实现:系统整体功能分析与可行性研究、划分功能模块、各功能模块的电路原理设计、各功能模块的软件设计与调试、系统整体电路与软件调试。在满足各项性能指标的前提下,不仅要考虑系统的易用性,还要降低成本,使其经济实用,确保在开发出的同类产品中具有竞争优势。
4
江西财经大学普通本科毕业论文(设计)
2 系统方案设计
2.1 方案比较与选择
根据系统设计的要求来选择符合要求的器件类型以及控制模式,本章主要讨论核心控制单元,电机驱动单元,循迹单元,避障单元,测距单元和遥控单元方案的比较与选择。 2.1.1 核心控制单元方案比较与选择
方案一:采用FPGA编程控制器实现。FPGA可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成于一块芯片上,大大减小体积,提高了稳定性。FPGA采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模实时系统的控制核心。由检测模块输出的信号并行输入FPGA,FPGA通过程序设计控制小车作出相应的动作,但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作。
方案二:采用单片机编程控制器实现。用ATMEL公司生产的AT89S52单片机作为系统控制器,在控制领域应用非常广泛,具有低电压、低功耗、低价格、高性能、多功能、大存储容量、较强的I/O功能以及较好的结构兼容性等优点,是小型控制系统的首选。而且单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制。
本系统属于小型控制系统,用单片机作为控制芯片非常合适,因此采用方案二。
2.1.2 电机驱动单元方案比较与选择
方案一:采用H型PWM全桥式驱动电路。通过PWM脉宽调制的方法,实现对小车速度的控制,这种调试方式的优点是:调速特性优良,调整平滑,调速范围广,能承受频繁的负载冲击。同时H型全桥式电路还可以保证进行简单地实现转速和方向控制,实现频繁的快速启动,制动和反转,是现今一种广泛采用的调速技术。
5
江西财经大学普通本科毕业论文(设计)
方案二:采用继电器控制电机。采用继电器对电机的开、关进行控制,通过开关的切换对小车的速度进行调控。此方案的有点在于电路较为简单,但其缺点是继电器的响应时间较长,且易损坏,寿命短,可靠性低。
方案三:使用功率三极管组成的功率放大器控制电机。使用功率三极管作为功率放大器的输出控制电机的电路结构与原来简单,成本较低,加速能力强,但其功率损耗大,特别当低速大转距运动时,通过电阻的电流大,发热厉害,损耗大,不利于小车的长时间运行。
综合以上三种方案的优缺点,决定采用方案一。 2.1.3 循迹单元方案比较与选择
方案一:采用光敏电阻组成的光敏探测器。光敏电阻的阻值会随周围环境光线的变化而变化。当光线照射在白色物体上时,光线反射强烈,当光线照射在黑色物体上面时,光线反射较弱。因此可以通过光敏电阻来检测行进路上的黑线。但这种方案受光照影响较大,工作稳定性高。
方案二:采用反射式红外光电传感器。利用红外线在不同颜色的物体表面上具有不同的反射特性,小车在行驶过程中不断地向地面发射红外光,当红外光遇到非黑色地面时发生漫反射,反射光被接收管接收,当遇到黑色物质是,红外光被吸收,接收管接收不到红外光[4]。单片机可以根据是否接收到反射回来的红外光来确定黑线的位置,从而控制小车按黑线轨迹行走。反射性红外光点传感器的特点是尺寸小,使用方便,工作状态稳定,外围电路简单,因此本方案易于实现,可靠性高。
本设计采用方案二。 2.1.4 避障单元方案比较与选择
考虑到在避障过程中小车车速及反应速度的限制,小车应在距障碍物15CM的范围内做出反应,这样在顺利绕过障碍物后,可寻找到最佳的位置和方向。否则,如果范围太大,则可能产生对障碍物的判断失误;范围过小又很容易造成车身撞上障碍物或虽绕过障碍物却无法实现理想定向。根据上述要求,提出以下方案:
方案一:采用激光传感器探测障碍物。该传感器能非常准确地测出障碍物的存在,但价格高,处理复杂,不符合该设计的要求[5]。
6
江西财经大学普通本科毕业论文(设计)
方案二:采用红外线避障传感器。利用单片机来产生38KHz信号对红外线发射管进行调制发射,发射出去的红外线遇到避障物的时候反射回来,红外线接收管对反射回来信号进行解调,输出比较电平。外界对红外信号的干扰比较小,且易于实现,价格也比较便宜。
方案三:采用超声波传感器探测障碍物。超声波传感器安装于小车前端,在规定的检测距离内,当探测到障碍物时,超声波传感器向单片机传送信号,单片机检测到该信号后,调整小车的方向,以控制小车准确地绕过障碍物。同时,超声波传感器具有频率高、波长短、绕射现象小,特别是方向性好、具有定向传播等特点[6]。
综合以上三种方案,决定选择方案二,主要原因是方案二易于实现,电路简单,而方案三电路较为复杂,且控制难度较大。 2.1.5 遥控单元方案比较与选择
方案一:使用红外遥控控制小车。红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器后发送到单片机进行数据分析。
方案二:使用无线遥控控制小车。无线遥控的发射机把控制的电信号先编码,然后转换成无线电波发送出去。接收机收到载有信息的无线电波接收,放大,解码,得到原先的控制电信号,发送到单片机进行数据分析,从而实现遥控功能。
由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,加上小车不是出于静止状态,使用红外遥控,接收器难以接收到发射器发射的信息,因而使用方案二。 2.1.6 电源方案
本设计采用的是直流电机,直流电机输出功率大,带负载能力强,由于直流电机启动瞬间电流很大,而且PWM驱动电流波动较大,会造成电压不稳,有毛刺等干扰,严重时可能造成单片机系统掉电。另外,考虑到电机耗电量比较大,因此采用双电源供电,对电机驱动电路与单片机以及其周边电路分别独立供电,这样可以消除电机驱动造成的干扰,提高系统稳定性。
7
江西财经大学普通本科毕业论文(设计)
2.2 总体设计框图
此系统是以单片机为控制核心,处理执行各个外部传感器检测得到的电平信号,其中外部信号有三部分得到:红外对管循迹模块,红外避障模块,和无线遥控模块。最后把处理结果传递给小车电机,使小车做出正确的反应。
系统组成框图如图2-1所示:红外对管循迹模块使用四个红外对管检测地面的黑线,单片机通过四个红外对管的高低电平变化控制小车的移动方向;红外避障模块将红外避障传感器固定于舵机之上,当检查到前方固定距离(15CM)之内出现障碍物是,单片机控制舵机左转90度和右转90度检测小车左右两边的障碍物状况,然后通过单片机运算得出最佳的运动方向;无线遥控模块采用超再生简易无线电遥控模块将遥控器的遥控信息通过接收器传送到单片机中,实现小车的功能模式转换,小车的无线遥控,控制行走。
循迹模块 避障模块 无线控制 单片机控制系统图2-1 总体设计框图
电机驱动模块 电机转动
8
江西财经大学普通本科毕业论文(设计)
3 系统硬件电路设计
3.1 最小系统电路
本系统采用AT89C51单片机作为中央处理器。其主要任务是在小车行走过程中不断读取传感器采集到的数据,将得到的数据进行处理后,来控制小车行走。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案[7]。其应用范围广,性能良好,可用于解决复杂的控制问题。利用AT89S51的I/O端口对传感器信号进行实时判断监控来控制步进电机做出相应的反映[7]。如图3-1是较为常见的带烧录接口的单片机最小系统图。
图3-1 单片机最小系统图
9
江西财经大学普通本科毕业论文(设计)
3.2 电机驱动电路
直流电机驱动电路使用H型全桥式驱动电路。这种驱动电路可以很方便实现直流电机的四象限运行,分别对应正转、正转制动、反转、反转制动。在本设计中电机驱动电路由集成驱动芯片L298构成,并结合PWM波进行调速。它的基本原理图如图3-2所示:
图3-2 电机驱动电路图
该驱动电路可以驱动两路直流电机,使能端ENA、ENB为高电平时有效,控制方式及直流电机状态图如表3.1所示:
表3.1 电机驱动控制方式及直流电机状态
ENA 0 1 1 1 1 IN1 X 0 0 1 1 IN2 X 0 1 0 1 直流电机状态 停止 制动 正转 反转 制动 若要对直流电机进行PWM调速,需设置IN1和IN2,确定电机的转动方向,然后对使能端输出PWM脉冲,即可实现调速。注意当使能信号为0时,电机处于自由停止状态;当使能信号为1,且IN1和IN2为00或11时,电机处于制动状态,阻止电机转动。 3.2.1 PWM调速原理
直流电机可以通过改变电机电枢电压接通时间与通电周期的比值即占空比(t1/T)来控制电机的转速。这种方法称为脉冲宽度调制即PWM控制[8]。直
10
江西财经大学普通本科毕业论文(设计)
流电机得到的电压波形如图3-3所示。
Uavt1 t2 T 图3-3 PWM控制波形图
电压平均值描述为:
??t1t,Uav?1Us??Us (3.2.1) TTt1——通电时间; T——周期;
?——占空比;
由3.2.1式可知。当电源电压不变的情况下,电枢端电压取决于占空比的大小,改变占空比就可以改变端电压的平均值。从而达到调速的目的。 3.2.2 L298工作原理
L298是双H高电压大电流功率集成电路。直接采用TTL逻辑电平控制。可以驱动继电器、直流电动机、步迸电动机等电感性负载[9]。在此电路中(如图3-2)L298连接保护电路根据单片机提供的逻辑电压对电机进行驱动。具体驱动方式如下:当使能端为高电平时,输人端1N1(IN3)为高电平信号,IN2(IN4)为低电平信号时,电机正转;输人端IN1(IN3)为低电平信号,IN2(IN4)为高电平信号时,电机反转;IN1(IN3)与IN2(IN4)相同时,电机快速停止。当使能端为低电平时,电动机停止转动。
3.3 循迹探测电路
循迹探测电路根据反射接收原理配置了一对红外线发射、接收传感器。该电路包括一个红外线发光二极管、一个红外光敏三极管及其上拉电阻。如图3-4所示。红外发光二极管发射一定强度的红外线照射物体,红外光敏三极管在接收到反射回来的红外线后导通,发出一个电平跳变信号。当小车在非
11
江西财经大学普通本科毕业论文(设计)
黑色地面行驶时,装在车下的红外发射管发射红外线信号,经反射后,被接收管接收,一旦接收管接收到信号,那么图3-4中光敏三极管将导通,输出低电平,经LM339电压比较器送单片机控制。当小车行驶到黑色引导线上时,红外线信号被黑色吸收后,光敏三极管截止,输出高电平,从而实现了通过红外线检测信号的功能。将检测到的信号送到单片机I/O口,当I/O口检测到的信号为高电平时,表明红外光被地上的黑色引导线吸收了,表明小车处在黑色的引导线上;同理,当I/O口检测到的信号为低电平时,表明小车行驶在白色地面上。即当小车底部的某边红外线收发对管遇到黑带时输入电平为高电平,反之为低电平。
图3-4 循迹检测电路
电路中的可调电阻可调节灵敏度,以满足小车在不同光度的环境中能够寻迹。由于接收对管装在车底,发射距离的远近较难控制,调节可调电阻,灵敏度不高,因此采用在对管上套塑料管,屏蔽外界光的影响,灵敏度将大幅提升。在该电路中,加比较器LM339的目的是使模拟量转化为开关量,便于处理。
图3-5 循迹探测器红外对管排放位置图(正面图)(黑线宽度1.7cm)
为了保证小车沿黑线行驶,采用了四个检测器并行排列,检测器排列位置如图3-5。在小车行走过程中,结合查询方式,通过程序控制小车行走轨迹。
12
江西财经大学普通本科毕业论文(设计)
如果2号红外对管和3号红外对管检测到黑线,则单片机控制小车向前直走;如果2号红外对管偏离黑线,3号红外对管检测到黑线,则单片机控制小车轻微左移;如果3号红外对管偏离黑线,2号红外对管检测到黑线,则单片机控制小车轻微右移;如果2号和3号红外对管偏离黑线,1号红外对管检测到黑线,则单片机控制小车向左移动;如果2号和3号红外对管偏离黑线,4号红外对管检测到黑线,则单片机控制小车向左移动。
3.4 避障模块检测电路
本模块主要有两部分组成,38KHz的红外发射模块和接收比较模块,采用38KHZ频率段是能有效的排除可见光的干扰[10],实现避障有效距离50CM左右,更好的完成对电机的控制。如图3-11 红外线避障电路原理图。通过555芯片组成多谐振荡器,根据F=1.43/(R1+2*R2)*C设计出38KHZ方波信号[11]。
图3-6 红外避障原理图
接通电源后,电容C被充电,当2脚VC上升到2VCC/3,使3脚V0为低电平,同时内部三极管T导通,此时电容C通过R2和T放电,VC下降,当VC下降到VCC/3时,V0翻转为高电平。当放电结束时,T截止,VCC通过R1、R2向电容C充电,上升到VCC/3时,电路又翻转为低电平,如此周而复始,于是,在电路的输出端就得到一个周期性的矩形波,由3脚输出,再通过三极管9013驱动后由发射管发出并由接收模块接收实现单片机控制。
13
江西财经大学普通本科毕业论文(设计)
3.5 无线遥控控制电路
3.5.1 超再生接收电路和无线电发射器工作原理
超再生无线电遥控电路由无线电发射器和超再生检波式接收器两部分组成。
无线电发射器:它是由一个能够产生等幅度振荡的高频载频振荡器(频率范围一般为30~450MHz)和一个产生低频调制信号的低频振荡器组成的[9]。用来产生载频振荡和调制振荡的电路一般有:多揩振荡器、互补振荡器和石英晶体振荡器等。 低频振荡器产生的低频调制波,一般为宽度一定的方波。如果是多路控制,则可以采用每一路宽度不同的方波,或是频率不同的方波来调制高频载波,组成一组组的己调制波,作为控制信号向空中发射。如图3-7所示。
图3-7 低频振荡器原理图
超再生检波接收器:超再生检波电路(如图3-8)实际上是一个受间歇振荡控制的高频振荡器,这个高频振荡器采用电容三点式振荡器,振荡频率和发射器的发射频率相一致[12]。而间歇振荡又是在高频振荡的振荡过程中产生的,反过来又控制着高频振荡器的振荡和间歇。间歇振荡的频率是由电路的参数决定的(一般为1百~几百千赫)。如果频率较低,则电路的抗干扰性能较好,但接收灵敏度较低。反之,如果频率较高,接收灵敏度较好,但抗干扰性能变差。应根据实际情况二者兼顾。
14
江西财经大学普通本科毕业论文(设计)
图3-8 超再生检波接收器原理图
超再生检波电路具有很高的增益,在未收到控制信号时,由于受外界杂散信号的干扰和电路自身的热搔动,会产生一种特有的噪声(超噪声),这个噪声的频率范围为0.3~5kHz之间。在无信号时,超噪声电平很高,经滤波放大后输出噪声电压,该电压可作为电路一种状态的控制信号,使继电器吸合或断开[13]。
当有控制信号到来时,电路揩振,超噪声被抑制,高频振荡器开始产生振荡。而振荡过程建立的快慢和间歇时间的长短,受接收信号的振幅控制。当接收信号振幅大时,起始电平高,振荡过程建立快,每次振荡间歇时间也短,得到的控制电压也高;反之,当接收到的信号的振幅小时,得到的控制电压也低。这样,在电路的负载上便得到了与控制信号一致的低频电压,这个电压便是电路状态的另一种控制电压。如果是多通道遥控电路,经超再生检波和低频放大后的信号,还需经选频回路选频,然后分别去控制相应的控制回路。
3.5.2 超再生简易无线电遥控器原理
超再生简易无线电遥控器,它采用不经调制的等幅高频信号作为遥控指令。当接收器收至发送的遥控指令后,继电器释放,而在未收到控制指令时,接收器的继电器为吸合状态。该电路结构简单、使用元件少,调试容易。其工作原理如下:
15
江西财经大学普通本科毕业论文(设计)
发射器:如图3-9,发射器由晶体管VT1、VT2、L1、C1、C2等组成电感三点式LC推挽振荡器,其中R1、R2为偏流电阻,C5为电源滤波电容,C1、C2与L1组成并联揩振回路,调揩为28MHz,并作为VT1、VT2的共同负载接入电路,C3、C4为耦合电容,由于强烈的正反馈作用,使振荡器振荡产生28MHz的等幅高频振荡信号。当振荡电流流经L1时,由于互感作用,将高频振荡信号耦合至L2,并由天线向空中发射[14]。
图3-9 超再生简易无线电遥控器发射器原理图
接收器:如图3-10,由晶体管VT1、L1、C4、C5、C6、R2等组成超再生检波器。晶体管VT1及L1、C4、C5等构成电容三点式振荡器,振荡频率由L1、C4组成的并联揩振网络以及反馈电容C5的数值决定,其中C5还可调整反馈强度。当收到发射器发送来的信号时,L1、C4并联揩振回路揩振,振荡器便开始振荡。在振荡建立的过程中,揩振回路L1、C4中的高频电流经过C5和VT1的极间电容向 C6充电,C6上的电压逐渐增高,这个电压作为VT1的反向偏置电压加在其发射结上,使VT1的直流工作点迅速下移,造成高频振荡减弱。当C6上的电压升高至使VT1的be间电压小于导通电压时,VT1截止,振荡器停振。之后,C6经R2放电,使VT1的发射结又获得正向偏置,重新建立下一个振荡过程,由此便形成了受间歇振荡调制的高频振荡,这个间歇振荡是由C6的充放电形成的,振荡频率约为120kHz左右[14]。
16
江西财经大学普通本科毕业论文(设计)
在没有收到发射机送来的高频指令信号时,由于电路增益很高,外界杂散干扰和电路内元件的热骚动被放大,使电路呈现出很大的“超噪声”。这个超噪声从电阻 R2的上端输出,经DZL滤去高频成分后得到约14mV的噪声电压。然后送入两级低频放大级进行放大,其中VT2等组成电压放大级。R4、R5为偏置电阻,变压器T为VT2的负载。由变压器次级输出的信号直接耦合至VT3的基极进行丙类功率放大,这种放大器无基极直流偏置。R6为VT3的负载电阻,从 R6上取得被放大了的约2.5V左右的噪声信号电压、经C8耦合,并由VD1、VD2倍压整流和C12滤波后控制VT4导通使继电器J吸合[15]。
当收到由发射器送来的28MHz的等幅高频指令信号时,超再生检波器中的“超噪声”被抑制,因此超再生检波器无噪声电压输出。这时,VT4截止,继电器释放。
图3-10 超再生简易无线电遥控器接收器原理图
17
江西财经大学普通本科毕业论文(设计)
4 系统软件设计
系统软件设计是整个系统的灵魂,协调各个功能模块正常工作。软件作为系统的灵魂,构筑在硬件平台上,完成各部分硬件的控制和协调。系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能差别可能很大。本系统软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率从而提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。本设计中,系统软件设计主要包括电动机控制程序设计、循迹模块程序设计、避障模块程序设计和无线遥控程序设计。
4.1 电机控制子程序设计
电机控制子程序等待单片机发送指令,接受到指令后,判断指令类型,从而控制驱动电机电路的输出,控制小车的运动状态。流程图如图4-1所示:
开始 初始化 NO 判断是否收到指令? YES 判断指令模式 0X05 0X04 0X03 0X02 0X01 右转 左转 停止 后退 前进 图4-1 电机控制子程序流程图
18
江西财经大学普通本科毕业论文(设计)
当接收指令0x00:无数据,无PWM波,无方向信号。当接收指令0x01:小车前进,两个电机驱动器给予相同的PWM波,相同的方向信号。当接收指令0x02:小车后退,在前进的基础上改变方向信号。当接收指令0x03:小车停止,无PWM波,无方向信号。当接收指令0x04:小车左转,左电机停止,右电机给PWM波和向前方向信号。当接收指令0x05:小车右转,右电机停止,左电机给PWM波和向前方向信号。
4.2 红外循迹模块子程序设计
红外循迹模块子程序主要采集外部电路红外对管的信号进行编译处理,以便判断小车的下一步动作。流程图如图4-2所示:
开始 初始化 接收外部信号 信号处理 信号判断? 0100 1100 1000 0010 0011 0001 0110 0000 1111 送出左转信号 送出右转信号 送出直走信号 无动作 图4-2 红外循迹模块子程序流程图
红外循迹模块子程序接收外围红外检测电路信号,将接收到的信号进行信息编码,红外检测外围电路红外对管位置如图3-5。当红外对管检测到黑线
19
江西财经大学普通本科毕业论文(设计)
时所在红外对管输出高电平,外围电路红外对管状态进行信号编码后对应表格如表4.1,将信号进行处理编码之后,判断信号类型,当信号为:0100,1100,1000时单片机送出左转信号;当信号为:0010,0011,0001时单片机送出右转信号;当信号为:0110时单片机送出直走信号;当信号为:0000,1111时无任何动作。
表4.1 外围电路红外对管状态进行信号编码后对应表
外围红外对管输出状态 1号低2号低3号低4号低 1号高2号高3号高4号高 1号高2号低3号低4号低 1号高2号高3号低4号低 1号低2号高3号低4号低 信号编码结果 0000 1111 1000 1100 0100 外围红外对管输出状态 1号低2号低3号高4号低 1号低2号高3号高4号低 1号低2号低3号高4号低 1号低2号低3号低4号高 信号编码结果 0010 0110 0010 0001 4.3 红外避障模块子程序设计
红外避障模块子程序流程图如图4-3所示。此子程序利用漫反射型红外线光电传感器检测前方障碍物(通过红外避障模块的电位器可以调节红外传感器的检测距离)在定距(15cm)之内便视为出现阻碍行动的障碍物,反之视为无阻碍行动的障碍物。
此子程序通过单片机控制接收红外避障传感器的信息,当前方无15cm内障碍物时小车保持前进状态,若前方15cm内出现障碍物则进行以下程序:舵机控制红外避障传感器左转90度进行测距,舵机控制超声波探测器右转90度(初始方向上右转)进行测距,之后通过三个方向上15cm没障碍物的具体情况进行信息处理编码,编码方式如下表4.2。
表4.2 红外避障模块外围电路信息处理编码表
外围电路障碍物探测结果 左边无障碍物,前方无障碍物,右边无障碍物 左边有障碍物,前方有障碍物,右边有障碍物 左边无障碍物,前方有障碍物,右边无障碍物 左边有障碍物,前方有障碍物,右边无障碍物 左边无障碍物,前方有障碍物,右边有障碍物
20
信息编码结果 000 111 010 110 011 江西财经大学普通本科毕业论文(设计)
将外部信息进行编码后,通过对信号的判断,控制小车的移动方向:探测结果000,表明前方15cm内无障碍物单片机送出“前进”指令,小车保持前进状态;探测结果111,表明前方及左右两边15cm内均有障碍物,单片机送出“后退”指令;探测结果010,表明前方15cm内有障碍物左右两边均无障碍物,单片机送出“右转”指令(左右均无障碍物默认右转);探测结果110,表明前方及左边15cm内有障碍物,单片机送出“右转”指令;探测结果011,表明前方及右边15cm内有障碍物,单片机送出“左转”指令。
开始 初始化 接收信息 NO 是否处于设定距离之内? YES 控制舵机左转进行检测,结果返回单片机 控制舵机右转进行检测,结果返回单片机 信息处理编码 信号判断 011 111 010 110 000 送出左转信号 送出后退信号 送出右转信号 送出前进信号 图4-3 超声波避障模块子程序流程图
21
江西财经大学普通本科毕业论文(设计)
4.4 无线遥控模块子程序设计
4.4.1 无线遥控模块模式判断子程序
无线遥控模块模式判断子程序流程图如图4-4所示。此子程序使用超再生简易无线电遥控器接收发器,通过单片机读取接收器解码后的信息,通过无线信息控制小车的“动作”。超再生简易无线电遥控器发射器有四个按钮:A,B,C,D经过接收器解码后分别通过四个端口输出(按钮按下时对应端口输出高电平),各端口硬件上分别与P1.0,P1.1,P1.2,P1.3连接,读取数据时将四个P口的数据存入数据a中。通过a的值来判断小车下部所要运行的模式。当a=0001时,小车停止一切动作;当a=1000时,小车进入无线遥控方向模式;当a=0100时,小车进入循迹模式;当a=0010时,小车进入避障模式。当a为其他值时,小车保持当前模式。
开始 初始读取无线模块信息a 保持当前模Else 信息a判断 a=000小车停止一切动作 a=1000 进入无线遥控方向模式 a=0100 进入循迹模式 a=0010 进入避障模式 图4-4 无线遥控模块模式判断子程序流程图
4.4.2 无线遥控模块方向控制模式子程序
本子程序中无线遥控模块方向控制模式子程序流程图如图4-5所示,当进入此子程序后,再次通过读取外部超再生简易无线接收器的信息判断小车的移动方向,当a=1001时,即发射器的A,D键同时按下时,小车退出该模式。
22
江西财经大学普通本科毕业论文(设计)
当a!=1001时,该子程序进行一下操作:将a与1000与相后赋予b,若b=1000,发出小车前进信号,否则跳过该指令,直接进入下一指令;将a与0001相与后赋予b,若b=0001,发出小车后退信号,否则跳过该指令,直接进入下一指令;将a与0001相与后赋予b,若b=0001,发出小车后退信号,否则跳过该指令,直接进入下一指令;将a与0100相与后赋予b,若b=0100,发出小车右转信号,否则跳过该指令,直接进入下一指令;将a与0010相与后赋予b,若b=0010,发出小车左转信号,否则跳过该指令,直接进入下一指令。此步骤中,四个方向的移动具有叠加效果(“前进指令”加“后退指令”除外)。
开始 读取无线模块信息 返回无线遥控模块子程序初始化 YES 左转 NO YES 是否退出模式:a=1001? NO b=0010b=a&0010 b=a&1000 YES 后退 NO b=a&0100 NO b=1000NO YES b=0001YES b=0100前进 b=a&0001 右转 图4-5 无线遥控模式方向控制模式子程序流程图
4.5主控制模块主程序设计
主控制模块主程序流程图如图4-6,主要用于小车的总体控制,组合各个子程序模块,实现小车的功能整合。在初始化各个变量后,读取无线模块信号,进入模式判断子程序,判断所要进入的模式。主要模式有:循迹模式,避障模式,无线控制方向模式,停止“动作”模式。再进入各个模式之后,单片机将对各个模式所发出的电机控制指令进行操作,通过电机控制模块子
23
江西财经大学普通本科毕业论文(设计)
程序控制电机的“行动”,从而控制小车的“行动”。
开始 初始化 读取无线模块信号 无线遥控模式判断子程序 电机控制模块子程 图4-6 主控制模块主程序流程图
24
江西财经大学普通本科毕业论文(设计)
5 系统测试
5.1电机驱动测试
此模块调试实现的功能是结合软件共同实现,当连接单片机与电机控制芯片的I/0加上一定的电平可以实现电机左右转向,前后转向以及停止等功能,同时通过程序延时降低电机转速。表5.1为电机驱动测试记录。
表5.1 电机驱动测试记录
ENA 1 1 1 1 1 IN1 0 1 0 1(0) 0 IN2 1 0 1 0 0 ENB 1 1 1 1 1 IN3 0 1 1(0) 0 0 IN4 1 0 0 1 0 小车行驶状态 小车向前行驶 小车向后行驶 小车向右行驶 小车向左行驶 小车制动 该测试结果表示小车电机驱动模块各项测试指标均符合要求,控制能力正常。
5.2红外循迹测试
寻迹部分由四个红外对管组成,分别调试其四路有效信号。当两对管都放置黑线之外的白色地板上时,单片机对应I/O口收到的电平都为低,当左边的红外线管进入黑线范围,对应电平变高,每个红外对管通过电压比较器输出,输出端口并联接入LED指示灯。灯亮表示红外对管接收灯接收不到红外反射光。以下是对红外对管在黑白线上反应距离的有效性进行测试,记录如下表5.2。
表5.2 红外循迹测试记录
距离 LED 白线 4cm 灭 黑线 4cm 灭 白线 3cm 灭 黑线 3cm 亮 白线 1cm 灭 黑线 1cm 亮 白线 黑线 白线 黑线 0.5cm 0.5cm 0.2cm 0.2cm 灭 亮 亮 亮 从表5.2可以看出红外对管反应的有效距离在0.2cm至4cm之间。本模块将红外对管放置于离地1cm处进行循迹检测。将四个红外对管探测器在黑线与
25
江西财经大学普通本科毕业论文(设计)
地面之间来回挪动,当红外对管处于黑线上时LED亮,各个红外对管功能正常。
5.3无线遥控测试
该测试主要针对超再生无线简易的发生器四个按钮A,B,C,D对小车行动方向的无线遥控测试,如若此测试测得结果正常,无效遥控模块的功能切换模式在硬件上也能正常使用。多次测试与数据记录如下表5.4.
表5.4 无线遥控测试记录表
次数 按键 动作 A 前进 测试结果 正常 第一次 B 右转 正常 C 左转 正常 D 后退 正常 A 前进 正常 第二次 B 右转 正常 C 左转 正常 D 后退 正常 A 前进 正常 第三次 B 右转 正常 C 左转 正常 D 后退 正常 通过对小车行动方向的无线遥控测试状况表示,无效遥控功能正常。
26
江西财经大学普通本科毕业论文(设计)
6 总结与展望
6.1总结
本次设计大约用了一个月的时间,在这次毕业设计过程中,我首先按照毕业设计任务书上每一条的要求,先分析和理解本设计的主要技术任务,研究如何实现这些要求的同时也从图书馆和网上查寻有关资料,对相关知识进行学习研究,并对所收集的资料进行整理;为了更好的完成设计中的要求我先对超声波测距原理进行分析,运用课本所学的理论知识理论联系实际找到解决的方法,使自己对超声波避障有了更进一步的认识,当然,在设计过程中也有过困难、误区,这都是因为自己平时所学的基础知识不够扎实、牢靠。通过这次设计不仅开拓了我的知识面,更提高了我发现问题、分析问题、解决问题的能力,通过对电机的驱动电路、红外避障和红外循迹的设计和软件算法设计,以及系统误差的研究和分析,我对电机驱动芯片和红外传感器的工作原理和其应用有了比较深刻的了解。
6.2展望
由于时间紧迫,水平有限,以及实际条件的限制,本系统的设计与实现存在很多需要改进的地方,本系统可从以下几个方面加以改进和提高:一是增加电机的精确调速功能,使小车的运动更具灵活性;二是,红外避障传感器难以辨别体积过小的障碍物,这可以通过改用超声波传感器来检测障碍物;三是,在小车进入死角中倒退出来时小车尾部不能百分之百保证不会碰到障碍物,此方面可以通过在小车尾部多加一个超声波模块解决,但同时也增加了两个超声波模块互相干扰的问题,需要通过单片机的对超声波发射与接收时间的精确控制才能解决次问题。
27
江西财经大学普通本科毕业论文(设计)
参考文献
[1]Dorlaid A.Neamen, 2007, “Microelectronics Circuit Analysis(Third Edition)” Tsinghua University Press.
[2] Egan D, 2005, “The emergence of ZigBee in building automation and industrial control” Computing&Control Engineering Journal.
[3] Rowel O. Atienza, Marcelo H. Ang Jr. A Flexible “Control Architecture for Mobile Robots: An Application for a Walking Robot.” Journal of Intelligent and Robotic Systems, Springer Netherlands.
[4]彭军,2003:《传感器与检测技术》,西安电子科技大学出版社。 [5]孙传友,2007:《感测技术基础》,电子工业出版社。
[6] 冯晓、刘仲恕, 2005:《电机与电器控制》,机械工业出版社。
[7]苏凯、刘庆国、陈国平,2003:《MCS-51系列单片机系统原理与设计》,冶金工业出版社。
[8]胡汉才,1996:《单片机原理及其接口技术》,清华大学出版社。
[9]黄根生、周立青、张望先,2011:《全国大学生电子设计竞赛教材——基于TI器件设计方法》,电子工业出版社。
[10]高吉祥,2011:《2009全国大学生电子设计竞赛试题剖析》,电子工业出版社。 [11]黄智伟,2006:《全国大学生电子设计竞赛系统设计》,北京航空航天大学出版社。 [12]赵负图,2003:《无线电接收发射应用集成电路手册》,化学工业出版社。 [13] 杨欣,王玉凤等,2000:《电子设计从零开始》,清华大学出版社。 [14]李翰荪,2004:《电路分析》,中央广播电视大学出版社。
[15] 谢自美,2009:《电子线路设计?实验?测试》,华中科技大学出版社。
28
江西财经大学普通本科毕业论文(设计)
致 谢
本论文的设计是在朱华贵老师的悉心指导下完成的。从课题的选择、到具体的设计,无论在理论上还是在实践中都给了我许多指导和帮助,使我得以改进和提高。他严谨的治学态度,求真务实的学术作风,深厚的理论水平,丰富的项目经验,都深刻地影响着我,使我终身受益。值此论文完成之际,我谨向尊敬的朱老师表示深深的感谢和崇高的敬意!
同时,在撰写毕业论文过程中,得到了我的同学袁文初,刘珍珍,江建雄等以及其他朋友各方面的热诚帮助,使我能够顺利完成毕业论文,在此致以深深的谢意。
29
江西财经大学普通本科毕业论文(设计)
附 录1
小车实物图:
30
江西财经大学普通本科毕业论文(设计)
31
江西财经大学普通本科毕业论文(设计)
附 录2
源程序:
/**************************************************************************/ A:P1.4 D3口 B:P1.5 D2口 C:P1.6 D1口 D:P1.7 D0口 DT识别:P2.6
按键:A 0x10 前进(进入循迹模式) B 0x20 右转(进入避障模式) C 0x40 左转(进入跟随模式) D 0x80 后退(进入行动停止模式) AD 0x90 退出方向控制模式 BC 0x60 进入方向控制模式 (在方向控制模式中为刹车)
/************************************************************************/ #include
#define sen_port P1//传感器入口 #define CYCLE 100 sbit EN1=P2^0; sbit IN1=P2^1; sbit IN2=P2^2; sbit EN2=P2^3; sbit IN3=P2^4;
sbit IN4=P2^5; //定义电机驱动模块
sbit JDQ=P3^0; //继电器控制端口 sbit djkz=P2^7; //定义舵机控制端口 sbit DT=P2^6; //无线识别信号 sbit HW=P3^1; //红外避障头信号 有障碍物为低 int a=1; //模式控制标示符
int speed_R=0; //定义两个电机的速度,有正负之分,为正是,正转。(范围-100~100) int speed_L=0;
unsigned int cnt_s=0; //用于计数PWM的点空比0=100;
/*******************延时程序*************/ void delay1ms(int n) //延时子程序 {
int i,j;
for(i=0;i 32 江西财经大学普通本科毕业论文(设计) } /*******************循迹采样***************/ unsigned char sensor_inp() { unsigned char sensor; sensor = sen_port; sensor &= 0x0f; //P1^7-P1^0 但其中P1^0-P1^3接了传感器输出,所以这里采用4个信号,其它的屏蔽 //其它的,被置为0 return sensor; } /*******************无线信号模式判断*********************/ unsigned char wuxian_int() { unsigned char wuxian; wuxian = sen_port; wuxian &= 0xf0; //其中P1^4-P1^7接入无线按键ABCD四个信号 //其它的,被置为0 return wuxian; } /*******************无线信号方向判断*********************/ unsigned char wuxian_inp() { unsigned char wuxian; if(DT==1) { wuxian = sen_port; } else wuxian=0x00; wuxian &= 0xf0; //其中P1^4-P1^7接入无线按键ABCD四个信号 //其它的,被置为0 return wuxian; } /*********************舵机控制************************/ void djkz_left() { int i; int j=0; while(j<40) { djkz=1; for(i=0;i<430;i++); djkz=0; 33 江西财经大学普通本科毕业论文(设计) for(i=0;i<1040;i++); j++; } } void djkz_middle() { int i; int j=0; while(j<70) //中间位置 { djkz=1; for(i=0;i<180;i++); djkz=0; for(i=0;i<1200;i++); j++; } } void djkz_right() { int i; int j=0; while(j<70) //最右边位置 { djkz=1; for(i=0;i<60;i++); djkz=0; for(i=0;i<1320;i++); j++; } } /*************init To************/ void init_T0(void) { TMOD|=0x01; //定时器工作在模式1 TH0=0xff; //定时初值TH0=0xff TL0=0x49 定时100uS TL0=0x49; TR0=1; ET0=1; } /************TO interrupt********/ void timer0(void) interrupt 1 { TH0=0xff; 34 江西财经大学普通本科毕业论文(设计) TL0=0x49; cnt_s++; //PWM占空比计数 0-100 if(cnt_s>=speed_R) { EN1=0; } if(cnt_s>=speed_L) { EN2=0; } if(cnt_s>=CYCLE) { EN1=1; EN2=1; cnt_s=0; } cnt_s++; } /*************motor control***************/ void motor( int m_R, m_L) { //right motor if(m_R>0) { IN1=1; IN2=0; speed_R=m_R; } else if (m_R<0) { IN1=0; IN2=1; m_R=-m_R; speed_R=m_R; } else { IN1=0; IN2=0; } //left motor if(m_L>0) 35 江西财经大学普通本科毕业论文(设计) { IN3=1; IN4=0; speed_L=m_L; } else if(m_L<0) { IN3=0; IN4=1; m_L=-m_L; speed_L=m_L; } else { IN3=0; IN4=0; } } void init_motor() { speed_R=0; speed_L=0; EN1=0; EN2=0; IN1=0; IN2=0; IN3=0; IN4=0; } /*****************避障读取模式************* ***************/ unsigned char bzms() { unsigned char HW_flag=0x00; //定义避障判断信号 HW_flag=0x00; if(HW==1) { JDQ=0; HW_flag=0x00; } if(HW==0) { motor(0,0); TR0=0; 36 江西财经大学普通本科毕业论文(设计) ET0=0; JDQ=1; HW_flag=0x02; djkz_left(); if(HW==0) { HW_flag=HW_flag+0x01; } djkz_right(); if(HW==0) { HW_flag=HW_flag+0x04; } djkz_middle(); } JDQ=0; TR0=1; ET0=1; return HW_flag; } //***********避障控制代码*************// void BZ(void) { switch( bzms()) { case 0x00: motor(75,53); break; //前进 case 0x02: motor(-70,60);delay1ms(300); break; //右转 case 0x06: motor(-70,60);delay1ms(300); break; //右转 case 0x03: motor(70,-50);delay1ms(300); break; //左转 case 0x07: motor(-70,-70),delay1ms(800); break; //左转 break; } } //***********寻迹代码*****************// void Trace(void) { switch( sensor_inp() ) { case 0x09: motor(65,65); if(sensor_inp()==0x0f){motor(-60,-60);} while(sensor_inp()==0x00){motor(60,60);} break;//直走 case 0x0d: motor(0,60); if(sensor_inp()==0x0f){motor(60,0);} while(sensor_inp()==0x00){motor(0,50);} break; //右走 37 江西财经大学普通本科毕业论文(设计) case 0x0e: motor(0,80); if(sensor_inp()==0x0f){motor(80,0);} while(sensor_inp()==0x00){motor(0,70);} break; case 0x0c: motor(0,60); if(sensor_inp()==0x0f){motor(60,0);} while(sensor_inp()==0x00){motor(50,0);} break; case 0x08: motor(0,60); if(sensor_inp()==0x0f){motor(60,0);} while(sensor_inp()==0x00){motor(50,0);} break; case 0x0b: motor(60,0); if(sensor_inp()==0x0f){motor(0,60);} while(sensor_inp()==0x00){motor(50,0);} break; //左走 case 0x07: motor(80,0); if(sensor_inp()==0x0f){motor(0,80);} while(sensor_inp()==0x00){motor(70,0);} break; case 0x03: motor(60,0); if(sensor_inp()==0x0f){motor(0,60);} while(sensor_inp()==0x00){motor(50,0);} break; case 0x01: motor(60,0); if(sensor_inp()==0x0f){motor(0,60);} while(sensor_inp()==0x00){motor(50,0);} break; case 0x0f: //打转寻线 motor(60,-60); break; default: break; } } //***********无线控遥控小车方向制代码*****************// void WXKZFX(void) { switch( wuxian_inp()) { case 0x00: motor(0,0); break; case 0x10: motor(75,53); break; case 0x20: motor(-70,60); break; case 0x40: motor(70,-50); break; case 0x60: motor(0,0); break; case 0x80: motor(-100,-100); break; case 0x90: a=1; break; //退出该模式 default: break; } } 38 江西财经大学普通本科毕业论文(设计) /*******************无线遥控模式代码*************************************/ void wuxiankongzhimoshi(void) { switch( wuxian_int()) { case 0x40: a=2;break; case 0x10: Trace(); break; //循迹模式 case 0x20: BZ(); break; //避障模式 case 0x80: motor(0,0); break; //进入行动停止模式 default: break; } } /********************************************************/ void main() { JDQ=1; djkz_right(); djkz_middle(); JDQ=0; init_T0(); //初始化定时器。 EA=1; init_motor(); while(1){ if(a==1) { wuxiankongzhimoshi(); } if(a==2) { WXKZFX(); } } } 39