灭火机器人课程设计报告

更新时间:2023-04-30 18:50:02 阅读量: 综合文库 文档下载

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

. ..

智能机器人课程设计

设计题目:灭火智能机器人的设计和实现z. .

. ..

目录

第1章机器人系统总体方案设计 (3)

1.1 设计目标 (3)

1.2 机器人功能设计及指标要求 (3)

1.3 机器人系统总体结构设计 (4)

第2章机器人系统硬件详细方案设计 (5)

2.1 传感器选型 (5)

2.1.1 超声波测距传感器 (5)

2.1.2 红外避障传感器 (5)

2.1.3 火焰传感器 (5)

2.2 机器人系统硬件连接图 (6)

2.2.1 STM32单片机最小系统 (6)

2.2.2 电源模块 (7)

2.2.3 红外避障传感器 (7)

2.2.4 超声波测距传感器 (8)

2.2.5 火焰传感器 (8)

2.2.6 电机驱动模块 (8)

第3章机器人系统软件详细方案设计 (9)

3.1 主函数 (9)

3.2 超声波测距程序 (10)

3.3 红外避障引脚设置程序 (12)

3.4 电机驱动程序 (12)

3.5 火焰检测程序 (12)

第4章机器人系统开发调试步骤 (13)

4.1 传感器选型和引脚分配 (13)

4.2 传感器独立测试 (13)

4.2.1 超声波测距传感器测试 (13)

4.2.2 红外避障传感器测试 (13)

4.2.3 火焰传感器测试 (13)

4.3 电机独立测试 (14)

4.4 综合测试 (14)

第5章实验中遇到的故障及解决方法 (15)

第6章收获与体会 (16)

z. .

. ..

第1章机器人系统总体方案设计

1.1 设计目标

本次课程设计的目标是:在一辆两驱智能小车的基础上,搭载各种传感器,设计出一款具有自动避障和搜寻火点功能的智能机器人,可以完成简易的灭火功能。设定的实验环境为带有隔板障碍的4*4方格迷宫,如图1-1所示。起火点随机放置在其中一个方格中。机器人需要从起点开始搜寻火点,躲避障碍,最终靠近火点一定距离时,小车停止运动,进行接下来的灭火操作。

图1-1 机器人灭火场地布局图

本课设旨在通过一类典型智能机器人的设计、调试,掌握各环节和整个智能机器人系统的调试步骤与方法,加强基本技能训练,培养灵活运用所学理论解决控制系统中各种实际问题的能力。

1.2 机器人功能设计及指标要求

该智能机器人系统的主要功能包括:可以检测周围环境并发现障碍;可以灵活前后行进、停止和转向;可以根据障碍位置做出避障决策;可以准确搜寻到火焰位置并在火焰面前停止并进行灭火等。由于实验环境设定为方格迷宫,所以机器人的路径规划可以转化为迷宫的遍历问题,而且转向角度简化为90°和180°的组合问题。

整个搜寻过程中,小车尽量不碰撞到障碍物和墙壁,且从出发到找到火点的时间应在3分钟内。在成功灭火后可以继续进行其他火源的搜寻,即可以连续完成多点灭火。

z. .

. ..

1.3 机器人系统总体结构设计

本智能机器人系统的结构分为控制器(STM32单片机)、超声波测距传感器、红外避障传感器、火焰传感器、电源模块、电机驱动模块及直流电机等模块,总体结构框图见图1-2。

图1-2 总体系统框图

控制器采用STM32单片机,负责传感器数据的采集和电机等执行元件的控制,同时进行避障决策,对小车的运行方式和运行轨迹给出整体规划。

超声波测距传感器和红外避障传感器相互协调,负责小车周围障碍物的探知。主要负责探测小车的前、左、右三个方向是否有挡板遮挡,以及对小车的路径偏移进行纠正。

火焰传感器可以测量到传感器距离火焰的距离,可以用作起火点搜寻的依据。

电机驱动模块负责左右两轮电机的分别控制,可以实现电机的正反转和调速,从而完成小车的启停和转向。

电源模块负责给单片机和各传感器及电机驱动模块供电。

灭火设备可以选用风扇或者水泵等,依据实验室已有资源确定。

z. .

. ..

第2章机器人系统硬件详细方案设计

2.1 传感器选型

2.1.1 超声波测距传感器

超声波传感器包括超声波发射器、接收器与控制电路,主要用于距离检测,可测量2cm-400cm的非接触式距离,测距精度可达高到3mm。其测距原理为利用单片机引脚触发超声波发射器发送超声波,超声波在有阻挡的情况下,反射回超声波接收器,利用单片机中的计数器计算从发射到接收回波所用的时间,再将时间通过一定的换算转换为以厘米或者毫米为单位的距离值。

本机器人系统使用1个超声测距传感器,安装在小车正前方,用于检测小车正前方是否有挡板障碍。该传感器为HC-SR04,具有Vcc、Trig、Echo、Gnd四个引脚。

2.1.2 红外避障传感器

红外避障传感器利用物体的反射性质,具有一对红外线发射与接收管,发射管发射出一定频率的红外线,在一定范围内,如果没有障碍物,发射出去的红外线,随着传播距离变远而逐渐减弱,最后消失;如果有障碍物(反射面),红外线遇到障碍物(反射面),被反射到后由接收管接收;传感器检测到这一信号,就可以确认正前方有障碍物。经过电路处理后,信号输出接口输出数字信号,送给单片机。

本机器人系统共使用4个红外避障传感器。传感器感应障碍物的距离阈值可以通过调节传感器上的变阻器来改变。安装在小车左方和右方的传感器检测距离较大,用来检测正左正右侧是否有挡板障碍。由于直行时小车左右轮速不能做到完全一致,所以会出现偏离路径的情况,因此我们又加入了安装在小车左前方和左后方的2个传感器。这2个传感器检测距离较小,用于检测小车直行时的偏移,对路线进行校正。所用红外传感器有Vcc、Gnd、Out三个引脚。

2.1.3 火焰传感器

能够探测到波长在700纳米~1000纳米范围内的红外光,探测角度为60,其中红外光波长在880纳米附近时,其灵敏度达到最大。远红外火焰探头将外界红外光的强弱变化转化为电流的变化,通过A/D转换器反映为数字量数值的变

z. .

. ..

化。外界红外光越强,即距离火焰越近,则数值越大;红外光越弱,即距离火焰越远,则数值越小。

由于实验环境为方格迷宫,火焰相对于机器人的方向较为固定,所以为了简化控制,本机器人系统使用1个火焰传感器,安装小车正前方。如果是更加广阔的搜索空间,则可以使用2个甚至更多的火焰传感器放在小车的左右两侧,采用差分方式判断火焰传感器相对于小车的方向角。所用火焰传感器有Vcc、Gnd、Out三个引脚。

2.2 机器人系统硬件连接图

智能机器人的控制核心为STM32F103RBT6单片机,同时底板上设置了多种传感器模块和通信模块的接口。下面按照模块划分,简要介绍一下本机器人系统主要用到的各部分的硬件设计电路。

2.2.1 STM32单片机最小系统

图2-1 单片机最小系统电路图

单片机最小系统电路包括STM32F103RBT6单片机、复位电路、时钟电路和一些特殊引脚的设置等。

此外,在使用该单片机时应注意BOOT0引脚的设置,下载代码时应设置BOOT0为1,运行代码时应设置BOOT0为0。这里的设计是用跳线帽使BOOT0与高低电平相连,使用时切记使BOOT0的跳线帽处在正确的位置上。

z. .

.

..

z. .

2.2.2 电源模块

图2-2 电源模块电路图

电源电压输入后经滤波、稳压等处理后,得到5V电源。可供使用5V电源的外设使用。

之后经过AMS1086-3.3电压转换芯片后输出3.3V电压,可供单片机和使用3.3V电源的外设使用。为了方便供电使用,电源模块还引出了3.3V的排阵。2.2.3 红外避障传感器

图2-3 红外避障传感器接口

避障传感器的接口为原理图中的P15排针。本系统使用了4个红外避障传感器,避障信号输出引脚由PB8、PA15、PA12、PA11四个引脚接收。

. ..

2.2.4 超声波测距传感器

图2-4 超声波测距传感器接口

超声波测距传感器的触发引脚Trg由PC13引脚控制。当有信号反射回来时,Echo引脚输出高电平,该引脚连接单片机的PB7引脚。

2.2.5 火焰传感器

图2-5 火焰传感器接口

火焰传感器的输出为Flame模拟信号,与单片机的ADC0(PA0)相连。

2.2.6 电机驱动模块

图2-6 电机驱动电路图

z. .

. ..

驱动模块的控制信号输入来自单片机的4个PWM信号,引脚对应如下:PWM1为PA6,PWM2为PA7,PWM3为PB0,PWM4为PB1。输入信号经过74hc244芯片实现电流放大,再输入BTS7960芯片进行电机驱动。使用1片BTS7960芯片可以实现电机的半桥驱动,每2片芯片可以组成一个H桥电路对电机进行正反向控制。本机器人的电机驱动模块采用4片BTS7960芯片进行H桥电路驱动,输出信号分别控制2个电机,使小车左右后轮完成相应的动作。

第3章机器人系统软件详细方案设计

根据机器人的系统结构及功能指标,我们将系统的软件功能模块分为主函数、超声波测距程序、红外避障程序、电机驱动程序、火焰检测程序等。程序采用STM32单片机的库函数方式进行编写。下面简要介绍各个软件功能模块的实现过程。

3.1 主函数

主函数主要进行各个模块函数的调用,以及进行火焰判断和路径规划。程序框图如图3-1所示。

主程序的思路如下:

(1)小车的路径判断按照“先左、再前、再右、再后转”的原则进行,即当检测到左侧没有挡板时,小车左转90°;当检测到左侧有挡板,但

是前方无障碍时,小车直行;当左方、前方都有障碍,但是右方没有

障碍时,小车右转90°;当左右前三个方向都有障碍时,小车后转

180°向后行进。

(2)直行时由于小车行进有误差,容易偏离直线,所以使用两个红外传感器进行路径的微调。当小车行驶在通道中心线上时,两个传感器都处

于无障碍的状态中;当小车左偏时,左侧传感器检测到障碍,右侧传

感器检测无障碍,进行小角度的右转调整;小车右偏时同理。

(3)当火焰传感器检测到小车前方有火焰时,小车不进行路径判断,直接前行接近火焰,直到距离火焰一定距离时停止,进行灭火操作,直到

将火焰熄灭,继续进行路径判断和火焰搜寻。

z. .

. ..

图3-1 主程序框图

3.2 超声波测距程序

超声波测距传感器的工作原理为:单片机计算从发射到接收回波所用的时间,再将时间通过一定的换算转换为距离值。

定时让IO触发TRIG测距,有信号返回,通过ECHO输出高电平,高电平持z. .

. .. z. . 续的时间就是超声波从发射到返回的时间。距离计算方法为:

输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32的定时器,除了

TIM6和TIM7,其他定时器都有输入捕获功能。STM32的输入捕获,是通过检测

TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,

将当前定时器的值(TIMx_CNT )存放到对应的通道的捕获/比较寄存器

(TIMx_CCRx )里面,完成一次捕获。使用这个功能,我们可以较为方便地得到

超声波发射到接收所用的时间。

这里我们用TIM4CH2进行输入捕获,用TIM2控制触发脉冲的产生。计算得

到的距离储存在全局变量lenth 中,供主程序调用。

程序流程图如图3-2所示。

图3-2 超声波测距程序框图

开始 发出触发信号 捕捉到上升沿? 记录上升沿时间t1 捕捉到下降沿? 记录下降沿时间t2 计算障碍物距离

N N Y Y

. .. 3.3 红外避障引脚设置程序

红外避障传感器是依据红外线的反射来工作的。当遇到障碍物时,发出的红外线被反射面反射回来,被传感器接收到,信号输出引脚就会给出低电平提示信号。

本机器人系统的红外避障信号采用直接检测的方式进行,即将引脚模式设置为下拉输入模式,直接读取引脚电平。当引脚读到0时,则表明有障碍。因为操作较为简单,所以这部分子程序只给出了对应引脚的初始化和宏定义。

3.4 电机驱动程序

每个电机都由一个H桥电路驱动,由两个输入信号共同控制。两个电机共由4路PWM波进行控制,PWM波的产生由STM32单片机TIM3产生。同一电机的两路PWM波占空比之差决定了该电机的转向和转速,占空比之差的绝对值越大,电机转速越快,占空比相同时电机停转。

结合上述的电机驱动原理,小车运动方式可以通过如下方式实现:四个控制信号均为低电平时,电机停转,小车停止;电机的左右轮电机同向等速运行时,可以实现前行或后退的动作;小车的左右转向通过两轮差速来实现。在本机器人的设计中,需要实现的90°和180°固定角度转弯,是通过电机定速运动和延时的配合完成的,通过不断调试确定出最佳的旋转时间。

在电机子程序中设置Set_motor(u16 L1,u16 L2,u16 R1,u16 R2)函数修改4路PWM占空比,然后在主函数中调用该函数即可完成轮速的设置。

3.5 火焰检测程序

火焰传感器的输出量是一个模拟量,与距离火焰的距离有确定的关系。因此只需要对这个模拟量进行AD转换,得到对应的数字量,控制器就可以大致判断前方是否有火焰,以及距离火焰的距离。

子程序中通过Get_Adc(u8 ch)函数得到对应的数字量,供主程序调用。同时在主程序中设置数字量的上下阈值,当数字量大于最低阈值时,表明前方有火焰,前行靠近;当数字量大于最高阈值时,表明距离火焰的位置足够近,可以停止运动开始灭火。

z. .

. ..

第4章机器人系统开发调试步骤

4.1 传感器选型和引脚分配

在已有小车的框架上,选择需要的传感器种类和个数,并大致规划传感器的安装位置及安装方式。同时对单片机的内部资源,如定时器通道等进行分配,确定各外设对应的单片机控制引脚。

该部分在硬件设计部分已有介绍,不再赘述。

4.2 传感器独立测试

4.2.1 超声波测距传感器测试

编写超声波传感器测距子程序,即输入捕获通道设置和定时器产生触发脉冲函数,得到检测量——障碍物的距离(cm),通过每获得一次距离就通过串口发送一次距离数值的方式来进行测试。

完成程序的编写后,对程序进行编译,并下装到小车的单片机中。在USB 转串口线连接的前提下,打开串口调试助手。安装超声波传感器,并给小车通电后,改变超声波传感器前的障碍物的距离,观察串口调试助手接收到的数据是否与实际距离一致。

4.2.2 红外避障传感器测试

编写红外避障传感器子程序,即完成传感器的引脚配置。主程序完成初始化后,在循环中完成对红外避障传感器输入引脚的扫描和判断,通过串口发送结果。

完成程序的编写后,对程序进行编译,并下装到小车的单片机中。在USB 转串口线连接的前提下,打开串口调试助手。连接各个红外传感器引脚,给小车通电后,改变红外避障传感器前的障碍物的距离,观察串口调试助手接收到的指示信号是否与传感器上的指示灯一致。

4.2.3 火焰传感器测试

编写火焰传感器子程序,完成传感器输出的模拟信号的AD转换。主程序完成初始化后,在循环中调用得到AD转换结果的函数,并通过串口发送得到的数字量。

完成程序的编写后,对程序进行编译,并下装到小车的单片机中。在USB z. .

. ..

转串口线连接的前提下,打开串口调试助手。连接火焰传感器引脚,给小车通电后,改变火焰传感器前的火焰的距离,观察串口调试助手接收到的数字量大小。

4.3 电机独立测试

编写电机控制子程序,即4路PWM通道设置和占空比设置函数。主程序中完成初始化后,通过调用占空比设置函数,修改占空比,改变小车两轮轮速和转向。

完成程序的编写后,对程序进行编译,并下装到小车的单片机中。给小车通电后,观察小车的连续直行、连续左转、连续右转等操作是否可以正常进行接下来可以通过加入延时来控制每次转向的角度,测试左转90°、右转90°、左转180°三种动作在固定轮速下的延时时间长短。

4.4 综合测试

以上步骤完成后,我们将小车放置在实现搭建好的迷宫环境中进行实验。

首先为无火焰走迷宫实验,主要目的为:检验直角弯、180°旋转的角度是否准确;检验直线校正是否可以达到较好的效果,使小车路线平滑且接近路径中线。

通过小车走迷宫实验,我们发现的问题是小车在左(右)转弯时,由于检测左(右)障碍物的传感器在小车的正左(正右),所以转向后直行有撞到障碍物边缘的可能性,而且90°转弯结束后所处位置仍可能被红外传感器检测为左(右)侧无障碍,在不适当的位置重复转弯,所以我们采取的措施是当检测到需要左(右)转向时,执行“直行——左(右)转——直行”的操作,并通过实验调试出了比较合适的直行延时时间。同时我们对于传感器的位置进行了微调,使其能起到比较好的转向、路线校正的效果,也对于程序中的其他延时做出了调整。

第二步为迷宫中的火焰搜寻实验,主要目的为调整判断火焰距离的数字量的上阈值和下阈值。采用如图5-2的火点位置,小车从圆点所示位置出发,若小车拐弯后可以忽略左转优先原则,直接朝向火焰走去,如图中轨迹所示,则证明下阈值有效。若小车可以停在距离火点应有距离上,则证明上阈值有效。根据实验情况,我们将上下阈值改为了3920和1500。

z. .

. ..

z. .

图4-2 迷宫中的火焰搜寻实验示意图

完成上述两步实验后,让小车从起点出发,进行完整的火焰搜寻活动,并设

置多个火点。实验结果为小车可以在迷宫中流畅行驶,并在40s 内可以找到火源,

在第一个火源熄灭后还可以继续运动,在迷宫中寻找下一个火源,达到预期设计

目标。

完成后的小车外观图如图4-3。(最前方的红外传感器未用到,上方火焰传感

器只用到了其中一个)

图4-3 小车外观图 第5章 实验中遇到的故障及解决方法

问题[1]:在测试中,小车检测到火源后没法停住,会直接撞到火源

解决方法:给小车装一个超声波测距,当同时在火焰传感器检测到火源,同时超

声波的距离小于十厘米时,小车就会停止前进,从而解决了这个问题。

问题[2]:在蔽障时,会偶尔撞到障碍物,尤其在检测到火源后转弯的时候。

解决方法:将红外蔽障传感器的灵敏度调高一点,同时将以前在转弯时保持内测

轮子不转动改为内测转速慢,外侧转速快的差速转弯,从而解决了小车在避障时

. ..

容易撞到障碍物的问题。

第6章收获与体会

这次实验给了我很多的感想,智能机器人的课程设计是一个比较漫长的过程,从点滴做起,过程很重要,不要一心只想着结果,要不然最终就以失败告终,俗话说欲速则不达,凡事从点滴做起,只有循序渐进才能让实验取得最后理想的成果,我们只有先做好一些关键的步骤,从中积累经验,再把这一系列的步骤串联起来,是一个连续的过程,不能有间断的飞跃,最后才能达到理想的成果。理论与实践相结合,理论知识学的好,不一定能很好的运用到实践中去,理论毕竟只是理论,是前世很多人积累下来的经验,有的有几千年之久,然而现实是不断变化的,我们不能只纸上谈兵,不能只重视理论或者实践,要能够很好的把理论与实践结合起来,这样才能很好的完成实验。在老师的精心指导和我们自身的努力下,总算有我们值得高兴的成果,做这种研究性实验给我最大的感触是对与那种更好成果的执着精神,坚持不懈,犹如我们走在迷宫一样,试着探寻每一条能通往出口的路,我们将在实验的过程中寻寻觅觅,直到找到那一条通往成功的路,将理论与实践很好的结合是做好实验的关键。

z. .

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

Top