吕中兴 毕业设计5

更新时间:2023-11-12 14:53:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

存档日期: 存档编号:

本科生毕业设计(论文)

论 文 题 目: 基于Arduino的灭火机器人设计 姓 名: 吕中兴 学 院: 电气工程及自动化 专 业: 电气工程及其自动化 班 级 、 学 号: 11电41 11284016 指 导 教 师: 高莉

江苏师范大学教务处印制

摘 要

本文的设计目标是研发一个寻火和灭火速度较快,而且准确度较高,数据处理能力很强的灭火机器人。研究内容主要是设计一个基于Arduino的灭火机器人。本系统深度改进了硬件和软件,是以Arduino为主控制器、红外传感器为火焰传感器、红外测距传感器为避障传感器、灰度传感器为寻迹传感器等,灭火风扇为灭火装置,将轮式小车作为运动执行装置。

主控制器是灭火机器人最核心的模块,它涉及到预留足够的输入输出接口的问题和灭火机器人能否快速高效地完成灭火任务,所以本文比较创新地使用Arduino作为主控制器。本系统主要的硬件构成部分有:控制器、检测装置、运动执行装置和灭火装置。在实际设计过程中,根据具体的灭火要求,对这四大部分进行了详细的设计,再添加电源、电机驱动和电机控制等外围模块,构成完整的系统硬件电路设计。本系统的软件设计是在Arduino IDE软件开发环境下,进行程序编写和编译,建立在此硬件电路设计的基础上,程序模块主要包括:主程序模块、寻迹行走模块、火源检测模块、避障模块等等和其余子程序模块。 本设计的优点包括:将主控制器选为Arduino;采用了合理高效的传感器;采用LCD显示屏实现人机交互功能。缺点包括:在电路设计时,没有把数字电路和模拟电路分开,这样由于在A/D 转换电路的存在,电路噪声会对采样电路产生影响;在设计电路时,没有利用光耦隔离控制电路与电机驱动电路,这样会造成直流电机运行时产生的干扰信号对 A/D 采样电路产生影响。

关键字:灭火机器人 Arduino 传感器 寻迹行走

I

Abstract

The research content of this article is to design a fire-fighting robot based on the Arduino. The robotic system is the Arduino primarily controller, infrared sensor for flame sensor, infrared distance sensor for obstacle avoidance sensors, such as gray level sensor for tracing sensor, motion actuators for fire-fighting robot, extinguishing equipment for extinguishing fan.

Main controller is the core of fire-fighting robot module, it involves the reserved enough input/output interface problems and extinguishing fire robot can be completed quickly and efficiently, so this article is to use Arduino innovation as the main controller.

The robot system is composed of the following main parts: controller, test equipment, sports equipment, fire equipment. In actual design process, according to the requirements of the specific fire, has carried on the detailed design, to the four most add power supply, motor drive and control the peripheral modules, form a complete system hardware circuit design. The software design of this system is established on the basis of the hardware circuit design, program module mainly includes: main program module, tracing module, fire detection module, obstacle avoidance module, etc., and other subroutines module.

Keywords: fire-fighting robot arduino sensor tracing to walk

II

目 录

摘 要 ....................................................................................................... I Abstract ...................................................................................................... II

1 绪 论...................................................................................................................... 1

1.1 灭火机器人的产生背景............................................................................... 1 1.2 灭火机器人的研究意义............................................................................... 2 1.3 灭火机器人的发展状况............................................................................... 2

1.3.1 灭火机器人国外的发展状况.............................. 3 1.3.2 灭火机器人国内的发展状况.............................. 4 1.4 研究内容及章节安排................................................................................... 4 2 总体设计.................................................................................................................. 6

2.1 设计目标....................................................................................................... 6 2.2 系统总体框图............................................................................................... 6 2.3 系统方案比较............................................................................................... 7

2.3.1 控制芯片的选型........................................ 7 2.3.2 检测装置的选择........................................ 8 2.3.3 执行装置的选择....................................... 10

3 硬件电路分析设计................................................................................................ 12

3.1 系统组成和控制主板设计......................................................................... 12 3.2 Arduino控制器.......................................................................................... 13 3.3 电源模块..................................................................................................... 14 3.4 电机驱动模块............................................................................................. 16 3.5 传感器模块................................................................................................. 16

3.5.1 火焰传感器........................................... 17 3.5.2 避障传感器........................................... 17 3.5.3 寻迹传感器........................................... 19

4 系统程序分析设计................................................................................................ 21

4.1 功能模块设计............................................................................................. 21

III

4.1.1 系统总体模块设计..................................... 21 4.1.2 灭火主模块设计....................................... 22 4.1.3 寻迹行走模块设计..................................... 23 4.1.4 避障行走模块设计..................................... 24 4.2 模块程序设计............................................................................................. 25

4.2.1 系统主程序设计....................................... 25 4.2.2 灭火主程序设计....................................... 28 4.2.3 寻迹行走程序设计..................................... 29 4.3 按键输入与显示设计................................................................................. 31

4.3.1 按键模块............................................. 32 4.3.2 LCD显示模块 ......................................... 32 4.3.3 多级菜单显示......................................... 33

5 总结和展望............................................................................................................ 34

5.1 总结............................................................................................................... 34 5.2 展望............................................................................................................... 34 致 谢.......................................................................................................................... 36 参考文献...................................................................................................................... 37 附 录............................................................................................................................ 39

附录一:主程序................................................................................................... 39 附录二:红外测距传感器的驱动和控制程序................................................... 42 附录三:小车的行进程序................................................................................... 53

IV

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

1 绪 论

1.1 灭火机器人的产生背景

机器人是历史和科学技术发展到一定阶段的必然产物[1]。一方面,它是一门具有重大意义的科学技术,能有效地反应出一个国家科学技术的发展程度。另一方面,机器人的产生能帮助人类在认识世界和改造世界的能力上不断提升。科技进步推动着社会经济的不断发展,而机器人就是科技进步的高层次产物[2]。

机器人产生于第三次科技革命,其技术在此次革命中迅速发展成为一门新兴学科。机器人技术具有强大的活力,被广泛应用于各个生产和科技领域。随着一系列新兴科技的出现和不断发展,机器人的性能越来越稳定,功能也越来越强大。机器人一般有工业机器人和特种机器人两大类,工业机器人在很长时间内都是占主体地位,而特种机器人作为“新兴品种”,由于其被广泛地应用于各个领域也逐渐崭露头角,其中就包括灭火机器人。

灭火机器人应用的学科较多,属于当前机器人领域研究方向的重点。目前,灭火机器人越来越趋于实用化发展,应用愈加广泛。灭火机器人需要实现四个基本功能包括:寻迹行走、避开障碍、寻找火源、灭火救援等功能。灭火机器人经常需要进入恶劣环境中灭火救援,列如:高温浓烟、高辐射强度、高腐蚀程度等环境。

灭火机器人是特种机器人的一种,它可以作为特殊的消防设备,替代消防队员进入火灾现场,进行侦察火场、寻找火源、传出火场信息和灭火救援等任务,特别适用于危险级别较高或者消防人员不易进入火灾场地的情况。把灭火机器人广泛应用于消防领域,对消防部门扑灭恶性火灾的能力有着很大程度的提高,可以在很大程度上减少国家和公民的财产损失以及消防人员的伤亡数量。

由于我国经济的蓬勃发展和城市现代化程度的不断提高,火灾产生的因素不断增多,火灾的类型变得更加多样化,灭火救援的难度不断增加,火灾造成的经济损失和人员伤亡变得更为严重。当火灾发生,如果没有采取有效的方法、使用有效的装备及设施,消防人员将无法进行灭火救援任务。所以,开发和完善灭火机器人,将灭火机器人应用于我国消防部门迫在眉睫。

1

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

1.2 灭火机器人的研究意义

随着经济的不断发展,建筑的复杂程度和企业生产的多样性不断增加,导致火灾的扑灭救援难度增加。当火灾发生时,单单依靠灭火救援人员,很难在很低的财产损失和人员伤亡下,进行高效的灭火救援任务。因此,为了减少国家和人民的财产损失以及降低消防人员的伤亡数量,灭火机器人的研究具有重要意义。传统灭火机器人往往采用功能简单的单片机作为主控制器,随着人们对灭火机器人的性能要求越来越高,主控制器芯片的选择正向嵌入式系统发展,从而灭火机器人可以快速高效的完成所给任务。

灭火机器人,可以引入普通家庭中,给普通的家庭提供简单有效的灭火方案,对火灾进行及时快速的处理。它也能在各种恶劣条件和危险环境下,取代灭火救援人员并帮助消防部门更好地应对各种重大和复杂的火灾,提供有效的灭火方案,极大地提高灭火救援的效率,降低灭火救援成本,可靠地保障生命财产安全。基于上述功能,灭火机器人越来越受到专家和消防部门的重视。除此之外,由于灭火机器人涉及的技术和学科很多,对灭火机器人的深入研究势必会带动相关学科和技术的深层次发展。

灭火机器人的一大特点是快速准确地识别和确定火源位置,可以提高灭火救援的效率。它在行走过程中,通过对各个传感器反映信号进行处理和分析,对周围环境进行感知判断,将各个疑似火源进行进一步的数据分析,准确判断火源位置,从而确定火源离自身的距离和方向。火灾现场的火源,可分为诱发火灾火源与非诱发火灾火源两种,而对于灭火机器人必须根据一些火灾知识对此加以区分,比如:一般情况下,诱发火源不是很稳定,火灾发生时间越长火源会变大;而非诱发火源相对稳定。

1.3 灭火机器人的发展状况

灭火机器人的主要组成部分有:主控制器(CPU)、检测装置(各种传感器)、执行装置和灭火装置[3]。一般来说,以往的灭火机器人都是将普通单片机作为主控制芯片,但是往往由于普通单片机具有较慢的运算速度和有限的外部接口的缺陷,灭火机器人的功能往往不是很强大,不能满足实际应用中的复杂要求。近几年,由于ARM 系列的处理器、AVR系列单片机等运算速度高接口资源丰富控

2

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

制芯片的广泛应用,使得灭火机器人的灭火救援效率和速度大大提高。

以往将单片机作为机器人主控制器,这种控制器的核心一般采用ATMEL公司生产的51系列单片机和凌阳公司生产的SPCE061A单片机。用这两类的单片机作为控制器,只能粗糙地完成灭火任务,对火场环境的分析,由于受到单片机运行速度的影响效果不是很理想。

由于高性能微控制器和嵌入式系统技术在机器人领域的到不断地应用,很多实时控制方面的问题得到了解决。采用以AVR单片机为内核的Arduino板作为灭火机器人的控制器可以加强机器人的性能,使之更加智能。在灭火机器人灭火过程中,最需解决的是对火源和自身位置如何确定的问题。因此,要求控制核心给检测装置留下足够的输入和输出接口,用于更好地控制外部设备。其次要解决的是灭火机器人行走速度的问题,而只有控制器具有较强的浮点数运算能力才能解决该问题。所以,采用以AVR单片机为内核的Arduino板作为灭火机器人控制器,可以更好地实现灭火救援的功能。

1.3.1 灭火机器人的国外发展状况

自Devol申请工业机器人专利成功后至今,机器人技术一直处于高速发展状态,世界各国越来越重视机器人的相关研究和应用。其中,各个国家的机器人研究都各有特色。美国研制的机器人以精度高、性能强见长;日本研制的机器人以数量和密度著称;德国研制的机器人以应用广泛而闻名。

灭火机器人由于其实用性强和利用价值高,世界各国都开始了对这种机器人的研究和应用,其中最早开始研究是美国和前苏联,之后,英国、日本、德国等国家也迎头赶上。经过一段时间的研究,已经有很多灭火机器人用于实际的救灾现场。已有的灭火机器人一共有三代,这三代机器人是不断进步的过程,其中的区别是:第一代只能依靠人根据现实场地情况编写的程序进行控制实现简单既定的功能,不具有自发性,不能根据位置情况作出反应和处理;第二代是在第一代的技术上添加了基础的感觉功能,添加了各类精确的传感器作为机器人感知外界的工具;第三代是为机器人添加了自发性,能自行根据所遇到的情况进行分析处理,更具智能化。其中第一代和第二代灭火机器人已经应用于实际救灾当中,而第三代智能灭火机器人正处于研发当中。

3

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

1.3.2 灭火机器人的国内发展状况

我国由于没有赶上第三次科技革命的浪潮,所以机器人研究起步较晚,发展较为落后。在20世纪70年代,我国在工业机器人研究上飞速发展,走上了自主研发道路,并取得了一定成果。在20世纪80年代,由于改革开放和经济快速发展的巨大推动,政府愈加重视和支持机器人技术的研究与开发,投入大量的人力物力财力,组织大批专家学者对机器人技术进行定点攻关,研制出了能够实际应用的工业机器人。在20世纪90年代,我国的机器人事业进入跨越式发展,相继攻克了一些世界难题,研制出了各式各样更能强大的工业机器人,而灭火机器人就是在那时开始研究的。

灭火机器人是对多种学科和先进技术的融合,可以在较低财产损失和人员伤亡的情况下,配合消防人员高效地完成灭火救援任务。我国消防部门最早就是在1997年开始启动了对灭火机器人的研究工作。在2002年,由上海交通大学、公安部上海消防研究所和上海消防局这三家单位联合发起的灭火机器人研究项目成功完成并顺利通过国家消防部门的检查验收。在2003年,我国灭火机器人从实验室走向实际生活中,江苏省率先在消防部门配备灭火机器人起到了不错的效果。我国灭火机器人的研究从一开始的一穷二白到之后的蓬勃发展,虽然历经曲折,但是还是不断的向前发展。消防对国家人民的身命财产安全起到至关重要的作用,而灭火机器人可以帮助消防部门更好地解决消防问题,所以灭火机器人的深入研究迫在眉睫。

1.4 研究内容及章节安排

本文的研究内容是设计一个基于Arduino的灭火机器人。该系统的主要由控制器、检测装置、运动执行装置、灭火装置这四个部分构成硬件电路。其中控制器为Arduino开发板,传感器包括火焰传感器、避障传感器、寻迹传感器等,运动执行装置为灭火机器人,灭火装置为灭火风扇[4]。

由于灭火机器人比赛的场地具有一定的难度且实际火灾模拟度高,故本文的研究以灭火机器人比赛用地为背景场地。本文的研究过程就是如何在机器人身上重现人为灭火的过程,而机器人要想实现灭火的功能可分为以下几步。首先,要在不触碰障碍物(包括墙壁)的情况下在过道进行行走;其次,到达房间门口需

4

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

要确定房间内是否有火源;再次,在进入房间后到达外部有白线标识的火源区域;然后,启动灭火装置;最后,回到起始位置[5]。

论文共有五章,第一章为绪论部分,详细介绍了灭火机器人的产生背景、研究意义以及发展现状;第二章为总体设计,该部分给出设计目标和方案,给出系统总体的框架,确定系统的硬件组成和软件设计流程,对各部分的芯片进行选择;第三章为硬件电路分析设计,主要包括Arduino控制主板的设计、电源电路设计、外围扩展接口电路设计、电机驱动电路设计以及传感器电路设计等;第四章为系统程序设计,给出了软件系统主要模块功能、主要程序流程图和程序设计,包括系统总体模块、灭火主模块、避障子模块、寻迹子模块设计以及系统主程序设计、灭火主程序设计、避障程序设计、寻迹程序设计;第五章为总结和展望。

5

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

稳定性较高,对机器人的控制有着重要作用。但由于制作问题,已经把机器人代替为小车,故不需要考虑舵机的问题。

综上所述,本文选择将直流减速电机作为灭火机器人的驱动电机,去执行灭火小车的行走任务。

经过上述备用方案的仔细认证,本文最终选择如下方案: 1、将小车代替机器人。

2、采用Arduino单片机作为主控制器。

3、将红外传感器作为小车的火焰传感器进行火源检测。 4、以灰度传感器作为小车的寻迹传感器进行寻迹行走。 5、使用红外测距传感器作为避障传感器实现小车的避障功能。

11

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

3 硬件电路分析设计

3.1 系统组成和控制主板设计

本系统结构有四个主要组成部分有:控制器(CPU)、检测装置(各种传感器)、运动执行装置、灭火装置,其中控制器为Arduino开发板,检测装置包括火焰检测模块、避障模块、寻迹行走模块等,运动执行装置为车轮型小车,灭火装置为直流电机驱动的灭火风扇,还有电源模块和电机驱动模块等[9],详细组成见图3-1。其中,将红外传感器作为火焰传感器起到检测火源的作用,将红外测距传感器作为避障传感器起到检测离障碍物的距离和避开障碍物的作用,将灰度传感器作为寻迹传感器起到检测白线向前行走的作用。

AD输入模块红外传感器红外测距传感器灰度传感器主板电源Arduino UNOPWM输出模块车轮直流减速电机电机电源灭火风扇

图 3-1 基于Arduino的灭火机器人系统结构图

灭火机器人控制主板分上下两层,上层板:Arduino,包括AVR单片机、电源电路、复位电路、按键和LED指示灯等;下层板由稳压电源、A/D 采样、电机驱动等模块组成。其中在下层板中还有专门设计的十路 A/D 输入接口,通过这接口将传感器信号传给Arduino进行处理,剩余的接口将PWM信号输出给电机达到控制小车行走和启动灭火风扇的目的[10]。

12

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

3.2 Arduino控制器

随着高性能微控制器和嵌入式系统技术的不断地应用于机器人领域,以往的单片机已经不能满足现在灭火机器人快速行走和高效灭火的要求,而采用以AVR单片机为内核的Arduino板作为灭火机器人的控制器恰好可以满足这样的性能。选用Arduino作为灭火机器人的控制核心可以给传感器留有足够的输入接口,给控制外设留有足够的输出接口,加强机器人的数据处理能力和运算速度,使之更加智能化。

Arduino是一个以AVR系列单片机为内核的单芯片微控制器,有开源的代码库,有着简易的输出/输入(simple I/O)口,而且使用类似Java、C语言程序编写。该系统板具有以下特点:

1. 应用开源代码设计硬件电路和软件程序

2. Arduino可以使用ISP对Bootloader进行在线烧录

3. 为了到达自己实际需求,可依据官方资料改进Arduino的元件 4. 留有足够的输入输出接口,可外接丰富的外设,特别是传感器 5. 可以适应多种高级语言和软件开发环境

6. 由于将AVR单片机作为内核,使得价格较为低廉,设计成本不高。但性能

高功耗低,且具有强大的数据处理和运算能力

下面介绍Arduino的内核单片机,以Atmega328单片机来介绍其特点: 1. 8位AVR微处理器 2. 先进的RISC 结构

3. 非易失性程序和数据存储器 4. JTAG接口 5. 外设特点

① 两个8 位定时器/计数器 ② 一个16 位定时器/计数器 ③ 一个实时计数器 ④ 四通道PWM ⑤ 8路10位ADC

13

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

6. 8 个单端通道 7. 7 个差分通道 8. 2 个可编程差分通道

① 面向字节的两线接口 ② 可编程的串行

③ 主/从机模式的SPI 串行接口 ④ 可编程看门狗定时器 ⑤ 片内模拟比较器 9. 32个可编程的I/O口

3.3 电源模块

电源模块为整个系统提供电源,其中包括两个电源部分:供给Arduino运行的电源部分和供给直流电机驱动运行的电源部分。电源模块设计的好坏决定了整个系统(Arduino和直流电机)的运行是否稳定,涉及到之间的传输信号是否相互干扰,所以在设计电源模块时,要谨慎把所有的可能性考虑进去,要进行不断地调试检测。

在本系统中需要对两个部分提供稳压电源:一部分为5V稳压电源,给Arduino提供电源;另一部分为12V稳压电源,给直流电机提供电源。这两个稳压电源模块需要一个直接的转换电源,由于小车不断地移动,故不能采用220V交流电作为5V稳压电源模块和12V稳压电源模块的转换电源,需要给这两个电源模块采用直流可以装载的电源。普通干电池只有1.5V电压较低,多个串联较为麻烦,且利用率低不能重复使用。而锂电池是一种无记忆性的电池,可以进行无数次的充放电,电能转化率高,放电时电压为7.2V,可以很好的满足作为转换电源的要求,故采用两个锂电池串联作为两电源模块的转换电源。

首先,对5V稳压电源进行讨论。在本系统中,5V 稳压电源模块是以LM2575T-5.0开关稳压芯片为核心的电源电路。LM2575T-5.0是一种将电压稳定在5V的降压集成芯片,产自于NSC公司。它内部有丰富的外围电路:一个振荡器电路和一个保护电路,这就大大减少了外接器件的数量,从而简化了稳压电路的结构,提高了稳压的效率和可靠性。这种稳压电路相对于传统的三端式稳压

14

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

电路更加地稳定可靠,电路原理图如图3-2。

图3-2 5V稳压电路

然后,讨论12V稳压电源。本系统采用的直流电机的额定电压为6V,但由于小车的行走速度和电机电压的高低有关,所以为了满足小车以较快

速度行

走的要求,采提高电压的方法提高小车行走速度。由于系统使用的直流电机经检测可以在短时间内工作在12V,所以设计以LM2577T-12稳压芯片为核心的DC-DC的升压电路,这样可以使直流电机处于高速运行的状态,使得小车能够快速行走。电路原理图如图3-3。

图3-3 12V DC-DC升压电路

本系统一共用到三个直流电机(两个用于小车的行走、一个用于灭火风扇),由于电机在启动和停止的瞬间会产生很大冲击电流,对整个系统电路会产生很大

15

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

\菜单 实际灭火\ }; Robot_init(); LCD_init(); LCD_disp(Welcome); Load_Var(); STEER_set(9); steer_angle = 9; DelayMS(1000); STEER_fire(4); DelayMS(1000); STEER_stop(); DelayMS(100);

41

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

附录二:红外测距传感器的驱动和控制程序

/*红外测距传感器驱动 串口显示检测距离 */

// 设定红外测距传感器连接的Arduino引脚

const int TrigPin1 = 2; //定义前面红外测距传感器的连接 const int EchoPin1 = 3;

const int TrigPin2 = 8; //定义左侧红外测距传感器的连接 const int EchoPin2 = 9;

const int TrigPin3 = 10; //定义右侧红外测距传感器的连接 const int EchoPin3 = 11;

float a[6]={}; //前置红外测距传感器的数据缓存 float b[6]={}; //左侧红外测距传感器的数据缓存 float c[6]={}; //右侧红外测距传感器的数据缓存 float CJ_data_a,CJ_data_b,CJ_data_c; //筛选后的测距数据

int gg_back;

//读取前置红外测距传感器的数据 void read_csb(int TrigPin,int EchoPin) {

unsigned int s,t,f;

// 产生一个10us的高脉冲去触发TrigPin

for (s=0;s<6;s++) //连续6次,读取前置红外测距传感器的测距数值 {

digitalWrite(TrigPin, LOW); //引脚 2 为 低 delayMicroseconds(2); //延时

42

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

digitalWrite(TrigPin, HIGH); //引脚 3 为 高 delayMicroseconds(10); digitalWrite(TrigPin, LOW);

// 检测脉冲宽度,并计算出距离

switch (TrigPin) {

case 2: a[s] = pulseIn(EchoPin, HIGH) / 58.00; 放于前置红外测距数组中 break;

case 8: b[s] = pulseIn(EchoPin, HIGH) / 58.00; break;

case 10: c[s] = pulseIn(EchoPin, HIGH) / 58.00; break; }

delay(10); } }

//对红外测距数组进行排序 void Cj_data() {

unsigned int i,j,s; float temp1,temp2,temp3;

for(s=0;s<6;s++) {

for(j=0;j<=5;j++) {

43

//计算出测距数值,存

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

for (i=0;i<5-j;i++) if (a[i]>a[i+1]) {

temp1=a[i]; //前置数值 a[i]=a[i+1]; a[i+1]=temp1; } } }

for(s=0;s<6;s++) {

for(j=0;j<=5;j++) {

for (i=0;i<5-j;i++) if (b[i]>b[i+1]) {

temp2=b[i]; b[i]=b[i+1]; b[i+1]=temp2; } } }

for(s=0;s<6;s++) {

for(j=0;j<=5;j++) {

for (i=0;i<5-j;i++)

//左侧数值 44

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

if (c[i]>c[i+1]) {

temp3=c[i]; //右侧数值 c[i]=c[i+1]; c[i+1]=temp3; } } } }

//对红外测距数组排序结果,去均值得到测距值 void JL() {

unsigned int i;

float CJ_temp1,CJ_temp2,CJ_temp3;

for (i=1;i<5;i++) {

CJ_temp1+=a[i]; //累加 }

CJ_data_a=CJ_temp1*100/400; //取4个数据取平均

for (i=1;i<5;i++) {

CJ_temp2+=b[i]; //累加 }

CJ_data_b=CJ_temp2*100/400; //取4个数据取平均

45

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

的影响,所以在设计电源模块的同时考虑加上隔离模块。在仔细考虑系统中电机和传感器的功率后,本文最终采用WRB050ZP-6W直流隔离模块。

3.4 电机驱动模块

在系统电路中,当Arduino以脉冲形式输出PWM控制信号时, 由于输出信号电流太小, 如果将此信号输入到直流电机中,是无法驱动电机的电机转动的。所以,就需要为系统电路增加一个电机驱动模块将Arduino的输出电流进行放大,让电机能够获得足够大的力矩, 从而驱动直流电机转动[10]。

本系统使用L298N 双H桥驱动芯片构成电机驱动电路如图3-4所示,驱动直流电机使得小车能够行走。该芯片是SGS公司生产的一款有15个引脚的双H桥电机驱动电芯片,具有很多的优点:

1.能驱动较高电压、大电流电机 2.内部包含两个H 桥 3.采用 TTL逻辑电平 4.可以外接检测电路

图3-4 直流电机驱动电路

3.5 传感器模块

传感器是通过一系列的敏感元件采集外界的信息,将这些信息转变为可以处

16

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

理的电信号的电子器件。对于灭火机器人而言,它就是感官。传感器模块电路设计的好坏,直接决定了小车能否轻松精准地完成按规定线路行走、避障、发现火源和灭火地任务[11]。本系统中的传感器模块包括三个部分:一是检测和确定火源位置的红外传感器电路、二是避开障碍物和测量与墙壁之间距离的红外测距传感器电路、三是检测场地中白线的灰度传感器。

3.5.1 火焰传感器

本系统根据文章之前的论证,采用红外传感器作为火焰传感器。红外传感器利用对红外线敏感的元件对火源产生的红外线进行检测并将其转换电信号,将此信号提供给控制器进行反应和处理。该传感器可以探测到波长在700nm~ 1000nm范围内的红外线,特别是对于波长在880nm左右的红外线,灵敏度最大,探测角度为60度。在使用过程中可以在机器人周围放置三个或者四个,形成180度或者360度方位的探测。

该传感器主要是根据输出电压会随着红外线光强的变化而变化,通过模数转换器将输出电压以数字形式直观反映出来。当小车越接近火源时,红外传感器的数值会越小。显示有火源时,输出电压数值一般在0.5~2.5V之间。在实际应用中,也会根据具体电路的需要在电路中串联一个滑动变阻器,用来调整传感器输出电压的数值范围。

在本系统中,本文所设计的红外传感器电路如图3-5所示。

图3-5 红外传感器电路

3.5.2 避障传感器

根据之前第二章的论证,本系统将红外测距传感器作为避障传感器。该传感器检测小车与障碍物之间距离的工作过程是:该传感器内部的红外线发射管发出

17

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

红外光束,当遇到障碍物时反射到接收管上,发出光线和接收光线与传感器本身形成一个等腰三角形,而光线和传感器之间的夹角以及发射管和接受管的距离固定,很容易得出三角形的高度,而此高度就是机器人距离障碍物的距离,通过设定阈值来规划机器人的行走路径,从而达到避障的效果。该传感器由于能精确地检测距离障碍物的距离,所以可以使避障更加精确灵活,完全满足灭火机器人的避障要求。

而本文选用夏普公司生产的型号为GP2D12的高精度红外测距传感器作为系统使用的红外测距传感器。该红外测距传感器的测量距离较短,有10cm~80cm的有效测量范围,有效输出电压范围是:2.45V~0.45V。GP2D12传感器的输出曲线图如图3-6所示:

2.45V0.45V10cmDISTANCE80cm

图3-6 GP2D12输出曲线图

为了能达到避障且能准确按照指定线路行走的要求,本系统中使用三个红外测距传感器GP2D12。这三个红外测距传感器,分别安装于小车的正前方和两侧。这样的一个设计可以测量出小车前、左、右部和墙壁的距离,可以通过不断调整所要求的距离阈值,实现准确灵活的避障功能。

在实践过程中,发现在传感器安装和使用的时候有几点需要注意,否则会影响检测效果。例如:前方传感器在安装时,不能将其放置在正前方,因为GP2D12的有效检测距离是10cm~80cm,所以假如将其放置在正前方超越了有效检测距离,会造成小车的误判无法进行正常地避障行走;在传感器距离值的使用时,由图3-7GP2D12输出曲线图可以看出,由于距离和输出电压不成线性关系,在一般情况下,将所得采样值送给程序运行之前,要运用一些数学处理如分段线性插

18

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

值法进行处理才能使用。在本系统中,由于不需要得到实际距离的精确值,所以直接将 A/D 采样的数值作为距离值放入程序中进行判断。

3.5.3 寻迹传感器

根据之前的论证,本文选择灰度传感器作为小车的寻迹传感器去实现寻迹行走功能。灰度传感器以光敏电阻为核心元件,利用了光敏电阻阻值随周围环境光线变化的规律:当外界光线照射到白线上时,光敏电阻接收的反射光线强烈;外界光线照射到黑线上时,光敏电阻接收的反射光线较弱。为了排除外在光线不稳定所带来的影响,所以灰度传感器自身带有一个光线发生装置。

灰度传感器内部主要有两个部件:高亮LED和光敏电阻,其中LED是作为一个光线发生源,光敏电阻作为光线反应部件,该传感器内部也包括限流电阻和电源等其他部件,内部电路图如图3-7。电路原理是:利用光敏电阻阻值能随着光强的变化而变化的规律,选择一个电阻串联在电路中进行分压,将光线反射强度的变化转变成电压的变化。由于在电路中可能会有高频脉冲信号的干扰,所以本文选择在光敏电阻两侧并联一个104电容。

图3-7 灰度传感器电路

3.6 运动执行装置

由于本文选择小车代替机器人,所以小车的底盘就是所要研究的运动执行装置,它有轮式和履带式两大类。以下是几种底盘的分类。

(1)两轮差动底盘。这种底盘一共有三个或四个轮子,其中有两个直流电机驱动的主轮和一个或者两个从动轮。之所以称为两轮差动底盘,是因为当两个主控轮的速度相同时,小车会向前后运动;当两个主控轮的速度不同时,小车就

19

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

会转弯。这种底盘具有快速,转弯角度小的优点,但是有无法爬坡的缺点。

(2)履带底盘。这种底盘就是模仿坦克的行走方式,可以适应很多地形,在控制小车的行进角度方面有良好的表现,而且运行特别稳定。但是如果采用履带式小车会影响小车的运动速度,这样不能满足快速行走的要求。

(3)后驱前转向底盘。该底盘在前后共有四个轮子,主要依靠一个直流电机来控制小车的行进方向,一个直流电机改变小车行进速度。采用这种方式控制的轮子底盘行驶速度快,但容易产生小车转向不便的问题。

通过以上述比较,由于场地没有坡度而且要求快速行走,所以选择第一种底盘。

20

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

开始沿左边或者右边墙行走设定电机,小车全速向右转设定电机小车全速往左转获取前方传感器采集值延时前方有无障碍重新初始化变量结束

图 4-11 寻迹程序流程图

根据图4-11程序流程图,本文设计的寻迹行走程序代码详细请查阅附录程序。

4.3 按键输入与显示设计

在本部分的设计过程中,实现的是简单的人机交互功能,简而言之就是系统命令的发送可以通过键盘按键形式的输入,和通过主界面上的菜单和小车动作执行的变化产生响应。按键模块、LCD 显示模块和菜单显示模块共同构成本模块。

31

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

4.3.1 按键模块

在Arduino中,按键的整过程包括:等待、闭合、释放三个阶段,其中含有抖动过程,其中按键情况有三种:未按下、单击、长击,如图4-12。本文的按键处理模块程序主要是用于按键的去抖,提高按键灵敏程度。

一键按下一键释放前言抖动闭合稳定后沿抖动释放稳定

图4-12 按键电平示意图

4.3.2 LCD显示模块

为了使小车的控制更加方便和直观,本文采用LCD显示屏对控制过程进行显示。把LCD的PSB引脚脚置低电位,LCD显示屏处于串行模式。LCD显示屏的完整传输过程为,首先在LCD显示屏接收到同步位字符串后,Arduino传输一个信号的起始字节时;在LCD显示屏接收起始字节结束后,重置传输计数器并且同步串行传输;紧接着,向LCD传输两个位字符串(RW位和RS位);最后,传输的第八位就是0。当LCD接收到起始字节时,每个指令由放入LSB的8位和0组成。串行通信时序图如图4-13。

32

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

CSSCLKSTDRWRSD7D6D5HigherD4D3D2D1D0Lowerdata Second byteBit stringdataFirst byte图4-13 LCD串行通信时序图

在设计程序中,要想对LCD进行编写界面就需要对照LCD串行通信时序图模拟电平变换。特别需要注意的是来要给LCD显示留有足够的时间,否则会影响LCD正常功能的实现这是因为LCD的数据和指令处理速度相比于Arduino的处理速度较慢。

4.3.3 多级菜单显示

多级菜单显示需要通过按键输入,本系统是采用5、6、7、8按键进行对菜单的控制。系统在上电或者复位之后,LCD屏上将主界面显示出来。按键的主要功能为:5键是选择主菜单;6、7键是改变当前菜单项;按8键可以返回到主界面。本系统是通过一个字符串数组作为全局变量存储菜单项,这样可以方便地修改菜单项数值。多级菜单转换图如图4-14。

单击5键进入单击5键进入主菜单单击8键退出选择菜单单击8键退出设置菜单

图4-14 多级菜单转换图

33

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

5 总结和展望

5.1 总结

随着经济和科学技术的不断发展,建筑的复杂程度和企业生产的多样性不断地增加,导致火灾发生频率和扑灭救援难度加大,火灾造成的经济财产损失和人员伤亡不断上升,所以灭火机器人越来越受到人们和社会的欢迎,相关方面地研究愈加地受到重视。

灭火机器人可以能在各种恶劣条件和危险环境下,取代灭火救援人员并帮助消防部门更好地应对各种重大和复杂的火灾,提供有效的灭火方案,极大地提高灭火救援的效率,降低灭火救援成本,可靠地保障生命财产安全。基于上述功能,灭火机器人越来越受到专家和消防部门的重视。除此之外,由于灭火机器人涉及的技术和学科很多,对灭火机器人的深入研究势必会带动相关学科和技术的深层次发展。

本文设计了灭火机器人的原型。该原型是以Arduino板为主控制器,其他外围子电路为辅助功能电路。由于Arduino具有强大的数据处理能力和稳定的软件运行平台,它的应用丰富了灭火机器人软件系统的功能,在软件设计时更为方便,加快了寻火和灭火的速度。主要内容是设计灭火机器人的硬件电路和软件程序,包括很多开发底层的软硬件驱动程序和电路。本文采用模块化和分而治之的设计思想,在灭火机器人的设计中主要包括以下几个方面:

1) 选择分立元件、芯片型号和小车的底盘;设计各个模块电路和绘制总电路;

规划电路板的分布;焊接元器件和调试电路板。

2) 利用Arduino IDE软件环境,对各个模块子程序分别进行编写和编译,然后

加入相应的驱动程序,最后对总的程序进行编译排错。

3) 对灭火机器人的硬件和软件进行联合调试,并结合场地检查各项功能能否实

现并记录测试结果,根据测试结果不断地改进。

5.2 展望

本文虽然已经完成对灭火机器人的设计,能有效地完成寻迹行走、避障、寻火和灭火功能,具有一定的优越性,可以运用在一些简单的灭火场合,但是在一

34

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

些方面的设计上还有改进的空间。

其优越性包括:

(1)将主控制器选为Arduino。Arduino是以AVR单片机为基础内核的开源扩展板,有丰富的外围电路,能够满足复杂的电路设计而且操作简单,设计方便,有着高效的执行效率和数据处理能力。改变了以往单片机只能粗糙地完成灭火任务,速度和效率不高的状况。而且由于Arduino的代码开源,使得灭火器人的软件设计更为简便。

(2)采用了合理高效的传感器。比如:在检测火源时选择了红外线传感器,这种传感器抗干扰性强,且能够表示出距离货源的位置;在实现避障功能时,选择红外线测距传感器,该传感器不仅可以实现避障,而且可以将小车以不同的距离与墙壁保持平行行驶。

(3)采用LCD显示屏实现人机交互功能。在主界面上设计了多级菜单显示的功能,使得控制过程更为简单和直观。 缺点包括:

(1)在电路设计时,没有把数字电路和模拟电路分开,这样由于在A/D 转换电路的存在,电路噪声会对采样电路产生影响。

(2)在设计电路时,没有利用光耦隔离控制电路与电机驱动电路,这样会造成直流电机运行时产生的干扰信号对 A/D 采样电路产生影响。

本文设计的灭火机器人在硬件方面还有较大的改进空间,比如加大小车车轮的半径和增大电机的功率,大大提高小车的行走速度;采用更先进的传感器,使得灭火更加精确。而在软件方面,优化小车的行走路径,缩短在行走上的时间等。

35

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

致 谢

在论文完成之际,我不由地想起同学、老师和学院对我研究工作的支持,心中的激动之情久久难以平复,在此我向他们表示深深的谢意和衷心的祝福。

其中我特别要感谢我的导师高莉。她认真负责的态度和仔细严谨的作风令我感动、科学紧凑的教学安排给我留下深刻的印象。她在我撰写论文开始后,特别重视,都要求我在每周三上午向她汇报论文的工作情况、帮助我解决硬件和软件设计上的问题。除此之外,她也会留给我一些与论文内容相关的问题让我去解决,以加强我对灭火机器人设计的理解。她总是循循善诱,不是直接教我硬件电路图和程序,而是通过启发式的教育让我自己去设计。高莉老师的帮助让我的设计和论文的撰写更加精细。

其次我要感谢我的同学。当我们在设计硬件电路和软件程序遇到问题时,我们会经常在一起互相探讨,一起查阅相关资料,让我感受到浓厚的学习氛围,教了我很多文件编写和画图软件的使用,这帮助我掌握了很多学习技巧,激发了我的学习兴趣。

最后我也要感谢我的学院。我很感谢我的学院能够给我提供这样一次机会,让我提升自己的学习和动手能力。学院提供了专门的场地和自习教室给学生进行软硬件设计和论文撰写,这让我能够有安静的环境进行设计和撰写任务。

这次的毕业设计是对我本科生阶段所学知识的应用和检验,也是对我所学知识的一次回顾,提升了我在实际硬件设计和论文撰写方面的能力,这无论是对我以后从实物设计工作还是理论研究都帮助甚大!

36

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

参考文献

[1] 刘极峰.机器人技术基础[M].北京: 高等教育出版社,2006. [2] 熊有伦,丁汉,刘恩沧.机器人学[M].机械工业出版社,1993. [3] 张英.机器人灭火的设计方案[J].西安邮电学院学报,2006年5

月:110-112.

[4] 梁毓明,徐立鸿.移动机器人多传感器测距系统研究与设计[J].计算机应

用,2008,28(6):340-343.

[5] 曹小松,唐鸿儒,杨炯.移动机器人多传感器信息融合测距系统设计[J].自

动化仪表,2009,19(5):4-8.

[6] 刘君华.智能传感器系统[M].西安:西安电子科技大学出版社,1999. [7] 陈寅.多传感器信息融合技术及其在智能机器人系统中的应用研究[D].

上海交通大学, 2000.

[8] 闫清东,魏丕勇,马越.小型无人地面移动机器机动平台发展现状和趋势

[J].机器人,2004,26(4):373-379.

[9] 刘祚时.竞赛机器人控制系统的研制[J].机电工程,2005,22 (6):53-56. [10] Koeing S, Likhachev M. Improved fast replanning for robot navigation in

the unknown terrain Washington DC:Proceedings 2002 IEEE International Conference on Robotics and Automation , 2002.

[11] Yah ja A, Singh S, St entz A. An efficient on-line path planner for out-door

mobile robots . Robotics and Autonom ous Systems, 2000, 32(2) . [12] Joga D. Setiawan, Mochamad Subchan and Agus Budiyono, Virtual

Reality Simulation of Fire Fighting Robot Dynamic and Motion , Studies

in Computational Intelligence, 2009, Volume 192/2009, 191-203.

[13] 肖海荣,刘文江,潘为刚.比赛用灭火机器人设计与实现[J].微计算机信

息,2007(2):283-285.

[14] 陈小艳,颜云华.基于 AVR 单片机的灭火机器人设计与实现[J].计算机

与信息技术,2008(7):29-30.

[15] 崔平,翁正新.机器人灭火创新实验的设计与实现[J].实验室研究与探

37

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

索,2006 (3):294-296.

[16] 李小燕, 陈帝伊, 马孝义. 智能灭火机器人的设计与实现[J].电子设计

工程, 2010 (3):294-296.

[17] 张磊.机器人灭火方案的设计[J].中国校外教育,2009,10(6):294-296. [18] 周兆匡,任胜兵.基于门口检测策略的灭火机器人的设计[J]. 中国科技

信息 2011,3(12) :122-123.

[19] 王飞,乔永亮,何东健,陈帝伊..基于多传感器信息融合的灭火机器人设

计[J].微计算机信息, 2010, 29:156-158.

[20] 郭瑞璜.日本开发应用消防机器人的现状[J].消防技术与产品信

息,2011,02: 87-88 .

[21] R.Yang and M.Pollefeys,Multi-resoulution real- time stereo on commodity

graphics hardware[C],Proceedings of the IEEE CVPR 2003,vol.l,211-217. [22] Souhila K, Karim A.Optical flow based robot obstacle avoidance.

International Journa Advanceed Robotic Systems,2007,4(1):13-16.

38

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

附 录

附录一:主程序

#include \

#define GFD() AD_get(1) //定义前距离值返回函数 #define GLD() AD_mget(2) //定义左距离值返回函数 #define GRD() AD_mget(3) //定义右距离值返回函数 #define GL() AD_get(4) //定义前灰度值返回函数 #define GF() AD_mget(10) //定义火焰值返回函数 #define GS() AD_mget(0) //定义声音值返回函数 void ShowAllAD(void); void Menulist(void); void Fire_Fight(void); void Menu_cfg(uint8 list); void Load_Var(void); void Out_Door(void); void Sound_Start(void); uint8 Follow_Fire(void);

uint8 Follow_Wall(int16 wall_dis); uint8 Check_Fire(void); uint8 Pout_Fire(void); uint8 Go_Home(void); int32 PID_set(int32 e); int32 pid_e1 = 0; int32 pid_e2 = 0;

uint8 wall = 0; //用wall变量标记遇墻情况 uint8 room = 0; //当前房间 1,2,3,4,5 uint32 fire_time = 0; //记录灭火时间 volatile uint32 Time_ms = 0;

39

江苏师范大学本科生毕业设计 基于Arduino的灭火机器人设计

volatile uint16 gray_break; //设置灰度传感器的阈值 volatile uint16 fire_break; //设置红外传感器的阈值 volatile int32 Kp; volatile int32 Ki; volatile int32 Kd;

volatile uint16 left_break; //左边 volatile uint16 right_break; //右边 volatile uint16 front_break; //前面 volatile uint16 turn_left; //转弯 volatile uint16 turn_round; //后退 uint8 menu[][17]={ \确定 上下 返回\ \设定灰度阈值..\ \设定火焰阈值..\ \设定 PID P值..\ \设定 PID I值..\ \设定 PID D值..\ \设定左方阈值..\ \设定右方阈值..\ \设定前方阈值..\ \设定转向时间..\ \设定倒退时间..\ \已经没有下一条..\ }; int main(void) {

uint8 Welcome[]={

\江苏师范大学电气学院\ 吕中兴

40

本文来源:https://www.bwwdw.com/article/smlv.html

Top