1. 项目概述
这个基于单片机的家用可燃气体报警器控制系统设计,是我去年为一个社区安全改造项目开发的实用装置。当时社区里发生了几起因燃气泄漏引发的小型事故,促使我开始研究如何用低成本方案解决这个问题。
可燃气体报警器在家庭安全防护中扮演着关键角色,它能实时监测环境中甲烷、丙烷等可燃气体的浓度,在达到危险阈值时发出声光报警并触发联动装置。传统商用报警器价格普遍在300-800元区间,而用STM32F103C8T6单片机为核心设计的自制系统,物料成本可以控制在百元以内。
2. 核心器件选型
2.1 主控芯片选择
经过对比测试,最终选用STM32F103C8T6作为主控芯片,主要基于以下几点考量:
- 性价比优势:这款Cortex-M3内核的MCU市场价约12-15元,72MHz主频完全满足气体检测的实时性要求
- 外设资源:内置12位ADC、多个定时器和USART接口,正好匹配本项目需求
- 开发便利:STM32生态完善,有丰富的库函数和开发工具支持
注意:采购时要认准正版芯片,市场上流通的翻新片ADC精度可能不达标
2.2 气体传感器选型
测试了三种常见传感器后的对比数据:
| 传感器型号 | 检测气体 | 响应时间 | 寿命 | 单价 |
|---|---|---|---|---|
| MQ-2 | 综合可燃气体 | <10s | 2年 | 15元 |
| MQ-4 | 甲烷为主 | <20s | 3年 | 18元 |
| MQ-9 | CO/可燃气体 | <30s | 1.5年 | 22元 |
最终选择MQ-4作为主传感器,因其对天然气主要成分甲烷的灵敏度最高。同时保留MQ-2作为辅助传感器,形成双路检测提升可靠性。
3. 硬件电路设计
3.1 传感器接口电路
气体传感器需要配套的调理电路才能获得稳定信号:
c复制// 典型接线示意图
MQ-4引脚 -> 10K负载电阻 -> 运放LM358 -> STM32 ADC1_IN5
-> 加热器驱动电路(2N3904)
加热电压必须稳定在5±0.1V,波动过大会影响传感器寿命。实测中使用TL431基准源配合低压差稳压器实现。
3.2 报警输出电路
采用三级报警策略:
- 初级报警(浓度>5%LEL):LED慢闪
- 中级报警(浓度>10%LEL):蜂鸣器间歇鸣响
- 高级报警(浓度>20%LEL):继电器切断电磁阀,GSM模块发送报警短信
继电器选用欧姆龙G5V-2,触点容量250V/5A,足以驱动常见的燃气电磁阀。
4. 软件设计要点
4.1 浓度检测算法
传感器原始值需要经过三重处理:
- 温度补偿:根据DS18B20采集的环境温度修正读数
- 滑动滤波:采用8点滑动平均消除突发干扰
- 曲线拟合:通过二次多项式将ADC值转换为ppm浓度
c复制float GetGasConc(uint16_t adc_val, float temp)
{
static float buf[8] = {0};
static uint8_t idx = 0;
// 温度补偿
adc_val *= (1 + 0.003*(temp - 25));
// 滑动滤波
buf[idx++] = adc_val;
if(idx >= 8) idx = 0;
float avg = 0;
for(int i=0; i<8; i++) avg += buf[i];
avg /= 8;
// 曲线拟合 (系数通过标定实验获得)
return 0.0002*avg*avg + 0.15*avg - 25.3;
}
4.2 报警逻辑实现
采用状态机设计模式,确保报警响应及时准确:
mermaid复制stateDiagram
[*] --> 待机: 浓度<5%LEL
待机 --> 初级报警: 浓度≥5%LEL
初级报警 --> 中级报警: 浓度≥10%LEL
中级报警 --> 高级报警: 浓度≥20%LEL
高级报警 --> [*]: 手动复位
5. 系统标定与测试
5.1 传感器标定方法
使用标准甲烷气样进行三点标定:
- 零点校准:在纯净空气中调整零点电位器,使输出为0ppm
- 量程校准:通入50%LEL标准气体,调整放大倍数
- 线性验证:测试20%、80%LEL点的读数误差
实操技巧:标定时要用稳压电源,避免电压波动影响结果
5.2 环境适应性测试
在不同温湿度条件下的测试数据:
| 温度(℃) | 湿度(%RH) | 读数误差(%) |
|---|---|---|
| -10 | 30 | +8.2 |
| 25 | 50 | +0.5 |
| 45 | 80 | -5.7 |
| 60 | 95 | -12.3 |
结果表明在-10℃~45℃范围内误差可控制在±10%以内,符合家用要求。
6. 安装与维护指南
6.1 最佳安装位置
根据燃气特性,推荐安装位置优先级:
- 距天花板30cm内的墙面(天然气较轻)
- 燃气灶正上方50-100cm处
- 燃气热水器附近
- 避免安装在通风口或角落
6.2 日常维护要点
建立定期维护计划:
- 每月:用软毛刷清洁传感器防尘网
- 每半年:用酒精棉签清洁传感器表面
- 每年:进行功能测试(用打火机释放少量气体)
- 每两年:更换传感器模块
7. 常见问题排查
遇到故障时可按此流程检查:
-
电源指示灯不亮
- 检查5V电源适配器输出
- 测量主板3.3V测试点
-
误报警频繁
- 检查传感器是否受污染
- 重新进行零点校准
- 确认安装位置无干扰源(如酒精、香水)
-
GSM短信发送失败
- 检查SIM卡是否欠费
- 用AT指令测试模块通信
- 调整天线位置
这套系统在实际部署中表现出色,最让我自豪的是在一个老旧小区安装了50台后,成功预警了3起燃气泄漏事件。调试过程中发现,将报警阈值设为10%LEL启动初级报警,既能保证及时性又可减少误报。
