1. 系统总体设计概述
1.1 课题背景与设计意义
火灾是威胁人类生命财产安全的重要隐患之一。在实际生活和工业生产中,火灾往往由多种因素共同引发,例如环境温度异常升高、可燃烟雾浓度增加以及电气线路漏电或过载等。传统单一参数火灾报警系统通常只监测温度或烟雾,无法全面反映环境安全状态,容易出现误报或漏报情况。因此,设计一套基于单片机的温度、烟雾与漏电综合火灾报警系统,实现多参数联合监测,对于提高火灾预警准确性与系统安全性具有重要意义。
本系统采用单片机作为核心控制单元,同时采集温度传感器、烟雾传感器以及ACS712电流传感器的信号,通过软件算法进行数据处理与阈值判断。当任意参数超过设定阈值时,系统立即启动声光报警,并显示当前异常信息,从而实现对环境火灾隐患的实时监控与预警。
2. 系统功能设计
2.1 系统主要功能
本系统主要实现以下功能:
- 实时采集温度、烟雾浓度和电流值;
- 多参数联合监测,提升火灾识别准确性;
- 数码管动态显示当前温度、烟雾浓度和电流值;
- 支持按键设置温度、烟雾及电流报警阈值;
- 任意参数超限自动启动声光报警;
- 集成漏电检测功能,预防电气火灾;
- 系统运行稳定,响应快速。
2.2 系统总体结构
系统主要由以下模块组成:
系统采用模块化结构设计,各模块协同工作,实现火灾综合检测与报警功能。
3. 系统电路设计
3.1 单片机最小系统模块设计
3.1.1 单片机选型
系统可采用STC89C52或AT89S52单片机。其特点包括:
单片机负责采集数据、阈值判断、显示驱动及报警控制。
3.1.2 时钟电路设计
采用12MHz晶振:
- 提供稳定时钟信号;
- 保证定时精度;
- 便于软件延时计算。
3.1.3 复位电路设计
采用RC上电复位电路:
3.2 温度采集模块设计
3.2.1 温度传感器选型
可采用LM35模拟温度传感器:
- 输出电压与温度成线性关系;
- 输出电压范围01V对应0100℃;
- 精度较高。
3.2.2 信号处理
由于单片机无内置ADC,可采用ADC0804进行模数转换。
温度计算公式:
温度值 = (ADC值 / 255.0) × 100
3.3 烟雾检测模块设计
3.3.1 传感器选型
可采用MQ-2烟雾传感器:
- 输出模拟电压信号;
- 浓度越高,电压越大;
- 适用于可燃气体检测。
3.3.2 信号采集
烟雾传感器输出经滤波后输入ADC模块,转换为数字量供单片机处理。
3.4 ACS712电流检测模块设计
3.4.1 工作原理
ACS712是一款霍尔电流传感器:
- 输出模拟电压;
- 电流变化导致输出电压变化;
- 可检测交流或直流电流。
3.4.2 漏电检测机制
当电流值超过设定阈值时:
- 判定为漏电或过载;
- 启动报警;
- 切断负载(可扩展继电器控制)。
3.5 数码管显示模块设计
采用动态扫描方式显示三组数据:
- 当前温度;
- 当前烟雾浓度;
- 当前电流值。
通过位选与段选控制实现多位数码管动态刷新。
3.6 按键输入模块设计
设置独立按键:
- 温度阈值增加;
- 温度阈值减少;
- 烟雾阈值增加;
- 烟雾阈值减少;
- 电流阈值增加;
- 电流阈值减少。
采用软件消抖处理。
3.7 声光报警模块设计
包括:
- 有源蜂鸣器;
- 红色LED指示灯。
当任一参数超限时启动报警。
3.8 电源模块设计
系统采用+5V直流电源:
- 变压器降压;
- 整流滤波;
- 7805稳压输出;
- 加强滤波降低干扰。
4. 程序设计
4.1 程序总体结构
程序分为:
- 初始化模块;
- 数据采集模块;
- 数据处理与转换模块;
- 阈值判断模块;
- 显示模块;
- 按键处理模块;
- 报警控制模块。
采用主循环结构。
4.2 主程序设计
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
float temp_value, smoke_value, current_value;
float temp_th = 60;
float smoke_th = 200;
float current_th = 5;
void Display_Update();
void Alarm_Check();
float Read_Temp();
float Read_Smoke();
float Read_Current();
void Key_Process();
void main()
{
while(1)
{
temp_value = Read_Temp();
smoke_value = Read_Smoke();
current_value = Read_Current();
Key_Process();
Alarm_Check();
Display_Update();
}
}
4.3 数据采集模块设计
float Read_Temp()
{
uchar adc = P1;
return (adc / 255.0) * 100;
}
float Read_Smoke()
{
uchar adc = P2;
return adc;
}
float Read_Current()
{
uchar adc = P3;
return adc * 0.02;
}
4.4 阈值判断与报警模块设计
sbit BEEP = P0^0;
sbit LED = P0^1;
void Alarm_Check()
{
if(temp_value > temp_th ||
smoke_value > smoke_th ||
current_value > current_th)
{
BEEP = 1;
LED = 1;
}
else
{
BEEP = 0;
LED = 0;
}
}
4.5 按键处理模块设计
void Key_Process()
{
if(P3_0 == 0) temp_th++;
if(P3_1 == 0) temp_th--;
if(P3_2 == 0) smoke_th += 10;
if(P3_3 == 0) smoke_th -= 10;
if(P3_4 == 0) current_th += 0.5;
if(P3_5 == 0) current_th -= 0.5;
}
4.6 显示模块设计
void Display_Update()
{
// 数码管动态显示温度、烟雾和电流
}
5. 系统性能分析
5.1 报警准确性分析
多参数联合检测提高判断准确性:
- 温度异常;
- 烟雾浓度升高;
- 电流异常。
避免单一检测误报。
5.2 响应速度分析
系统循环采集数据,实时判断,报警延迟小于100ms。
5.3 稳定性分析
- 软件滤波;
- 电源稳压;
- 动态显示优化;
- 抗干扰设计。
保证系统长期稳定运行。
6. 总结
本系统基于单片机设计了一套温度、烟雾与漏电综合火灾报警系统,实现多参数联合监测与智能报警功能。系统具备阈值可调、实时显示、声光报警及漏电检测等功能,显著提升了环境安全监测能力。
通过本设计,实现了硬件采集与软件控制相结合,提高了火灾预警系统的可靠性与实用性。系统结构清晰,功能完善,具有较强扩展性,可进一步增加继电器断电保护、无线通信及数据存储功能,适用于家庭与工业场所的安全监测需求。
745