去年夏天我收到一张电费单,金额比前一个月翻了一倍。翻遍家里的电器,空调、热水器、冰箱、路由器、电视,每样看起来都正常,但就是不知道哪样在“偷电”。为了解决这个问题,我花了一个周末做了一个Smart Energy Meter,用电流互感器夹在入户总线上,实时追踪整个家庭的用电功率,再配合手机端面板,把每一小时、每一天的用电曲线看得明明白白。这篇文章把这套方案的完整过程记录下来,从硬件选型、电路搭建、采样原理、代码实现到校准和排坑,适合有一点Arduino或ESP32基础、想给家里装上“用电仪表盘”的人参考。
1. 先拆解清楚:智能电表到底在测什么
1.1 项目需求拆解
做任何硬件项目之前,先别急着下单买元器件,把需求列表拉出来。我当时给自己定的目标很简单:要能实时看到家里当前总功率,要能按小时、按天查看历史用电曲线,还要能在异常高功耗时收到提醒。这三个目标听起来差不多,但背后对硬件和代码的要求完全不一样。
如果要看实时功率,只需要每秒采样几十个周期,计算电流有效值和电压有效值,再乘个功率因数就行,数据量很小。如果要按小时和天绘制曲线,就必须考虑数据存储方案,不能总让设备连着电脑,所以MCU得自带WiFi或者干脆装个树莓派。如果要异常告警,那还得在云端或本地自动化平台里写判断逻辑,比如连续10分钟功率超过3000W就推一条通知。
我最终选的是ESP32开发板配合电流互感器的方案。ESP32自带WiFi和蓝牙,12位ADC,价格便宜,社区资料多,拿来跑电能监控绰绰余。整套系统不到80块钱(不含屏幕),比买一个市售智能电表便宜不少,而且数据完全掌握在自己手里。
1.2 为什么我不去拆家用电表,也没选智能插座方案
有人会问:电网公司的电表本身就能看用电量,为什么还要自己做一套?实际用过就明白,供电局的电表数据只能看到月度累计或者最多T+1的日数据,你根本拿不到“空调启动那一下到底吃了几千瓦”这种分钟级甚至秒级数据,更别说把总用电拆到具体某一路设备上了。
那退一步,用智能插座逐个测电器行不行?行,但有两个麻烦。第一,很多电器是固定布线,比如空调、热水器、浴霸,根本插不到智能插座上。第二,插座方案只能测单一设备,想算“全屋总功率”只能把十几个插座的数据汇总,一旦某个插座离线,整条曲线就断了。电流互感器方案没有这些问题,它直接夹在入户电缆或配电箱内某条支路的外部绝缘皮上,不改动任何线路,一次安装就能覆盖整个回路。
非侵入式测量还有一个隐藏优点:安装时不需要断电操作主线路,风险远低于拆电表接线。当然,我后面会专门讲配电箱操作的安全边界,这里先记住一句话:能不动主线就不动主线,夹住电缆测电流才是家庭级监控该有的分寸。
1.3 整套系统的工作链路
整个智能电表系统的流程可以概括成一条链路:电流互感器先把主线路中的大电流按比例变成小信号,经过采样电阻和分压偏置电路后,转成ESP32的ADC能读取的0到3.3V电压,然后由固件里的采样算法算出电流有效值和实时功率,最后通过WiFi把数据推送到Home Assistant或者InfluxDB这类平台,前端用面板展示曲线和累计电量。
这条链路里有三个关键点,很多教程不会明说。第一,交流信号是双极性的,有正半周也有负半周,而ADC不能读负电压,所以必须加一个直流偏置,把交流波形整体抬高到1.65V上下。第二,电流有效值不是直接取平均,而是对采样值做平方、求和、开方,即RMS计算。第三,电流信号和电压信号之间存在相位差,如果只测电流不测电压,算出来的功率只能是视在功率,和真实家用电费计量的有功功率有误差。这些问题我在第三章和第四章展开讲。
2. 硬件准备与电路搭建
2.1 核心元器件清单
这套系统的BOM十分简单,我在采购时踩过不少坑,所以直接把最终好用的清单列出来。
| 元器件 | 型号/规格 | 数量 | 备注 |
|---|---|---|---|
| 主控板 | ESP32 DevKitC V4 | 1 | 3400、2202 都行,注意ADC采样频率要求 |
| 电流互感器 | SCT-013-000(100A:50mA)或 SCT-013-030(30A:1V) | 1 | 家用总闸选100A量程,支路选30A |
| 采样电阻 | 高精度低温漂电阻 24Ω 或 22Ω | 1 | 仅电流输出型CT需要 |
| 偏置电阻 | 10kΩ 精度1% | 2 | 构成分压中点,偏置到1.65V |
| 滤波电容 | 10uF 电解电容 + 100nF 瓷片电容 | 各1 | ADC前端滤波 |
| 保护二极管 | 1N4148 或 BAT54 | 2 | 钳位保护ADC引脚 |
| 供电模块 | HLK-PM01 或 AMS1117-3.3 | 1 | 220V转5V,再转3.3V |
| 外壳 | 3D打印外壳或明装塑料盒 | 1 | 注意留出CT穿线孔 |
看到SCT-013-000和SCT-013-030的区别没?-000是电流输出型,输出的是小电流,需要自己接采样电阻;-030内置了采样电阻,直接输出1V的交流电压信号。新手建议用-030,省去自己算采样电阻和担心饱和的麻烦。但我自己后来换回了-000,因为想通过更换采样电阻来调整量程和分辨率,灵活性更高。
2.2 电流互感器的三个关键参数
选电流互感器不能只看“最大电流”,有三个参数必须同时考虑。
第一个是额定变比。SCT-013-000的变比是100A对应50mA,也就是说入户总电流是50A时,次级输出大约25mA。这个电流流经采样电阻,才能转成ADC能读的电压。公式很简单:采样电阻两端的电压幅值 = 次级电流 x 采样电阻值。我用24Ω电阻,100A满载时次级电流50mA,产生1.2V有效值电压,峰值约1.7V,加上1.65V偏置后,波峰在3.35V,波谷在-0.05V,刚好贴着ADC的量程边界。从这里你能看出来,为什么我建议SCT-013-030(30A/1V)这种输出电压型号,1V的有效值对应峰值1.41V,偏置后范围0.24V到3.06V,余量更充裕。
第二个是线性度和相位误差。便宜的CT在中低电流段线性还可以,但小电流时误差会明显增大。尤其你关注待机功耗时,可能只有0.1A到0.3A,CT测得会偏低。我后面在校准章节会详细讲怎么做多点校准,这里先记住:不要只看厂家标称精度,拿一个白炽灯或电暖器当基准负载测一测,心里才有底。
第三个是穿线孔径和安装方式。SCT-013系列是分体式开口磁环,按压弹簧就能打开,把电缆卡进去再合上,非常适合已有线束的配电箱。买之前量一下家里电缆外径,别买回来夹不下。如果是40A以上的粗电缆,可能需要选更大孔径的型号。
2.3 分压偏置电路原理与搭建
ESP32的ADC只能采样0到3.3V的单极性电压,而电流互感器输出的交流信号是围绕着0V上下摆动的。如果不做处理直接接ADC,负半周会直接被采样成0,数据完全没法用。解决方法是把信号整体抬高1.65V,这就是分压偏置电路的作用。
最简单的偏置电路就是用两个10kΩ电阻串联在3.3V和GND之间,中间抽头就是1.65V,然后把CT信号通过一个隔离电容串联到中点,再经过RC滤波后进ADC。这里有个细节容易被忽略:分压中点必须有足够的驱动能力。10kΩ分压网络的内阻是5kΩ,如果直接驱动ADC的采样电容,建立时间不够会导致读数跳动。所以我在中点后加了一个运放跟随器(用LM358或MCP6002都行),把偏置电压稳定输出。如果你不想加运放,也可以用470Ω加470Ω的低阻分压,但静态功耗会大一些。
我实际用的电路是这样的:CT次级经采样电阻后,把电压信号串联一个1kΩ限流电阻,接到偏置中点。ADC引脚对地接一个100nF电容滤高频噪声,同时用两个背靠背的1N4148二极管把输入电压钳位在-0.7V到4.0V之间,万一CT输出异常或接错线,不至于烧坏ESP32的引脚。这个保护电路看着简单,但救过我的板子。
2.4 配电箱安装操作和安全边界
先声明一个原则:配电箱操作必须谨慎,如果你不具备基本电工常识,最好找有经验的朋友从旁指导,或者干脆只做“夹线”这一步,不碰任何裸露铜排。
我的安装步骤是:关闭总闸,打开配电箱面板,把SCT-013的磁环打开,夹住入户总火线的绝缘外皮,确认夹紧后合上面板,再合上总闸。注意,SCT本身没有方向要求,但为了代码里判断功率方向,我建议在磁环外壳上标记一个箭头,统一朝向负载侧。如果装反了,读数不会错,只是符号会反过来。
还有一点,千万别把CT夹在已经接好零线排和地线排的密集线束里,那样信号会受到严重干扰。尽量让CT单独夹在一根线上,周围避开开关器件,特别是变频器或开关电源的走线。我最初把CT放在空调开关旁边,结果只要空调压缩机启动,读数就有大毛刺,后来把CT挪到距离开关20cm以上的位置才正常。
3. 从ADC原始值到功率:数据采集核心逻辑
3.1 交流采样基础原理
家庭用电是50Hz交流电,电压和电流都随时间呈正弦变化。要计算真实功率,不能像测直流那样“读一个数”就完事,必须在一个或多个完整周期内连续采样,再做数学运算。
具体来说,计算电流有效值的步骤是:在一个完整周期内均匀采样N个点,每个点的电压值减去偏置电压,换算成实际电流;然后把每个点的电流平方,求所有点平方的平均值,最后开根号。这个结果就是RMS电流,也是电表上显示的有效电流值。
这里有一个常见误区:很多人直接用ADC读到的平均值乘以一个常数,这样误差极大,因为正弦波的平均值和有效值之间虽然有固定换算关系,但实际电流波形不一定是纯正弦,开关电源和高频设备会产生很多谐波,波形早已变形。RMS计算才是准确的做法,它天然包含了所有谐波的能量贡献。
采样点数N怎么定?理论上一个周期内采样点数越多越精准,但受限于MCU速度和ADC转换时间。50Hz的周期是20ms,我在ESP32上跑2000个采样点,总耗时约0.4秒,覆盖20个周期,既能保证RMS计算的稳定性,又不至于让CPU满负荷跑。ESP32的ADC转换单次大概在10us级别,2000点平均每点200us,完全跟得上。
3.2 用EmonLib快速实现第一版
如果你不想从零造轮子,直接用EmonLib这个开源库,两行代码就能拿到电流有效值。这是我最快跑通整个链路的方式,非常适合先验证电路有没有接对。
#include "EmonLib.h" EnergyMonitor emon1; void setup() { Serial.begin(115200); // 参数:引脚号,校准系数(30A量程的CT用30.0,100A量程的CT用100.0) emon1.current(A0, 30.0); } void loop() { double Irms = emon1.calcIrms(1480); // 采样点数,1480约等于1秒 double power = Irms * 220.0; // 先粗略估算功率 Serial.print("Current: "); Serial.print(Irms, 3); Serial.print(" A, Power: "); Serial.print(power, 1); Serial.println(" W"); delay(3000); }EmonLib的计算原理其实就是RMS,内部从第一个采样点开始累加,所以采样点数决定了窗口长度。1480个点大约对应1秒,这个周期对监控来说足够了。我第一次刷入这个程序,串口打印出来的电流值在0.45A附近跳动,那个时候家里只有冰箱在运转,数值看起来合理。不过,这样算出来的功率是不准的,因为没有把电压和功率因素考虑进去。EmonLib有一个calcVI函数可以同时采样电压和电流,但需要额外的电压互感器,我放到第四章的进阶方案里讲。
3.3 手动实现RMS计算和相关滤波
库虽然方便,但遇到问题需要调时,你反而搞不清楚内部逻辑。所以我后来重写了一份手动RMS代码,方便自己调节采样窗口和滤波参数。
#define ADC_PIN 34 #define ADC_VREF 3.3 #define ADC_RES 4095.0 // SCT-013-030,输出1V RMS对应30A #define CT_RMS_VOLTAGE 1.0 #define CT_MAX_CURRENT 30.0 #define ADC_BIAS 1.65 const float VOLTS_PER_AMP = CT_RMS_VOLTAGE / CT_MAX_CURRENT; // 0.0333 V/A float calcIrmsManual() { const int samples = 2000; const int intervalUs = 200; float sumSq = 0.0; for (int i = 0; i < samples; i++) { float adcValue = analogRead(ADC_PIN); float voltage = (adcValue / ADC_RES) * ADC_VREF; float acVoltage = voltage - ADC_BIAS; float current = acVoltage / VOLTS_PER_AMP; sumSq += current * current; delayMicroseconds(intervalUs); } return sqrt(sumSq / samples); }为了防止ADC采到毛刺导致RMS值跳变,我会对连续三次RMS结果取中位数。中位数滤波相比平均值的好处是能去掉偶发的尖峰,而且不会让真实波动变得迟钝。刚开始我只用平均值,结果冰箱压缩机启动那一下,数据从0.5A跳到了8A,然后衰减回正常,曲线就像心电图一样,后来改成中位数之后平滑多了。
还有个细节:ESP32的ADC在不同衰减档位下,0到3.3V输入范围和实际读数之间存在非线性。直接拿读数乘以3.3再除以4095,在电压靠近两端时会有两三个百分点的误差。如果想正经做数据统计,建议用两个精密电阻分压把1V标准电压接到ADC口,实测几个点做线性校准。这个我在第四章一并讲。
3.4 数据上报:MQTT还是HTTP
拿到电流、功率数据后,下一步是让它离开ESP32,进入可视化系统。我这边有两个选择:MQTT和HTTP POST。别让这个选择难倒你,关键是看你的下游平台。
如果你用Home Assistant,MQTT是最顺的路。ESP32把数据发布到主题,比如home/energy/power,Home Assistant的MQTT集成自动订阅,直接生成实体。如果你用InfluxDB加Grafana,那HTTP POST更简单,直接用HTTP POST把JSON数据塞给InfluxDB的API,一条命令的事。
我最后采用的是MQTT方式,因为Home Assistant能同时做告警和前端展示。ESP32这边的核心逻辑就是用WiFiManager做配网,然后用PubSubClient库连MQTT broker,每隔5秒发布一次数据。注意,5秒这个频率是保险的,总数据量很小,不会给家里WiFi带来压力。下面是一段上报的代码示意:
#include <WiFi.h> #include <PubSubClient.h> #include "EmonLib.h" WiFiClient espClient; PubSubClient mqtt(espClient); EnergyMonitor emon1; const char* mqttServer = "192.168.1.100"; const int mqttPort = 1883; const char* topic = "home/energy/power"; void publishReading() { double Irms = emon1.calcIrms(1480); char payload[64]; snprintf(payload, sizeof(payload), "{\"current_A\":%.2f,\"power_W\":%.1f}", Irms, Irms * 220.0); mqtt.publish(topic, payload); }本地存储的事情,我一直建议交给Home Assistant或InfluxDB,不要在ESP32上折腾SD卡或Flash。MCU的Flash有擦写寿命限制,频繁写日志会缩短寿命。我把ESP32当成纯粹的采集终端,所有历史数据都落到局域网内的NAS或树莓派上,这样设备断电也不怕丢数据。
4. 校准与精度调优
4.1 校准的前提:找到一把可靠的尺子
做校准之前,必须有一个基准仪表。我借了一个钳形功率计(UT210E),在总闸下方把同一根电缆夹了两遍,一遍接我的智能电表,一遍接钳形表,两边的读数就能互相对比。如果家里没这工具,也可以用一个固定功率的电器做参照,纯电阻负载比如电暖器、白炽灯,功率因数接近1,电流等于功率除以电压,比如1500W电暖器在220V下理论上是6.8A左右。
校准逻辑很简单:让智能电表显示一个RMS电流值,同时用基准表记录真实值,两者相除得到一个比例系数,然后回填到代码里。但这里有个坑,这个比例系数可能只在同一个电流点有效。因为电流互感器在小电流段和大电流段误差曲线不一样。所以至少要校准三个点:小电流(只开一个台灯)、中等电流(开电暖器加电脑)、大电流(再开个微波炉或烤箱)。
4.2 增益校准和偏置校准分开做
很多教程只教“改一个系数把两个读数对上”,这是不够的。增益误差和偏置误差是两回事,我建议分开处理。
先把电流归零,也就是关掉所有用电设备,只保留待机设备,理论上电流应该接近0A。如果你读到0.15A,那偏置就是0.15A,需要从每次采样中减去这个值。偏置误差主要来自ADC参考电压的波动和偏置电路电阻的精度。
然后是增益误差。在中等电流档记录读数,比如基准表是6.8A,我的智能电表读数是6.5A,那么增益修正系数就是6.8/6.5=1.046。把这个系数乘到每次RMS计算结果上就行。增益误差主要来自采样电阻的容差和CT变比的标称误差。市面上大多数SCT-013的变比精度是1%到2%,所以这个系数通常在0.98到1.05之间。
下面是我自己的标定记录表:
| 基准电流 | 初始读数 | 修正后读数 | 误差 |
|---|---|---|---|
| 0.00 A | 0.13 A | 0.01 A | 偏置校准完成 |
| 2.15 A | 2.08 A | 2.14 A | -0.5% |
| 6.80 A | 6.50 A | 6.79 A | -0.15% |
| 12.40 A | 11.90 A | 12.38 A | -0.16% |
修正后全量程误差控制在1%以内,对于家庭用电监控来说完全够用。
4.3 进阶:加入电压采样,测真实有功功率
如果你只测电流,用额定电压220V乘电流来算功率,在绝大多数家庭场景下误差不会太大,因为LED灯、电脑等设备虽然带谐波,但功率因数通常在0.9以上。但如果你家里有大功率电机类设备,比如水泵、吸尘器、变频空调,功率因数可能低到0.5,这时候电流很大但真正耗电没那么夸张,用VA代替W会让你以为自己家的电量“被偷了”。
要测真实有功功率,就需要同时采样电压和电流,计算两者的相位关系。我加装了一个ZMPT101B电压互感器模块,接到入户电压上,用另一个ADC通道采集电压波形。代码切换到EmonLib的calcVI函数,内部会通过过零检测计算电压电流的相位差,然后返回Vrms、Irms和realPower。
接线和电路都不复杂,但电压互感器的安装比电流互感器危险得多,因为它直接接触220V。如果你没有隔离变压器的经验,我强烈建议先接在已绝缘的接线端子上,或者干脆跳过电压测量,用固定电压估算。安全第一,这个项目的核心目的是搞懂自家用电,不是考核你有多大胆。等你有把握了,再补电压通道也不迟。
4.4 待机功耗误判的处理
在调试过程中,最让我头疼的是待机功耗误判。很多家电在关掉后并没有真正断电,而是处于待机状态,功率可能只有几瓦到十几瓦。电流互感器在这么小的电流下误差很大,我经常看到“0W”和“25W”跳来跳去,完全没法判断家里待机是否异常。
解决的办法有两个层面。第一,用在软件中加一个死区阈值。低于某个阈值的功率直接归零,比如低于5W显示为0W。第二,在数据分析层面做窗口统计。不要看瞬时值,看5分钟或15分钟的累计电量。待机功耗的累计电量才是真正影响电费的因素,瞬时波动根本无需担心。我后来在Home Assistant里建了一个utility_meter,专门统计每日累计电量,这个指标跟电费单对上了,误差在3%以内,这才算真正有了实用价值。
5. 数据可视化与真实应用场景
5.1 Home Assistant接入:一个面板看全屋用电
数据从ESP32进入Home Assistant后,我做的第一件事是组装一个仪表盘。HA里用MQTT集成接收数据,然后新建一个面板,放上实时功率的卡片、今日累计电量的卡片和24小时功率曲线图。整个过程不需要写一行前端代码,全部在面板配置界面里拖拽完成。
对于只想看数据的人,这个面板就够用了。但我想提醒一下:电量和功率的数据精度不一样。功率卡的展示数值是一个瞬时值,而累计电量卡应该用integration(积分)传感器来算,因为它需要对功率做时间积分。比如功率是1000W持续1小时,累计电量就是1kWh。这个积分过程最好放在长期可靠的平台里做,ESP32本身不适合干这个。
UI组件配置上,我用的是multiple-entity-row来自定义卡片,这样可以在一行里显示电流、功率、功率因数三个数字,不用一张卡片一个指标。数据显示的刷新频率我设在10秒,太频繁会看着眼花,不利于捕捉趋势。
5.2 从数据里挖出三个“用电元凶”
设备跑起来之后,第一个月我收集到了完整的历史数据。翻看曲线时发现了三件有意思的事。
第一,家里的热水器每天晚上会“偷偷”加热。表面上看它白天是关着的,但曲线显示每天凌晨3点有个持续20分钟、功率1800W的尖峰。后来查了说明书,发现是保温功能在自动工作。这个发现让我重新评估了热水器的使用模式,改成了出门前断电,一个月电费少了将近30元。
第二,路由器加光猫加NAS的组合待机功耗比我预想的高很多。这三样设备加起来常年有60W的功耗,一个月就是43kWh。我原先以为它们加起来顶多30W。数据不会骗人,这个发现直接促使我升级了一台低功耗交换机把NAS关机策略优化了一下。
第三,冰箱在夏季的启动频次明显增加。功率曲线上的窄脉冲从每30分钟一次变成每15分钟一次,单次启动电流高达8A。从这个变化我判断冰箱散热器上积灰严重,清理之后启动间隔果然拉长了。用数据反推家电健康状况,是这套系统给我最大的惊喜。
5.3 扩展思路:分路计量和联动场景
做了总功率监控之后,我顺带做了两路扩展。在配电箱里给空调、厨房插座各装一个CT,这样就能把“总功率异常”定位到具体哪一路。其实,非侵入式方案做分路计量成本很低,一个MCU最多可以接6个CT,管够大多数家庭的需求。
配合自动化,这套系统还能做很多事。我在HA里设了一条自动化:当总功率连续10分钟超过4000W,并且熔断器没有跳闸时,推一条手机通知,提醒我可能同时开太多大功率电器了。还有一个联动是:当洗衣机运行,功率维持在300W以上并持续2分钟后,如果阳台灯亮着,就自动关掉阳台灯。这种联动的前提是功率数据可靠,而这正是整个项目前面所有工作的价值所在。
6. 常见问题与排查实录
6.1 常见问题速查表
我把从零搭建过程中遇到的高频问题整理成一个速查表,方便你参考排查。
| 现象 | 可能原因 | 解决措施 |
|---|---|---|
| 读数恒为0 | CT没有夹好或采样电阻虚焊 | 检查磁环是否闭合,用万用表量CT次级是否有电压 |
| 读数一直跳变 | 偏置电路不稳或ADC参考电压波动 | 用万用表实测偏置点是否为VREF/2,必要时加运放缓冲 |
| 大电流读数明显偏低 | CT进入饱和区 | 换用更大额定电流的CT,或减小采样电阻 |
| 有电流但功率为0 | 电压通道未配置或接反 | 校准电压、检查ZMPT101B接线,确认功率因数计算 |
| 局域网内数据延迟大 | MQTT broker性能不足或WiFi信号差 | 确认broker版本,调整ESP32发射功率 |
| WiFi反复断开 | 电源供电不足或电路干扰 | 用5V/2A电源单独供电,避免共用劣质充电器 |
6.2 三个真实踩坑记录
第一个坑是ADC引脚选择。ESP32的ADC2引脚和WiFi共用射频模块,如果你用ADC2通道采样,一旦WiFi在发数据,采样结果就会随机跳变,完全没法看。我一开始用的是GPIO26(ADC2),发现读数像抽风一样,害得我怀疑是CT坏了。后来换成GPIO34(ADC1通道6),问题立刻消失。写完这行代码,我记了五年:ESP32的模拟采样只用ADC1。
第二个坑是采样间隔太短导致CPU卡死。我最早在循环里用delayMicroseconds(4)跑3000个采样点,结果CPU频繁进中断,MQTT消息发不出去。后来我把采样间隔放宽到200us,并且把采样循环放在主循环里用定时器控制频率,而不是在loop()里暴力跑。对于MCU来说,连续采集时任务优先级比上报高得多,要让采样过程不被中断打扰,同时留出足够的CPU时间给WiFi协议栈处理。
第三个坑是温度对零点漂移的影响。夏天和冬天设备温度差将近20度,偏置电压和CT的磁导率都会变化,导致冬季校好的零点在夏天偏了0.2A。这个误差平时无所谓,但在判断待机功率时会很致命。我最终的方案是在固件里每隔24小时自动检测一次“最低5分钟的电流中位数”,把它作为新的零点偏置。这个思路说白了就是利用凌晨大概率低负载的时间窗口做的软校准,对你来说,也可以选择每天早上6点设备自动校准一次。
6.3 安全边界提醒
最后,所有做强电相关项目的朋友请记住:这个项目里的电流互感器虽然不接触裸线,但在安装和调试过程中,你仍然在配电箱附近操作,那里充满220V高压。磁环卡入电缆时,手指千万不要碰触内部金属件;确认CT卡好、盖回配电箱面板后才能合闸通电;手上有水或地面潮湿时不要操作。我见过有人为了省事带电装CT,结果CT型号选错,次级开路时产生高压,把示波器探头烧了一个口子。电流互感器在任何情况下都不允许在次级开路时工作,这是原则,不是建议。
还有一点,尽管CT方案不改动主线,但如果你完全不懂配电箱内部结构,最好请一个电工朋友帮你盯着第一次安装。花钱买安心不算奢侈,毕竟和设备故障相比,人身安全才是项目最大的“硬性指标”。
我在实际使用中体会到,这套智能电表真正的价值不是展示一个漂亮曲线,而是逼着你重新审视家里的用电习惯。它让我意识到,很多电费不是被“偷”走的,而是被我们忽略的待机时长和低效设备一点点消耗掉的。如果你也想做,我建议先从SCT-013-030加ESP32起步,跑通数据链路后再琢磨分路计量和电压采样。一步步来,这个项目后续还可以扩展成多户对比、光伏发电监控、甚至联动储能电池,玩法很多,但地基永远是可靠的测量数据。