模拟电流传感器
本页介绍经 ADC 接入的模拟电流输出模块,动作读取类别为 current,结果单位 A。4~20mA 电流环和 INA226 I2C 驱动使用各自参数,不能套用本页的灵敏度公式。
接线与前端标定
按模块额定供电接线。常见 ACS712 模块按其规格供电,不能把原先标为 5V 的模块改为 3.3V 供电并继续套用原灵敏度。模块输出的零点、正负电流峰值及异常值均必须经过前端处理,落在目标 ADC 的允许范围内。
若输出先经过分压,ADC 侧的零点和灵敏度都会按相同比例缩小;例如参数 zeroOffset 是 ADC 输入侧零电流电压,sensitivity 是 ADC 侧 V/A,不能直接填模块未经分压的规格值。驱动使用:
Vadc = averageRaw * vRef / adcMax
I = (Vadc - zeroOffset) / sensitivity这是线性换算。10 次采样均值不是交流 RMS 算法,也不计算功率、功率因数或交流有效值。超过 ADC 量程的信号无法靠软件系数恢复。
外设配置
GPIO34 仅是经典 ESP32 的 ADC 引脚示例:
{
"id": "current1",
"name": "模拟电流",
"type": 15,
"enabled": false,
"pinCount": 1,
"pins": [34],
"params": { "attenuation": 3, "resolution": 12 }
}先保存禁用草稿、检查接线和资源,再启用外设。普通模拟读取返回原始计数或持久配置的工程量;选择动作的 current 类别才执行这里的电流换算。
读取动作
以下是演示参数,zeroOffset、sensitivity、vRef 都须根据实际前端与标准电流源标定:
{
"targetPeriphId": "current1",
"actionType": 19,
"actionValue": "{\"periphId\":\"current1\",\"sensorCategory\":\"current\",\"channelField\":\"current\",\"dataField\":\"loadCurrent\",\"zeroOffset\":1.65,\"sensitivity\":0.1,\"vRef\":3.3,\"adcMax\":4095,\"decimalPlaces\":3}",
"useReceivedValue": false
}将动作放入定时规则并启用,才会周期采样。驱动使用 200ms 最小缓存间隔;dataField 是平台属性标识,变化事件为 ds:current1_current,模板为 ${current1.current}。
过流报警可由变化事件规则发射设备事件;动作 21 必须填写明确目标,如 targetPeriphId: "over_current",数据填报警详情。同时建立并启用 type60 的同名事件定义,见 设备事件。
验证边界
无电流和正负已知电流分别标定,检查 ADC 原始值、结果单位及失败质量。零值可能有效,读取失败不能以零伪装成功。这里的采样及报警不代替硬件过流保护;电网或高压电流测量须使用符合应用要求的隔离模块。

