循迹灭火智能小车.docx
《循迹灭火智能小车.docx》由会员分享,可在线阅读,更多相关《循迹灭火智能小车.docx(31页珍藏版)》请在冰豆网上搜索。
循迹灭火智能小车
毕业设计报告书
循迹灭火消防车
作者姓名
*明月
学科专业
电子信息工程技术
指导教师
杨红副教授
所在班级
2008级电子①班
学籍号码
*******
所在学院
机电工程学院
论文提交日期
2011年月日
摘要
本设计由寻迹电路,寻火电路、测速模块、灭火模块、显示模块、车尾灯、电机驱动电路以及MCU控制模块八大部分构成。
本设计采用爱特梅尔半导体公司的AT89S52作为小车的控制核心,实现对各个模块的通讯和控制。
寻迹部分以反射式光电传感器和比较器组成,将采集到的数据处理后反馈至单片机。
寻火部分由ADC0809与红外对管组成。
灭火部分由升压电路和风扇组成。
电机由以L298N为核心部件的电路驱动。
该小车具有按照指定的路线巡逻,发现火源进行灭火的功能。
基于稳定的硬件电路设计以及精确可靠的软件算法,小车能够实现预期功能。
关键字:
循迹;寻火;灭火
前言1
第1章整体构思1
第2章方案比较、设计与论证2
2.1小车主体设计2
2.2轨迹采集方案2
2.3火焰识别模块3
2.4灭火模块3
2.5电机驱动模块4
2.6测速计程模块4
2.7显示模块5
2.8车灯装饰5
第3章最终方案5
第4章硬件电路设计6
4.1电源和主控制器模块6
4.2电机驱动模块7
4.3显示模块8
4.4循迹模块与测速模块9
4.5寻火模块10
4.6灭火模块11
附录二:
实物图20
答辩小组签名的答辩决议书22
前言
随着机械自动化的不断发展,人们在工作、生活的各个方面都希望能够利用自动化的操作来提高工作效率,使生产发展能够得到不断的提高。
在实际应用中,具有智能化的机器人在人们无法触及的工作场合下更是大显身手,如各种军事机器人、勘探机器人等。
和我们日常生活更为接近的有各种医疗机器人、汽车自动泊位系统、自动驾驶系统等等。
任何一个机器人想要实现智能化就必须能够实现对外部环境的自我感知判断并作出相应反应,最终完成人们布置的任务。
本设计通过对外部环境的自我感知问题的分析,制作了一辆按照黑线划定的范围进行巡逻,发现火源进行扑灭的消防车。
第1章整体构思
根据循迹灭火消防车的功能特点分析,把各功能划分为寻迹电路,寻火电路、灭火电路、车尾灯、电机驱动电路以及MCU控制模块六大部分。
图1-1设计模块
第2章方案比较、设计与论证
2.1小车主体设计
(1)购买玩具小车进行改装
采用玩具车来改装,加入自己的控制系统即可,这样的优势是,省去了制作车体的功夫。
另外小车主体布局也比较合理,可以较好地完成任务。
但是玩具小车的造型各异,质量参差不齐,选购质量好的小车价格偏高,选购质量差的小车,容易在改装和调试过程中想、损坏,而且小车的电路布局受到小车主体的限制。
(2)自己设计小车主体结构
自己设计制造小车主体结构,能够按照布局设计思路来完成小车主体结构的调整,保证电路部分和机械部分的全面协调。
可以合理地安放传感器,同时也可以锻炼自己的动手设计能力,兼有成本低廉的优势。
但是自己设计的小车难免会外表粗糙,费时费力。
综合考虑各种利弊,兼顾小车的成本和质量问题,选择了自己设计小车主体结构。
2.2轨迹采集方案
(1)使用CCD(Charge-coupledDevice,电荷耦合元件)传感器来采集路面信息
使用CCD传感器,可以获取大量的图像信息,可以全面完整的掌握路径信息,可以进行较远距离的预测和识别图像复杂的路面,而且抗干扰能力强。
但是对于本项目来说,使用CCD传感器也有其不足之处。
首先使用CCD传感器需要有大量图像处理的工作,需要进行大量数据的存储和计算。
因为是以实现小车视觉为目的,实现起来工作量较大,相当繁琐。
(2)使用光电传感器来采集路面信息
使用红外传感器最大的优点就是结构简明,实现方便,成本低廉,免去了繁复的图像处理工作,反应灵敏,响应时间低,便于近距离路面情况
的检测。
但红外传感器的缺点是,它所获取的信息是不完全的,只能对路面情况作简单的黑白判别,检测距离有限,而且容易受到诸多扰动的影响,抗干扰能力较差,背景光源,器件之间的差异,传感器高度位置的差异等都将对其造成干扰。
经过综合考虑,在本设计主要采集黑色线路,因而采用红外光电传感器作为信息采集元件。
2.3火焰识别模块
火焰检测有温度传感器、烟雾传感器、红外传感器、紫外传感器以及CCD传感器。
综合论证这几种传感器,因本设计使用蜡烛模拟火源,对环境温度影响小,烟雾少,排除了温度传感器、烟雾传感器。
考虑到易用性,排除了CCD传感器,从而主要考虑以下两种方案。
(1)使用紫外传感器识别火焰
紫外线传感器只对185~260nm狭窄范围内的紫外线进行响应,而对其它频谱范围的光线不敏感,利用它可以对火焰中的紫外线进行检测。
具有灵敏度高,检测及时准确、抗干扰性强的特点。
主要缺点是价格是红外传感器的8-10倍。
(2)使用红外传感器识别火焰
红外火焰传感器可以用来探测火源或其它一些波长在700纳米~1000纳米范围内的热源。
利用它可以对燃烧时发出大量红外光进行检测。
价格低廉,但是容易受到外界光的干扰。
综合考虑,采用红外传感器识别火焰,并采取相应措施排除干扰。
2.4灭火模块
(1)用水灭火。
水可以很好的将蜡烛浇灭。
但是不管是挤压喷水还是使用水泵喷水,在喷水的远近和广度难以控制,并且使用大电流电机对电源的冲击相当大,难以保证系统的稳定性。
(2)用风扇灭火。
虽然风能助长火势,但是在火源比较小的情况下,风将可燃物的温度降到燃点之下,实现灭火。
采用风扇已经可以满足模拟灭火需求,而且选用风扇在硬件制作和软件编程上更简单、更容易操控。
2.5电机驱动模块
(1)采用L298N芯片作为电机驱动芯片。
L298N是一个具有高电压大电流的H桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。
用该芯片作为电机驱动,操作方便,稳定性好,性能优良。
(2)对于直流电机用分立元件构成驱动电路。
由分立元件构成电机驱动电路,结构简单,价格低廉,在实际应用中应用广泛。
但是这种电路工作性能不够稳定。
因此选用了L298N作为电机驱动芯片。
2.6测速计程模块
方案1:
用霍耳传感器进行测速。
利用霍耳效应,在车轮的内侧装上一条细磁铁,把霍耳传感器同样装在车轮的内侧,通过测量脉冲的个数就可以测得路程。
霍耳传感器是非接触式测量,而且对灰尘、湿度、振动等环境条件不敏感。
特性也不随时间而变化。
方案2:
用光电开关进行测速计程。
在车轮的外侧贴一个黑白相间的扇形码盘,用光电对管对码盘进行检测。
光电对管通过白色区域和黑色区域就会使输出产生脉冲信号。
将脉冲信号送给单片机进行检测就可以得到轮子的转速。
虽然霍耳传感器具有众多优点,但是由于模型车较小,比较细小的磁铁不易寻找。
而且利用光电开关更加容易安装使用,所以采用光电开光进行测速计程。
2.7显示模块
方案1:
用8段数码管进行显示小车走过的路程,速度,火的当前位置。
方案2:
用液晶1602进行显示。
1602是可以显示32个字符,分成两行每行16个字符,体积小巧,低功耗、使用方便。
由于显示模块需要显示的内容比较少,结合成本控制,选择用8段数码管进行显示。
2.8车灯装饰
由于单片机的端口仍有较多剩余,结合小车的功耗考虑,使用八个LED轮闪,给小车添加些色彩。
第3章最终方案
(1)采用自制小车。
(2)采用红外对管进行循迹。
(3)采用红外对管和自制码盘进行测速计程。
(4)采用红外传感器识别火焰。
(5)采用风扇灭火。
(6)采用8段数码管显示信息。
(7)采用专用芯片L298N驱动电机。
(8)采用八个LED作为点缀装饰。
第4章硬件电路设计
4.1电源和主控制器模块
电源是决定小车性能的关键问题。
从成本及小车性能等方面考虑,在设计中选用了单一电源供电。
电源采用4节干电池6V直流电源,经L7805稳压模块后输出5V电压,供给单片机及检测电路,而且6V电源可直接通过电机驱动芯片向电机供电以及灭火风扇使用。
图4-1电源模块
AT89S52是51内核的单片机。
有与8051相同的指令系统。
所设计的51最小系统板操作简单,使用方便。
可以通过ISP在线下载程序。
最小系统板原理图如图所示:
图4-2AT89S52最小系统
4.2电机驱动模块
小车的动力由两个直流电机提供,可以通过调整两个电机的转速实现消防车的前进,后退和原地打转等动作。
直流电机的转速由单片机提供的脉冲通过控制驱动芯片L298实现。
设计电路如下图所示。
图4-3电机驱动电路
4.3显示模块
显示电路采用4位共阳LED数码管,从P1口输出段码,列扫描用P3.0~P3.3口来实现,列驱动用9012三极管。
图4-4显示模块电路
4.4循迹模块与测速模块
(1)传感器原理
循迹模块与测速模块原理一致,由于黑色吸光,当红外发射管发出的光照射在上面后反射的部分就较小,接收管接收到的红外线也就较少,表现为电阻比较大,通过外接的电路就可以读出检测的状态,同理当照射在白色表面时发射的红外线就比较多,表现为接收管的电阻就比较小。
图4-5TCRT5000红外光电对管
(2)检测电路
实际使用发现红外对管在黑色和白色之间切换电阻变化比较小,因此选用电压比较器LM339对该变化转换为高电平和低电平。
每个比较器有两个输入端和一个输出端。
两个输入端一个称为同相输入端,用“+”表示,另一个称为反相输入端,用“-”表示。
用作比较两个电压时,任意一个输入端加一个固定电压做参考电压,另一端加一个待比较的信号电压。
当“+”端电压高于“-”端时,输出管截止,相当于输出端开路。
当“-”端电压高于“+”端时,输出管饱和,相当于输出端接低电位。
两个输入端电压差别大于10mV就能确保输出能从一种状态可靠地转换到另一种状态,因此,把LM339用在弱信号检测等场合是比较
理想的。
具体原理图如下图所示。
图4-6检测电路
4.5寻火模块
(1)传感器原理
根据火焰在燃烧过程中释放大量的红外光,使用红外接受管对红外光的检测,判断火焰的存在。
采用红外接收头和电阻串联,利用分压原理,将外界红外光的变化转换为电压的变化。
图4-7利用分压原理将红外光的变化转换为电压的变化
(2)数据处理模块
根据端口使用情况分析,采用PLCC封装的AT89S52和ADC0809作为数据处理模块,ADC0809具有八路模拟输入端口,结合八个红外接收模块,把电压模拟量的变化转换为数字量的变化。
图4-8寻火数据处理模块
4.6灭火模块
灭火部分采用12V风扇作为灭火工具,为了达到额定电压提高风扇的转速,需要升压获取12V电压,利用升压斩波电路自己制作,转换效率不高,精度差稳定性也不好,因此使用了市场上现成的DC-DC升压模块。
通过单片机控制继电器开关灭火风扇。
图4-9灭火模块电路
4.7车尾灯模块
尾灯模块采用四种颜色共八个LED灯构成。
电路原理图如下:
图4-10车尾灯电路
第5章软件设计
小车的功能实现的程序框图如下:
图5-1程序设计框图
参考文献:
[1]求是科技.8051系列单片机C程序设计完全手册.北京:
人民邮电出版社,2006年
[2]张义和,王敏男等编.例说51单片机(C语言版).北京:
人民邮电出版社,2008年
[3]楼然苗,李光飞编著.单片机课程设计指导.北京:
北京航空航天大学出版社,2009年
附录一:
小车程序
(1)主控模块程序:
#include
#defineTH1_flag(65636-65000)/256
#defineTL1_flag(65636-65000)%256
sbitwei0=P2^0;
sbitwei1=P2^1;
sbitwei2=P2^2;
sbitwei3=P2^3;
sbitkz0=P3^0;
sbitkz1=P3^1;
sbitl=P3^3;//左传感
sbitm=P3^4;//中传感
sbitr=P3^5;//右传感
unsignedchara,fx,flag,mh_flag,lc_dis[4],TH0_count=0,TL0_count=0,T0_count=0,display_count=0,time,v;
unsignedintn=0,lc=0;
unsignedlonglm=0;
unsignedcharcodetable[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,//0~9
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0x41//a-f,无显示};
Front()
{P0=0x3a;}
Left()
{P0=0x39;}
Right()
{P0=0x36;}
Stop()
{P0=0x00;}
xunji()
{if(a==0)
{if(l==0)
{flag=1;}
if(m==0)
{flag=0;}
if(r==0)
{flag=2;}
if(flag==0)
{Front();}
if(flag==1)
{Left();}
if(flag==2)
{Right();}}}
display()
{if(a==0)
{P1=0xff;
wei0=0;
P1=table[lc_dis[0]];
wei0=1;
if(lc_dis[1]!
=0||lc_dis[2]!
=0||(lc_dis[3]!
=0&&lc_dis[3]!
=17))
{P1=0xff;
wei1=0;
P1=table[lc_dis[1]];
wei1=1;}
if(lc_dis[2]!
=0||(lc_dis[3]!
=0&&lc_dis[3]!
=17))
{P1=0xff;
wei2=0;
P1=table[lc_dis[2]];
wei2=1;}
if(lc_dis[3]!
=0)
{P1=0xff;
wei3=0;
P1=table[lc_dis[3]];
wei3=1;}}
else
{P1=0xff;
wei0=0;
P1=table[a];
wei0=1;}}
xunhuo()
{if(kz0==0&&kz1==0)
{a=0;}
elseif(kz0==1&&kz1==0)
{a=1;}
elseif(kz0==0&&kz1==1)
{a=2;}
elseif(kz0==1&&kz1==1)
{a=3;}
if(a==0)
{mh_flag=0;}
if(a==1)
{Left();fx=1;}
if(a==2)
{Stop();mh_flag=1;}
if(a==3)
{Right();fx=3;}
if(mh_flag==0)
{if(fx!
=0)
{if(a==0)
{while(flag!
=0)
{if(fx==1)
{Right();}
if(fx==3)
{Left();}}
fx=0;
mh_flag=0;}}}}
main()
{IE=0x8B;//开外部中断0,T0,T1
IT0=1;//负边缘触发
TMOD=0x11;//mode1
TH1=TH1_flag;
TL1=TL1_flag;
TH0=0;
TL0=0;
TR1=1;
TR0=1;
kz0=0;
kz1=0;
l=1;//左传感
m=1;//中传感
r=1;//右传感
while
(1)
{xunhuo();
xunji();
display();
P1=table[a];}}
jxlc()interrupt0//计算路程
{TH0_count=TH0;
TL0_count=TL0;
TR0=0;
TH0=0;
TL0=0;
TR0=1;
n++;
lm=n*25;//一个脉冲所走周长为25毫米
if(display_count<200)
{display_count++;}
elsedisplay_count=0;
if(display_count<100)
{lc=lm/100;
lc_dis[3]=lc/1000;
lc_dis[2]=lc%1000/100;
lc_dis[1]=lc%100/10;
lc_dis[0]=lc%10;}
elseif(display_count>100)
{time=T0_count*66+TH0_count*256+TL0_count;
v=lm/time/100;
lc_dis[3]=17;
lc_dis[2]=v/100;
lc_dis[1]=v%100/10;
lc_dis[0]=v%10;}}
xs()interrupt3//显示
{TH1=TH1_flag;
TL1=TL1_flag;
TR1=1;
display();}
sj()interrupt1//计算时间
{T0_count++;}
(2)AD数据处理模块程序
#include
#defineTH_time(65636-50000)/256
#defineTL_time(65636-50000)%256
sbitALE=P2^3;
sbitSTART=P2^4;
sbitOE=P2^5;
sbitEOC=P2^6;
sbitfan=P2^7;
sbitkz0=P3^0;
sbitkz1=P3^1;
unsignedchar
ad_data[8],b,flag,fire_flag,bz_flag,int_led=0,a,fire[5],i,temp,min_flag;
unsignedcharcodeLED[]=
{0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,
0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,
0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,
0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,};
delay(unsignedintx)
{unsignedintc;
for(c=0;cdingwei()
{temp=ad_data[0];
for(i=0;i<8;i++)
{if(temp>ad_data[i])
{temp=ad_data[i];}}
if(temp<70)
{for(i=0;i<8;i++)
{if(temp==ad_data[i])
{min_flag=i;}}
if(min_flag<3)//左
{kz0=1;
kz1=0;
flag=0;}
if(min_flag>4)//右
{kz0=1;
kz1=1;
flag=0;}
if(min_flag==3||min_flag==4)//停
{kz0=0;
kz1=1;
flag=1;}}
else{
kz0=0;
kz1=0;}}
AD()
{unsignedcharm,s=0x00;
P2=s;
for(m=0;m<8;m++)
{ALE=1;
ALE=1;
ALE=1;
ALE=0;
START=1;
START=1;
START=1;
START=0;
START=0;
START=0;
START=0;
delay(70);
OE=1;
ad_data[m]=P1;
OE=0;
s++;
P2=s;}
P2=0x00;}
miehuo()
{while(flag==1)
{fan=1;
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
fan=0;
flag=0;
delay(50000);}}
main()
{P3=P3&0xFC;
IE=0x82;
TMOD=0x01;
P0=0xff;
TH0=TH_time;
TL0=TL_time;
TR0=1;
while
(1)
{AD();
dingwei();
miehuo();
for(a=0;a<8;a++)
{ad_data[a]=0;}}}
voidLED_int(void)interrupt1
{TH0=TH_time;
TL0=TL_time;
P0=LED[int_led];
int_led++;
if(int_led>64)
{int_led=0;}}
附录二:
实物图
图1
图2
图3
致谢
通过循迹灭火消防小车的设计,让我们在以往几年的电子理论以及实践学习有了一个总结,许多以前没有掌握得很牢固的知识也在设计中学会了,在设计中体会到艰辛的同时,更深深的体会到成功的喜悦。
在这里要感谢机电工程学院一直对我们的关心以及帮助,同时感谢这两年多一直陪伴我们的专业老师,没有他们循循善诱的教导,就没有我们今天这个设计,特别感谢我们这个设计的指导老师杨红副教授。
在设计当中,还有许多同学提出了很多宝贵意见,以及10B404的室友一直以来的支持和提供了很多帮助,使这个设计顺利完成,请接受我们诚挚的谢意!
答辩小组签名的答辩决议书
答辩小组对论文的评定意见
论文答辩日期:
年月日
答辩委员会委员共_______人,到会委员_______人
表决票数:
优秀()票;良好()票;中();及格()票;不及格()票
表决结果(打“√”):
优秀();良好();中();及格();不及格()
决议:
同意毕业()不同意毕业()
答辩小组成员签名
(组长)