1. 项目概述与硬件选型:消防报警主控板嵌入式方案
大家好,我是老李。做嵌入式这行十几年了,从最早的51单片机一路折腾到现在的ARM Cortex-M系列。今天咱们要聊的这个消防报警主控板项目,说实话,是我个人觉得非常适合入门到进阶的一个实战案例。为什么?因为它麻雀虽小,五脏俱全——传感器采集、数据处理、通信协议、电源管理、可靠性设计,全都有。
好,咱们直接进入正题。第一章,先把整个项目的骨架搭起来。
1.1 消防报警系统架构长什么样?
先看整体。一个典型的消防报警系统,说白了就是「感知-判断-执行-上报」这四个环节。
- 感知层:烟雾传感器、温度传感器、气体传感器。它们负责把物理世界的烟雾浓度、温度变化变成电信号。
- 控制层:主控芯片(咱们用STM32F103)。它负责读取传感器数据,做算法判断,决定要不要报警。
- 执行层:蜂鸣器、LED指示灯、继电器(控制排烟阀、喷淋等)。
- 通信层:RS485总线、CAN总线或者无线模块,把报警信息传到消防控制中心。
我当年做第一个消防项目时,犯过一个低级错误——把传感器直接挂在主控芯片的IO口上,没做任何隔离。结果现场一有雷雨天气,芯片就烧了。嗯,这里要提醒大家:工业级产品,隔离和防护是命根子。
核心架构要点:
- 传感器信号必须经过调理电路再进ADC
- 主控与执行器件之间要有光耦或继电器隔离
- 通信接口需要TVS管和共模扼流圈保护
1.2 主控芯片选型:为什么是STM32F103?
你可能会问:现在STM32F4、F7甚至H7都出来了,为什么还选这个老掉牙的F103?
原因有三:
- 成本控制:消防报警主控板对成本敏感。F103批量价十几块钱,够用。
- 生态成熟:库函数、例程、社区资源,要啥有啥。你遇到的大部分坑,网上都有人踩过了。
- 性能够用:72MHz主频,64KB Flash,20KB RAM。跑个FreeRTOS、处理几路传感器、做点滤波算法,绰绰有余。
我个人习惯用STM32F103C8T6这个型号。LQFP48封装,手工焊接也方便。我记得有一次客户催得急,我直接用万能板飞线焊了一片,居然也跑起来了——当然,量产可不能这么干。
| 参数 | STM32F103C8T6 | 备注 |
|---|---|---|
| 内核 | ARM Cortex-M3 | 32位,带硬件除法 |
| 主频 | 72MHz | 够用,别超频 |
| Flash | 64KB | 代码+常量,注意别塞满 |
| SRAM | 20KB | 堆栈+全局变量,够用 |
| ADC | 2个12位,10通道 | 接烟雾和温度传感器 |
| 通信接口 | USART×3, SPI×2, I2C×2 | RS485用USART1 |
选型小技巧:别只看主频。先算算你的传感器采样率、通信波特率、任务切换频率。F103的ADC最快1μs转换一次,够你采100路传感器了。
1.3 传感器选型:烟雾和温度怎么挑?
消防报警最核心的两个传感器:烟雾传感器和温度传感器。咱们一个一个说。
烟雾传感器
市面上主流的是离子式和光电式。离子式对明火敏感,光电式对阴燃(比如电线短路冒烟)敏感。消防标准要求两者兼顾,但咱们这个项目用光电式就够了——便宜、无毒、好调试。
我推荐MQ-2或者NIS-09C。MQ-2是半导体式,输出模拟电压,直接进ADC。NIS-09C是光学迷宫式,需要配合比较器电路。
这里有个坑:MQ-2预热时间很长,上电后前30秒输出不稳定。我曾经在项目里没做延时处理,结果一上电就误报警,被客户骂了一顿。解决方案很简单——上电后等1分钟再开始采样。
温度传感器
温度传感器我选DS18B20。为什么?
- 数字输出,一线总线,省IO口
- 精度±0.5℃,范围-55℃~+125℃
- 每个芯片有唯一ID,可以挂多个在一条总线上
当然,你也可以用NTC热敏电阻+分压电路进ADC。成本更低,但需要自己标定。我个人建议新手先用DS18B20,省心。
注意:DS18B20的时序要求严格。初始化、读位、写位的时间窗口都是微秒级的。如果你用软件模拟时序,记得关中断。我曾经因为中断嵌套导致时序错乱,读出来的温度是-127℃——嗯,那画面太美我不敢看。
1.4 电源方案设计:稳定是第一位的
消防报警主控板通常用24V供电(工业标准)。但芯片和传感器需要3.3V和5V。所以电源方案的核心就是:24V→5V→3.3V。
我常用的方案:
- 第一级:24V转5V——用LM2596或者MP1584,开关电源,效率高。注意输入加防反接二极管和保险丝。
- 第二级:5V转3.3V——用AMS1117-3.3,LDO,纹波小。给STM32和传感器供电。
你想想看,如果直接用LDO从24V降到3.3V,压差20多伏,电流100mA,功耗就是2W多——芯片早烫得能煎鸡蛋了。所以必须用两级降压。
另外,别忘了加电源监控芯片,比如MAX809。当电压低于阈值时,它会给STM32的NRST引脚一个低电平,防止芯片在欠压状态下跑飞。我见过太多因为电源抖动导致程序跑飞的案例了。
电源设计检查清单:
- 输入防反接(肖特基二极管或PMOS管)
- 保险丝(自恢复保险丝,500mA够用)
- TVS管(SMBJ24A,吸收浪涌)
- 滤波电容(电解+瓷片,每个电源引脚都要有)
- 电源指示灯(绿色LED+1k电阻,调试时很有用)
好了,第一章的内容就到这里。咱们把架构、芯片、传感器、电源方案都捋了一遍。下一章,我会带大家画原理图,把每个模块的电路细节敲定。到时候咱们再细聊。
记住一句话:硬件设计,七分选型,三分画板。选型选对了,后面就顺了。