课程设计灭火机器人设计报告.doc_第1页
课程设计灭火机器人设计报告.doc_第2页
课程设计灭火机器人设计报告.doc_第3页
课程设计灭火机器人设计报告.doc_第4页
课程设计灭火机器人设计报告.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

目 录1.概述12.作品的总体设计12.1系统功能及技术指标12.2系统的构成32.3主要设备及元器件选型32.4系统核心处理策略43.作品的详细设计53.1硬件设计53.1.1传感器与A/D转换53.1.2电机驱动73.1.3灭火93.1.4控制系统103.1.5电源113.1.6系统原理图及元器件清123.1.7 PCB设计133.1.8系统硬件资源清单153.2软件设计153.2.1程序流程图153.2.2传感器及A/D转换程序设计163.2.3电机驱动程序设计173.2.4完整程序代码183.3外形设计234.调试与测试255.结论256.感想(小组成员心得体会)267.参考文献271. 概述一直以来, 恶劣环境下的工作一直影响着人们的身心健康, 很多人希望用机器来取代人类在危险环境下作业, 这种迫切的需要促使机器人诞生。 由于现代化都市生活火灾隐患处处存在,火灾也频繁发生。在高度危险的火灾现场,即使是消防队员也无能为力,因此,迫切需要一种智能化灭火机器人来代替消防员执行高度危险的、高负荷的任务。本作品具有智能化自动巡视寻找火源,智能避障的的特点,当它进入一个房间后,巡视整个房间以寻找火源,行进的过程中能够精确躲避障碍物。发现火源后,本作品能自动校准行进方向,判断与火源的距离,进入有效灭火范围内自动启动灭火装置进行灭火。本作品适用于危险火灾现场的灭火和对火灾现场进行火源排查。2. 作品的总体设计2.1系统功能及技术指标本作品具有以下五个模块组成:控制模块、驱动模块、传感器模块、灭火模块、电源模块。1 控制模块采用Atmel89S52单片机作为本系统的核心控制芯片。它能接收ADC0804转换的数字信号,对其进行一系列处理,根据处理结果,驱动电机做相应的运动,并能控制风扇转动进行灭火操作。2 驱动模块驱动模块采用L298芯片与两个直流电机,该芯片能够接收单片机发出的控制信号,同时驱动两个直流电机运动。传感器模块传感器模块采用红外传感器和火焰传感器两种传感器,红外传感器探测行进路面,火焰传感器探测前方火焰,并将探测到的数据传到ADC0804进行模数转换。3 灭火模块灭火模块采用12V直流风扇,用5V电磁继电器作为控制开关控制风扇的停转。4 A/D转换模块 A/D转换模块由四个ADC0804组成,用来接收传感器传回的模拟信号,转换成数字信号,然后传给单片机进行后续处理。5 电源模块用一个4节5号电池夹和一个6节5号电池夹,来提供6V和9V电源。6V提供单片机和L298芯片的工作电源,9V提供电机和风扇的工作电源。2.2系统的构成电源模块控制模块直 流 电 机 AD转换模块传感器模块驱动模块灭 火 模 块图2-1整体结构框架图2.3主要设备及元器件选型1、远红外火焰传感器:灵敏度高、响应速度快、输出信号大、寿命长、工作稳定可靠。2、红外光电传感器:灵敏度高、响应速度快、检测距离可调、寿命长、工作稳定可靠。3、Atmel89S52单片机:一种低功耗高性能的CMOS8位微控制器,内置8KB可在线编程闪存。4、ADC0804模数转换芯片:实现数模转换,功耗低,使用方便,控制简单。5、L298电机驱动芯片:可驱动两个直流电机,驱动能力强,电路简单,使用比较方便。6、电磁继电器:弱电控制强电,隔离控制。7、风扇:12V额定电压,功率小。8、UM2003芯片 :是高耐压、大电流达林顿陈列,由七个硅NPN 达林顿管组成,采用集电极开路输出,输出电流大,故可直接驱动继电器。2.4系统核心处理策略红外传感器检测小车行进的道路是否有障碍物,火焰传感器检测周围环境是否有火源,单片机以扫描的形式逐一扫描每个传感器,判断是否有信号传入,并判断是哪个传感器探测到的信号。若是由红外传感器探测到的信号,则单片机根据探测到信号的不同控制电机做相应的运动,以躲避障碍物;若是由火焰传感器探测到的信号,则单片机根据探测到的信号,判断火焰的方向及距火源距离,并控制电机向火源方向运动,当到达灭火范围内,单片机控制风扇灭火,直到火源熄灭。3. 作品的详细设计3.1硬件设计图3-1功能模块划分图单片机Atmel89S52红外与火焰传感器发射与接收A/D转换驱动电路开关电力直流电机风扇3.1.1传感器与A/D转换远红外火焰传感器可以用来探测火源或其它一些波长在760纳米1100纳米范围内的热源;远红外火焰传感器能够探测到波长在760纳米1100纳米范围内的红外光,探测角度为60,其中红外光波长在940纳米附近时,其灵敏度达到最大;远红外火焰探头的工作温度为-25摄氏度85摄氏度;火焰传感器模组(JNHB2004)是组合好的模组,能将探测到的火焰信号转为0-5V的电压信号,红色线接DC5V,黑色线接GND绿色线信号输出,可直接输入IC。红外光电传感器是一种红外光漫反射式光电传感器,它是一种集发射器和接收器于一体的传感器,当前面有被检测物体时,物体将发射器发出的红外光线反射回接收器,于是光电传感器就“感知”了物体的存在,产生输出信号。采用正5V电压供电;检测距离为50cm左右;抗干扰强,不受可见光影响,可在太阳光底下使用。A/D部分采用ADC0804芯片进行模数转换,将实际的距离转换成电压的变化(模拟量)转换为数字量,供单片机处理。ADC0804原理如下图所示,其中1管脚是片选使能端,2、3管脚是AD转换控制,6管脚是信号的输入,1118管脚是转换完输出的数字量,通过P1口返回的数字量来判断距离和火焰的位置;下图为ADC0804和单片机间的连接原理图图3-2 ADC0804原理图 图3-3 ADC0804和单片机间的连接原理图3.1.2电机驱动电机驱动采用恒压恒流桥式2A驱动芯片L298,内部包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号,而且电路简单,使用比较方便。L298可接受标准TTL逻辑电平信号VSS,VSS可接457 V电压。4脚VS接电源电压,VS电压范围VIH为2546 V。输出电流可达25 A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。ENA,ENB接控制使能端,控制电机的停转。图3-4 L298封装图下面是L298与直流电机的电路连接图:图3-5 驱动电路图其中D1D2为1n4007二极管。通过单片机发出电平信号,可以很容易控制电机正转、反转。3.1.3灭火灭火部分风扇驱动主要采用5V电磁继电器作为电源控制开关,当单片机接收到火焰传感器检测到有火焰信号时,发出指令给电磁继电器来控制电磁继电器闭合,接通风扇驱动部分电路,使风扇转动来实现灭火功能。电磁继电器主要一般由控制线圈、铁芯、衔铁、触点簧片等组成,控制线圈和接点组之间是相互绝缘的,因此,能够为控制电路起到良好的电气隔离作用。当我们在继电器的线圈两头加上其线圈的额定的电压时,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的接通、切断的开关目的下面是电磁继电器控制风扇驱动部分电路连接图:图3-6 继电器电路图 其中UM2003 是高耐压、大电流达林顿陈列,由七个硅NPN 达林顿管组成。采用集电极开路输出,输出电流大,故可直接驱动继电器。当单片机发送0/1指令给P10的8端口时经过in1输入UM2003,再经过UM2003处理,从out1输出信号控制继电器的闭合与断开。3.1.4控制系统AT89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。下面为AT89S52所组成的一个最小系统电路图:图3-7 最小系统电路图3.1.5电源Atmel89C52和L298都需要5V工作电源,用4节5号电池夹装4节电池提供芯片正常工作电压。而直流电机和风扇都采用6节5号电池夹装6节电池供电。100uF、0.1uF电容能够实现输入输出电压的滤波。这样,芯片与电机、风扇都能在正常电压范围内工作。3.1.6系统原理图及元器件1.系统电路原理图图3-8 系统电路原理图2.元器件清单序号名称型号规格数量单位01红外火焰传感器/5.5*1.42个02红外光电传感器/4*24个03AD芯片 ADC08042*0.36个04单片机Atmel89S52/3个05驱动芯片L298/2个06电磁继电器SRD-05VDC-SL-C/1个07发光二极管/8个08二极管1n4007/4个09碳膜电阻/1k8个10碳膜电阻/10k8个11陶瓷电容/pF4个12UM2003芯片/2*0.31个13电路板/14*83块14小车模型/21.85*20.441套3.1.7 PCB设计制作气体监控器电路板的PCB图,流程如下:1根据该器件所能实现功能进行电路图的设计,画出电路图。2对该电路图进行检测查看是否有错误。3检查无误后,利用Protel软件对该电路图的设计生成PCB图。4根据所需PCB器件对PCB板进行划分大小,分层。5、考虑到对该报警器外壳的设计需要进行PCB各器件的排板。6排好板后,根据原理图对PCB图进行布线,先从电源正极开始画电源线+12V,绕PCB板到一定的角度,然后将各个需要+12V电源的器件与之连接。7用同样的方法对VCC进行布线。8进行自动布线。9检查无误后,对该PCB图进行敷铜。PCB图即完成。注:在布线后,一定要仔细检查各元件的接法是否与原理图一致。适时要对原理图以及PCB进行保存,以防改动丢失。图3-9 系统PCB设计图3.1.8系统硬件资源清单本系统的硬件包括直流电机小车、PCB电路板,其规格如下:序号名称型号规格数量单位1小车模型框架/21.85*20.441套2PCB/18.53*8.682块3.2软件设计3.2.1程序流程图图3-10 程序流程图 开始初始化是否探测到火源是执行灭火程序灭火否前进实时避障程序火源查询程序是否终止灭火查找否是结束 3.2.2传感器及A/D转换程序设计在传感器检测的时候,主要分为两部分,火焰传感器和红外光电传感器。单片机P1口的八个发光二极管发光个数分别来标志是否有障碍物和火源远近的程度。那火焰传感器来说,在这里就需要将采集到的模拟信号转化为数字信号,这样才能让单片机处理。在采集到模拟信号后将它转化为数字信号后,返回一个转换值(Temp)进行判断,将此信号分为8个区段,对应区段表示随着火源远近的程度,当LED仅有小于四个亮时,表示没有火源;LED=1变化为LED=0的个数依次增加,当LED全部亮时说明灭火小车距离火源最近。红外光电传感器的实现原理与火焰传感器原理相同。用基本相同的子程序控制,共同组成传感器模块,分别实现火焰检测功能和实时避障功能。当检测出火焰或前方有障碍物时即让蜂鸣器报警的数字信号由song=1变为song=0单片机接受处理控制。主代码设计如下: /* 红外避障程序开始*/ / 第一组传感器 红外 init1(); start(); delay(50); rd=0; delay(10); temp1=P1; rd=1;/读入将它集到模拟信号转化后的数字信号 if(temp10x0f) song=0;/判断是否有障碍物若有,报警 else song=1; delay(10); stop1(); /第二组传感器 init2(); start();delay(50); rd=0; delay(10); temp2=P1; rd=1; if(temp20x0f) song=0; else song=1; delay(10); stop2(); /* 火焰检测程序开始*/ /第三组传感器 火焰 init3(); start(); delay(50); rd=0; delay(10); temp3=P1; rd=1; ;/读入将它集到模拟信号转化后的数字信号 if(temp30x8f) song=1; ;/判断是否有火源 若有,报警 else song=0; delay(10); stop3(); /第四组传感器 init4(); start(); delay(50); rd=0;delay(10); temp4=P1; rd=1; if( temp40x8f) song=1; elsesong=0; delay(10); stop4(); 3.2.3电机驱动程序设计在电机驱动部分主要是通过单片机对传感器采集模拟信号反馈回的数字信号进行处理后,来发送指令控制灭火小车运动。主要在void order(uchar a)函数中当接收到a=0时,小车停止转动;a=1时,小车向前转动;a=2时,小车向后转动;a=3时,小车向左转动;a=4时,小车向右转动;a为其他值时时,小车停止转动。主代码设计如下:void order(uchar a) /电机驱动开始switch(a)case 0: /小车停止转动IN1=0;IN2=0;IN3=0;IN4=0;break;case 1: /小车向前转动IN1=1;IN2=0;IN3=1;IN4=0;break;case 2:/小车向后转动IN1=0;IN2=1;IN3=0;IN4=1;break;case 3:/小车向左转动IN1=0;IN2=1;IN3=1;IN4=0;break;case 4:/小车向右转动IN1=1;IN2=0;IN3=0;IN4=1;break;default:/IN1=0;IN2=0;IN3=0;IN4=0; /电机驱动结束3.2.4完整程序代码#include #define uint unsigned int#define uchar unsigned char/管脚声明/传感器测试sbit P3_2=P32;sbit P3_3=P33;sbit P3_4=P34;sbit P3_5=P35;sbit wr=P36; /开始转换sbit rd=P37; /数据转换完毕sbit song=P27; /警报信号/电机驱动测试sbit IN1=P20;sbit IN2=P21; sbit IN3=P22;sbit IN4=P23;sbit ENA=P24;sbit ENB=P25;/风扇驱动测试sbit fan_relay=P30;/变量声明/传感器测试uint temp1,temp2,temp3,temp4;uchar Is_fire=0;/电机驱动测试uchar receive=0;/行进变量uchar right1=4;uchar left1=3;uchar count=0;/函数声明/传感器测试void init1();void stop1();void init2();void stop2();void init3();void stop3();void init4();void stop4();void start();/电机驱动测试void turnleft();void turnright();void turnup();void turndown();void turnstop();void order(uchar a);/公共函数void delay(uint z);/*主程序开始*/void main() ENA=1;ENB=1; fan_relay=1; while(1) if(Is_fire=0) /* 红外避障程序开始*/ / 第一组传感器 红外 init1(); start(); delay(50); rd=0; delay(10); temp1=P1; rd=1; if(temp10x0f) song=0; else song=1; delay(10); stop1(); /第二组传感器 init2(); start();delay(50); rd=0; delay(10); temp2=P1; rd=1; if(temp20x0f) song=0; else song=1; delay(10); stop2(); if(temp10x0f&temp20x0f) /两个传感器同时检测到 turndown(); /小车向后转动 else if(temp10x0f) /左传感器检测到 turnright(); /小车向右转动 else if(temp20x0f) /右传感器检测到 turnleft(); /小车向左转动 else turnup(); /小车向前转动 delay(10); /* 火焰检测程序开始*/ /第三组传感器火焰 init3(); start(); delay(50); rd=0; delay(10); temp3=P1; rd=1; if(temp30x8f) song=1; else song=0; delay(10); stop3(); /第四组传感器 init4(); start(); delay(50); rd=0;delay(10); temp4=P1; rd=1; if( temp40x8f) song=1; elsesong=0; delay(10); stop4(); if(temp30x8f|temp40x8f) /其中一个传感器检测到火源 fan_relay=0;Is_fire=1; turnup();delay(50); turnstop();/风扇打开,小车慢慢逼近火源进行灭火 if(temp30x8f&temp40;i-) for(j=110;j0;j-);/*传感器部分程序开始*/void init1()P3_2=0;void stop1() P3_2=1;void init2() P3_3=0;void stop2() P3_3=1;void init3() P3_4=0;void stop3() P3_4=1;void init4() P3_5=0;void stop4() P3_5=1;void start() wr=1; wr=0;wr=1;/*传感器部分程序结束*/*电机驱动部分程序开始*/主要包含驱动部分的子函数void turnleft() if(receive!=3) receive=3;order(receive); void turnright() if(receive!=4) receive=4;order(receive);void turnup() if(receive!=1) receive=1; order(receive);void turndown() if(receive!=2) receive=2; order(receive);void turnstop() if(receive!=0) receive=0; order(receive);void order(uchar a) /电机驱动开始switch(a)case 0:IN1=0;IN2=0;IN3=0;IN4=0;break;case 1:IN1=1;IN2=0;IN3=1;IN4=0;break;case 2:IN1=0;IN2=1;IN3=0;IN4=1;break;case 3:IN1=0;IN2=1;IN3=1;IN4=0;break;case 4:IN1=1;IN2=0;IN3=0;IN4=1;break;default:IN1=0;IN2=0;IN3=0;IN4=0; /电机驱动结束/*电机驱动部分程序结束*/3.3外形设计 系统总体机械结构图:1火焰传感器2风扇3电源(电池夹)4小车后轮5直流电机6小车前轮(万向轮)7红外光电传感器8电机驱动电路板9传感器模块电路板10最小系统模块电路板 图3-11主视图 图3-12 侧视图本系统所用小车模型实物图如图: 图3-13 小车模型框架设计图:图3-14 小车框架图长度21.85CM,宽度20.14cm. 包含有两个直流电机,电机参数如下:工作电压: 3V12V DC(建议工作电压在6到8V左右)1、最大扭矩: 1000gf cm min(3V时)2、空载转速: 1:220(3V时)3、负载电流: 120mA (250mA MAX)(3V时) 4. 调试与测试1.电源:通过万用表测试,电压全部在正常工作范围内,芯片与电机、风扇均可正常工作。同一个电路里面的所有接地端要共地(某些特殊要求不能共地的除外),否则会让两个接地端有压降。2.单片机最小系统:当给定某个I/O口的管脚赋高低电平后,用万用表测试,也能测试到对应的高低电平。3.单片机(程序调试):功能部分直接看输出结果。4.驱动电路:将驱动电路与单片机连接,用单片机发送指令,直流电机可以正、反转。5.传感器电路:将传感器电路与单片机连接,用单片机接收传感器反馈信号,给红外传感器两端附近放置障碍物,可以检测出来并发出预警信息;给红外传感器两端附近放置火源,可以检测出来并发出预警信息。5. 结论本作品已完全达到系统设计目标,可以很好的完成上述火源的实时检测并自动报警进行灭火操作。灭火小车可以在对于人类来说,危险的火灾现场区域进行实时避障检测火灾着火点,并进行自主灭火。但现在还一些不尽如人意的地方。比如:在实时检测过程中,由于程序反复循环次数过多,内存积攒到一定程度,有可能导致程序跑偏,使得灭火小车不能正常工作。想增加内容但对程序要求很高,不易实现,因为要求是实时检测,如果程序太过复杂,会让单片机读取传感器信号的时间加长,影响实时检测。6. 感想(小组成员心得体会)通过这次工程技术综合实践,我们了解了一件产品从设计到出厂所经历的所有过程,对产品的制作过程与制作工艺都有了进一步的了解,现在我才知道原来一件产品的试产成功真的是一件不容易的事,需要我们具有很强的能力。这次工程技术综合实践对我们来说意义重大,不仅增长了我们的见识,丰富了我们的经验,扩充了我们的知识,提高了我们的动手能力,锻炼了我们的耐力,培养了我们独立思考的能力,增强了我们的自信,也更让我们明白了团结合作的力量,团队能力的强大。有了这些宝贵的经验,在以后的工作中相信我

温馨提示

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

评论

0/150

提交评论