基于单片机的火灾智能报警系统.docx

上传人:b****1 文档编号:14327587 上传时间:2023-06-22 格式:DOCX 页数:17 大小:173.75KB
下载 相关 举报
基于单片机的火灾智能报警系统.docx_第1页
第1页 / 共17页
基于单片机的火灾智能报警系统.docx_第2页
第2页 / 共17页
基于单片机的火灾智能报警系统.docx_第3页
第3页 / 共17页
基于单片机的火灾智能报警系统.docx_第4页
第4页 / 共17页
基于单片机的火灾智能报警系统.docx_第5页
第5页 / 共17页
基于单片机的火灾智能报警系统.docx_第6页
第6页 / 共17页
基于单片机的火灾智能报警系统.docx_第7页
第7页 / 共17页
基于单片机的火灾智能报警系统.docx_第8页
第8页 / 共17页
基于单片机的火灾智能报警系统.docx_第9页
第9页 / 共17页
基于单片机的火灾智能报警系统.docx_第10页
第10页 / 共17页
基于单片机的火灾智能报警系统.docx_第11页
第11页 / 共17页
基于单片机的火灾智能报警系统.docx_第12页
第12页 / 共17页
基于单片机的火灾智能报警系统.docx_第13页
第13页 / 共17页
基于单片机的火灾智能报警系统.docx_第14页
第14页 / 共17页
基于单片机的火灾智能报警系统.docx_第15页
第15页 / 共17页
基于单片机的火灾智能报警系统.docx_第16页
第16页 / 共17页
基于单片机的火灾智能报警系统.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的火灾智能报警系统.docx

《基于单片机的火灾智能报警系统.docx》由会员分享,可在线阅读,更多相关《基于单片机的火灾智能报警系统.docx(17页珍藏版)》请在冰点文库上搜索。

基于单片机的火灾智能报警系统.docx

基于单片机的火灾智能报警系统

 

大庆师范学院

本科生毕业论文

 

基于单片机的火灾智能报警系统

 

院(系)物理与电气信息工程学院

专业电子信息工程

研究方向应用型

学生姓名某某某

学号201001071555

指导教师姓名某某某

指导教师职称讲师

2014年5月22日

摘要

本火灾报警系统,使用STC5A60S2单片机作为主控芯片、MQ-2烟雾浓度传感器作为敏感器件,使用无线遥控进行设置、12864液晶屏显示。

系统更加注重人性化设计,具有较强的人机交互能力,可以设置报警方式和灵敏度。

当火灾发生时会产生大量的烟雾,而MQ-2电阻型传感器,在吸附到大量烟雾时,该期间内阻会发生变化,利用这一特性可以实现火灾检测。

环境烟雾浓度的不同会通过MQ-2及测量电路转换为电压的变化,将此信号传输给单片机,单片机片内自带的AD将此信号转换为数字信号,单片机作出处理。

关键词:

火灾报警系统;烟雾浓度传感器;STC12C5A60S2单片机;

Abstract

Thefirealarmsystem,useSTC5A60S2microcontrollerasthemasterchip,MQ-2smokeconcentrationsensorassensitivedevices,usethewirelessremotecontrolsettings,12864LCDdisplay.Systemmorehuman-orienteddesign,withastronginteractivecapabilities,youcansetthealarmmodeandsensitivity.Whenafireoccurswillproducealotofsmoke,andMQ-2resistance-typesensorwhenadsorbedtoalotofsmoke,theresistancewillchangeduringthisperiod,theuseofthisfeaturecanbeimplementedfiredetection.DifferentconcentrationsofenvironmentaltobaccosmokewillbyMQ-2andmeasuringcircuitconvertsthevoltagechanges,thissignalistransmittedtothemicrocontroller,ADconvertthissignalcomeswithinthemicrocontrollerchipdigitalsignalprocessingtomicrocontroller.

Keywords:

FireAlarmSystem;Smokeconcentrationsensor;STC12C5A60S2MCU

 

第一章

绪论

1.1课题背景和意义

在人类漫长的发展史中,人类从对火的恐惧,到最后可以自如的控制火,这是人类步入文明的标志,很难讲火是好的还是坏的。

人类的日常生产生活无法离开火,但是人类却又不得不畏惧火,有统计显示全球每年发生火灾约600万至700万次,每一次火灾的背后无不有一个个惊心动魄的故事。

饶是科技高速发展的今天人类仍然没有很好的办法解决突如其来的火灾,但是我们可以利用我们可以引入火灾预警机制。

我们可以利用火灾报警装置,在火灾发生的初期发现火情,控制火情,以将火灾造成的损失控制到最小。

1.2该项目在国内现状和创新点

目前市面上火灾报警系统已经不再是鲜见的产品,但是发现这些产品均存在一个共同的缺点,很难进行设置,很多火灾报警系统都是使用烟雾浓度传感器设计的,问题在于,有时候有一点烟,都会触发报警,这是我们不希望的,但是如果把灵敏度设低,有时候我们又希望他起到一个检测吸烟的作用,这就是一个矛盾,在本系统中加入了可供人机交互的菜单系统,这样就可以认为的设置灵敏度或其他的参数。

而且很多产品都是在报警后等待人工去处理,而不是在警报解除后自动停止报警,这就是一种非人性化的设计,本系统也解决了这一问题。

1.3本文内容的结构安排

本文分四章,第一章绪论;第二章系统硬件设计,分模块说明,清晰明了;第三章软件设计,写了各部分软件的编写思路和算法;第四章调试过程与总结,写了制作中遇到的问题。

第二章

系统的硬件设计

2.1传感器的对比与选择

火实际是能量释放的一种方式,有火的地方必然伴随着发光发热,并且会释放出大量的烟雾,同时由于含碳不完全燃烧,会释放出大量的CO,根据火的这些特性,我们可以选择一下传感器。

2.1.1火源传感器

火源传感器,本质是红外接收管,其实际是一种具有光敏特性的PN结,正向具有二极管的特性,而其在无红外线照射时只有较小的饱和反向漏电流,此时二极管反向截止,然而当其受到红外线照射时,方向电阻急剧下降,使其反向导通。

利用这种特性,我们可以根据图2.1所示的电路设计出一种火灾报警系统的传感电路,再将其输出接入比较放大电路进行处理,得到一个开关量,就可以起到火灾报警作用。

但是这种传感器具有很大的弊端,由于其本质是检测红外线,而自然环境中可以产生红外线的物体实在太多,而且火灾在发生的初期不可能有较明显的明火,所以,通过论证,否定了这种方案。

 

图2.1火源传感器检测电路

2.1.2温度传感器

火灾的发生必然会释放大量的热量,由于这个原因我们可以使用温度传感器检测温度的方式,来确定是否有火灾发生,我们可以使用市场上被广泛使用的DS18B20数字温度传感器来测量温度,或者使用温敏电阻来设计一个输出模拟量的检测电路,这个思路在某些情况下是可行的。

但是通过论证和实验,否定了这个思路,我们可以用手感受到火焰的温度,当时在寒冷的冬季,我们在通过火来取暖,坐在火的附近,感受到的是暖和,而不是炙热,然而如果传感器的安装点离火源较远时,这个温度的变化甚至无法体现,当然,我们肯定火一定会在一定程度上改变室温,但是这个改变是不好确定的。

而且,就像刚才讲的那样,火灾在发生的初期很难有较大的明火,所以这个温度的改变就更小了,很多时候甚至当传感器检测到时,火灾已经到了无法挽回的程度。

2.1.3气体传感器

在之前,我们说过,火灾发生之时,伴随它的一定有大量的烟雾和CO,所以我们可以很好地是由气体传感器来检测火灾。

这里我们有两个选择。

使用CO传感器,MQ-7,由于火灾发生时物体几乎不可能完全燃烧,所以一定会有大量的CO放出,所以我们如果使用MQ-7作为检测元件,可以有十分理想的结果。

使用烟雾浓度传感器,MQ-2,由于火灾发生是一定会产生大量的烟雾,所以我们如果使用烟雾浓度传感器——MQ-2也可以有很理想的结果。

通过论证,最终选择了MQ-2烟雾浓度传感器,火灾在发生时烟雾是巨大的,很多人在火灾中丧生,并不是烧死的,而是因为烟雾过大而被呛死,很显然,检测烟雾浓度要比检测CO的浓度容易的多,而且从成本角度考虑MQ-2比MQ-7跟加廉价。

烟雾浓度传感器,是一种电阻传感器,其内阻随烟雾浓度的增加而变化,一般有6个引脚,其中有两个加热引脚,是传感器内部加热电阻的两端,阻值在100Ω以内,加热电阻起到自洁的作用,除去气敏电阻在断电时所吸附到的还原性气体,根据实验显示,由半导体材料SnO2气敏电阻的灵敏度在200-300℃时灵敏度最高。

另外四个引脚为气敏电阻的两端,其中两两相短,检测电路如图2.2所示。

输出可接入放大电路或直接接入ADC。

 

图2.2气体传感器检测电路

2.2系统主控芯片说明

系统采用宏晶公司STC12C5A60S2单片机作为主控芯片,该单片机使用8051指令集,完全兼容传统8051单片机,内部有60K程序空间,1K用户EEPROM,DIP40封装,支持2路PWM输出、8路10位AD采集。

由于该单片机片内自带ADC,所以可以省去片外AD转换电路,可直接将传感的电阻量,由图2.2的电路转换为模拟电压信号,OUTPUT直接接到单片机的AD转换引脚。

2.2.1单片机最小系统的设计

在设计最小系统时,由于考虑到单片机完全支持断电复位,所以没有必要设计外围复位电路,而且当做成产品时更加没有必要多出一个毫无用处的复位按键,所以我认为加复位电路是很多人在设计单片机最小系统时的一个不好的习惯,当然加上复位电路会使系统更加完善,但是在此我更加愿意采用一个更为精简的设计。

 

图2.3单片机最小系统原理图

可以看到图2.3的最小系统,整体上只用到了一个晶振电路,晶振电路采用12M晶振,使用30P电容以使晶振起振,另外外围引出了P3.0和P3.1两个引脚用作程序下载,程序下载使用手机通用刷机线,刷机线电路核心芯片为PL2303,用于USB转串口。

单片机VCC使用+5V供电,至此单片机可正常工作。

单片机最小系统电路设计完成。

2.2.2STC12C5A60S2单片机的内部ADC说明

STC12C5A60S2单片机自带8路10位AD,输入口与P1口复用,在此我们用1路即可实现功能。

相关寄存器包括:

P1ASF寄存器—P1口模拟功能寄存器,寄存器8位对应P1口8位,用于控制和选择P1口某位是作为I/O口使用或者作为ADC输入通道使用,地址9DH,复位值00H,当该寄存器第X(X为1-8的数)位为0时,P1口的第X位作为I/O口使用,当该寄存器第X位为1时,P1口的第X位作为ADC输入通道使用;ADC_CONTR寄存器—ADC控制寄存器,地址BCH,复位值00H,该寄存器起到ADC的控制作用,最高位ADC_POWER,只有对其置1时AD转换才可能开始,第6位和第5位为SPEED1和SPEED0,是转换速率控制位,对应00-11四个值,分别表示不同的转换速率,00最慢,11最快,由于本系统对速率要求不高,所以在程序编写时,改位直接置为00,第4位ADC_FLAG,ADC转换结束标志位,当ADC转换结束时该位置1,标志ADC转换结束,可通过程序扫描检测,也可进入终端,该位必须软件清零,第3位ADC_START,ADC启动位,在ADC_POWER置1的情况下,该为置1启动ADC,第2-0位,表示转换某一通道的量,使用BCD码;ADC_RES—ADC转换结果储存高位,由AUXR1—辅助寄存器1决定储存ADC转换结果高八位或高两位,地址BDH,复位值00H;ADC_RESL—转换结果储存低,由AUXR1决定储存转换结果低两位或低八位,地址BEH,复位值00H;AUXR1—辅助寄存器1其中第3位表示ADC转换结果的存储方式,0表示高八位存在ADC_RES寄存器中,低两位存在ADC_RESL寄存器中,1表示高两位存在ADC_RES中,低八位存在ADC_RESL中,复位值00H,地址A2H。

以上所述寄存器,均不支持位寻址。

其他相关寄存器涉及到ADC中断,但是由于本系统没有使用中断,所以在此不予涉及。

2.3输入设备的选择

从人性化角度考虑,本系统的操作按键选择使用无线遥控器,在实际使用时,系统主电路可以悬挂在墙体的较高位置,使用有线按键多有不便,所以使用市场上较为常见的一款无线遥控模块作为本系统地操作按键,本模块发射端有4个按键A、B、C、D,使用纽扣电池供电,接收端有D1-D4、VCC、GND6个引脚,VCC、GND接+5V和地,D1-D4对应A-D,当按下A时D1置高,否则置低,以此类推。

2.4LCD12864显示模块介绍

本系统使用YB-12864ZB作为显示模块,该模块共有20个引脚,模块外形如图2.4所示,模块支持8位并口、4位并口和串口通信,本系统使用串口通信。

图2.412864液晶模块外形图

电路图如图2.5所示。

其中引脚从左向右:

1为电源地;2为VCC,+5V供电;4在做串口使用时为片选,由于系统只用到了一个12864所以,片选直接接地;5、6分别为串行数据线和串行时钟线,分别接单片机P3.5脚和P3.6脚;15PSB为并串口选择引脚,直接接地选择串口;17RST—低电平有效,为复位引脚,不使用,所以直接接VCC;19、20为背光正和背光负。

使用8550,驱动背光,8550基极接单片机P1.0脚,P1.0给0背光亮,P1.0给1背光灭。

 

图2.5显示模块电路原理图

2.5报警电路的设计

本系统使用有源蜂鸣器报警,使用8550三极管驱动,三极管接单片机P0.0脚,P0.0给0蜂鸣器报警,给1蜂鸣器不响,电路原理图如图2.6所示,报警时,液晶屏点亮,同时显示报警字样。

 

图2.6报警电路原理图

2.6系统硬件整体说明

系统硬件由以上五部分构成,即检测电路、主控电路、按键电路、显示电路和报警电路。

各模块之间相互配合完成系统功能,具体过程如图2.7所示。

空气中烟雾浓度的变换会改变工作状态下烟雾浓度传感器的电导,该可变电阻与一定值电阻串联,取中间点电压,经过AD可以得到一个随空气中烟雾浓度变化而改变的电压信号,理想变化范围为0—5V(事实上由于气敏电阻的阻值特性,当空气中机会没有烟雾或者其他可以使MQ-2电阻发生变化的气体时,该电压值为0.7V左右,最大电压可以到4V左右,此为实验数据)。

将AD转换后的结果交由CPU处理,具体处理过程将在之后章节详细说明。

图2.7系统整体框图

第三章

系统的软件设计

3.1转换部分软件设计

在前文中介绍到12C5A60S2单片机的AD转换通道与P0寄存器复用,所以检测电路的模拟电压输出直接接到单片机的P1.2口,在初始化程序时直接对ADC_CONTR(ADC控制寄存器)低3位赋值2,即010B。

由于ADC_CONTR寄存器不支持位寻址,所以再赋值时需要对整体赋值,如果要单一更改某一位或者某几位的值需“|”(按位或)和“&”(按位与)给固定位赋值,对于一个二进制数XXXXXXXX“|”、“&”运算如式3.1、3.2所示

XXXXXXXX|00011000=XXX11XXX(3.1)

XXXXXXXX&11100111=XXX00XXX(3.2)

所以如果要将寄存器某位拉高使用“|”即可,如果要将寄存器某位拉低使用“&”即可。

3.1.1AD转换程序初始化

AD转换程序初始化需要将,ADC_RES、ADC_RESL寄存器的值拉低,由于我们要使用通道2输入模拟量,所以需要将P1ASF寄存器的第2位置高,即赋值0x02,给ADC控制寄存器的第7位即开关位置0,暂时关闭,第6、7位置0,速度为最低,第4位置0,不要开始转换,后三位赋值010B,即ADC_CONTR寄存器初始化值为0x02,这样我们AD转换的初始化部分就完成了。

另外要说的是,STC12C5A60S2单片机为1T单片机,即1个机器周期就是一个时钟周期,而其12C单片机的寄存器赋值时需要4个时钟周期的时间,然而赋值语句的执行只需要一个时钟周期,所以我们需要在给寄存器赋值的语句后加4个周期的延时,使用intrins.h中的NOP()函数。

当然如果我们需要使用ADC中断时可以再初始化时开启ADC中断,但是本系统中没有使用到ADC中断,所以不需要开启。

3.1.2AD转换程序的设计

AD转换程序开始时将ADC_CONTR寄存器,使用“|”运算,将ADC_POWER和ADC_START位的值拉高,使其开始转换,开始转换后使用“while(!

(ADC_CONTR&ADC_FLAG));”语句检测ADC_FLAG位(初始化时,将0x10宏定义为ADC_FLAG)是否被硬件置1,置1后跳出该语句,说明AD转换程序结束。

AD转换结束后,直接为ADC_CONTR寄存器赋值0x02,关闭ADC,并将ADC_FLAG位置0。

完成以上程序的设计后,将AD转换的结果返回,由于辅助寄存器1没有做任何设定,所以ADC转换结果的存储方式为ADC_RES寄存器存放ADC转换结果的高8位,ADC_RESL寄存器存放ADC转换结果的低2位,如果我们的程序要求精度较高可以使用公式3.3计算AD转换结果(AD转换结果用Y表示),但是本系统由于精度要求并不高,空气中烟雾浓度较低时的模拟电压输入值和烟雾浓度较高时的模拟电压输入值差别较大,所以直接使用ruturn语句返回ADC_RES即可,如果只使用ADC_RES寄存器中的数据实际上等于AD为8位AD,0-5V对应数字量0-255,这个分辨率对于本系统来说是足够的。

Y=ADC_RES×4+ADC_RESL(3.3)

3.1.3滤波程序的设计

为了增强系统的稳定性,本系统使用了软件滤波,所使用的算法是滑动去极值平均滤波法,思路如下:

先使用一维数组记录前六次AD转换的结果,每次使用新数据替换掉第一个数据,找到本组数据中的最大值和最小值,求剩余四组数的平均值。

这种滤波方法与传统的均值滤波相比数据的使用率更高,系统更加稳定,而且有效数据的输出频率更高,所谓有效数据就是指滤波后用于计算的数据,滑动平均滤波法,可以在每次采样后就得到一个数值,然而传统的均值滤波法是在没N次的采样后才会有一组有效数据产生,N为采样组数。

同时可以通过调整数组长度来调整系统的灵敏度。

这种滤波方式也有他的弊端,主要在于,他对瞬时的量不能很好的测量。

但是由于本系统实时上不需要测出这种瞬时量,所以这种算法是很适合本系统的,另外,由于用到了去极值,所以可以很好地起到抑制检测系统毛刺的作用。

算法框图如图3.1所示。

3.2按键程序的设计

在前文中提到,本系统使用的按键为无线遥控按键,接收端D1-D4在常态为低电平,当遥控器的A-D中某个键按下时,D1-D4某位输出高电平。

源程序如下:

ucharCOL(void)

{if(KEYA==1)

{delay(10);if(KEYA==1){while(KEYA);return1;}}

if(KEYB==1)

{delay(10);if(KEYB==1){while(KEYB);return2;}}

Forpersonaluseonlyinstudyandresearch;notforcommercialuse

if(KEYC==1)

{delay(10);if(KEYC==1){while(KEYC);return3;}}

if(KEYD==1)

{delay(10);if(KEYD==1){while(KEYD);return4;}}

if((KEYA==0)&&(KEYB==0)&&(KEYC==0)&&(KEYD==0))return0;}

程序的设计思路是,键盘扫描函数,返回值为无符号字符型变量,当按键A按下时,KEYA引脚有高电平输入,此时等到按键被放开时,便会返回1,以此类推,当都没有按下时返回0。

这个函数可能在一些人看来是有问题的,因为假设按键A被按下,返回了1,然而在出if(KEYA==1)这个语句时KEYA的值很多情况下是回到0了的(因为while(KEYA);的存在)这样在遇到最后一个语句后又会进入,这样返回值就成了0,但事实上,在C语言程序在执行时,函数中有多个分支结构中都有return语句时,会在执行完一次return语句后跳出函数。

在该函数中,每一个if语句中有一个delay函数,作用在于判断出,该次高电平是否是系统的偶然波动,这也是为了增加系统的稳定性。

 

图3.1AD滤波程序流程图

3.3显示底层驱动程序的编写

12864显示屏的串口通讯的通讯协议与I2C总线协议十分相似,由于本系统中无须进行读数据的操作,所以实际上底层驱动函数,只有一个发送字节的函数,Sendbyte(),通过该函数可以构建出,write_com(uchari),write_data(uchari),hzkdis(ucharcode*i)写指令函数/写数据函数和显示字符串函数。

图3.2为12864串口时序图。

从图中可以看出,12864串口通讯协议与I2C协议略有不同,最主要的特点体现在,12864发送1字节数据时的高四位和第四位要分别置于两个字节的高四位,这是因为12864支持四位并口,所以在硬件设计上串口采用了四位发的方式。

因此Sendbyte()I2C总线协议的方式编写,而write_com(uchari),write_data(uchari),hzkdis(ucharcode*i)这三个函数,需要使用Sendbyte(cmdcode&0xf0);和Sendbyte((cmdcode<<4)&0xf0);来指令的发送。

12864具体的指令在本文中不做涉及,深圳亚斌科技有限公司的手册中对此作出了详细的说明。

图3.212864串行通讯时序图

3.4菜单程序的设计

看到过很过火灾报警器,但是这些产品有可操控性差,几乎不可设置,本产品加入了菜单的设计,虽然在成本上会有所增加,但是并不是很大。

菜单页面第一页显示“欢迎使用火灾报警系统”,“按A进入菜单”,第二页显示“灵敏度设置”,“背光时长设置”,“报警方式设置”,之后不再列出。

本系统菜单的设计使用一个返回值为无符号字符型,带有两个无符号字符型形参的函数完成功能,返回值返回当前页面的状态,第一页返回1,第二页返回2,以此类推。

参数一个为按键函数的返回值,如果按键函数的返回值为0,将不会进入菜单函数,这些将在之后的章节详细介绍。

另一个参数为当前页面状态,这两个参数可以使菜单函数知道当前页面是那一页,需要执行什么操作,程序段使用if语句分支结构实现。

设置实现的方法实际是使用一个全局变量,先介绍灵敏度设置,灵敏度的中、高、低,分别对应临界值不同的大小,低临界值最小,高临界值最大,在完成设置时,会改变该全局变量的值,而报警与否是该值与AD转换结果对比决定的。

背光时长的设置,用到了定时器,当设置为常亮或长灭是定时器关闭,三极管Q1基极直接给高或者给低,当设置为亮十秒是,定时器开始工作,没1ms进定时器中断一次,当进入10000次时,关闭定时器,灭灯,当有按键操作时,开启定时器,清零中断次数,以此实现功能。

报警方式的设置同样是使用一个全局变量再设计时更改全局变量的值,在进入达到报警条件时,进入报警函数,该全局变量作为实参带入该函数,函数设计采用分支设计,以达到功能。

3.5main函数的设计

main函数开始首先进行初始化设置,包括AD、显示屏和AD的初始化,同时给标记变量赋初值。

然后循环检测按键,当按键函数返回0时,进行一次AD采集,并执行滤波程序,对滤波程序的输出结果,与设定临界值对比,如果超过临界值进入报警程序。

main函数流程图如3.3所示。

 

图3.3main流程图

第四章

调试过程与总结

本系统没有进行软件仿真,直接连接实物进行调试,在完成硬件的焊接后,使用电表对电路关键点进行测量,没有发现问题。

软件编写使用keil4编译软件,首先进行了菜单程序段的编写,每次完成程序关键点的设计后,将程序通过宏晶公司的专用下载软件下载至单片机测试,发现问题,不断的修改、优化本段程序,没有问题后进入下一段程序的编写,在整体完成后进行联调,并且在实际模拟环境中查看有无没有预料到的问题。

参考文献

[1]王钊.智能型火灾报警系统的设计与研究[D].西安:

西安理工大学硕士学位论文,2009.

[2]孙健.基于ARM7的电气火灾自动报警控制器研制[D].杭州:

浙江大学硕士学位论文,2007.

[3]雍静,李北海,杨岳.建筑智能化技术[M].北京:

科学出版社,2008.

[4]王忠民,郝静,张瑜.基于单片机的语音数

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2