扫码加入

  • 方案介绍
  • 相关推荐
申请入驻 产业图谱

基于单片机的硫化氢、氨气、甲烷、一氧化碳气体多种有害气体检测与声光报警系统设计

1小时前
37
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1. 基于单片机的硫化氢、氨气、甲烷、一氧化碳气体多种有害气体检测与声光报警系统设计

点击链接下载资料:https://download.csdn.net/download/m0_51061483/91644950


1. 系统功能概述

本系统以51单片机为核心控制器,设计并实现了一种多种有害气体检测与声光报警装置。系统可同时检测硫化氢(H₂S)、氨气(NH₃)、甲烷(CH₄)、一氧化碳(CO)四种有害气体浓度,并通过LCD1602液晶模块实时显示检测数据。用户可通过按键设置各气体的报警阈值,当任意气体浓度超过设定阈值时,系统自动启动蜂鸣器和LED灯进行声光报警,提醒现场人员及时处理,从而有效保障人员与设备安全。

该系统广泛应用于化工厂、矿区、污水处理厂、实验室等环境中,具有实时性强、可靠性高、操作简便等特点。其设计思路结合了模拟信号采集、数字显示、阈值设定与逻辑判断等核心单片机控制技术,体现了嵌入式系统在环境安全监测领域的典型应用。


2. 系统电路设计

整个系统电路STC89C52单片机为核心控制模块,围绕其设计了传感器采集电路、显示电路、按键输入电路、报警电路以及电源管理电路等多个功能模块。各部分协同工作,实现对多种气体浓度的采集、显示与报警控制。

2.1 主控模块(单片机)

系统选用STC89C52单片机作为主控核心。该单片机内部集成有丰富的I/O接口定时器/计数器串口通信接口等,具备高稳定性和较低功耗。
主控模块的主要任务包括:

  1. 采集各气体传感器的模拟信号;
  2. 将模拟信号通过A/D转换得到数字量;
  3. 根据设定的阈值进行比较判断;
  4. 控制LCD1602显示模块刷新数据;
  5. 当检测到异常时驱动蜂鸣器与LED报警。

2.2 气体检测模块

本系统采用四种不同类型的气体传感器:

  • MQ-136:用于检测硫化氢气体;
  • MQ-135:用于检测氨气;
  • MQ-2:用于检测甲烷;
  • MQ-7:用于检测一氧化碳。

每种气体传感器输出为模拟电压信号,浓度越高,对应输出电压越大。为了与单片机匹配,系统通过A/D转换模块(如ADC0832PCF8591)将这些模拟信号转换为数字信号,再送入单片机进行数据处理。
同时,每个传感器电路均配有电压分压与滤波电容,用以提高信号稳定性与抗干扰能力。

2.3 显示模块(LCD1602)

LCD1602是一种广泛应用于嵌入式系统中的字符型液晶显示器
在本系统中,LCD1602用于显示四种气体的实时浓度值、各自设定的报警阈值以及系统状态信息。
显示格式如下:

H2S:  35ppm  NH3:  28ppm
CH4: 120ppm  CO:   65ppm

当某种气体浓度超过阈值时,液晶屏上对应位置的浓度值闪烁,以提醒用户注意。

LCD1602通过4位或8位并行总线与单片机相连。4位模式下可节省I/O端口资源,适用于多模块系统设计。

2.4 按键输入模块

按键模块用于用户设置报警阈值及切换显示模式。常用按键功能如下:

  1. 模式键(MODE):切换气体类型;
  2. 加键(UP):增加当前气体的阈值;
  3. 减键(DOWN):减少当前气体的阈值;
  4. 确认键(OK):保存设置。

按键电路采用上拉电阻结构,按下时向单片机输入低电平信号。程序通过定时扫描或外部中断方式检测按键状态,防止误触与抖动。

2.5 声光报警模块

报警模块由蜂鸣器与红色LED灯组成。当检测到任意气体浓度超过设定阈值时,单片机输出高电平信号控制三极管导通,从而驱动蜂鸣器发声、LED闪烁。

为防止频繁报警影响系统稳定性,程序中设置了延时与消抖逻辑,使报警信号保持一定时间后再复位。

2.6 电源电路模块

系统供电采用5V直流电源。考虑到传感器电流较大且对稳定性要求高,电源部分使用LM7805稳压芯片,并在输出端并联电解电容瓷片电容以滤除纹波。对于LCD和单片机供电线路,则另设退耦电容以降低噪声干扰。


3. 程序设计

系统程序采用C语言在Keil平台下编写,主要包括以下几个模块:主控制程序、气体采集模块、显示模块、按键模块、报警模块与阈值存储模块。程序总体采用模块化结构设计,便于扩展和维护。

3.1 主程序设计

主程序主要完成系统初始化、数据采集、阈值判断、报警控制及显示刷新等任务,整体采用循环结构不断执行。

核心流程如下:

系统初始化 → 采集气体浓度 → 阈值判断
   ↓                      ↑
 显示数据 ← 控制报警 ← 判断气体是否超限

主程序代码示例如下:

#include <reg52.h>
#include "lcd1602.h"
#include "adc0832.h"
#include "key.h"
#include "alarm.h"

unsigned int gas_value[4];
unsigned int threshold[4] = {50, 50, 100, 50}; // 默认报警阈值

void main() {
    LCD_Init();
    ADC_Init();
    Key_Init();
    Alarm_Init();
    
    while (1) {
        gas_value[0] = ADC_Read(0); // H2S
        gas_value[1] = ADC_Read(1); // NH3
        gas_value[2] = ADC_Read(2); // CH4
        gas_value[3] = ADC_Read(3); // CO
        
        LCD_ShowGas(gas_value);
        Key_Scan(threshold);
        Alarm_Check(gas_value, threshold);
    }
}

该程序通过不断循环采集气体浓度,并与阈值进行比较。当浓度超过阈值时,调用报警函数控制声光模块

3.2 气体采集模块设计

传感器输出为模拟信号,经ADC0832模块转换为数字量输入单片机。采集程序如下:

unsigned int ADC_Read(unsigned char channel) {
    unsigned int value = 0;
    // 启动A/D转换
    // 模拟信号转换为数字信号
    // 读取转换结果
    return value;
}

为提高精度,程序采用多次采样取平均值的方法,避免偶然干扰引起的测量误差。

3.3 显示模块设计

LCD显示模块负责显示四种气体浓度值及报警状态:

void LCD_ShowGas(unsigned int *gas) {
    LCD_SetCursor(0,0);
    LCD_Printf("H2S:%3d NH3:%3d", gas[0], gas[1]);
    LCD_SetCursor(1,0);
    LCD_Printf("CH4:%3d CO:%3d ", gas[2], gas[3]);
}

程序每隔一定时间更新一次显示内容,确保数据实时性,同时防止LCD闪烁。

3.4 按键设置模块设计

按键扫描模块采用周期性检测方式,每次扫描间隔10ms,配合消抖处理。
当用户按下某个按键时,系统进入阈值设置模式:

void Key_Scan(unsigned int *threshold) {
    if (KEY_MODE == 0) {
        delay_ms(10);
        if (KEY_MODE == 0) mode++;
    }
    if (KEY_UP == 0) threshold[mode]++;
    if (KEY_DOWN == 0) threshold[mode]--;
}

设置完成后通过EEPROM保存,防止断电丢失。

3.5 报警模块设计

当检测值超出阈值时,蜂鸣器与LED同时动作:

void Alarm_Check(unsigned int *gas, unsigned int *thres) {
    unsigned char i;
    for (i = 0; i < 4; i++) {
        if (gas[i] > thres[i]) {
            Beep_ON();
            LED_ON();
            return;
        }
    }
    Beep_OFF();
    LED_OFF();
}

通过简单逻辑判断即可实现多气体联动报警机制。

3.6 数据存储模块设计

为便于系统在断电后保留阈值设定,系统使用EEPROM进行参数存储:

void Save_Threshold(unsigned int *thres) {
    unsigned char i;
    for (i = 0; i < 4; i++) {
        EEPROM_Write(i, thres[i]);
    }
}

系统上电后自动读取EEPROM中的阈值参数,实现自适应运行。


4. 系统总结

本系统通过51单片机实现了多种有害气体的检测与声光报警功能,结构清晰、功能完善。
在实际运行中,系统能够对硫化氢、氨气、甲烷、一氧化碳浓度进行准确采集,并依据设定阈值进行判断和报警。
系统具有良好的稳定性与扩展性,可根据需要扩展其他气体检测模块,如CO₂、SO₂、VOC等。

通过本设计,充分展示了单片机在多参数监测领域的应用能力,实现了模拟量采集、数字量处理、阈值判断及报警控制等嵌入式系统核心技术的综合运用,对智能安全监测设备的开发具有重要的参考价值。

相关推荐