火灾自动报警系统设计
结 论
烟雾检测报警器可保障生产与生活的安全,避免火灾和爆炸事故以及煤气中毒的发生,它是防火、防爆和安全生产所必备的仪器,具有广阔的市场空间与发展前景。
本论文在对烟雾传感器和报警技术进行深入研究的基础上,全面比较国内外同类产品的技术特点,合理地确定系统的设计方案。并对仪器的整体设计和各个组成部分进行了详细的分析和设计。
本论文设计的烟雾报警器由烟雾信号采集电路与单片机控制电路两大部分构成。 根据设计要求、使用环境、成本等因素,选用MQ-2型半导体电阻式烟雾传感器。该传感器是对以烷类烟雾为主的多种烟雾有良好敏感特性的广谱型半导体敏感器件。它的灵敏度适中,具有响应与恢复特性好,长期工作稳定性、重现性、不易受环境影响及抗温湿度影响等优点。
在系统单片机控制电路的设计上,采用了高性能、高整合度的at89s52单片机作为核心芯片,充分利用了其高速数据处理能力和丰富的片内外设,实现了仪器的小型化和智能化。使仪器具有结构简单、性能稳定、体积小、成本低等优点。由于烟雾传感器需要在加热状态下工作,温度越高,反应越快,响应时间和恢复时间就越快。为提高响应时伺,保证传感器准确地、稳定地工作,需要向烟雾传感器持续供给5V的加热电压。为了保证传感器加热工作的可靠性,当传感器加热丝断线或传感器接触不良时,能够进行故障报警。
烟雾报警器能在较宽的温度范围工作,可将烟雾浓度显示用LCD显示。当烟雾的浓度达到设定的浓度时,发出声光报警。还具有故障自诊断功能快速重复检测和延时报警功能。在本论文研制的报警器的基础上,可以再做适当的功能扩展,使可燃性烟雾报警器的功能更加完善,安全性更高,使用更加方便等。为了能够进一步提高安全性,可以在自动声光报警的基础上,实现带动烟雾管道关断等功能。
应用程序以C语言编写,充分利用芯片资源,提高了测量精度和代码执行效率,减小了代码容量,采用中位值平均数字滤波算法对经A/D转换后的数字信号进行滤波处理。这种方法既可滤去脉冲干扰又可滤去小的随机干扰,不但最大限度地排除现场噪声干扰,降低烟雾报警器误报概率,而且易于在单片机中实现。
通过现场标定及测试,分析烟雾浓度信号的实验数据,计算本报警器显示烟雾浓度与实际浓度之间的误差为2.55%LEL,在所规定误差范围±5%LEL之内,满足检测要求,达到了预期的设计效果的结论。
26
火灾自动报警系统设计
参考文献
[1] 李朝青.单片机原理及接口技术(简明修订版)[M].北京航空航天大学出版社,1998
[2] 李广弟.单片机基础[M].北京航空航天大学出版社,1994
[3] 阎石.数字电子技术基础(第三版)[M]. 高等教育出版社,1989
[4] 石东海等.单片机数据通信技术从入门到精通[M].西安电子科技大学出版社, 2002.148~150.
[5] 王忠飞,胥芳.MCS一51单片机原理及嵌入式系统应用[M].西安电子科技大学出版社,2007.268-273. [6]蔡朝洋,单片机控制实习与专题制作[M].北京航空航天大学出版社,2006
[7]张毅刚,彭喜源,谭晓昀等.MSC-51单片机应用设计[M].哈尔滨工业大学出版社,1999 [8]周坚.单片机C语言轻松入门[M].北京航空航天大学出版社,2006 [9]李全利,迟荣强.单片机原理及接口技术[M].高等教育出版社,2004
[10]梅丽凤,王艳秋.单片机原理及接口技术(修订本)[M].清华大学出版社;北京交通大学出版社,2006
[11]阎石.数字电子技术基础 [M].高等教育出版社,1998 [12] 廖常初.现场总线概述[J].电工技术,1999
27
火灾自动报警系统设计
附录
附录一 程序源代码:
#include \#include \#include \#include \sbit sm_sg=P0^1; sbit Buzzer=P0^2;
int j=0,shiwei=4,gewei=0,xiaoshu=0; uint toplimit=0;
uint Temp,yflag=0,wflag=0; uchar Keyscan(); void SET_UP(); void delay(uint t) {
uint h; while(t--)
for(h=0;h<120;h++);
}
void SysInit() {
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%6; //1ms时基 //中断分开关 ET0=1;
//中断总开关 EA=1;
//定时器0启动定时 TR0=1; }
void main() {
uint i; Buzzer=1;
28
火灾自动报警系统设计
SysInit();
LcdReset();
Ds18b20_Rst(); //调用总线复位函数 Write_byte(0xcc); //跳过ROM搜索 Write_byte(0x44);
ShowString(0,0,\ |\ ShowString(7,0,\ ShowString(13,0,\ while(1) {
sm_sg=1;
ReadTemp(); // TempProc();
Temp=Keyscan(); SET_UP(); for(i=0;i<7;i++) {
LocateXY(i,1);
write_LCD_data(Disp_Dec[i]); }
if(sm_sg==0) yflag=0; if(sm_sg==1) yflag=1; if(compare>=toplimit) wflag=1; else wflag=0;
if((yflag==1)||(wflag==1)) {
LocateXY(8,1);
write_LCD_data('Y'); if(TempTimems==1) {
Buzzer=~Buzzer; TempTimems=0; } }
if((yflag==0)&&(wflag==0)) {LocateXY(8,1);
write_LCD_data('N'); Buzzer=1; }
}
29
读取DS18B20温度数据 火灾自动报警系统设计
}
uchar Keyscan() {
static uchar k=0; uchar Trg1; P1=0xff;
if((P1&0x0f)!=0x0f) {
delay(15);
if((P1&0x0f)!=0x0f) Trg1=P1&0x0f;
while((P1&0x0f)!=0x0f); }
switch(Trg1) {
case 0x0e:{k=4;break;} case 0x0d:{k=3;break;} case 0x0b:{k=2;break;} case 0x07:{k=1;break;} default: k=0; }
return k; }
void SET_UP() {
if(Temp==3) {
j+=1;
if(j==4)j=1;
}
if(Temp==1) {
switch(j) {
case 1:shiwei+=1;if(shiwei==10)shiwei=0;break; case 2:gewei+=1;if(gewei==10)gewei=0;break;
case 3:xiaoshu+=1;if(xiaoshu==10)xiaoshu=0;break;
30