版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科论文目录TOC\o"1-2"\h\z\u摘要 IAbstract II引言 11系统方案设计 41.1方案论证 41.2灭火机器人系统工作原理 42系统硬件设计 62.1单片机 62.2火焰探测系统设计 82.3灭火系统设计 82.4循迹模块设计 92.5电机驱动模块 103系统软件设计 123.1系统软件开发环境 123.2系统总程序设计 123.3各模块程序设计 134项目调试 174.1硬件调试 174.2软件调试 174.3实物调试 18结论 20参考文献 21附录 23致谢 34本科论文摘要由于火灾的频繁发生,人们不仅在物质上有巨大的损失,同时在精神上也饱受折磨,最让人痛心惋惜的还是那些为了国家无私奉献生命的消防人员。为了解决火灾给人们带来的巨大损害,本项目设计了一款基于单片机的灭火机器人。本次设计利用STC89C52RC单片机为核心控制器;采用红外循迹传感器控制灭火机器人的行走轨迹,通过接收管接收到红外线的数量判定路况信息;采用火焰传感器探测火焰,通过检测的火焰判定其火焰的位置;采用L293D电机驱动芯片,通过一个芯片控制两个电机的转动;灭火主要是通过马达提供动力驱动四叶风扇旋转。结果表明,本项目设计的成本较低、性能较好,整体设计较为合理且易于操作。同时对灭火机器人软件与硬件方面进行了调试,实现了全部预期的功能。人们可以使用灭火机器人来灭火,这样能够减少一些火灾带来的损失。灭火机器人还可以代替人员闯入火场进行灭火作业,灭火人员的人身安全得到更大保证,同时灭火也可达到预期效果。关键词:机器人;灭火模块;单片机控制
AbstractBecauseofthefrequentoccurrenceoffire,peoplenotonlyhavehugelossesinmaterial,butalsosufferfrommentalsuffering.Themostlamentableonesarethefirefighterswhosacrificetheirlivesselflesslyforthecountry.Inordertosolvethegreatfiredamagetopeople,thedesignofafire-fightingrobotbasedonsingle-chipmicrocomputer.ThisdesignusestheSTC89C52RCsingle-chipmicrocomputerasthecorecontroller,infraredtracksensorisusedtocontrolthewalkingtrackofthefire-fightingrobot,andthenumberofinfraredraysreceivedbythereceivingtubeisusedtojudgetheroadinformation,andflamesensorisusedtodetecttheflame,thepositionoftheflameisdeterminedbythedetectedflame,theL293dmotor-drivenchipisusedtocontroltherotationofthetwomotorsbyonechip,andthemotor-drivenfour-bladefanisusedtoputoutthefire.Theresultsshowthatthisprojecthaslowcost,goodperformance,reasonableoveralldesignandeasyoperation.Atthesametime,thesoftwareandhardwareofthefire-fightingrobotaredebugged,andalltheexpectedfunctionsarerealized.Peoplecanusefire-fightingrobotstoputoutfires,whichcanreducesomeofthedamagecausedbyfire.Thefire-fightingrobotcanalsoreplacethepersonneltoenterthefiresitetocarryoutthefire-fightingoperation,sothatthepersonalsafetyofthefire-fightingpersonnelcanbemoreguaranteedandthefire-fightingcanachievetheexpectedeffect.Keywords:robot;fire-extinguishingmodule;singlechipmicrocomputercontrol引言火灾在我们现实生活中是经常发生的,而且不定期、不定因,是很难去估测的。每当火灾发生时,英勇的消防人员永远是第一个冲在火灾前线,与此同时他们的生命也会一直处于危险的边缘。在这种背景下,灭火机器人系统因此而诞生,该系统极大程度的降低了人员的危险系数[1]。在灭火系统中单片机充当于人脑进行判断,及时处理火灾,防止错失最好的灭火时机。自1961年乔治•查尔斯•德沃尔申请工业机器人专利成功后,机器人行业一直处于全速发展的模式,世界各国越来越重视机器人相关的研究及应用。其中,美国研制的机器人具有全面性、精确性、适应性等特点,并且其语言研究水平较突出,超越了其他国家;日本研制的机器人以数量和密度著称;德国研制的机器人销量较高并以用途广泛而闻名。目前已有多种不同类型的消防机器人用于火灾现场。灭火机器人的实用性强、利用价值高,世界各国都开始对灭火机器人进行研究。研究灭火机器人行业的先行者是美国和前苏联,之后英国、日本、德国也开始研究,现在世界各国都已经开始对灭火机器人进行研究了,有很多灭火机器人是可以应用在实际中,帮助人员闯入火场完成灭火作业的。现如今灭火机器人一共有三代,第一代是程序控制,第二代是具有感觉功能,第三代则是智能化。现在机器人在我们生活中已经越来越常见并且较为流行,一个叫巨人的灭火机器人在巴黎圣母院的那场火灾中参与了灭火救援的工作[2]。国内的灭火机器人主要存在于消防部队,消防部队装备的灭火机器人已经达到了世界先进水平,但是很少有火灾现场应用此机器人。灭火机器人在中国还没有普遍的应用起来,但我们的技术已经达到先进的水平了,未来灭火机器人将被广泛的使用。经过对相关火灾事故实际情况的分析,了解到大多数火灾是由于人们疏忽大意,错过了扑灭火灾的有利时机,没有能够在起火初期火势较小的时候,将火苗扑灭,从而导致火灾范围迅速扩大,造成了严重的生命财产损失。而且,在许多需要重点防范火灾的场合目前仍然使用的是人工巡检的方式。由于人员的精力有限,无法做到完全杜绝隐患,并且一些潜伏的火灾隐患通过人工巡检方式是发现不了的。因而,需要借助先进的科技手段,来面对日益增多的火灾隐患,避免人工巡检的弊端。随着人工智能和传感器技术的不断发展与创新,智能机器人可代替人工实现24小时不间断的工作。采用多传感器融合技术,能够有效检测火灾隐患,提高了抵御火灾的能力。同时,可以因地制宜,针对不同的场合灭火机器人可以运用不同的工作模式,这样的工作方式会大大提高灭火效率[3]。在仓库等封闭环境中应使用自动监测模式。在自动监测模式下,消防小车可以实现一定范围内根据所规定的路线行走[4],并实施自动火情监测功能,可以即时发现火源,并将其火源扑灭,防止火灾意外发生造成更大的损失。在设计灭火机器人系统的过程中要充分考虑到系统的稳定性和抗干扰能力,在面对多种复杂的火情场景时,要能够承受强电磁的干扰以及适应一定的高温、高压、高污染的环境,保证灭火机器人按照预定的工作模式稳定的运行。不仅要适应不同复杂环境和功能多样化,而且还要考虑到系统的易用性,能够满足操作人员的需求和习惯,做到上手容易,操作使用时简单、方便。在满足实际需求的前提下,也要充分考虑系统的经济性,使其具有广泛的应用前景。本文基于STC89C52RC单片机设计的自动化灭火系统,本篇论文共分为四章,主要内容如下:第一章:项目方案设计。着重系统设计目标和设计原则,选择合适的处理器和各个模块所需的元件。第二章:项目硬件设计。根据系统的总体方案设计,搭建焊接单片机模块、电机驱动模块、火焰探测模块、循迹模块和灭火模块,电源模块并对这六大模块进行原理的介绍。第三章:项目软件设计。程序软件的设计原理及总体介绍。介绍了系统的设计原理以及系统流程图。第四章:系统调试。编写程序以及系统硬件连接的调试。完成本系统所需要识别小车灭火程序的编写的准备工作,同时对程序进行调试并总结调试时遇到主要的问题。1系统方案设计1.1方案论证本设计对于实现灭火机器人循迹实现灭火的目的提出如下两套设计方案。方案一:灭火机器人处理器采用STC89C52RC芯片+按键启动小车+红外线循迹传感器+L293D的双H—桥驱动+火焰探测器+风扇灭火。此方案主要通过按键启动灭火机器人的运行,再由单片机控制整体运行,红外循迹传感器探测路径并将探测信息传出,L293D驱动根据红外传感器的信息控制灭火机器人轮子的转动,共同确定其行走路线,最后将启动风扇将火源扑灭。方案二:灭火机器人采用STM32处理器+声音启动小车+光敏探测器循迹+分立元件构成驱动+火焰探测器+水泵灭火。其方案主要是通过STM32控制灭火机器人的整体运行[5],通过一定频率的声音启动灭火机器人使其运行,光敏探测器和直流电机用分立元件构成驱动,确定其行走路线,探测到火焰,将开启风扇灭火。两种方案的对比,方案一采用按键启动,而方案二采用声音控制,声音控制是不稳定的,容易被其他噪音干扰。处理器的选择,方案一选用52单片机,价格低廉,操作方便,方案二选用的是STM32,与比方案一相比较为复杂;循迹模块的选择,方案一选用红外线传感器循迹,方案二选用光敏探测器循迹,光照影响很大,不能够稳定的工作;驱动模块的选择,方案一选用L293D的双H-桥驱动,一个芯片控制两个直流电机,操作方便,稳定性好,性能优良,方案二选用分立元件构成驱动,价格便宜但性能不稳定。因此本项目采用方案一灭火机器人的设计方案,这种方案硬件简单,软件实现起来思路也比较清晰,符合我们的实际需求,易于操作、便于维护、实用性强。1.2灭火机器人系统工作原理在灭火机器人开始运行,寻找并发现火源过程中,首先需要提前调节电位器,让火源与灭火机器人保持安全距离,然后单片机通过火焰探测模块发现火源,并快速、准确的识别火源的具体位置,为准确扑灭火源做好准备;单片机接收到火源信号反馈后,灭火模块控制风扇转动完成灭火处理,当检测到无火焰的时候风扇会继续转动一段时间,然后停下,并开始继续探测下处火焰位置。本系统大体上分为6个基本模块,分别为控制模、循迹模块、火焰探测模块、电源模块、小车驱动模块和灭火模块[6]。系统模块总设计如图1.1所示。 图1.1系统模块总设计图2系统硬件设计2.1单片机单片机是一种微处理器,同时它也是一个系统的核心,有超大规模的集成电路技术,主要将中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一起构成一个完整的计算机系统[7]。本项目选用的STC89C52RC单片机,该单片机价格低廉,易于操作,使用较为广泛,同时,它是STC89C51的增强型,综合考虑本设计的实际需求,选择STC89C52RC作为主控芯片。STC89C52RC是双列直插式40管脚的芯片,其外部有32个端口可供用户使用,其引脚如图2.1所示。图2.1STC89C52RC引脚图STC89C52RC单片机外部有32个端口可供用户使用,其端口主要作用分别是:P0(P0.0~P0.7)口与P1(P1.0~P1.7)口为通用I/O口;P2(P2.0~P2.7)口与比P1口多了一个功能,访问外部存储器时输出外部存储器的高八位地址。P3(P3.0~P3.7)口与P0、P1和P2口功能相同,此外它还具有第二功能。P3口的特殊功能图如表2.1所示。表2.1P3口的特殊功能图引脚功能符号第二功能P3.1通用I/0口TXD串行通信接收口P3.2通用I/0口INT0外部中断0P3.3通用I/0口INT1外部中断1P3.4通用I/0口T0计数器0输入端口P3.5通用I/0口T1计数器1输入端口P3.6通用I/0口WR外部存储器写功能P3.7通用I/0口RD外部存储器读功能单片机的最小系统就是最简单的系统。对52系列单片机来说,最小系统一般应该包括:电源电路、晶振电路、复位电路[8]。最小系统电路图如图2.2所示。图2.2STC89C52RC最小系统供电电路:40引脚接+5V电源,20脚接地,这样便于完成单片机的供电。复位电路:复位电路是由电阻和电容共同组成。复位电路主要是将系统进行电路初始化。在单片机还没有运行前将全部数据都要复位到初始化默认值的状态。时钟电路:时钟电路由C22、C23和12MHz晶振组成。电路中晶振用于输出振荡频率,2个负载电容在电路中起到了微调频率的作用,它们可以确保晶振输出的频率更接近真实频率。时钟电路的作用是给单片机提供时钟脉冲,只有给单片机提供时钟脉冲单片机才会执行程序。2.2火焰探测系统设计火焰探测模块主要是找到火源。根据所规定的路径去探索火源,发现火源并探测火源的具体位置,再将其火源信息传递出去。本项目的火焰传感器连接单片机P1.7口,以便于单片机火焰获取信息。红紫外复合火焰探测器采用一个对太阳光不敏感的紫外线传感器和一个高信噪比的窄频带的红外线传感器,它视角范围紫外视角120°,红外视角90°,与红外传感器相比受外界光影响较小,减少了错误信息的传达,实际使用较为稳妥;同时红紫外复合型火焰探测器的探测距离在30-40米,三波段红外火焰探测器的最远探测距离可以达到50-70米,距离较远,可确保提前发现火源,及时将火扑灭,而红外传感器探测距离只有1-60厘米,无法快速发现火源位置;红紫外复合型火焰探测器还可探测碳氢化合物燃烧火焰,根据燃烧物火源大小来决定探测距离,如酒精0.3m×0.3m检测距离为35米,纸张0.3m×0.3m检测距离为25米,氢气0.3米的火焰检测距离为20米,而红外传感器并无此功能。红紫外复合型火焰探测器主要应用于火灾的探测中,在火灾刚刚发生时,它可以引发报警,给人类提供及时有效的信息,同时它还可探测到火源的位置,并将其火源扑灭[9]。同时探测器能够在一些恶劣的环境下工作,拓展了小车的工作的更多可能性。2.3灭火系统设计本人曾考虑了各种灭火方式,有放置小型灭火器、使用喷水装置灭火等,但都比较复杂,且灭火装置对智能灭火机器人的稳定性要求很高,所以最后选择用风扇灭火的方式。用风扇能达到要求,并且各方面的实现都比较容易,工作也比较稳定,便于调试,其工作电压为5V,可轻松吹动20cm之内的火源。灭火模块与单片机的P1.6口相连,当灭火小车检测到火源的位置并且其位置在可吹的范围内时,单片机通过P1.6口将指令发送给控制其风扇转动的电机,使风扇转动将火源扑灭,灭火完成后风扇会继续转动一阵,确保安全。风扇电路控制原理图如图2.3所示。图2.3风扇电路控制原理图2.4循迹模块设计本项目设计采用巡线监测模式来实现自主灭火巡检,预设的路线上来回巡检,发现火源并及时灭火。因此,本系统采用红外循迹模块来实现消防小车的自主巡检功能[11]。本项目的循迹模块采用的是红外传感器来根据已规定的路径行走。但与地面检测距离为2~3cm较为适用,同时其工作电压为3.3V~5V,不可超过其范围否则不能运行。红外循迹主要是根据黑、白色对红外线吸收能力的不同,设计黑色路径为灭火机器人的行走路线。传感器的左侧为红外光发射管,右侧部分是红外光接收管。在使用前要将接收管用黑色胶带包裹起来,只留接收管底部的探头,主要防止外界光和发射光带来的干扰。发射管通电后,它能产生人眼不可见的红外光,又因为黑色能够吸收红光线,所以反射回来红外线的数量较少,接收管接收到的红外线较少,致使电阻的阻值就会较大。同理白色对红外线吸收能力较弱,接收管电阻比较小。两个红外循迹传感器分别与单片机的P3.5和P3.6口相连,单片机就可根据接收端电平变化来判断小车是否偏离预设的路线[10]。红外循迹原理图如图2.4所示。图2.4红外循迹原理图红外循迹传感器主要就是针对一些固定区域,并设计固定路线来巡逻的一个传感器[12]。本项目主要针对那些固定区域需要巡查并缺乏人手的企业,为其提供灭火机器人来代替人力,完成巡逻工作。同时在火灾来临时可快速帮助人们进行灭火作业,即可省去多余的劳动力,又可提高火灾发生处理速度。2.5电机驱动模块电机驱动模块主要是用于控制机器人的运动,本系统主要是控制灭火机器人车轮的转动。同时此系统没有传感器的控制,其位置主要依据软件来实现,这就要求电机的控制精度必须要高。L293D采用16引脚DIP封装,半桥式驱动,电压4.5-36V,单通道输出电流,但高峰输出的电流可达到1.2A,其内部集成了双极型H-桥电路。它的工作电压为4.5~36V,L293D具有很多优点,例如价格与其他驱动器相比较为便宜、易于控制、无需保护电路和二极管和电机停止时微振电流可消除正反向时的静摩擦等[13]。本项目主要需要控制两个电机的转动,所以本设计使用2个H-桥电路集成到1片芯片上,由一个芯片同时可控制2个电机的转动。本项目电机控制是当IN1=0,IN2=1时,左电机向前走,反之IN1=1,IN2=0时左边电机向后转,要想让左边电机停转则EN2=0;同理当IN3=0,IN4=1时右边电机向前走,IN3=1,IN4=0右边电机向后走,EN1=0右边电机停转。电机驱动模块原理图如图2.5所示。图2.5电机驱动模块原理图3系统软件设计3.1系统软件开发环境本项目软件方面设计主要是使用KeilμVision4实现的,其系统是由C语言来进行编程的,最后生成.hex文件。项目下载到单片机前编译要显示成功,才可以进行软件和单片机串口连接将所编写的程序下载到单片机里。KeilC51软件可提供丰富的库函数和功能强大的集成开发调试工具。使用C语言编程时,Keil是最实用的软件[14],程序编译界面如图3.1所示。图3.1Keil的程序编译界面3.2系统总程序设计主程序为一个系统的设计主干,它可决定灭火机器人的主要工作内容。每个功能的实现还需要调用具体的子程序来运行[15]。智能灭火机器人主要工作过程为:电源给电系统初始化,灭火机器人开始根据黑色轨迹线路进行行走,火焰传感器感应到火焰的位置,一定距离开始后,风扇开始旋转,直到将火焰扑灭,火焰扑灭后,风扇将持续一段时间转动后再停止,然后小车再开始继续前进寻找下一处火焰。系统主程序流程图如图3.2所示。图3.2系统主程序流程图3.3各模块程序设计(1)火焰探测模块主要是通过火焰传感器来探索火焰的位置。当火焰传感器感测到有火焰后,它会继续让小车运行,运行到一定的距离后再开始进行风扇转动[16]。火焰消失后,火焰传感器会继续寻找下一个火焰的位置。火焰探测模块流程图如图3.3所示。图3.3火焰探测模块流程图(2)循迹程序流程图本设计灭火机器人在行走的过程中,两个传感器规划路线,若是向左偏就向右调整方向,向右偏就向左调整方向,循环运行使小车在规定的轨迹行走[17]。其寻迹模块程序流程图如图3.4所示。图3.4循迹程序流程图(3)驱动电机模块程序流程图在开启程序运行前,首先单片机初始化,P1口全部置0。当传感器检测到与地面距离为2~3cm后,电机开始启动,然后就循环判断循迹系统送来的信号,电机进行相应的功能驱动。具体如下图3.5和表3.1所示。图3.5驱动电机模块程序流程图表3.1驱动电机模块程序功能对照表接收真值表(前左,后右)对应功能1-1前进0-0停车1-0左转0-1右转4项目调试4.1硬件调试硬件调试前我们需要焊接电路板,按照硬件高矮进行统一焊接,焊接时尽量使用焊锡进行连线,为了避免焊接错误,要对每一条焊接线路进行检查,最后进行接线处理,注意正负极接线。硬件调试主要分为五部分,分别为电路的检查、通电观察、静态调试、动态调试和指标测试[18]。在动手操作过程中有很多问题一直阻碍小车正常的灭火运行,主要遇到的问题是:传感器不工作,或者时好时坏,主要是传感器正负极连线问题,接反则不会转动,还有连接线是否接触正常,还有传感器内部是否发生短路、断路等问题,导致不导通;单片机下载程序时,一定要进行冷启动,否则程序下载不成功,冷启动后,如果软件一直显示正在检测单片机,主要原因是没有选择对应的COM口或者电量不充足;传感器灵敏度的调节,主要调节传感器电位器,或者调节电阻,反复实验根据LED灯的亮度来找到传感器最合适的状态,便于小车更好的运行。4.2软件调试本项目使用的单片机型号为STC89C52RC系列,这个系列的单片机应用非常广泛,编译语言以C语言为主。KeilμVision4软件如图4.1所示。图4.1KeilμVision4KeilμVision4使用的基本步骤,首先建立一个新的项目,选择使用的单片机类型(STC89C52RC),可以编写一个新的文件,编写完程序后进行编译,编译就是检测程序是否有错误和警告,警告不会影响程序的运行。在编译程序之后,生成.hex文件[19]。STC-ISP是将程序下载到单片机的软件,首先选择单片机信号为STC98C52RC,同时将单片机按照方向置于烧写器中,安装好驱动程序连接好计算机,启动软件前,需要选择对应的COM口。选中事先编辑好的.hex文件,确定后点击下载,然后进行冷启动先断电再上电,单片机进行重启,最后会显示下载成果[20]。这样单片机程序就烧写成功了。STC-ISP软件如图4.2所示。图4.2STC-ISP4.3实物调试本项目主要通过硬件与软件的结合,实现小车循迹灭火。首先我们要测试小车循迹行走,在无火焰时,小车可一直按照所设定轨迹行走,如图4.3所示。其次还要测试灭火小车的主要功能——灭火,在火焰出现时小车停下,风扇转动,扑灭火源,如图4.4所示。图4.3循迹运动图4.4风扇灭火
结论本次项目设计为“基于单片机的灭火机器人”,根据应实现的功能设计了所需的硬件电路,以STC89C52RC为主控中心、L293D驱动芯片等共同组成了本系统的硬件电路。其硬件电路主要有单片机模块提供的核心电路、电机驱动模块的双H—桥电路和多个传感器的检测模块。并根据硬件电路的需求和设计者的理念编写出相应的软件程序。首先,可利用按键控制灭火机器人的工作状态,按键可控制电源的开启,或者将灭火机器人与地面保持一定的距离,灭火机器人检测不到路面,这两种方法都可以控制灭火机器人的运行。灭火机器人运动时可根据设置的路径行走,要是偏离了路线,红外循迹传感器会发射出灭火机器人偏离轨道的信息,并将此信息直接传给单片机,单片机会根据所设定的程序,对控制灭火机器人两个车轮的电机发出指令,调整两个轮子的转速,以达到灭火机器人向左偏移路线要向右移动,向右偏移路线要向左移动的效果,使灭火机器人可以在所规定的路线进行行走,检测火源是否存在。若火源存在灭火机器人火焰传感器的指示灯会发出亮光,火焰传感器会将有火焰的信息发送给单片机,单片机会立刻给风扇发出指令,电动机给风扇提供动力将火焰扑灭,火焰消失,火焰传感器的指示灯会熄灭,但风扇会继续转动,转动一阵后,风扇就会停止转动,灭火机器人又会开始运行沿着路径行走。本设计经过了硬件以及软件的测试,各部分均实现预期功能。实现了小车循迹功能,可根据规定的路线,进行一步步沿线行走;实现了小车探索火焰的功能,发现火焰,LED指示灯就会发出亮光;实现了灭火的功能,根据单片机接收到有火焰的信息后,风扇开始转动,实现灭火的功能。该灭火系统操作简单,可靠性高,抗干扰能力较强,适用范围广。应用本设计产品,可以减少不必要的损害,降低不必要的风险,同时还可以促进社会科技的进一步发展。
参考文献[1]程丽娜,陈杨阳.基于C51单片机的智能灭火机器人的设计与研究[J].机器人技术与应用,2012(03):38-41[2]常松.巴黎圣母院火灾扑救的装备作战效能评估[N].中国应急管理报,2019-05-04(003)[3]倪银堂,吕迪洋,王振豪.消防机器人的研究现状综述与展望[J].自动化应用,2017(02):28-29[4]肖明俊,祝玲,刘雨,李继超.基于51单片机居家智能灭火机器人循迹系统的设计[J].电子世界,2013(13):156-157[5]姚蕴.基于STM32的灭火机器人设计[J].中国新通信,2017,19(17):43-44[6]志勇.智能巡检灭火机器人的设计[D].大连工业大学,2017[7]王哲,孙洪超,张皖军.基于单片机灭火机器人的设计[J].农机使用与维修,2017(10):7[8]冯世鑫,郑闯.基于单片机的轮式灭火机器人设计[J].中国设备工程,2018(06):160-162[9]冯国文,王彬,王籽涵,刘世运,黄健俊,徐天如,郭海港.基于STC15W4K32S4灭火智能车的设计[J].信息记录材料,2018,19(10):83-84[10]陈帅华,汤勇.可控自动灭火机器人设计[J].伺服控制,2015(07):54-56+45[11]温卫敏.一种最优路径规划的灭火机器人系统设计[J].四川理工学院学报(自然科学版),2018,31(03):21-28[12]卢彪,陈宇,邱慧丽.基于多传感器信息采集技术的灭火机器人系统设计[J].廊坊师范学院学报(自然科学版),2019,19(03):36-38+41[13]孟祥荔.基于智能灭火机器人硬件电路的设计探讨[J].科技经济导刊,2018,26(14):11-12+15[14]孙宁,裴文良,闵桂元,王永军.消防灭火机器人设计及应用[J].消防科学与技术,2018,37(07):942-944[15]胡传平.消防机器人的开发与应用[J].机器人技术与应用,2003(05):37-41[16]刘锴圣,黄民.基于STM32的消防灭火机器人控制系统设计与研究[J].轻工科技,2018,34(01):70-71+109[17]崔清宇,时泽宇.基于单片机AT89S52的智能灭火小车设计[J].科技展望,2016,26(04):148[18]张佐权.竞赛用灭火机器人智能优化技术的研究与实现[D].电子科技大学,2012[19]俞凡.基于单片机的厂区智能循迹灭火车模型的设计和实现[D].安徽农业大学,2016[20]吴冉,黄奇瑞.基于单片机的智能灭火小车设计与实现[J].南阳理工学院学报,2017,9(06):61-64
附录#include<AT89X52.H> //包含51单片机头文件,内部有各种寄存器定义#include<HJ-2WD_PWM_FK.H> //HJ-2WD智能车专用头文件#defineucharunsignedchar#defineuintunsignedintunsignedcharn,count,angle;//距离标志位,0.5ms次数,角度标识uchari;voidDelayUs2x(uchart){ while(--t);}voidDelayMs(uchart){ while(t--) { //大致延时1mS DelayUs2x(245); DelayUs2x(245); }}/*定时器01初始化//定时器1工作方式1(舵机),定时器0电机PWM调速控制信号*/voidTime1_Int()interrupt3//舵机{ TH1=0xff; TL1=0xa3; if(count<angle)//判断0.5ms次数是否小于角度标识pwm=1;//确实小于,pwm输出高电平elsepwm=0;//大于则输出低电平 count=(count+1);//0.5ms次数加1 count=count%40;//次数始终保持为40即保持周期为20ms}//主函数 voidmain(void){ count=0;P0=0XF0;//关电机 TMOD=0X11; TH0=0XFc; //1ms定时 TL0=0X18; TR0=1; ET0=1; EA=1; //开总中断 TH1=0xff; TL1=0xa3; ET1=1; TR1=1; while(1) //无限循环 { //有火焰信号S=0没有火焰信号S=1if(S==0) //检测到有火焰时 { stop(); //调用电机停止函数 F=0; //打开风扇灭火 delay(200); // F=1; //关掉灭火风扇 stop(); //调用电机停止函数 delay(100); //??毫秒 }//巡黑线有信号为0白线没有信号为1黑线if(Left_1_led==0&&Right_1_led==0&&S==1) { F=1;//关风扇 run();//调用前进函数 } if(Left_1_led==1&&Right_1_led==1) { stop();//调用停止函数 } if(Left_1_led==1&&Right_1_led==0) //左边检测到黑线 { leftrun(); //调用小车左转函数 } if(Right_1_led==1&&Left_1_led==0) //右边检测到黑线 { rightrun(); //调用小车右转 函数 } }}//循迹#ifndef_LED_H_#define_LED_H_//定义小车驱动模块输入IO口 sbitIN1=P1^0; sbitIN2=P1^1; sbitIN3=P1^2; sbitIN4=P1^3; sbitEN1=P1^4; sbitEN2=P1^5;#defineLeft_1_ledP3_6 //左传感器#defineM_0_ledP1_7 //火焰传感器 #defineRight_1_ledP3_5 //右传感器 #defineLeft_moto_pwm P1_5 //PWM信号端 #defineRight_moto_pwm P1_4 //PWM信号端 #defineLeft_moto_go{IN1=0,IN2=1;}//左电机向前走 #defineLeft_moto_back{IN1=1,IN2=0;} //左边电机向后转 #defineLeft_moto_Stop{EN2=0;}//左边电机停转 #defineRight_moto_go{IN3=0,IN4=1;} //右边电机向前走 #defineRight_moto_back{IN3=1,IN4=0;} //右边电机向后走 #defineRight_moto_Stop{EN1=0;} //右边电机停转 unsignedcharpwm_val_left=0;//变量定义 unsignedcharpush_val_left=0;//左电机占空比N/20 unsignedcharpwm_val_right=0; unsignedcharpush_val_right=0;//右电机占空比N/20 bitRight_moto_stop=1; bitLeft_moto_stop=1; unsignedinttime=0;/************************************************************************/ //延时函数 voiddelay(unsignedintk){unsignedintx,y; for(x=0;x<k;x++) for(y=0;y<2000;y++);}/************************************************************************///前速前进voidrun(void){push_val_left=5; //速度调节变量0-20。。。0最小,20最大 push_val_right=5; Left_moto_go;//左电机往前走 Right_moto_go;//右电机往前走}//后退函数voidbackrun(void){push_val_left=5; //速度调节变量0-20。。。0最小,20最大 push_val_right=5; Left_moto_back;//左电机往前走 Right_moto_back;//右电机往前走}//左转函数voidleftrun(void){ push_val_left=8; push_val_right=8; Right_moto_go;//右电机往前走Left_moto_back;//左电机后走}//右转函数voidrightrun(void){ push_val_left=8; push_val_right=8;Left_moto_go;//左电机往前走 Right_moto_back;//右电机往后走 }//停止函数voidstop(void){ push_val_left=0; push_val_right=0; Right_moto_Stop;//右电机 Left_moto_Stop;//左电机停止 }/************************************************************************//*PWM调制电机转速*//************************************************************************//*左电机调速*//*调节push_val_left的值改变电机转速,占空比*/ voidpwm_out_left_moto(void){if(Left_moto_stop){if(pwm_val_left<=push_val_left) { Left_moto_pwm=1;// Left_moto_pwm1=1; } else { Left_moto_pwm=0;// Left_moto_pwm1=0; } if(pwm_val_left>=20) pwm_val_left=0;}else{Left_moto_pwm=0;//Left_moto_pwm1=0; }}/******************************************************************//*右电机调速*/voidpwm_out_right_moto(void){if(Right_moto_stop){if(pwm_val_right<=push_val_right) { Right_moto_pwm=1;// Right_moto_pwm1=1; } else { Right_moto_pwm=0;// Right_moto_pwm1=0; } if(pwm_val_right>=20) pwm_val_right=0;}else{Right_moto_pwm=0;//Right_moto_pwm1=0; }}/***************************************************////*TIMER0中断服务子函数产生PWM信号*/ voidtimer0()interrupt1using2{TH0=0XFc; //1Ms定时 TL0=0X18; time++; pwm_val_left++; pwm_val_right++; pwm_out_left_moto(); pwm_out_right_moto();} /*********************************************************************/ #endif//灭火#ifndef_LED_H_#define_LED_H_//定义小车驱动模块输入IO口 sbitIN1=P1^0; sbitIN2=P1^1; sbitIN3=P1^2; sbitIN4=P1^3; sbitEN1=P1^4; sbitEN2=P1^5; //定义火焰传感器IO口 sbitS=P1^7; //定义风扇驱动IO口 sbitF=P1^6; //定义转向舵机IO口sbitpwm=P2^7;//PWM信号输出口舵机信号输出口 sbitTRIG=P2^5;sbitECHO=P2^4;#defineLeft_1_ledP3_6 //左传感器 #defineRight_1_ledP3_5 //右传感器 #definePWMSD10 ////速度调节变量0-20。。。0最小,20最大如果小于8电机可能不动 #defineLeft_moto_pwm P1_4 //PWM信号端 #defineRight_moto_pwm P1_5 //PWM信号端 #defineLeft_moto_go{P1_0=0,P1_1=1;}//左电机向前走 #defineLeft_moto_back{P1_0=1,P1_1=0;} //左边电机向后转 #defineLeft_moto_Stop{P1_4=0;}//左边电机停转 #defineRight_moto_go{P1_2=1,P1_3=0;} //右边电机向前走 #defineRight_moto_back{P1_2=0,P1_3=1;} //右边电机向后走 #defineRight_moto_Stop{P1_5=0;} //右边电机停转 unsignedcharpwm_val_left=0;//变量定义 unsignedcharpush_val_left=0;//左电机占空比N/20 unsignedcharpwm_val_right=0; unsignedcharpush_val_right=0;//右电机占空比N/20 bitRight_moto_stop=1; bitLeft_moto_stop=1; unsignedinttime=0;/************************************************************************/ //延时函数 voiddelay(unsignedintk){unsignedintx,y; for(x=0;x<k;x++) for(y=0;y<2000;y++);}/************************************************************************///前速前进voidrun(void){push_val_left=8; //速度调节变量0-20。。。0最小,20最大 push_val_right=8; Left_moto_go;//左电机往前走 Right_moto_go;//右电机往前走}//后退voidRearrun(void){ push_val_left=PWMSD; push_val_right=PWMSD;Left_moto_back;//左电机后退 Right_moto_back;//右电机后退 }//左转函数voidleftrun(void){ push_val_left=8; push_val_right=8; Right_moto_go;//右电机往前走Left_moto_back;//左电机后走}//右转函数voidrightrun(void){ push_val_left=8; push_val_right=8;Left_moto_go;//左电机往前走 Right_moto_back;//右电机往后走 }//停止函数voidstop(void){ push_val_left=0; push_val_right=0;Left_moto_Stop;// Right_moto_Stop;// }/************************************************************************//*PWM调制电机转速*//************************************************************************//*左电机调速*//*调节push_val_left的值改变电机转速,占空比*/ voidpwm_out_left_moto(void){if(Left_moto_stop){if(pwm_val_left<=push_val_left) { Left_moto_pwm=1; } else { Left_moto_pwm=0; } if(pwm_val_left>=20) pwm_val_left=0;}else{Left_moto_pwm=0; }}/******************************************************************//*右电机调速*/voidpwm_out_right_moto(void){if(Right_moto_stop){if(pwm_val_right<=push_val_right) { Right_moto_pwm=1; } else { Right_moto_pwm=0; } if(pwm_val_right>=20) pwm_val_right=0;}else{Right_moto_pwm=0; }}/***************************************************////*TIMER0中断服务子函数产生PWM信号*/ voidtimer0()interrupt1using2{TH0=0XFc; //1Ms定时 TL0=0X18; time++; pwm_val_left++; pwm_val_right++; pwm_out_left_moto(); pwm_out_right_moto();} /*********************************************************************/ #endif致谢时间悄无声息的带我走完了在沈阳城市学院的四年大学时光,迎来了最后的时刻,完成最终的考核。我经过几个月坚持不懈的努力,完成了这个基于单片机的灭火机器人设计,非常感谢胡海龙老师和于宏波老师对我细心的指导,同时感谢在校期间各位授课老师的教导,以及给我的很多实践的机会。在设计中遇到过很多的问题,但在老师的帮助下都得到了解决,最困难的不是问题有多难,而是你是否能拼尽全力解决它。在学校所学单片机、电路及相关传感器等知识都可应用到实践中,帮助解决生活中的诸多相关问题。它主要采用STC89C52RC单片机为核心控制,多个传感器共同组成硬件电路,最后将硬件电路与软件相结合,达到灭火效果,并且可应用到实践中。人员无法进入的高温、有毒和浓烟等危害环境中,可以利用灭火机器人代替人员进入火灾现场完成灭火作业。它的应用将提高扑灭恶性火灾的实战能力,同时可以减少国家财产损失和灭火救援人员的伤亡。这个设计不仅仅是为了毕业而完成的一个作品,它真正价值在于给我们生活带来益处。再次感谢胡海龙老师和于宏波老师对我提供的指导,感谢这个阶段每个对我提供帮助的人。
捷键与一些电脑小技巧HYPERLINKwinkey+d:
这是高手最常用的第一快捷组合键。这个快捷键组合可以将桌面上的所有窗口瞬间最小化,无论是聊天的窗口还是游戏的窗口……只要再次按下这个组合键,刚才的所有窗口都回来了,而且激活的也正是你最小化之前在使用的窗口!
--这个就是winkeywinkey+f:
不用再去移动鼠标点“开始→搜索→文件和文件夹”了,在任何状态下,只要一按winkey+f就会弹出搜索窗口。
winkey+r:
在我们的文章中,你经常会看到这样的操作提示:“点击‘开始→运行’,打开‘运行’对话框……”。其实,还有一个更简单的办法,就是按winkey+r!
alt+tab:
如果打开的窗口太多,这个组合键就非常有用了,它可以在一个窗口中显示当前打开的所有窗口的名称和图标●,选中自己希望要打开的窗口,松开这个组合键就可以了。而alt+tab+shift键则可以反向显示当前打开的窗口。
winkey+e:
当你需要打开资源管理器找文件的时候,这个快捷键会让你感觉非常“爽”!再也不用腾出一只手去摸鼠标了!
小提示:
winkey指的是键盘上刻有windows徽标的键●。winkey主要出现在104键和107键的键盘中。104键盘又称win95键盘,这种键盘在原来101键盘的左右两边、ctrl和alt键之间增加了两个windwos键和一个属性关联键。107键盘又称为win98键盘,比104键多了睡眠、唤醒、开机等电源管理键,这3个键大部分位于键盘的右上方。
再补充点
F1显示当前程序或者windows的帮助内容。
F2当你选中一个文件的话,这意味着“重命名”
F3当你在桌面上的时候是打开“查找:所有文件”对话框
F10或ALT激活当前程序的菜单栏
windows键或CTRL+ESC打开开始菜单
CTRL+ALT+DELETE在win9x中打开关闭程序对话框
DELETE删除被选择的选择项目,如果是文件,将被放入回收站
SHIFT+DELETE删除被选择的选择项目,如果是文件,将被直接删除而不是
放入回收站
CTRL+N新建一个新的文件
CTRL+O打开“打开文件”对话框
CTRL+P打开“打印”对话框
CTRL+S保存当前操作的文件
CTRL+X剪切被选择的项目到剪贴板
CTRL+INSERT或CTRL+C复制被选择的项目到剪贴板
SHIFT+INSERT或CTRL+V粘贴剪贴板中的内容到当前位置
ALT+BACKSPACE或CTRL+Z撤销上一步的操作
ALT+SHIFT+BACKSPACE重做上一步被撤销的操作
Windows键+D:最小化或恢复windows窗口
Windows键+U:打开“辅助工具管理器”
Windows键+CTRL+M重新将恢复上一项操作前窗口的大小和位置
Windows键+E打开资源管理器
Windows键+F打开“查找:所有文件”对话框
Windows键+R打开“运行”对话框
Windows键+BREAK打开“系统属性”对话框
Windows键+CTRL+F打开“查找:计算机”对话框
SHIFT+F10或鼠标右击打开当前活动项目的快捷菜单
SHIFT在放入CD的时候按下不放,可以跳过自动播放CD。在打开wo
rd的时候按下不放,可以跳过自启动的宏
ALT+F4关闭当前应用程序
ALT+SPACEBAR打开程序最左上角的菜单
ALT+TAB切换当前程序
ALT+ESC切换当前程序
ALT+ENTER将windows下运行的MSDOS窗口在窗口和全屏幕状态间切换
PRINTSCREEN将当前屏幕以图象方式拷贝到剪贴板
ALT+PRINTSCREEN将当前活动程序窗口以图象方式拷贝到剪贴板
CTRL+F4关闭当前应用程序中的当前文本(如word中)
CTRL+F6切换到当前应用程序中的下一个文本(加shift可以跳到前
一个窗口)
在IE中:
ALT+RIGHTARROW显示前一页(前进键)
ALT+LEFTARROW显示后一页(后退键)
CTRL+TAB在页面上的各框架中切换(加shift反向)
F5刷新
CTRL+F5强行刷新1.打开“我的电脑”-“工具”-“文件夹选项”-“查看”-在“显示所有文件和文件夹”选项前打勾-“确定”
2.删除以下文件夹中的内容:
x:\DocumentsandSettings\用户名\Cookies\下的所有文件(保留index文件)
x:\DocumentsandSettings\用户名\LocalSettings\Temp\下的所有文件(用户临时文件)
x:\DocumentsandSettings\用户名\LocalSettings\TemporaryInternetFiles\下的所有文件(页面文件)
x:\DocumentsandSettings\用户名\LocalSettings\History\下的所有文件(历史纪录)
x:\DocumentsandSettings\用户名\Recent\下的所有文件(最近浏览文件的快捷方式)
x:\WINDOWS\Temp\下的所有文件(临时文件)
x:\WINDOWS\ServicePackFiles(升级sp1或sp2后的备份文件)
x:\WINDOWS\DriverCache\i386下的压缩文件(驱动程序的备份文件)
x:\WINDOWS\SoftwareDistribution\download下的所有文件
3.如果对系统进行过windoesupdade升级,则删除以下文件:x:\windows\下以$u...开头的隐藏文件
4.然后对磁盘进行碎片整理,整理过程中请退出一切正在运行的程序
5.碎片整理后打开“开始”-“程序”-“附件”-“系统工具”-“系统还原”-“创建一个还原点”(最好以当时的日期作为还原点的名字)
6.打开“我的电脑”-右键点系统盘-“属性”-“磁盘清理”-“其他选项”-单击系统还原一栏里的“清理”-选择“是”-ok了
7、在各种软硬件安装妥当之后,其实XP需要更新文件的时候就很少了。删除系统备份文件吧:开始→运行→sfc.exe/purgecache近3xxM。(该命令的作用是立即清除"Windows文件保护"文件高速缓存,释放出其所占据的空间)
8、删掉\windows\system32\dllcache下dll档(减去200——300mb),这是备用的dll档,只要你已拷贝了安装文件,完全可以这样做。
9、XP会自动备份硬件的驱动程序,但在硬件的驱动安装正确后,一般变动硬件的可能性不大,所以也可以考虑将这个备份删除,文件位于\windows\drivercache\i386目录下,名称为driver.cab,你直接将它删除就可以了,通常这个文件是74M。
10、删除不用的输入法:对很多网友来说,WindowsXPt系统自带的输入法并不全部都合适自己的使用,比如IMJP8_1日文输入法、IMKR6_1韩文输入法这些输入法,如果用不着,我们可以将其删除。输入法位于\windows\ime\文件夹中,全部占用了88M的空间。
11、升级完成发现windows\多了许多类似$NtUninstallQ311889$这些目录,都干掉吧,1x-3xM
12、另外,保留着\windows\help目录下的东西对我来说是一种伤害,呵呵。。。都干掉!
13、关闭系统还原:系统还原功能使用的时间一长,就会占用大量的硬盘空间。因此有必要对其进行手工设置,以减少硬盘占用量。打开"系统属性"对话框,选择"系统还原"选项,选择"在所有驱动器上关闭系统还原"复选框以关闭系统还原。也可仅对系统所在的磁盘或分区设置还原。先选择系统所在的分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公关从业者沟通艺术与社交技巧指南
- 2026年生成式AI在建筑方案设计中的创新应用
- 2026年热力管网补偿器安装与保温质量控制方案
- 2021-2022学年浙江省宁波市余姚市九年级(上)期中数学试卷-带答案详解
- 2023-2024学年人教版小学数学五年级下册第四单元《分数的意义和性质》 单元测试(含答案解析)
- IQC、IPQC、FQC、OQC……这些基础术语如何区分与运用
- 禽类产品购买服务协议书
- 外出行医协议书
- 专题活动策划方案特点(3篇)
- 照明工厂活动策划方案(3篇)
- 施工班组物资管理办法
- GB/T 20899.10-2025金矿石化学分析方法第10部分:锑量的测定
- 《装配式建筑施工技术》课件全套 第1-5章 装配式建筑概述 - 装配式建筑施工安全管理
- 电梯司机安全培训课件
- 安全生产网格员的职责是什么
- 中学跳绳比赛活动方案
- 卵巢癌患者的护理查房
- 水痘疫苗突破性感染研究
- 1998年普通高等学校招生全国统一考试.理科数学试题及答案
- DB32/T 3569-2019花生全程机械化生产技术规范
- 洗车合同与单位协议书
评论
0/150
提交评论