智能灭火小车论文_第1页
智能灭火小车论文_第2页
智能灭火小车论文_第3页
智能灭火小车论文_第4页
智能灭火小车论文_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

队名:flying成员:谭龙江熊俊斐袁瑞应指导老师:王学军朱卫红田凤2012年5月12日目录6847一、设计目的与设计要求-3-24791.1原理分析-4-44881.2软件分析-5-125311.3制作与调试-5-20223二、方案设计与论证-6-236522.1直流调速系统-6-103092.2超声波探测器电路的设计-7-103412.3灭火局部设计-9-319812.4电源局部设计-9-16395三、硬件电路设计-9-138903.1AT89S52单片机资源分配-9-204403.2电机驱动电路-10-75773.3电源局部-11-305283.4火焰传感器电路-12-108103.5火焰探测器分布-12-305693.6风扇控制电路-13-11188四、软件设计-14-4286五、总电路图如下:-16-7051六、调试与结果分析-16-20050七、总结-17-31141参考文献-17-13605主程序-19-28904附件-30-摘 要本次设计CPU采用Atmel公司的AVR系列单片机中的At89S52。完成的是学校组织的第四届电子设计大赛。完成的作品根本功能要求在规定的场地中尽快寻找到火源,然后在尽可能短的时间内作出灭火动作。本作品使用AVR产生PWM波,控制小车的直流电动机,利用火焰探测器找到火源,利用超声波探测距离,使得小车能够到达蜡烛相应的位置停止,驱动电风扇从而吹灭蜡烛。关键词:At89S52智能小车火焰探测器超声波探测器电风扇智能灭火小车一、设计目的与设计要求此次比赛的场地如下列图1所示,图中的H区为小车的起始地区域,蜡烛在图中正方形的区域内,车头方向车头方向如图,小车从车库出发,自动寻找放置在正中间的蜡烛,并用小车上的电风扇吹灭蜡烛。扩展:1、吹灭放置在任意位置的蜡烛2、吹灭放置在任意位置的多根蜡烛1.1原理分析电路主要由无线接收电路、单片机控制电路和电机驱动电路组成。为了降低学生实际操作的难度,方便调试,无线高频电路采用了现成的315MHz超再生接收模块,而对编、解码电路,那么采用的是市面上遥控电路中较为常用的2262/2272,关于这对电路的详细资料,可看一下本公司网站的相关介绍。单片机控制电路主要将接收到的无线电控制信号进行识别,然后控制电机电路执行相应的动作。无线电控制信号由2272进行解码,从10--13脚四个数据位送出,单片机根据这四位数据组合,进行控制信号的识别。2272电路的17脚为解码有效输出端,与单片机的7脚相连,当遥控信号被正确解码后,这个脚就输出高电平,当遥控信号撤消后,此脚便输出低电平,在进行单片机程序设计时,可根据这个电压变化来判断是否收到有效的无线控制信号。电机驱动电路那么通过控制输入电机两端的电压极性以到达控制电机转向的目的,通过单片机四个输出引脚输出不同的低电平值,可以实现对两个电压转向的控制。但是有一点需要编程时注意,对同一个电机的两个控制脚,千万不能同时输出低电平,这样电时机被短路,容易损坏三极管。1.2软件分析由于无线电信号的解码采用了专用集成电路来处理,使得制作者对单片机软件的编制变得比拟简单,主要编程逻辑为:判断是否收到无线信号→读取四位数据→根据不同的数据,执行不同的动作。基1.3制作与调试电子元器件安装只要按线路板上所标,都可以正确安装,制作中一般常容易出错的就是读色环电阻错误,造成电阻安装错误,安装好后的元件面如图:图2小车硬件二、方案设计与论证根据设计的目的与要求,经过讨论我们一致选定左手法那么,即小车一直延左旋转,直到火焰探测器探测到蜡烛,再利用超声波探测器检测小车到火源的距离。因此设计的小车要求能够及时调节前进的方向,顺利找到火源。2.1直流调速系统鉴于价格和功能的考虑,我们选择了直流电机,通过PWM控制小车的速度以及方向。电机驱动局部有以下两种方案:方案一:使用MOSFET构成H桥式驱动电路,利用PWM波形来控制小车的速度,再用单片机两个I/O口控制电机旋转方向,此电路驱动功率比拟大,小车的转速比拟快。方案二:使用直流电机驱动芯片L298N来驱动小车的电机。L298N作为集成芯片,一块芯片能够输出两路PWM波形,控制两个电机,相对于由MOSFET构成的H桥式驱动电路来说具有电路焊接简单,焊接完成后易出过失的缺点。二者价格上差异不大,所以我们优先选择了方案一。图3H桥驱动电路2.2超声波探测器电路的设计为了能够使小车快速地找到火源所在的房间,就要求避障系统比拟灵敏,遇到障碍物迅速躲避,对于避障电路有以下三种方案:方案一:使用红外开关管ST168来避障方案二:使用光电开关E3F3-DS5ON1方案三:使用超声波探测距离电路模块由于ST168的探测距离太近,而小车的速度不能太慢,ST168那一系列的红外开关管不能够满足要求。方案二中的光电开关,探测距离只能够到达1m,而超声波电路探测距离能够到达2m,而且抗干扰能力比拟强,因此方案三成为了最正确选择。图4超声波模块图4超声波模块2.3灭火局部设计 最后小车找到火源,用什么方法来灭火,最直接的方法是用风扇,而这也是最有可能实现的方法。定下的方案是用单片机控制风扇,当小车距蜡烛10cm的位置停止时,驱动风扇开始旋转灭火。火灭之后,风扇再停止。2.4电源局部设计电源局部,可以使用几节5号电池串联,长时间供电,为电机和风扇供电,产生5V的直流电压,为电路中的各个芯片提供工作电压。三、硬件电路设计3.1AT89S52单片机资源分配此次设计主要使用了At89S52芯片的I/O口用于检测外部传感器的信,TC1用来产生两路PWM波,引脚使用情况如下表:图5单片机资源分配3.2电机驱动电路驱动小车的电机,电路图如下:3.3电源局部图6电源3.4火焰传感器电路可以检测火焰或者波长在760纳米~1100纳米范围内的光源探测角度60度左右,对火焰光谱特别灵敏灵敏度可调,性能稳定工作电压5V,数字量模拟量双输出。灭火小车必备部件输出相应的信号。光电开关有三根引出线,棕色接电源正极,兰色接电源负极,黑色为信号输出端,送给单片机,使单片机作出相应的判断,从而控制小车作出正确的动作。可以检测火焰或者波长在760纳米~1100纳米范围内的光源探测角度60度左右,对火焰光谱特别灵敏灵敏度可调,性能稳定工作电压5V,数字量模拟量双输出。救火机器人必备部件注意:火焰传感器只是对火焰最敏感,对普通光也是有反响的采用模拟量输出方式和AD转换处理,可以获得更高的精度注意:传感器与火焰要保持一定距离,以免高温损坏传感器端口说明:DO为数字量输出,AO为模拟量输出。设有固定螺栓孔,方便安装3.5火焰探测器分布这次设计使用了三个火焰探测器,其分布如下列图所示:图7传感器分布传感器这样分布之后,只要前面或者前面和左边同时没检测到火焰时,小车立即左转,而当小车检测到火焰时小车向火焰方向寻跑,如此,小车可以比拟顺利地跑到蜡烛相应位置。3.6风扇控制电路面风扇的控制使用三极管和接地电阻来实现,当检测到三根白线以后,单片机的PD0口送出高电平,使得电风扇的一路开关闭合,风扇开始旋转,电路图如下。图8风扇控制电路图上图中1,2两引脚接风扇的两端,当检测到了三条白线时,PD0输出高电平,三极管导通,此时电磁继电器的开关打到另外的端口,风扇开始旋转。四、软件设计图9软件流程图图10测距流程图五、总电路图如下:图11总电路图六、调试与结果分析小车第一次在寻找蜡烛时,由于电池电量缺乏没能成功,后来使用的是假设干节干电池串联组成的电池组构成的电源,为整个电路供电。但是小车的电机承受尖峰电流的能力太弱,所以烧坏了一块单片机,只能降低PWM占空比,然后再进行调试。在正式火焰探测时,车底盘上的传感器灵敏度太高,刚刚从出发点出发就显示检测到火焰,开始进行灭火动作,后来经过调节传感器灵敏度,经过调整后小车能够完成根本功能。同时单片机能够控制小车当下执行的操作。七、总结这次比赛从3月下旬开始正式筹划,从买元件,模型再到焊接电路,组装小车,中间出现了诸多让人意料不到的事情,最开始的第一个模型车体太小,装上风扇以后重心不好平衡,硬件电路根本没有问题,但是小车的电机总是出现一些这样或那样的问题,最终第一辆小车的两个电机差速过大,很不好调节两轮的PWM占空比,从而使小车转过固定的角度,或者使小车走直线,无奈之下只好再寻一辆车模。真正的硬件焊接时间并没有几天,大局部时间都花在了小车调试及编程软件上面,小车的控制总是出现问题,所以这也让我们有了一个教训,下次再做智能小车时,编程软件一定要选好。通过这次智能小车的制作,我们将AVR系列单片机的资源以及一些根本功能掌握地比拟牢固,另外在模块化编程方面也有了上些心得体会,有了一定的收获。参考文献1.童诗白主编.模拟电子技术根底〔第三版〕.北京:高教出版社,20012.刘冰茹主编·现代电子技术实践课程指导·北京:机械工业出版社·20033.王玉凤主编·电路设计与仿真·北京:清华大学出版社·20054.谢自美主编·电子线路设计.实验.测试〔第三版〕·武汉:华中科技大学出版社·20005.罗杰·电子线路设计实验·北京:电子工业出版社·20086.杨刚·电子系统设计与实践·北京:电子工业出版社·20047.于卫·模拟电子技术实验及综合实训教程·武汉:华中科技大学出版社·20088.陈兆仁·电子技术根底实验研究与设计·北京:电子工业出版社·2000单片机原理及C51开发技术主程序#include<reg51.h> //器件配置文件#include<intrins.h>sbittrig=P3^6;sbitecho=P3^7;unsignedinttime=0;unsignedinttimer=0;unsignedintt=0;unsignedcharposit=0;unsignedlongS=0;bitflag=0;unsignedcharconstdiscode[]={0x28,0x7E,0xA2,0x62,0x74,0x61,0x21,0x7A,0x20,0x60,0xff/*-*/};unsignedcharconstpositon[3]={0xf7,0xef,0xdf};unsignedchardisbuff[4]={0,0,0,0,};sbitL1=P3^0;sbitL2=P3^1;sbitL3=P3^2;sbitfan=P3^3;//风扇sbitPWM1=P0^0;sbitPWM2=P0^1;sbitPWM3=P0^2;sbitPWM4=P0^3;sbitzuod=P0^4;//左转指示灯sbityoud=P0^5;//右转指示灯/****************************延时1MS*************************/voiddelay1ms(intms){unsignedinti,j;for(i=0;i<ms;i++)for(j=0;j<100;j++);}voidgo1(void){PWM1=0;PWM2=1;PWM3=1;PWM4=0;zuod=1;youd=1;}//小车前进//voidgo(void){PWM1=0;PWM2=1;PWM3=1;PWM4=0;zuod=1;youd=1;delay1ms(100);PWM1=1;PWM2=1;PWM3=1;PWM4=1;delay1ms(100);}//小车停止//voidstop(void){PWM1=1;PWM2=1;PWM3=1;PWM4=1;zuod=1;youd=1;delay1ms(100);PWM1=1;PWM2=1;PWM3=1;PWM4=1;delay1ms(100);}//小车左转///voidleft(void){PWM1=1;PWM2=0;PWM3=1;PWM4=0;zuod=0;youd=1;delay1ms(100);PWM1=1;PWM2=1;PWM3=1;PWM4=1;delay1ms(100);}//小车右转//voidright(void){PWM1=0;PWM2=1;PWM3=0;PWM4=1;zuod=1;youd=0;delay1ms(100);PWM1=1;PWM2=1;PWM3=1;PWM4=1;delay1ms(100);}//小车大左转//voiddleft(void){PWM1=0;PWM2=0;PWM3=1;PWM4=0;zuod=0;youd=1;delay1ms(100);PWM1=1;PWM2=1;PWM3=1;PWM4=1;delay1ms(100);}//小车大右转//voiddright(void){PWM1=0;PWM2=1;PWM3=0;PWM4=0;zuod=1;youd=0;delay1ms(100);PWM1=1;PWM2=1;PWM3=1;PWM4=1;delay1ms(100);}/********************************************************/voidDisplay(void) //扫描数码管 { if(posit==0) {P1=(discode[disbuff[posit]])&0x7f;} else {P1=discode[disbuff[posit]];} P2=positon[posit]; if(++posit>=3) posit=0; }/********************************************************/voidConut(void) { time=TH0*256+TL0; TH0=0; TL0=0; S=(time*1.7)/100;//算出来是CM if((S>=700)||flag==1)//超出测量范围显示“-” { flag=0; disbuff[0]=10; //“-” disbuff[1]=10; //“-” disbuff[2]=10; //“-” } else { disbuff[0]=S%1000/100; disbuff[1]=S%1000%100/10; disbuff[2]=S%1000%10%10; } }/********************************************************/voidzd0()interrupt1 //T0中断用来计数器溢出,超过测距范围{flag=1; //中断溢出标志}/********************************************************/voidzd3()interrupt3 //T1中断用来扫描数码管和计800MS启动模块{ TH1=0xf8; TL1=0x30; Display(); timer++; if(timer>=20) { timer=0; trig=1; //800MS启动一次模块 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); trig=0; } }/*********************************************************/ voidmain(void){TMOD=0x11; //设T0为方式1,GATE=1; TH0=0; TL0=0; TH1=0xf8; //2MS定时 TL1=0x30; ET0=1;//允许T0中断 ET1=1; //允许T1中断 TR1=1; //开启定时器 EA=1;

温馨提示

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

评论

0/150

提交评论