智能消防机器人_第1页
智能消防机器人_第2页
智能消防机器人_第3页
智能消防机器人_第4页
智能消防机器人_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

智能消防机器人目录引言……………………..21.1课题背景……………………21.2IntelligentDesignandmanufactureofelectriccarsFire..21.3实现功能……………………31.4模拟房子介绍………………3系统整体方案设计……….4系统硬件设计……………..4系统软件设计……………..4第三章硬件设计…………………...53.1电源管理模块………………53.11稳压芯片LM7805、7806CV……………53.12电源模块电路原理图………………….53.2电机驱动芯BTS7960……….63.21BTS7960的逻辑功能……………………..63.22外形及封装……………..63.23BTS7960电路原理图…………………….73.3地面灰度检测传感器ST188……………….73.3.1ST188特点…………….73.3.2检测原理………………73.3.3应用范围………………73.3.4外形尺寸〔单位mm〕…………………73.3.5ST188原理图………….83.4火焰传感器………………….83.4.1火焰传感器使用……….83.5报警电路…………………….8第四章软件设计…………………94.1灭火机器人行进路线分析…………………94.2软件流程图…………………114.3软件开发平台介绍………….11第五章调试记录及实验心得……………………125.1调试记录…………………....12参考文献………….13附录:程序清单………………..13第一章引言1.1课题背景如今国内外对消防设备的研究越来越重视,投入也越来越多。慢慢趋向于自动化、智能化。实现灭火、火场侦查、危险物品泄露探测、破拆等功能。本文设计主要完成的功能是扑火救人。本设计是基于STC89C52单片机对电动车进行控制的自动控制系统,研究的内容有:主要方案论证、硬件设计、软件设计、系统实物调试。硬件设计主要有电机驱动电路、热光源采集电路、声音采集电路、电风扇驱动电路、停车信号采集电路、LCD显示电路、电源电路及单片机最小系统。本系统以STC89C52单片机作为控制核心,通过接受到热光源采集电路传送的信号和声音采集电路传送的信号,对电动车电机进行控制,从而实现对电动车的转向控制。当两处着火,一处是物品,另一处是人着火;电动车通过声音识别,优先将人身上的火扑灭。其所实现的功能相当于简易消防机器人。【关键词】消防车热光源STM32单片机LM298ST1781.2IntelligentDesignandmanufactureofelectriccarsFireAbstractToday,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、LM298ST1781.3实现功能制造一个自主控制的机器人在一间平面结构房子模型里运动,找到一根蜡烛并尽快将它熄灭,这个工作受地面摩擦、机器人惯性、机器人电机的转数差、齿轮箱与轮子的摩擦、电压变化等多个因素影响,它模拟了现实家庭中机器人处理火警的过程,蜡烛代表家里燃起的火源,机器人必须找到并熄灭它。1.4模拟房子介绍模拟房子平面图单位:mm比赛场地的墙壁22cm高,由KT板做成。墙壁为白色。比赛场地的地板将是贴有导航黑线的KT板。所有的房间和走廊的地板上都是光滑的。场地中所有的门口并没有门,而是一个适当宽度的开口。第二章系统整体方案设计2.1系统硬件设计本次设计的目的是设计一个在规定区域能自主搜索火源并实施灭火的智能机器人小车,本次设计使用的主控芯片使用了STC89C52单片机,所以设计重点在传感器和电机驱动上。系统总体设计框图如图2.1:MCUMCU小车电机驱动传感器模块传感器模块电源局部水枪电机图2.1系统总体设计框图2.2系统软件设计转弯子程序软件设计方案是以上述硬件电路为根底的,包括电机控制模块、传感器模块的程序设计与实现。程序设计采用C语言编写,编程环境是集成KeilSTM32编译器的集成编译环境。灭火机器人设计的软件设计结构框图如图2.2所示。转弯子程序灭火机器人系统软件电机控制模块传感器模块前进子程序灭火机器人系统软件电机控制模块传感器模块前进子程序停止子程序灰度子程序壁障子程序火焰子程序火焰子程序转弯子程序转弯子程序图2.2系统软件设计框图第三章硬件设计3.1电源管理模块电源是任何一个系统稳定运行的前提条件,为了使机器人运行稳定,单片机和电机的供电系统采用独立供电的方法。3.1.1稳压芯片LM7805CV、LM7806CVLM7805CV的技术指标如下表:表3-1稳压芯片7805参数LM7806CV的技术指标如下表:表3-2稳压芯片7806参数3.1.2电源模块电路原理图由于单片机及所有的传感器系统供电采用的是5V和6V的电源,所以在电源的处理上采用了稳压芯片7805CV和7806CV。火焰子程序火焰子程序3.2电机驱动芯片BTS7960BTS7960是NovalithIC家族三个独立的芯片的一局部:一是p型通道的高电位场效应晶体管,二是一个n型通道的低电位场效应晶体管,结合一个驱动晶片,形成一个完全整合的高电流半桥。所有三个芯片是安装在一个共同的引线框,利用芯片对芯片和芯片芯片技术。电源开关应用垂直场效应管技术来确保最正确的阻态。由于p型通道的高电位开关,需要一个电荷泵消除电磁干扰。通过驱动集成技术,逻辑电平输入、电流取样诊断、转换速率调整器,失效发生时间、防止欠电压、过电流、短路结构轻易地连接到一个微处理器上。BTS7960可结合其他的BTS7960形成全桥和三相驱动结构。3.2.2外形及引脚结构:3.2.3BTS7960电路原理图:3.3地面灰度检测传感器ST1783.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:测量输出左路中左路中右路右路正确输出左路中左路中右路右路测量101110111测量210011011测量31011101测量401101110表一根据分析,外界光也有近红外,当红外接收二极管暴露在外时,受外界红外光的影响,产生错误判断。解决的方法是,将红外接收二极管用直纸筒卷起来,防止外界环境影响。其它模块电路出现的小问题比拟容易解决,因为电路相对来说简单,方便调试。整体电路连接调试后,比拟成功,系统工作稳定。从实验调试结果分析可得,系统根本实现了热光源信号的采集和电动车运动方向的控制。参考文献[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;u8 room=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;u8 sensor_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: handle(-15); motor_speed(AHEAD_TURN,2); break; case2: handle(-8); motor_speed(AHEAD,1); break; case3: handle(0); motor_speed(AHEAD,1); break; case4: handle(8); motor_speed(AHEAD,1); break; case5: handle(15); motor_speed(AHEAD_TURN,2); break; case0: //全白 if(room1==0&&Encoder_Total<1400) { handle(15); motor_speed(AHEAD,1); } if(room1==0&&Encoder_Total>=1400) { handle(-1); motor_speed(AHEAD,1); room1=1; } else { handle(18); motor_speed(AHEAD,1); } break;case6: //全黑 secure=0; dispose(); room=0; gangway=2; break; } } } if(gangway==2) { 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(18); motor_speed(BACK_TURN,-2); break; case2: handle(15); motor_speed(BACK_TURN,-2); break; case3: handle(10); motor_speed(BACK,-1); break; case4: handle(8); motor_speed(BACK,-1); break; case5: handle(0); motor_speed(BACK,-1); break; case6: handle(-10); motor_speed(BACK,-1); break; case7: handle(-16); motor_speed(BACK_TURN,-1); break; case8: handle(-19); motor_speed(BACK_TURN,-2); break; case9: //全黑 Encoder_Total=0; handle(-2);motor_speed(AHEAD,1); memory=1; while(Encoder_Total<2200); memory=0; gangway=0; room=3;break; case0: //全白 if(room2==0) { Encoder_Total=0; handle(0); motor_speed(BACK,-1); memory=-1; while(Encoder_Total<100); memory=0; Encoder_Total=0; room2=1; } else if(Encoder_Total<=8000) { handle(16); motor_speed(BACK,-1); } if(Encoder_Total>8000&&Encoder_Total<=18000) { handle(-20); motor_speed(BACK_TURN,-2); } else { handle(20); motor_speed(BACK,-1); } break; } } } if(room==3) { 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(-3); motor_speed(AHEAD,1); break; case3: handle(0); motor_speed(AHEAD,1); break; case4: handle(3); motor_speed(AHEAD,1); break; case5: handle(10); motor_speed(AHEAD_TURN,2); break; case0: //全白 handle(18); motor_speed(AHEAD_TURN,2); break; case6: room=0; gangway=3; break; } } } if(gangway==3) { if(gangway3==0) { Encoder_Total=0; handle(-2); motor_speed(AHEAD_TURN,2); memory=2; while(Encoder_Total<1800); memory=0; Encoder_Total=0; handle(-20); motor_speed(AHEAD_TURN,2); memory=2; while(Encoder_Total<2200); handle(0); motor_speed(AHEAD_TURN,2); memory=0; gangway3=1; } sensor_temp_ahead=sensor_ahead(); if(sensor_temp_ahead!=6) { handle(0); motor_speed(AHEAD_TURN,2); } else { room=4; gangway=0; } } if(room==4) { 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) { case0: //全白 handle(-19); motor_speed(AHEAD,1); break; case6: secure=0; dispose

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论