1. 项目概述与硬件选型
大家好,我是老张。做嵌入式这些年,我经手过不少能耗监测的项目。从工厂的配电柜到家里的智能电表,说白了,核心就三件事:测准、传稳、算明白。
这一章,咱们先把地基打牢。你想想看,如果连项目要干什么、用什么芯片都不清楚,后面写再多代码也是白搭。
1.1 能耗监测系统到底是什么?
能耗监测系统,说白了就是给用电设备装一个「智能电表」。它能实时告诉你:
- 现在功率是多少?
- 今天用了多少度电?
- 哪个时间段用电最猛?
我在一个工厂项目里遇到过这样的情况:老板总觉得电费不对劲,但查不出原因。装上监测系统后才发现,有一台老设备待机功耗竟然占了总用电的15%。你看,没有数据,你连问题在哪都不知道。
核心目标:用低成本、高可靠的方式,把交流电的电压、电流、功率因数抓取出来,算出有功功率和累计电量。
1.2 项目目标拆解
咱们这个课程,最终要做成一个能用的原型。目标很明确:
- 采集:单相交流电的电压(220V)、电流(0-10A)
- 计算:实时功率、累计电量、功率因数
- 显示:本地OLED屏幕显示关键数据
- 通信:通过串口或Wi-Fi把数据发到上位机
嗯,这里要注意:我们不做工业级产品,但原理和工业级完全一样。你学会了这套,换个高精度互感器就能直接上产线。
1.3 MCU选型:为什么选STM32?
选MCU这事儿,我踩过不少坑。曾经为了省几块钱选了一款小众芯片,结果开发到一半发现ADC精度不够,硬生生换了方案。所以这次我建议直接用STM32F103C8T6,也就是大家常说的「蓝 pill」板。
| 参数 | STM32F103C8T6 | 为什么选它? |
|---|---|---|
| 主频 | 72MHz | 算功率绰绰有余 |
| ADC | 2个12位ADC,最多10通道 | 同时采电压和电流 |
| 价格 | 10元左右 | 性价比极高 |
| 生态 | 资料最多,库最全 | 遇到问题一搜就有答案 |
我的习惯:新手先用标准库开发,等熟悉了再切HAL库。标准库的代码更直观,适合理解底层原理。
1.4 传感器选型:电流与电压互感器
这是整个系统最关键的环节。选错了,数据全是废的。
电流互感器
我推荐开合式电流互感器 SCT-013-030。为什么?
- 输出是0-1V的模拟电压,STM32的ADC可以直接读
- 量程30A,家用场景完全够用
- 开合式设计,不用断电就能安装
我曾经在一个项目中用了闭口式互感器,结果每次调试都要断电接线,效率极低。后来全换成开合式,省了一半时间。
电压互感器
电压采样我建议用ZMPT101B模块。它内部已经做了隔离和降压,输出0-5V的模拟信号,对应0-250V的交流电压。
注意:千万不要直接用电阻分压去采220V!我见过有人这么干,结果板子烧了,还差点出安全事故。隔离是必须的,别省这个钱。
1.5 整体硬件框图
来,咱们把整个系统的连接理一遍:
220V交流电
│
├──→ 电压互感器 (ZMPT101B) ──→ STM32 ADC通道1
│
└──→ 电流互感器 (SCT-013) ──→ STM32 ADC通道2
│
STM32计算功率
│
OLED显示 + 串口输出
这个结构很简单,但很实用。你想想看,两个模拟信号进ADC,MCU算一算,结果就出来了。没有复杂的协议,没有昂贵的专用芯片。
1.6 避坑指南
最后,分享几个我踩过的坑:
- ADC参考电压:STM32的内部参考电压精度一般,建议外接一个3.3V的基准电压芯片(比如REF3033)。
- 采样率:50Hz的交流电,至少每周期采64个点才能算准。我一般设采样率3.2kHz,也就是每周期64个点。
- 零点漂移:互感器输出会有直流偏置,软件上要做零点校准。这个后面章节会详细讲。
好了,第一章就到这里。硬件选型定下来,后面的事情就顺了。下一章咱们开始搭建开发环境,把STM32跑起来。
公众号:蓝海资料掘金营,微信deep3321