《毕业设计(论文)基于单片机的矿井机器人障碍物探测系统.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机的矿井机器人障碍物探测系统.doc(41页珍藏版)》请在三一办公上搜索。
1、2015届毕业生毕业设计说明书题 目: 基于单片机的矿井机器人障碍物探测系统 院系名称: 电气工程学院 专业班级: 学生姓名: 学 号: 指导教师: 教师职称: 2015 年 05 月 8日摘 要井下救援时,矿井机器人在对井下未知环境的探测显得尤为重要。文中设计了一种基于单片机的矿井机器人障碍物探测系统。该系统主要由以下几大部分构成:测距模块用的是超声波测距传感器;信息传递模块用的是蓝牙无线传输;控制模块用STC89C52单片机控制整个系统的运行;动力模块由电池驱动两个直流电机控制机器人的动作。用KEIL软件对STC89C52单片机进行编程控制系统运行。系统首先通过超声波测距传感器对前方障碍物
2、进行监测,如无障碍物系统通过通信模块传递出信息,然后驱动电机是机器人前进;如发现障碍物,计算障碍物与机器人之间的距离,传出距离信息,控制器驱动电机对障碍物进行规避,继续检测前方是否有障碍物。系统就这样循环运行。在系统运行时,我们要求系统必须对前方障碍物的距离做出准确的判断,及时避开障碍物,选择可以通过的路径继续探测,同时将测出的信号传递出来以方便救援人员及时掌握井下的环境信息快速制定救援方案。关键词:矿井机器人;单片机;避障;测距;信号传递Title Mine robot obstacle detection system based on MCU Abstract Mine rescue r
3、obot, mine is particularly important in the detection of underground unknown environment. This paper designs a detection system of mine robot obstacle based on MCU. This system is mainly composed of the following parts: the ranging module is used in ultrasonic ranging sensor; information transmissio
4、n module is used in Bluetooth wireless transmission; control of the whole system using STC89C52 Microcontroller control module operation; power module is powered by a battery of two DC motor control robot action. Programming the control system of STC89C52 Microcontroller with KEIL software. The syst
5、em first through the ultrasonic ranging sensor for monitoring the obstacles, such as no obstacle system conveys information through the communication module, and the driving motor is the robot forward; obstacles such as discovery, calculate the distance between the robot and obstacle distance, sprea
6、d information, the controller drives the motor with obstacle avoidance, to detect whether there is in front of obstacle. This system operation cycle. When the system is running, we require the system must be on the front obstacle distance to make accurate judgments, to avoid obstacles, path selectio
7、n can also be measured to detect, signaling to facilitate rescue personnel to control the underground environment information quickly develop rescue plan.Keywords: Mine robot; MCU; obstacle avoidance; measurement; signal transmission. 目 录1 引言 41.1 矿井机器人的研究意义 41.2 矿井机器人的概念 41.3 国内外矿井机器人的发展现状 51.4 本文主
8、要内容介绍 62 矿井机器人总体设计方案 72.1 矿井机器人总体设计方案论证 7 2.2 矿井机器人总体设计要求 92.3 矿井机器人总体设计方案103 矿井机器人硬件电路的设计123.1 矿井机器人各硬件部分芯片介绍123.2 矿井机器人核心电路的设计153.3 矿井机器人外围电路的设计163.4 矿井机器人硬件电路总体设计184 矿井机器人系统软件设计 194.1 程序的开发环境介绍194.2 矿井机器人各模块程序设计204.3 矿井机器人总体程序设计255 矿井机器人系统调试265.1 矿井机器人各硬件模块调试265.2 矿井机器人系统总体调试28结 论30致 谢32参考文献33附 录
9、 A351引言1.1矿井机器人的研究意义我们国家是矿产大国,各种矿物质资源十分丰富,随着近些年人民物质生活的不断提高,矿物资源的开采力度不断加大,特别体现在煤炭能源领域,由于我们是发展中国家,我国的资源开发的现代化程度还不是很高,主要还是依靠人工在井下进行开采。由于井下环境的复杂性,造成全国各地特别是矿物主产地的矿难事故不断发生。据不完全统计2012年,我国大陆发生的矿难共造成102人受伤,448人死亡,3人失踪。2013年我国大陆地区发生矿难共造成329人死亡,64人受伤,1人下落不明。2014年,我国大陆发生的矿难共造成138人受伤,269人死亡,29人失踪。国家遭受重大损失,一个个矿工家
10、庭的破碎,让我们的心情随之低落。在这种情况下,矿井救灾也就显得十分重要。矿难一旦发生,矿井底下环境会发生很大的变化,在救灾的同时二次灾害如影随形,这就对救灾人员的生命安全造成巨大威胁,不仅为救灾造成不便,而且很容易上演第二次悲剧。2006年8月21日,贵州省毕节地区纳雍县贝勒煤矿井下发生燃烧事故,六枝工矿集团公司矿山救护大队接报后前去帮助扑救。 8月23日下午4时30分左右,贝勒煤矿发生瓦斯爆炸,矿山救护大队12名救护人员,有4人安全升井,8人遇难.为了在救灾的同时尽可能地减少二次灾害的发生,及时掌握矿井下面的环境状况就显得非常重要。这就要求我们设计一种可代替人工的机器对矿井下面的情况作出及时
11、的测量。矿井机器人就是在这种情况下被提出的。矿难发生后,在救灾时,我们地面救灾人员先通过矿井机器人对井下环境做出准确的判断,再制定最为适合的救灾方案。既可以以最快的时间就出井下被困的矿工,又可以避免救灾人员的伤害,尽最大可能把损失降到最低。可见矿井机器人在救灾过程中具有十分重要意义。1.2矿井机器人的概念随着现代科技水平的不断提高,越来越多的智能机器人被研制出来。机器人是一种能够自动工作的机器装置。我们既可以对它进行遥操作,也可以让它按照预先设定的程序运行。现在的智能机器人可以按照我们设定的智能控制原则行动。机器人的的任务是协助或取代我们的工作,从事一些重复率高、强度大、危险的工作。矿井机器人
12、就是在看矿井下代替我们工作的自动执行工作的机器装置,它对矿井下位置环境进行测量探测,并将测量的环境数据传送至地面人员,让我们对井下的环境进行判断,做出进一步的行动方案。矿井机器人在组成上与其他机器人无异,由执行机构、驱动装置、检测装置、控制系统组成。执行机构是矿井机器人的本体架构。本设计采用车型架构,四个轮子采用非对称结构。车型架构主要是保证矿井机器人在矿井未知道路环境条件下行进的稳定性。四个车轮的非对称排列防止机器人在遇到障碍时两个轮子同时被抬空而造成机器人不能前行。机器人顶盖采用钢板防护,防止井道上方坠落物坠落造成主机损坏。驱动装置是执行机器人运动的装置。本设计采用驱动芯片对两个直流电动机
13、进行驱动。控制单元发出指令控制机器人的两个直流电动机进行线、角的位移。线位移时控制单元同时驱动两个直流电动机同速运动,角位移时控制单元驱动两个直流电动机做差速运动,一实现机器人的转弯避障。检测装置主要是有各种测量传感器组成,用于探测环境信息。检测到的环境信息传送给控制单元,控制单元对这些环境信息作出适当分析,进而控制机器人的动作并将环境信息传送至地面人员。控制系统是矿井机器人的核心部件,它相当于机器人的大脑。本设计采用集中式控制,即所有的信息由一个控制器进行控制。它将检测装置测量的信息分析加工,然后控制机器人的下一部动作,同时又将检测装置测量的信息加工处理后传回地面。1.3国内外矿井机器人的发
14、展现状救灾机器人的研究起步较晚,在20世纪80年代才开始对这一技术进行研究。在1995年日本的神户大地震之后才被重视起来。随后十几年里这些研究处在实验阶段里,并没有投入实际运用中。救灾机器人第一次参与到现场救灾是在2001年的美国911事件发生后中被大规模使用。参与救援的是由美国军方研制的救灾机器人在这次救灾中展现出来了人工不能比拟的优越性,但是也暴露出了不少缺点。例如机器人的防水性不好、耐热性不强、抗震性较低、防爆性能较弱及其他抗恶略环境的性能不高的缺点。我国的救灾机器人研究晚于世界同一时期,但是近几年发展比较快,取得了不少研究成果。例如上海交通大学,哈尔滨工业大学,沈阳自动化研究所都研制出
15、用于救灾的机器人,清华大学和中国矿业大学研制出了用于煤炭矿井下的矿井救灾机器人。但是大都停留在样机研究中,在救灾现场使用的寥寥无几。日本大阪大学研制的蛇形机器人可以再废墟上前进,全身都装有传感器用以测量不同的环境变量,头部还有一个监视器用以寻找幸存者。美国很早就开始了不同种类的机器人研究,科技水平也比较高。最具代表的就是美国的勇气号火星车、机遇号火星车、好奇号火星车等等。美国的一些科技公司研制出的救灾机器人可以适应不同的地形环境。在执行侦察任务治愈还可以寻找幸存者,并与幸存者进行视频通话。我国第一台煤矿搜救机器人采用的控制方式是机器人自主避障和遥控引导结合的控制方式。它既能实时传回事故现场的环
16、境状况,又能为事故现场人员提供急救用品。1.4本文的主要内容介绍 本文介绍了基于STC89C52单片机的障碍物探测机器人。整体分为四大部分组成,由STC89C52单片机组成的控制单元控制整个机器人的障碍物检测、避障、信号传递和机器人运动。由ULN2803驱动的直流电动机组成的动力单元负责机器人的运动。由HC-SR04超声波探测模块构成的障碍物检测模块可以测量机器人与障碍物之间的距离,使机器人成功避障。由HC05-V1.0蓝牙传输模块构成的信号传递系统可以及时的将井下的环境信息及时传递给救灾人员,以方便制定救灾方案。2矿井机器人总体设计方案 本章主要介绍了矿井机器人的总体方案设计,包括控制芯片的
17、选择,超声波测距模块的选择,通信模块芯片的选择,驱动模块驱动芯片的选择以及开发环境的选择。从硬件和软件角度确定矿井机器人的总体方案。2.1矿井机器人总体设计方案论证2.1.1单片机的选择 全球有很多科技公司研制和开发单片机,制造出很多不同种类的产品,面向各个领域。其中美国Inter公司研发的51系列单片机用途最广。许多科技公司基于51内核开发出不同种类、不同型号的产品。根据目前单片机应用市场的发展情况可以大致将单片机分为通用型/专用型、总线型/非总线型、工控型/家电型。 本设计选择的STC89C52型单片机作为控制芯片。STC89C52是STC公司生产的一种低功耗、高性能8位微控制器。具有 8
18、K 字节的Flash存储器,512B的RAM,4个8位的串行I/O口,看门狗定时器,内置4KB的内存,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构,全双工串行通信口,另外为STC89C52单片机可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器停止工作,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运行频率35MHz,6T/12T可选。 STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的
19、功能。指令代码完全兼容传统8051。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。有其它单片机相比价格便宜、支持在线下载程序、编程简单、适合初学者练习。 所以STC89C52单片机不管从性能、价格还是方便性都比其他类型单片机更具优势。2.1.2超声波测距模块的选择 本设计要实现的一项重要功能就是障碍物探测,探测障碍物并测量障碍物与机器人之间的距离。这就必须用到测距传感器。测距传感器按工作原理主要有超声波测距传感器、激光测距传感器、红外线测距传感器。 激光测距传感器的工作原理是通过激光二极管对准目标发射激光
20、束,激光束在遇到目标后发生散射,部分散射光被接收传感器接收,同时计算激光束从发射到接收所经历的时间t,这段时间t乘以光速c再除以2就是目标与激光传感器之间的距离。计算公式为:注:其中S为目标与传感器之间的距离,C为真空中的光速,T为激光束发射到接收 之间的时间。 红外线测距传感器的工作原理是利用红外光信号遇到不同距离的障碍物反射回来的红外光信号强度削减多少不同的原理工作的。红外线测距传感器有一对红外信号发射器和接收器,红外信号发射器发射某种特定频率的红外光信号,红外光信号遇到障碍物后被反射,反射的光信号强度与障碍物的距离成一定的函数关系,距离远的障碍物反射的红外光信号强度比较低,近的障碍物反射
21、的红外光信号强度比较强。这其中有确定的函数关系。 超声波传感器的工作原理是根据声波在传播过程中遇到障碍物发生反射的原理制成的。声波在空气中的传播速度与温度、气压因素有关。在1标准大气压15的条件下声波传递的速度约为340m/s。超声波传感器通过超声波发生器向前方发射一束超声波脉冲,同时开始计时,超声波脉冲在向前传递时遇到障碍物后声波发生反射,反射的声波被接收器接收到时,通过电路计算声波在发射到返回所经历的时间。通过声波的传播速度和传播时间计算出障碍物与传感器之间的距离。计算公式为:注:L为障碍物与传感器之间的距离 激光测距虽说精度比较高,但是成本也比较高,在矿井复杂的环境条件特别是粉尘很难工作
22、。而红外线测距陈本虽说不高但是在矿井下红外线发射和接收装置易被污染,从而造成模块不能被使用。超声波具有很强的穿透性,制造成本也比较低,对设备要求也比较低,因此本设计采用HC-SR04超声波测距模块用于障碍物测量。2.1.3驱动模块的选择 本设计采用两个6v直流电动机作为机器人的动力源,为机器人在矿井复杂条件下的移动提供保障。这两个直流电动机必须在控制器的控制下实现机器人的前进、转弯、停止和调速动作。由于电动机在工作时电流比较大,不能直接和控制器直接相连接,因此必须使用驱动电路对其进行控制。 直流电动机的驱动有以下几种驱动电路:三极管电流放大驱动电路、电机专用驱动模块和达林顿驱动器。由于我们需要
23、驱动两个直流电动机所以本设计选用达林顿驱动器。 达林顿管驱动器实际上是一个集成芯片,单片芯片同时可以8个电机,每个电机由单片机的一个I/O口控制。当需要调节调节直流电动机转速时,程序通过控制单片机相应的I/O口输出占空比不同的PWM波形控制转速。 本设计采用一个达林顿反相驱动器ULN2803驱动电机。电机的一端接5v直流电源,另一端接ULN2803的输出引脚,ULN2803相对应的输入引脚接单片机的I/O引脚。单片机的相应I/O输出PWM信号,由此控制直流电动机的速度与启停。2.14信息传递模块的选择 矿井机器人在通过超声波测距模块测量出机器人到障碍物的距离之后,需要将这一重要信息传递出来,这
24、就要用到信息传递模块。 由于矿井机器人的工作环境比较特殊,矿井机器人携带线缆进行通信十分不便,所以我们选择无线信号传递。同有线信号相比无线信号的传递范围比较广,受环境地形因素影响比较小,但传播距离相比比较小。目前井下无线通信仍是一大难题。本设计采用HC05-V1.0蓝牙模块进行通信。2.15软件开发环境的选择 本设计采用STC89C52单片机作为控制器,使用Keil软件用C语言进行编程。高级编程语言有很多种类,应该说各有各的特点和应用领域。C语言功能比较丰富、表达能力很强,使用起来灵活方便,目标程序效率高,可移植性也比较好。C语言兼顾了高级语言和低级语言的优点,因此应用面广。C语言适合于解决小
25、型程序的编程。对于本设计C语言是可以胜任的。2.2矿井机器人的总体设计要求设计出的矿井机器人通过超声波测距模块探测前方是否有障碍物,发现障碍物后,控制器计算机器人与障碍物之间的距离,指示电机驱动电路作出相应的规避动作,避开前方障碍物,并将障碍物信息通过通信模块传回给地面搜救人员。机器人够成功避开前方障碍物后,继续对前方进行探测。2.3矿井机器人总体设计方案2.3.1硬件设计方案HC-SR04超声波测距模块将测量到的数据信号传送给STC89C52单片机控制单元,STC89C52单片机控制单元将数据分析后指示ULN2803直流电动机驱动芯片,控制直流电动机对前方是否有障碍物做出动作,同时STC89
26、C52单片机控制单元指示蓝牙通讯模块将障碍物信息传送出地面搜救人员手持终端。如下图示:2.3.1系统硬件框图2.3.2软件设计方案 本设计用Keil软件通过C语言对STC89C52单片机进行编程。程序启动后,先进行初始化,再对STC89C52单片机的各个串口进行声明。声明后对各个模块进行设置,然后开始执行主程序。 在主程序中先启动超声波测距模块,探测前方是否有障碍物,如果有则计算障碍物的距离,计算出距离后,启动蓝牙模块,将这一信息传递出去,并启动驱动模块对障碍物进行避障,成功避开障碍物后继续检测前方是否有障碍物;如果没有,小车继续前行,继续探测前方是否有障碍物。程序就这样不停的循环执行。系统软
27、件流程图,如下:图2.3.2 系统软件流程图3 矿井机器人硬件电路的设计 本章主要讲解矿井机器人的硬件设计原理,这是矿井机器人系统运行的基础。内容主要讲解了控制电路的设计和控制电路与外设的连接的设计。这部分涉及的难点和重点就是如何让系统在控制电路的控制下有条不紊的工作。3.1 矿井机器人各硬件部分芯片介绍3.1.1 STC89C52单片机介绍STC89C52单片机是STC公司生产的一款基于8051内核的增强型高性能单片机。6时钟/机器周期和12时钟/机器周期任意选择;工作电压为3.3v-5.5v;工作频率范围是0-40MHz,实际工作频率可以达到48MHz;用户应用程序空间为8K字节;片上集成
28、512字节RAM;32个通用I/O口,复位后P0/P1/P2/P3是准双向口/弱上拉,P0口试漏极开路输出,作为总线扩展时用,不加上拉电阻,z作为I/O口用时需加上拉电阻;ISP/IAP无需专用编程器,无需专用仿真器,功能;共有3个16位定时器/计数器,4个外部中断;通用异步串行口;工业级的工作温度在-40 - +85之间;采用PDIP封装。图3.1.1 STC89C52单片机3.1.2 HC-SR04模块介绍 HC-SR04超声波测距模块是深圳捷深科技有限公司研发的一种非接触式测距模块。模块可实现2cm-400cm的距离测量,最高测量精度可达3mm;工作电压DC5V,工作电流15mA,工作频
29、率40KHz;测量角度15度;模块包括超声波发射器、接收器和控制电路。 通过I/O口给超声波模块的TRIG端口加上超过10us的高电平信号,模块自动发射8个周期的40KHz的超声波,并且自动检测是否有信号返回。如果检测到有超声波信号返回,模块在ECHO引脚输出一个持续的高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速)/2。如下图:图3.1.2 HC-SR04超声波测距模块3.1.3 ULN2803驱动芯片介绍 本设计使用的ULN2803达林顿管是日本东芝公司制造的达林顿管驱动器。芯片采用8路NPN达林顿晶体管阵列,适合于低逻辑电平数字电路和较高的电流/电压要
30、求之间的接口。 芯片包含8个NPN达林顿管;高耐压,大电流;输入电阻2.7K;输入电压5V;使用温度范围-40 - +85;如下图:图3.1.3 ULN28033.1.4 HC05-V 1.0 本设计采用HC05-V1.0蓝牙模块作为通信模块。HC05-V1.0模块是一款高性能的主从一体蓝牙串口模块。可用于和各种带蓝牙功能的电脑、蓝牙主机、手机、PDA智能终端配对通信。 HC05-V1.0蓝牙模块接口使用TTL电平,兼容3.3/5V单片机;默认波特率为9600;通讯距离在空旷地达10米;6排阵对外接口;工作电流1-40mA。图3.14 HC-05-V1.0蓝牙模块3.2矿井机器人核心电路设计能
31、够使单片机正常运行的最简单的工作电路被称为单片机最小系统,它包括单片机芯片、晶振电路、复位电路、电源四部分。本设计的单片机最小系统如图3.2所示:图3.2 STC89C52单片机最小系统3.3矿井机器人外围电路的设计 外围电路主要是除了单片机的其他外部硬件:HC-SR04超声波测距模块、BT-HC-05-V1.0蓝牙模块、ULN2803直流电动机驱动模块。这些模块都要与控制器-STC89C52单片机连接。以下是他们的电路原理图。HC-SR04超声波测距模块原理图:图3.31 HC-SR04超声波测距模块原理图ULN2803芯片原理图:图3.32 ULN2803芯片内部电路图(1/8单元)图3.
32、33 ULN2803芯片内部原理图3.4矿井机器人硬件电路总体设计 将以上的核心芯片和外围模块有机的结合在一起,就构成了矿井机器人的硬件连接电路。矿井机器人就是在这个电路上通过对核心芯片的编程运行的。硬件电路的总体设计主要是核心电路对外围电路的引脚,即单片机对外设的I/O口分配,只有将这些做好,系统才能在单片机的控制下有序高效地执行已设定程序。图3.41 矿井机器人硬件电路总体设计图4 矿井机器人系统软件设计本章的内容是本次设计的核心环节。主要内容包括对HC-SR04超声波模块的程序设计,对ULN2803电动机驱动芯片程序的设计,对HC05蓝牙模块的程序设计和程序总体设计。4.1程序的开发环境
33、的介绍4.1.1Keil uVision2开发环境介绍Keil uVision2开发软件是由德国Keil公司推出的基于51内核的单片机C语言软件开发系统。Keil C51的编译器为8051微控制器的软件开发提供C语言编程环境,还保留了汇编语言的高效快速的特点。Keil uVision2开发环境已经完全集成了C51编译器,这个开发环境包括:编译器、汇编器、实时操作系统、项目管理器、调试器。Keil uVision2软件为开发者提供了十分丰富的库函数和功能强大的集成开发环境。目标代码生成速度快,结构紧凑,效率非常高。图4.1.1Keil uVision2开发环境4.1.2 STC_ISP_V483
34、烧录软件介绍单片机程序在电脑上编好后生成二进制的程序.hex文件,需要把这个程序文件下载到单片机中,这就用到了烧录软件。本设计用的是STC公司生产的89c52系列单片机,所以就用到了STC_ISP烧录软件。图4.1.2 STC_ISP烧录软件在电脑上成功安装烧录软件后,打开软件。在步骤1处选择单片机型号;在步骤3处选择com口,设置波特率;在步骤2处单击打开“程序文件选项”,选择相应文件夹中的.HEX文件,.HEX文件就自动添加在烧录器中了;在步骤5处单击“下载”,按照步骤5底下框中提示操作单片机。4.2矿井机器人各模块程序设计本设计中由于控制器要控制三个模块,所以程序用不同函数对相应的模块进
35、行控制。4.2.1HCSR04超声波测距模块的函数设计通过HC-SR04超声波测距模块用户手册对模块进行操作,可以使其正常工作。模块的VCC引脚需加5V的直流电压,GND引脚接地,模块才能正常工作。要实现测距功能,通过一定的电路或软件实现在模块的Trig引脚加10个时钟周期以上的高电平,模块会自动发射40KHz的超声波信号,然后自动检测是否又返回信号,检测到返回信号后,在Echo端口输出持续的高电平,高电平信号持续的时间就是超声波信号从发射到接收的时间。定义超声波检测模块的函数名为measure,类型为整形,无返回值。定义单片机的P1.0口为超声波模块高电平输入端口,即Trig端口;P1.1为
36、模块测距时间输出端口,即Echo端口。程序如下:void measure()/测距函数 uint t,s;TMOD=0x01;/设置定时器0工作方式1EA=1;/开总中断ET0=1;/开定时器0中断TH0=0;/装入初值TL0=0;TX=1;/向Trig端口输出高电平_nop_();/持续11个时钟周期高电平_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TX=0; while(!RX);/等待Echo端口的高电平 TR0=1;/开启定时器0 while(RX);/等待Echo端口低
37、电平的到来 TR0=0;/关闭定时器0 t=TH0*256+TL0;/*/计算超声波信号往返时间s=(t*1.7)/100;/*计算距离D=s; /将测量值赋给全局变量D4.2.2 HC-05蓝牙模块程序设计根据HC05用户手册,HC05蓝牙模块出厂设置是从模式,只需上电后和其他蓝牙蓝牙设备进行配对即可。HC05的6个引脚,只需连接电源VCC、地线GND、和串行通信口TXD,RXD四个引脚,使用简单方便。将HC-05设置为从模式,模块的TXD、RXD两个引脚分别与单片机的RXD、TXD接口(即P3.0、P3.1)相连。在单片机内设置串行口通信方式,将超声波测距模块测量的值传给单片机的SBUF寄
38、存器,同时对单片机进行相应的设置,就可以通过蓝牙模块将数据传送至手持端。下面是蓝牙模块的源程序:Viod communicate() uint x,y,z,w,d;TMOD=0x20;/设置T1定时器工作方式2TH1=0xfd;/定时器装初值TL1=0xfd;TR0=1;/启动T1定时器SM0=0;/设定串口工作方式一SM1=1;d=D*100;/将浮点型变量D变为整型变量d,并不损失数据量w=d/10000; /将D的值一个个赋给w,x,y,z,dd=d%10000;x=d/1000;d=d%1000;y=d/100;d=d%100;z=d/10;d=d%10;SBUF=table11; /
39、传输一个空格While(!TI);TI=0;if(w!=0) /第一个数据是0不传送 SBUF=tablew; /发送百位 While(!TI); TI=0;SBUF=tablex; /发送十位While(!TI);TI=0;SBUF=tabley; /发送个位While(!TI);TI=0;SBUF=table10; /发送小数点While(!TI);TI=0;SBUF=tablez; /发送十分位While(!TI);TI=0;SBUF=tabled; /发送百分位While(!TI);TI=0;4.2.3 ULN2803直流电动机驱动模块程序设计当超声波测距模块检测到前方有障碍物时,在将
40、此数据通过蓝牙传出后,程序控制ULN2803芯片使一个电动机动作,以实现机器人转弯。再测前方是否有障碍物,如果有继续转弯,如果没有,机器人执行前行程序。Void forward(uint x) /前进函数 uint i,j; for(i=x;i0;i-) /通过控制x的大小控制电动机的运行时间 for(j=110;j0;j-) m1=1; m2=1; m1=0; m2=0;Void turn_left(uint y) /左转函数 uint i,j; for(i=y;i0;i-) /通过控制y的大小控制左转角度 for(j=110;j0;j-) m1=1; m1=0;Void turn_righ
41、t(uint z) /右转函数 uint i,j; for(i=z;i0;i-) /通过控制y的大小控制左转角度 for(j=110;j0;j-) m2=1; m2=0;4.3 矿井机器人总体程序设计虽然各个模块的程序设计可以通过定义不同的函数实现其功能,但是将这些函数有机的组合在一起,实现系统稳定流畅的运行还需要对这些函数进行修改和删减。总程序的设计思路是先让超声波检测模块在设定的范围内探测前方是否有障碍物,若没有障碍物或者障碍物不在范围内,系统控制电动机驱动模块前进;如果有障碍物,测量障碍物的距离,将测量值通过单片机串口传送给蓝牙模块,蓝牙模块将离障碍物的距离发送给手持端,程序继续控制驱动
42、模块实现避障,在避障时不断测量前方是否有障碍物,有的话继续避障,没有障碍物继续前行。程序就这样反复运行。为了简化程序,将前进函数和避障函数设置为带参函数。调用时,将不同的实参赋给函数,实现小车避障和前进。详见附录A。5 矿井机器人系统调试系统调试是将程序下载到控制器中,用以控制系统按照设定的程序流畅稳定的运行。在这期间需要不断调试程序中的各个量,以实现系统稳定运行。这也是本次设计中花费时间最多,耗费精力最大的一部分。在这期间是我对对硬件电路以及各个模块芯片,包括控制器深入了解的最多,最为透彻。学到了很多知识。5.1矿井机器人各硬件调试5.1.1超声波测距模块的调试在这部分调试过程中,因为超声波
43、测量到的距离信息无法显示出来,所以在这部分调试过程中将开发板中的数码管添加了进来,用以显示超声波测距模块测量的距离,结果如下。图5.1.1 超声波模块的调试5.1.2 HC05蓝牙模块的调试蓝牙模块的调试是在程序中设定了一个值,程序将这个值送到单片机的串口,串口和蓝牙直接相连,蓝牙将这一值传送给手机蓝牙。在手机上装有一个蓝牙串口助手软件,运行此软件可以将单片机通过蓝牙从模块发出的数据显示在手机上,结果如下。图5.1.2蓝牙模块的调试5.1.3 ULN2803驱动直流电动机的调试ULN2803驱动直流电动机的调试是直接按照原理图连接电路,对其进行调试。调试结果如下。图5.1.3驱动模块调试结果5.2 矿井机器人系统总体调试系统的总体调试就是对程序中的数据进行逐一检测,这些数据如果出错很可能造成系统不能运行,或者崩溃。调试结果如下。图5.2系统总体调试结 论矿井机器人由于其可以代替人工对矿井下未知环境的探测,避免救援队员