详见文末
功能效果演示
基于51单片机的智能火灾报警系统原理图讲解
具体实现功能
51单片机+MQ-2烟雾传感+ADC0832模数转换芯片+DS18B20温度传感器+数码管显示+按键模块+声光报警模块
具体功能:
1、实时监测及显示温度值和烟雾浓度;
2、可通过三个按键设置烟雾报警值和温度报警值;
3、可实现手动紧急报警和手动取消报警功能;
4、温度超过阈值时,蜂鸣器响黄灯闪烁;烟雾超过阈值时,蜂鸣器响红灯灯闪烁;
5、测距范围: 烟物浓度:0——9等级;温度范围:0——99度。
1 总体方案设计
智能火灾报警系统主要用到的是烟雾报警器,烟雾报警器是能够检测环境中的烟雾浓度,并具有报警功能的仪器。该报警系统的最基本组成部分应包括:信号采集模数转换电路、单片机控制电路、字符显示电路、声光报警电路和安全保护电路等部分组成。
为适应家庭和工业等场所对可燃性易爆烟雾安全性要求,设计的烟雾报警器具有显示报警状态。报警器采用延时的工作方式,烟雾检测报警器以STC89C52单片机为控制核心,选用MQ.2半导体气体烟雾传感器采集烟雾浓度信息,配合外围电路构成烟雾报警系统。本设计包括硬件和软件设计两个部分。
从设计的要求来分析该设计须包含如下结构:烟雾检测部分、STC89C52单片机主控部分、报警部分,AD采集四大部分。电路总题框图如图1.1所示:
处理器采用51系列单片机STC89C52[1]。整个系统是在系统软件控制下工作的。设置在监测点上的烟雾检测探头将检测到的烟雾变换成电信号,送出模拟信号,给AD采集电路采集。在单片机内,经软件查询、识别判决等环节实时发出烟雾报警状态控制信号。驱动蜂鸣器及报警指示灯报警。
2 系统原理及原理图
智能火灾报警系统的原理是依据当烟雾浓度或温度达到设定值时,烟雾传感器和温度传感器感应到信号由ADC0832进行处理模数转化再到单片机进行处理,喇叭发出报警声音。系统共分为控制电路、检测电路、显示和报警电路。系统原理图如图2.1所示。
3 系统的硬件电路
3.1 控制模块设计
3.1.1 单片机选型(篇幅有限,详见文末)
3.1.2单片机最小系统(篇幅有限,详见文末)
3.2 检测电路设计
3.2.1 烟雾检测电路
(1)传感器介绍
烟雾传感器是测量装置和控制系统的重要环节【7】。而烟雾报警器的信号采集由烟雾传感器负责。烟雾传感器能够将气体的种类及其浓度有关的信息转换为电信号,根据这些电信号的强弱就可以获得与待测气体在环境中存在的情况有关的信息,从而达到检测、监控、报警的功能。可以说,没有精确可靠的传感器,就没有精确可靠的自动检测、控制和报警系统。烟雾传感器作为报警器中不可缺少的核心器件,它决定了所采集的烟雾浓度信号的准确性和可靠性。烟雾传感器内部结构如图3.2所示。
(篇幅有限,其余完整详见文末)
3.2.2 温度检测电路设计(篇幅有限,详见文末)
3.3 显示与报警电路
3.3.1显示电路
示采用4位共阴数码管,单片机控制数码管显示不同的四位数字,P2.4P2.7选位,P0.0P0.7选段,显示电路如图3.3.1。前两位显示烟雾浓度,可显示范围为0-9;后两位显示温度值,可显示范围为0-99度。
3.3.2 报警电路
电路通过三极管基极串连一个电阻与单片机P3.6端口连接从而达到控制喇叭是否报警。声音报警电路图如图3.3.2所示。
3.4 按键控制及电源电路设计
本电路设计了四个按键,一个设置键、一个加键、一个减键、一个紧急报警键,当遇到紧急情况时,可按下紧急报警键,蜂鸣器进行报警。如图3.4所示
供电方式可以用5V蓄电池为系统供电。蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。但是蓄电池的体积过于庞大,在报警器上使用极为不方便。因此我们放弃了此方案。也可以用3节1.5 V干电池共4.5V做电源,经过实验验证系统工作时,单片机、传感器的工作电压稳定能够满足系统的要求,而且电池更换方便。本系统采用电池供电。
电源接口电路如图3.5,其中P1为电池接口,SW1为电源开关。D1为电源指示灯。
4 系统主程序设计及流程图
4.1 主程序设计
首先要给传感器预热,因为MQ.2型半导体电阻式烟雾传感器在不通电存放一段时间后,再次通电时,传感器不能立即正常采集烟雾信息,需要一段时间预热。程序初始化结束后,系统进入监控状态。主程序流程图如下图所示。
在整个报警系统工作中,烟雾浓度信息经ADC0832转换处理后,由单片机进行分析处理,判断系统是否启动报警。主程序还包括LED八段式数码管浓度字符显示功能、手动报警功能、报警浓度设定功能,中断子程序等,使报警器功能更加完善,更加方便。
预热后,程序就开始执行初始化子程序,初始化实现的功能是I/O口输入、输出状态设定, 寄存器初始化,中断功能等。首先,设定定时初值为50ms,利用IAP 写入EEPROM,作为取值间隔。然后,设置定时器0,选择方式1。方式1状态下,定时器的工作寄存器TH1、TL1,是全16位参与操作。接下来,定时器0中断的允许位置1,打开定时器0,关闭蜂鸣器,开启绿灯,设置报警限初值。
4.2 滤波子程序设计
在传感器对信号采样时,会遇到某些脉冲干扰现象,干扰通常会影响个别的采样点的数据,导致数据和其它采样点的数据的相差比较大。于是可采用中位值平均滤波法(又称防脉冲干扰平均滤波法),首先对X个采样数据进行比较,去掉其中的最大值和最小值,然后计算余下的X–2个数据的算术平均值。这种方法既可滤去脉冲干扰又可滤去小的随机干扰。保证报警器检测烟雾浓度的准确性,减小误报、错报的可能。滤波子程序流程路如图4.2所示。
4.3 线性化处理子程序设计(篇幅有限,详见文末)
4.4 报警子程序设计
当烟雾浓度超过报警设定值时,报警器发出一种近似警笛的鸣叫声,对应通道的红灯闪亮,以提示操作人员采取安全对策或自动控制相关安全装置,从而保障生产安全,避免火灾和爆炸事故的发生。为防止误报,在程序设计上,对烟雾浓度进行快速重复检测和延时报警,以区别出是管道中烟雾的泄漏,还是由于暂短打开阀门产生的可燃烟雾的微量散失,防止误报。
4.5 控制按键设计子程序(篇幅有限,详见文末)
原理图
部分程序代码
/*
基于51单片机的智能火灾报警系统
功能:实时显示温度值及烟雾浓度值
烟雾和温度值超过阈值后实现声光报警
*/
#include <reg51.h> //调用单片机头文件
#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255
#define uint unsigned int //无符号整型 宏定义 变量范围0~65535
#include <intrins.h>
#include "eeprom52.h"
//数码管段选定义 0 1 2 3 4 5 6 7 8 9
uchar code smg_du[]={0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7,0x40,0xfd/*-*/};
//数码管位选定义
uchar code smg_we[]={0x7f,0xbf,0xdf,0xef};
uchar dis_smg[8] = {0xa0,0x84,0x62,0x2a,0x39,0x2c,0x24,0xba};
sbit CS=P2^3; //CS定义为P3口的第2位脚,连接ADC0832CS脚 PCB
sbit SCL=P2^0; //SCL定义为P3口的第3位脚,连接ADC0832SCL脚
sbit DO=P2^1; //DO定义为P3口的第4位脚,连接ADC0832DO脚
sbit ledy = P1^6; //温度报警指示灯
sbit ledr = P1^7; //烟雾报警指示灯 x
sbit dq = P1^5; //18b20 IO口的定义
sbit beep = P3^6; //蜂鸣器IO口定义
uint temperature,s_temp ; //温度的变量
uchar dengji,s_dengji; //烟物等级
uchar shoudong; //手动报警键
bit flag_300ms = 1;
uchar key_can; //按键值的变量
uchar menu_1; //菜单设计的变量
/***********************1ms延时函数*****************************/
void delay_1ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
for(j=0;j<120;j++);
}
/***********************小延时函数*****************************/
void delay_uint(uint q)
{
while(q--);
}
/******************把数据保存到单片机内部eeprom中******************/
void write_eeprom()
{
SectorErase(0x2000);
byte_write(0x2000, s_temp);
byte_write(0x2001, s_dengji);
byte_write(0x2060, a_a);
}