闸门、阀门开度要远程看,现场却常常没电没网线。本文用424B霍尔角度传感器的真实参数,讲清三种输出接口怎么选、STM32怎么把4-20mA换算成角度、以及NB-IoT怎么把数据送上云。
闸门开度、阀门转角、渠闸位置这类"角度量"要远程监测,现场往往既没有稳定市电,也拉不动通信线。物联网方案看起来简单——装个角度传感器、接个 RTU、上 NB-IoT——真正做起来,三个地方最容易翻车:传感器输出接口选错(1-5V 走长线被干扰、0.5-4.5V 比例输出接错参考地)、4-20mA 采集换算把量程算偏、以及低功耗与上报节奏没算清导致电池半年就没电。本文以 424B 霍尔角度传感器为例(非接触霍尔原理、量程 10~120°、分辨率 0.1°、支持 1-5V/4-20mA/0.5-4.5V 三种输出),用三张对比表和七步设计,把从传感器选型到 STM32 采集换算、再到上云的全链路讲透。
424B 是霍尔效应的非接触式角度传感器,测量范围从 10° 一直到 120°,采用三引脚密封连接器(不是机械连接形式),带短路保护。非接触这一点对闸门、阀门这种长期振动、频繁动作的场合很关键——没有电刷和机械磨损点,寿命长得多。
它的型号是一串编码,读懂编码就不会选错型号:424 (1)(2)(3)(4)(5)(6)(7)(8)。第 1 位是 EMC 等级:A 表示摩托工业级(200V/m),B 表示一般工业级(10V/m);第 2 位是支撑结构(0 平面支撑/1 球形支撑);第 3 位是输出信号(0=1-5V、1=4-20mA、6=0.5-4.5V 比例输出、7=0.5-4.5V 输出);第 4 位是封装材料(A=PBT);第 5~7 位是三位数的测量角度范围,例如 070 表示量程 70°;第 8 位是 B。
| 型号(节选) | 工作电压 | 输出形式 | 消耗电流 | 分辨率 | 中心位置 | 反极性保护 |
|---|---|---|---|---|---|---|
| 424 A10… | 10~30V | 1-5V | 12V:18mA | 0.1° | 3V | 有 |
| 424 A11… | 10~30V | 4-20mA | 8.5V:35mA | 0.1° | 12mA | 有 |
| 424 A12… | 8.5V | 1-5V | 12V:18mA | 0.1° | 3V | 有 |
| 424 A16… | 4.5~5.5V | 0.5-4.5V 比例 | 5V:8mA | 0.1° | 典型 2.5V | 无 |
| 424 A17… | 10~30V | 0.5-4.5V | 12V:10mA | 0.1° | 典型 2.5V | 有 |
| 424 B11… | 10~30V | 4-20mA | 12V:18mA | 0.1° | 12mA | 有 |
选型第一原则:现场线缆超过 10 米、或与动力线同槽走,选 4-20mA 型号(如 424 A11);传感器与采集板同板、线短且干净,选 0.5-4.5V 比例输出(如 424 A16),让它与 ADC 共用同一参考电压,天然抵消参考漂移。
三种输出不是"精度高低"的区别,而是抗干扰、传输距离、采集电路三件事的取舍。4-20mA 是电流环,线路压降不影响读数;电压输出是高压阻抗信号,长线上容性耦合会直接污染读数。
| 输出形式 | 抗干扰能力 | 有效传输距离 | 采集电路要求 | 适用场景 |
|---|---|---|---|---|
| 1-5V | 中(电压信号,怕长线耦合) | ≤ 10m | 直接进 ADC,需注意参考电压精度 | 控制柜内短距、采集板就近安装 |
| 4-20mA | 强(电流环,压降不敏感) | ≥ 100m | 精密采样电阻 + 差分/单端 ADC | 现场闸门、阀门、长线缆、强干扰环境 |
| 0.5-4.5V 比例 | 强(与供电同比例,抵消参考漂移) | ≤ 5m | ADC 参考必须取传感器同一 5V 供电 | 传感器与 MCU 同板、共用 5V 的场合 |
注意 424 A16 型号没有反极性保护,接反会损坏;而 A10/A11/A17 等型号带反极性保护。现场接线端子多、施工人员容易接错,这一点在选型时就要确认清楚。
角度数据到了采集端,还要送上云。有线、LoRa、NB-IoT 三条路的取舍,取决于现场有没有网、有没有电、上报频次多高。
| 通信方式 | 是否需要自建网关 | 典型距离 | 功耗特征 | 适用场景 |
|---|---|---|---|---|
| RS-485 / Modbus RTU | 需接RTU或网关 | ≤ 1200m(总线) | 持续供电 | 厂区内有电源、有集中控制室的闸站 |
| LoRa | 需自建网关 | 1~5km(视距) | 低功耗,电池可用数年 | 灌区、农田渠闸等分散点位、无蜂窝覆盖 |
| NB-IoT | 不需要(走运营商网络) | 依赖基站覆盖 | 低功耗,PSM/eDRX 可做电池供电 | 有蜂窝覆盖的市政闸门、管网阀门 |
工程上常见做法是两层结构:现场用 4-20mA 把角度送到就近的 RTU,RTU 用 Modbus 汇总多点,再由 NB-IoT 模块把整包数据上报云平台。这样既利用了 4-20mA 的抗干扰,又避免了每个点位都装一个蜂窝模块的成本。
4-20mA 进 STM32 之前要先转成电压。做法是在回路里串一颗精密采样电阻 Rs,把电流变成电压再进 ADC。取 Rs = 150Ω:
0.6~3.0V 落在 3.3V 参考的 ADC 量程内,留了余量,不会削顶。换算公式是线性的:
角度 = (Vadc − 0.6) ÷ (3.0 − 0.6) × 量程
以量程 70° 的 424 A11 070 型号为例,ADC 读到 1.8V,则角度 = (1.8−0.6)/2.4 × 70 = 35.0°。下面是一段 STM32 的采集与换算示意代码,含多点平均与断线检测(4mA 以下判为断线):
/* STM32 ADC 采集 4-20mA 角度传感器(Rs=150Ω)
* 4mA -> 0.6V, 20mA -> 3.0V, 量程 RANGE_DEG 度
*/
#include "stm32f1xx_hal.h"
#define V_LOW 0.60f /* 4mA 对应电压 */
#define V_HIGH 3.00f /* 20mA 对应电压 */
#define RANGE_DEG 70.0f /* 传感器量程,按型号填写 */
extern ADC_HandleTypeDef hadc1;
/* 读一次 ADC 并转成电压(12 位、Vref=3.3V、16 次平均) */
static float read_loop_voltage(void)
{
uint32_t sum = 0;
for (int i = 0; i < 16; i++) {
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, 10);
sum += HAL_ADC_GetValue(&hadc1);
}
float raw = (float)sum / 16.0f; /* 0~4095 */
return raw * 3.3f / 4095.0f;
}
/* 返回角度;负数表示断线或超量程 */
float read_angle_deg(void)
{
float v = read_loop_voltage();
if (v < V_LOW - 0.05f) return -1.0f; /* <3.7mA: 断线 */
if (v > V_HIGH + 0.05f) return -2.0f; /* >20.7mA: 超量程 */
float deg = (v - V_LOW) / (V_HIGH - V_LOW) * RANGE_DEG;
if (deg < 0.0f) deg = 0.0f;
if (deg > RANGE_DEG) deg = RANGE_DEG;
return deg;
}
/* Modbus 保持寄存器映射:角度放大 10 倍存整数,便于上位机解析 */
unsigned short angle_to_reg(float deg)
{
return (unsigned short)(deg * 10.0f + 0.5f); /* 35.0° -> 350 */
}
把角度放大 10 倍存成整数(35.0° → 350),是为了避免浮点传输与字节序问题,上位机除以 10 即可。断线检测必须做——4-20mA 的"活零点"设计本意就是让断线(0mA)与量程下限(4mA)可区分,不利用就浪费了。
线长 ≤10m 且柜内干净选 1-5V;长线、强干扰选 4-20mA;同板共用 5V 选 0.5-4.5V 比例输出。这一步定错,后面全部返工。
424B 量程 10~120° 可选,型号末三位就是量程。选型时留 10% 余量:实际动作 60°,选 70° 量程,避免长期顶在满量程端点。
10~30V 宽压型号适合现场 24V;A16 无极性保护,接线端子要防呆;其余型号有极性保护但仍建议加防反接二极管。
Rs=150Ω/0.1%/低温漂,功率按 (20mA)²×150Ω = 60mW 选 0.25W 以上。采样电阻放在低端还是高端要按 ADC 共模范围决定,低端更简单但要接受地电位偏移。
采样电阻两端并 0.1µF + 10µF,再串 10Ω 做 RC 低通,抑制现场变频器与接触器噪声。配合 16 次平均,读数抖动可压到 0.1° 量级。
小于 3.7mA 判断线、大于 20.7mA 判超量程,分别上报不同告警码。角度数据带时间戳与有效性标志一起上云,避免上位机把故障值当成真实角度。
闸门开度变化慢,无需秒级上报。常态 5~10 分钟一次心跳、开度变化超过阈值(如 2°)立即上报,配合 NB-IoT 的 PSM 模式,电池供电也能撑很久。
| 现象 | 根因 | 处理 |
|---|---|---|
| 角度读数随线长变低 | 用了 1-5V 输出走长线,线路压降与耦合损耗 | 改 4-20mA 型号,电流环对压降不敏感 |
| 比例输出型号读数整体漂移 | ADC 参考与传感器供电不是同一个 5V | 让 ADC 参考取传感器同一 5V,比例关系才成立 |
| 量程两端读数"贴边"不变 | 机械行程超出传感器量程,长期顶死 | 重新按行程选量程,留 10% 余量 |
| 断线时读数显示 0° | 未做活零点检测,把 0mA 当成 0° | 加 <3.7mA 断线判断并单独上报告警 |
| 读数随机跳变 | 采样电阻未滤波,动力线噪声耦合 | RC 低通 + 多次平均 + 采样电阻就近接地 |
| 电池几个月就没电 | NB-IoT 上报过频,未启用 PSM | 降上报频次、变化触发上报、启用 PSM/eDRX |
闸门、阀门这类远程角度监测,成败不在传感器本身,而在输出接口与采集链路的匹配:长线强干扰就选 4-20mA,同板干净就用 0.5-4.5V 比例输出,量程按机械行程留 10% 余量。424B 提供 10~120° 量程、0.1° 分辨率与三种输出,选型自由度足够覆盖大多数现场。
采集端记住三点:采样电阻 150Ω 把 4-20mA 变成 0.6~3.0V、换算用线性公式并做断线判断、上报带时间戳与有效性标志。把这三件事做对,再配合 RTU 汇总与 NB-IoT 的低功耗上报,整套远程角度监测才能既准又省电。
本文基于《角度传感器 424B、A 系列中文资料》等技术资料整理优化,并结合闸门、阀门开度远程监测的物联网工程实践进行了系统化梳理。
沧州艾诺威电子 — 国家高新技术企业,20+项国家专利
嵌入式系统开发 · 物联网方案 · AI智能硬件 · 一站式交付
电话:13930711029 | 邮箱:tech@czinv.com | 24小时内响应