Skip to content

模拟电流传感器 ​

本页介绍经 ADC 接入的模拟电流输出模块,动作读取类别为 current,结果单位 A。4~20mA 电流环和 INA226 I2C 驱动使用各自参数,不能套用本页的灵敏度公式。

接线与前端标定 ​

按模块额定供电接线。常见 ACS712 模块按其规格供电,不能把原先标为 5V 的模块改为 3.3V 供电并继续套用原灵敏度。模块输出的零点、正负电流峰值及异常值均必须经过前端处理,落在目标 ADC 的允许范围内。

若输出先经过分压,ADC 侧的零点和灵敏度都会按相同比例缩小;例如参数 zeroOffset 是 ADC 输入侧零电流电压,sensitivity 是 ADC 侧 V/A,不能直接填模块未经分压的规格值。驱动使用:

text
Vadc = averageRaw * vRef / adcMax
I = (Vadc - zeroOffset) / sensitivity

这是线性换算。10 次采样均值不是交流 RMS 算法,也不计算功率、功率因数或交流有效值。超过 ADC 量程的信号无法靠软件系数恢复。

外设配置 ​

GPIO34 仅是经典 ESP32 的 ADC 引脚示例:

json
{
  "id": "current1",
  "name": "模拟电流",
  "type": 15,
  "enabled": false,
  "pinCount": 1,
  "pins": [34],
  "params": { "attenuation": 3, "resolution": 12 }
}

先保存禁用草稿、检查接线和资源,再启用外设。普通模拟读取返回原始计数或持久配置的工程量;选择动作的 current 类别才执行这里的电流换算。

读取动作 ​

以下是演示参数,zeroOffset、sensitivity、vRef 都须根据实际前端与标准电流源标定:

json
{
  "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 原始值、结果单位及失败质量。零值可能有效,读取失败不能以零伪装成功。这里的采样及报警不代替硬件过流保护;电网或高压电流测量须使用符合应用要求的隔离模块。

蜂信物联 | fastbee.cn