消防培训智能消防机器人.docx
《消防培训智能消防机器人.docx》由会员分享,可在线阅读,更多相关《消防培训智能消防机器人.docx(34页珍藏版)》请在冰点文库上搜索。
消防培训智能消防机器人
智能消防机器人
第一章引言……………………………………………………………………..2
1.1课题背景……………………………………………………………………2
1.2IntelligentDesignandmanufactureofelectriccarsFire..2
1.3实现功能……………………………………………………………………3
1.4模拟房子介绍………………………………………………………………3
第二章系统整体方案设计……………………………………………………….4
2.1系统硬件设计……………………………………………………………..4
2.2系统软件设计……………………………………………………………..4
第三章硬件设计…………………………………………………………………...5
3.1电源管理模块………………………………………………………………5
3.11稳压芯片LM7805、7806CV……………………………………………5
3.12电源模块电路原理图………………………………………………….5
3.2电机驱动芯BTS7960……………………………………………………….6
3.21BTS7960的逻辑功能……………………………………………………..6
3.22外形及封装……………………………………………………………..6
3.23BTS7960电路原理图…………………………………………………….7
3.3地面灰度检测传感器ST188……………………………………………….7
3.3.1ST188特点…………………………………………………………….7
3.3.2检测原理………………………………………………………………7
3.3.3应用范围………………………………………………………………7
3.3.4外形尺寸(单位mm)…………………………………………………7
3.3.5ST188原理图………………………………………………………….8
3.4火焰传感器………………………………………………………………….8
3.4.1火焰传感器使用……………………………………………………….8
3.5报警电路…………………………………………………………………….8
第四章软件设计…………………………………………………………………9
4.1灭火机器人行进路线分析…………………………………………………9
4.2软件流程图…………………………………………………………………11
4.3软件开发平台介绍………………………………………………………….11
第五章调试记录及实验心得……………………………………………………12
5.1调试记录…………………………………………………………………....12
参考文献………………………………………………………………………….13
附录:
程序清单………………………………………………………………..13
第一章引言
1.1课题背景
如今国内外对消防设备的研究越来越重视,投入也越来越多。
慢慢趋向于自动化、智能化。
实现灭火、火场侦查、危险物品泄露探测、破拆等功能。
本文设计主要完成的功能是扑火救人。
本设计是基于STC89C52单片机对电动车进行控制的自动控制系统,研究的内容有:
主要方案论证、硬件设计、软件设计、系统实物调试。
硬件设计主要有电机驱动电路、热光源采集电路、声音采集电路、电风扇驱动电路、停车信号采集电路、LCD显示电路、电源电路及单片机最小系统。
本系统以STC89C52单片机作为控制核心,通过接受到热光源采集电路传送的信号和声音采集电路传送的信号,对电动车电机进行控制,从而实现对电动车的转向控制。
当两处着火,一处是物品,另一处是人着火;电动车通过声音识别,优先将人身上的火扑灭。
其所实现的功能相当于简易消防机器人。
【关键词】消防车热光源STM32单片机LM298ST178
1.2IntelligentDesignandmanufactureofelectriccarsFire
Abstract
Today,fire-fightingequipmentathomeandabroadmoreandmoreemphasisonthestudy,inputmoreandmore.Slowlytendstoautomationandintelligence.Toachievefirefighting,firedetection,hazardousmaterialsleakdetection,ripperandotherfunctions.Thisfunctionisprimarilydesignedtocompletefirefightingtosavepeople.
ThedesignisbasedSTC89C52microcontrollertocontrolforelectricvehiclecontrolsystemtostudythecontentsofthefollowing:
themainprogramfeasibilitystudies,hardwaredesign,softwaredesign,systemdebugginginkind.Hardwaredesign,mainmotordrivecircuit,thermallightsourceacquisitioncircuit,thesoundcollectioncircuit,fandrivecircuit,stoppingthesignalacquisitioncircuit,LCDdisplaycircuit,powercircuitandmicrocontrollerminimumsystem.ThesystemSTC89C52microcomputerasthecontrolcore,throughtheacquisitioncircuitreceiveslighttransmittedthermalsignalandvoicesignalacquisitioncircuittransmissionofelectricvehiclemotorstobecontrolledinordertoachievesteeringcontrolforelectricvehicles.Whenthetwofire,oneistheitems,anotherisahumanonfire;electricvehiclethroughvoicerecognition,giveprioritytothehumanbodyfire.Theyachievethefunctionalequivalentofsimplefire-fightingrobot.
【Keywords】:
fireengine、hotlight、STM32MCU、LM298ST178
1.3实现功能
制造一个自主控制的机器人在一间平面结构房子模型里运动,找到一根蜡烛并尽快将它熄灭,这个工作受地面摩擦、机器人惯性、机器人电机的转数差、齿轮箱与轮子的摩擦、电压变化等多个因素影响,它模拟了现实家庭中机器人处理火警的过程,蜡烛代表家里燃起的火源,机器人必须找到并熄灭它。
1.4模拟房子介绍
模拟房子平面图单位:
mm
比赛场地的墙壁22cm高,由KT板做成。
墙壁为白色。
比赛场地的地板将是贴有导航黑线的KT板。
所有的房间和走廊的地板上都是光滑的。
场地中所有的门口并没有门,而是一个适当宽度的开口。
第二章系统整体方案设计
2.1系统硬件设计
本次设计的目的是设计一个在规定区域能自主搜索火源并实施灭火的智能机器人小车,本次设计使用的主控芯片使用了STC89C52单片机,所以设计重点在传感器和电机驱动上。
系统总体设计框图如图2.1:
图2.1系统总体设计框图
2.2系统软件设计
灭火机器人系统软件
电机控制模块
传感器模块
前进子程序
停止子程序
灰度子程序
壁障子程序
火焰子程序
转弯子程序
软件设计方案是以上述硬件电路为基础的,包括电机控制模块、传感器模块的程序设计与实现。
程序设计采用C语言编写,编程环境是集成KeilSTM32编译器的集成编译环境。
灭火机器人设计的软件设计结构框图如图2.2所示。
图2.2系统软件设计框图
第三章硬件设计
3.1电源管理模块
电源是任何一个系统稳定运行的前提条件,为了使机器人运行稳定,单片机和电机的供电系统采用独立供电的方法。
3.1.1稳压芯片LM7805CV、LM7806CV
LM7805CV的技术指标如下表:
表3-1稳压芯片7805参数
LM7806CV的技术指标如下表:
表3-2稳压芯片7806参数
3.1.2电源模块电路原理图
由于单片机及所有的传感器系统供电采用的是5V和6V的电源,所以在电源的处理上采用了稳压芯片7805CV和7806CV。
火焰子程序
3.2电机驱动芯片BTS7960
BTS7960是NovalithIC家族三个独立的芯片的一部分:
一是p型通道的高电位场效应晶体管,二是一个n型通道的低电位场效应晶体管,结合一个驱动晶片,形成一个完全整合的高电流半桥。
所有三个芯片是安装在一个共同的引线框,利用芯片对芯片和芯片芯片技术。
电源开关应用垂直场效应管技术来确保最佳的阻态。
由于p型通道的高电位开关,需要一个电荷泵消除电磁干扰。
通过驱动集成技术,逻辑电平输入、电流取样诊断、转换速率调整器,失效发生时间、防止欠电压、过电流、短路结构轻易地连接到一个微处理器上。
BTS7960可结合其他的BTS7960形成全桥和三相驱动结构。
3.2.2外形及引脚结构:
3.2.3BTS7960电路原理图:
3.3地面灰度检测传感器ST178
3.3.1ST178简介:
ST178H红外光电传感器模块是基于ST178H传感器设计的一款红外反射式光电开关。
传感器采用高发射功率红外光电二极管和高灵敏度光电晶体管组成,输出信号经施密特电路整形,稳定可靠。
3.3.2ST178特点:
1、采用高发射功率红外光电二极管和高灵敏度光电晶体管组成。
2、检测距离可调整范围大,4-10mm可用。
3、采用非接触检测方式。
3.3.3检测原理:
传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,光敏三极管一直处于关断状态,此时模块的输出端为低电平,指示二极管一直处于熄灭状态;被检测物体出现在检测范围内是,红外线被反射回来且强度足够大,光敏三极管饱和,此时模块的输出端为高电平,指示二极管被点亮。
3.3.4外形尺寸(单位mm):
图3.5ST188实物图
3.3.5ST178与单片机连接原理图:
图3.4ST178电路图
3.4火焰传感器:
此传感器本品可广泛应用于灭火机器人比赛中测量火焰值、足球比赛时,用于确定足球的方向。
下图为火焰传感器实物图。
图3.8火焰传感器实物图
3.5报警电路:
当单片机的P1.0I/O口输出一个高电平时,通过非门后使三极管基级为低电平,此时三极管处于截止状态,蜂鸣器不工作;当单片机的P1.0I/O口输出一个低电平,通过非门后使三极管基级变为高电平,三极管处于放大工作状态,驱动蜂鸣器发出报警声音。
声音报警电路如图3.11所示。
第四章软件设计
4.1灭火机器人行进路线分析
结合我们小车的特点和前面分析,我们选择3—2—1—4的遍历顺序。
开始时,小车处于3号和4号房间中间,由图可知,沿着右走的方案比较好,因此我们采用是右手规则,首先搜索的是3号房间,如图。
当在3号房间发现火源时,小车进入房间并灭火,灭火后按原路返回;如没有发现火源,小车继续按右手规则搜索房间,直到搜索4号房间,不管有没有搜索到火源,从4号房间出来都绕着4号房间返回起点,因为回家过程中的时间不记入总时间,而绕行比较安全,小车比较好控制。
4.2软件流程图
图4.2灭火小车软件设计流程图
4.3软件开发平台介绍
本次设计软件的开发主要采用KeiluVision4软件编写。
使用KeiluVision4工具时,项目开发流程和其它软件开发项目的流程极其相似:
1、创建一个项目,从器件库中选择目标器件,配置工具设置;
2、用C语言或汇编语言创建源程序;
3、用项目管理器生成你的应用;
4、修改源程序中的错误;
5、测试,连接应用。
编程语言选用C语言。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,并且C语言以其结构化,容易维护,编写不依赖计算机硬件的应用程序,容易移植的优势满足开发的需要。
而汇编语言作为传统的嵌入式系统的编程语言,具有执行效率高的优点,但其本身是低级语言,编程效率较低,可移植性和可读性差,维护极不方便。
而KeilSTM32编译器完全遵照ANSIC语言标准,支持C语言的所有标准特性。
另外,直接支持STM32结构的几个特性被添加到里面。
Keil宏汇编器支持STM32及其派生系列的全部指令集。
第五章调试记录
5.1调试记录
⏹地面灰度传感器:
测试距离2.5cm,黑地面输出电压1.3-1.5V;白纸输出3.8-4.5V;
⏹前方火焰传感器最远测试距离2.5m,此次使用有效距离0.8m,输出电压0.6V,探测角度+30°。
⏹热光源信号采集电路调试:
热光源采集电路分为四路,对四个方向的光强进行采集。
根据光强电压转换原理:
光越强,则电压越高;光强越弱,电压越低。
将热光源信号采集模块中的灵敏度调节到最佳状态。
将蜡烛火焰靠近红外接收二极管,调节对应的参考电压的可调电位器,使对应输出指示灯变亮(即接收到了热光源信号,输出低电平)。
再不断改变蜡烛与红外接收二极管之间的距离,将检测距离调节到最远时,达2.1米。
此时灵敏度也最佳。
但是在外界环境光比较强的地方,热光源信号采集电路常出现错误判断。
数据记录如下表1:
测量
输出
左路
中左路
中右路
右路
正确输出
左路
中左路
中右路
右路
测量1
0
1
1
1
0
1
1
1
测量2
1
0
0
1
1
0
1
1
测量3
1
0
1
1
1
0
1
测量4
0
1
1
0
1
1
1
0
表一
根据分析,外界光也有近红外,当红外接收二极管暴露在外时,受外界红外光的影响,产生错误判断。
解决的办法是,将红外接收二极管用直纸筒卷起来,防止外界环境影响。
其它模块电路出现的小问题比较容易解决,因为电路相对来说简单,方便调试。
整体电路连接调试后,比较成功,系统工作稳定。
从实验调试结果分析可得,系统基本实现了热光源信号的采集和电动车运动方向的控制。
参考文献
[1]《国际赛制机器人灭火比赛规则》.PDF
[2]李全利、迟荣强.单片机原理及接口技术.北京:
高等教育出版社,2004.1
[3]谭浩强.C程序设计(第二版).北京:
清华大学出版社,1999.12
[4]童诗白、华成英.模拟电子技术基础(第三版).北京:
高等教育出版社,2003.12
[5]康华光.电子技术基础数字部分(第四版).北京:
高等教育出版社,1900.1
[6]黄智伟.全国大学生电子设计竞赛电路设计.北京:
北京航空航天大学出版社,2006.12
[7]黄智伟.全国大学生电子设计竞赛系统设计.北京:
北京航空航天大学出版社,2006.12
[8]文艳、谭鸿.Protel99SE电子电路设计.北京:
机械工业出版社,2006.8
程序请单附录1:
#include"stm32f10x_lib.h"
#include"public.h"
u8time_3ms=0;
u8depart=0;
u8restart=0;
u8room=0;
u8gangway=0;
u8white=0;
u8room0=0;
u8room1=0;
u8room2=0;
u8gangway3=0;
u8gangway4=0;
u8sensor_temp_ahead=0;
u8sensor_temp_ahead0=0;
u8sensor_temp_back=0;
u8sensor_temp_back0=0;
u8proceed=0;
s8memory=0;
intmain(void)
{
system_init();
while
(1)
{
if(time_3ms>=3)
{
time_3ms=0;
//smokecheck();
if(depart==0)
{
Encoder_Total=0;
handle(-10);
motor_speed(AHEAD_TURN,2);
memory=2;
while(Encoder_Total<1050);
memory=0;
Encoder_Total=0;
handle(-17);
motor_speed(AHEAD_TURN,2);
memory=2;
while(Encoder_Total<3600);
memory=0;
room=1;
depart=1;
}
if(room==1)
{
sensor_temp_ahead=sensor_ahead();
if(sensor_temp_ahead!
=sensor_temp_ahead0||proceed==1)
{
proceed=0;
sensor_temp_ahead0=sensor_temp_ahead;
switch(sensor_temp_ahead)
{
case1:
handle(-10);
motor_speed(AHEAD_TURN,2);
break;
case2:
handle(-5);
motor_speed(AHEAD,1);
break;
case3:
handle(0);
motor_speed(AHEAD,1);
break;
case4:
handle(5);
motor_speed(AHEAD,1);
break;
case5:
handle(10);
motor_speed(AHEAD_TURN,2);
break;
case0:
if(white==0)
{
white=1;
Encoder_Total=0;
handle(19);
motor_speed(AHEAD_TURN,2);
memory=2;
while(Encoder_Total<3000);
memory=0;
Encoder_Total=0;
handle(20);
motor_speed(AHEAD_TURN,2);
memory=2;
while(Encoder_Total<2500);
memory=0;
secure=0;
dispose();
proceed=1;
}
else
{
handle(-18);
motor_speed(AHEAD_TURN,2);
}
break;
case6:
//全黑
handle(0);
motor_speed(0,0);
secure=0;
dispose();
gangway=1;
room=0;
break;
}
}
}
if(gangway==1)
{
sensor_temp_back=sensor_back();
if(sensor_temp_back!
=sensor_temp_back0||proceed==1)
{
proceed=0;
sensor_temp_back0=sensor_temp_back;
switch(sensor_temp_back)
{
case1:
handle(16);
motor_speed(BACK,-1);
break;
case2:
handle(13);
motor_speed(BACK,-1);
break;
case3:
handle(10);
motor_speed(BACK,-1);
break;
case4:
handle(7);
motor_speed(BACK,-1);
break;
case5:
handle(0);
motor_speed(BACK,-1);
break;
case6:
handle(-5);
motor_speed(BACK,-1);
break;
case7:
handle(-10);
motor_speed(BACK,-1);
break;
case8:
handle(-15);
motor_speed(BACK,-1);
break;
case9:
//全黑
handle(0);
motor_speed(0,0);
room=2;
gangway=0;
Encoder_Total=0;
break;
case0:
//全白
handle(17);
motor_speed(BACK_TURN,-1);
break;
}
}
}
if(room==2)
{
sensor_temp_ahead=sensor_ahead();
if(sensor_temp_ahead!
=sensor_temp_ahead0||proceed==1)
{
proceed=0;
sensor_temp_ahead0=sensor_temp_ahead;
switch(sensor_temp_ahead)
{
case1: