液压电磁阀"没反应",线圈是通的、线束也没断,换块板还是不动作——最后发现是驱动芯片热关断后自己恢复了。结论先给:负载不动作不等于负载坏了,比例电流检测能把开路、对地短路、过温关断与母线异常分开,前提是按 K 值反算检测电阻,再用真值表组合判断。本文依据 ST VN920 数据手册整理,附五步核算与 STM32 判定代码。
一台 24V 工程机械的液压电磁阀,操作手报"没反应"。到了现场,万用表量线圈是通的,线束也没断,换一块新驱动板还是不动作——最后查出来,上一个故障把驱动芯片送进了热关断,等温度降下来它又自己恢复了。结论先给:负载不动作不等于负载坏了,高边驱动芯片自身就能把开路、对地短路、过温关断和母线异常区分开,前提是你会读它的比例电流检测输出。本文按 ST VN920 / VN920-B5 / VN920SO 数据手册(Rev.2)整理,讲清 K 值怎么反算检测电阻、真值表怎么组合判故障,以及 24V 系统里绕不开的 ISO 7637 与反向电池问题。
VN920 是 ST VIPower M0-3 工艺的单通道高边固态继电器,三种封装(PENTAWATT、P2PAK、SO-16L)电气参数一致。它的定位很明确:驱动任何"一端接地"的负载,所以电磁阀、继电器线圈、灯、加热丝都能挂。
| 项目 | 手册数值 | 测试条件 |
|---|---|---|
| 工作电压 VCC | 5.5~36V(典型 13V) | 欠压关断 3~5.5V,过压关断 36V |
| 导通电阻 RON | 16mΩ / 32mΩ / 55mΩ | 10A、25℃ / 10A 全温域 / 3A、VCC=6V |
| 连续输出电流 IOUT | 30A | 内部限流 |
| 直流短路限流 Ilim | 30~75A(典型 45A) | VCC=13V |
| VCC 钳位电压 | 41 / 48 / 55V | ICC=20mA,min/典型/max |
| 关断温度 TTSD / 恢复 TR | 150~200℃ / 135℃ | 热滞回 7~15℃ |
| 电流检测比 K1 | 3300~6000(典型 4400) | IOUT=1A,VSENSE=0.5V |
| 结到壳热阻 Rthj-case | 1.3℃/W | 三种封装相同 |
表里最容易被跳过的是一行小字:16mΩ 只是 25℃、10A 条件下的典型值,全温域最大 32mΩ,到了 3A 轻载、VCC=6V 会涨到 55mΩ。也就是说同一颗器件,轻载时的导通损耗占比反而更高——别拿典型值去算发热,也别用重载数据反推轻载温升。
SENSE 引脚输出的是一股与负载电流成比例的小电流,手册用 K = IOUT / ISENSE 描述这个比例。关键是 K 不是常数:1A 时 K1 为 3300~6000,10A 时 K2 为 4200~6000,30A 时 K3 为 4200~5500,并且随温度还有 −10%~+10%(1A)与 ±8%(10A)的漂移。做诊断要用区间,不能用单点。
检测电阻的取值被两头夹住。手册给的最大检测输出电压是 4V(VCC>8V、IOUT=10A、RSENSE=10kΩ 条件下的限值),所以 RSENSE 不能往大里取。按最坏情况倒推:10A 时 K 取最小值 4200,ISENSE 约 2.38mA,要求 VSENSE 不超过 4V,则 RSENSE ≤ 4V / 2.38mA ≈ 1.68kΩ。取 1kΩ 时 10A 对应约 2.4V,既有余量,也能被 3.3V 的 ADC 直接采。
| 负载电流 | 按 K 下限算的 ISENSE | RSENSE=1kΩ 时 VSENSE | 结论 |
|---|---|---|---|
| 1A | 0.30mA(K1=3300) | 0.30V | 可用,分辨率偏低 |
| 5A | 1.19mA(K2=4200) | 1.19V | 可用 |
| 10A | 2.38mA(K2=4200) | 2.38V | 可用,余量充足 |
| 20A | 4.76mA(K3=4200) | 4.76V | 超 4V 限值,RSENSE 需降到 840Ω 以内 |
还有一处时序必须记住:从 INPUT 上升沿到检测输出达到 90%,tDSENSE 最大 500µs。上电后的头半毫秒不要做故障判定,否则正常的上电过程会被读成开路。
手册的真值表把 INPUT、OUTPUT、SENSE 三个状态放在一起看。只盯 SENSE 会误判,因为对地短路、欠压、过压这三种情况,SENSE 都是 0。
| 状态 | INPUT | OUTPUT | SENSE | 现场含义 |
|---|---|---|---|---|
| 正常 | H | H | 与电流成比例 | 负载工作 |
| 过温 | H | L | 5.5V(VSENSEH) | 已热关断,芯片很烫 |
| 欠压 | H | L | 0 | VCC 低于欠压门限 |
| 过压 | H | L | 0 | VCC 到过压关断点 |
| 对地短路 | H | L | 0(Tj<TTSD)/ 5.5V(Tj>TTSD) | 先限流、后热关断 |
| 对 VCC 短路 | H | H | 低于正常比例值 | 不报错,只是读数偏低 |
用法是"先分组、再细分":OUTPUT 为低、SENSE 为 0 的这一组里塞着短路、欠压、过压三种,此时去量 VCC 就能分开——低于 5.5V 是欠压,接近或超过 36V 是过压,VCC 正常就是负载对地短路。SENSE 跳到 5.5V 是过温的标志(手册给出过温时检测电压 5.5V、输出阻抗 400Ω),这时输出必然是低。
最容易漏掉的是最后一行"对 VCC 短路":输出仍然是高,芯片不报错,只有比例值偏低。它属于"能用但迟早出事"的状态,必须靠 K 值区间比较才能抓出来,这也是比例检测相比单纯过流保护的价值所在。
VN920 的限流点在 30~75A,配合过温关断与自动重启构成保护链。自动重启是双刃剑:故障还在,芯片降到 135℃ 就重新打开,几毫秒后再关断,形成热振荡。手册在保护章节专门加了注,要求保护与诊断信号必须配合软件策略,限制异常状态持续的时间和触发次数。
所以固件里要有重试计数:短时间内连续 3~5 次进入过温或限流,就锁存故障、停止自动重试,等人来处理。热滞回只有 7~15℃(典型 15℃),意味着"凉一点就重启"这件事比想象中频繁得多。
顺带一个常被误判的现象:限流值本身是 30~75A 的宽带,同一批板子的短路电流能差一倍多。不要用"测到的短路电流是多少"去判断器件好坏,要看它有没有进入限流平台、退出限流后能否恢复正常输出——前者是保护在动作,后者才是器件真的伤了。
第一是抛负载。手册的 ISO 7637/1 表里,脉冲 1、2、3a、3b、4 在四个严酷等级下结果都是 C 级(扰动后功能正常),但脉冲 5 只有等级 I 是 C 级,等级 II~IV 是 E 级——E 级的定义是不可恢复、必须换器件。原因不复杂:芯片上那个 41~55V 的钳位只吸收低能量尖峰,扛不住真正的抛负载能量。手册因此明确要求,抛负载峰值超过 VCC 直流最大额定值、或线上瞬态超过表内数值时,必须外加电压瞬态抑制器。
第二是反向电池。手册给了两种接法:地线串电阻,用 RGND ≤ 600mV/IS(on)max 和 RGND ≥ (−VCC)/(−IGND) 两头夹;地线串二极管,并在二极管两端并 1kΩ 电阻(驱动感性负载时必须并)。串电阻的代价是地电位抬升,输入阈值和检测输出会整体偏移,多颗芯片共用同一个电阻时偏多少还随开启数量变化,能共用二极管方案就别共用电阻。
还有一处细节:用了地线保护网络后,VCC 上的负瞬态会把控制脚一起拉负,需要在 MCU 的 I/O 上串 Rprot 防闩锁。手册给的算式是 −VCCpeak/Ilatchup ≤ Rprot ≤ (VOHµC − VIH − VGND)/IIHmax,以 −100V、闩锁 20mA、VOH≥4.5V 为例落在 5kΩ~65kΩ,推荐 10kΩ。这颗电阻别省,省了就是让 IO 去扛负压。
代码把上面的判断顺序固化下来:先看 SENSE 是否被抬高(过温),再结合使能信号与输出回读,最后用额定电流的比例区间区分开路、对 VCC 短路与正常。
/* VN920 负载诊断:SENSE 走 ADC,OUT 由 GPIO 回读 */
#define K_MIN 4200 /* 10A 时 IOUT/ISENSE 的下限 */
#define RSENSE_OHM 1000
#define NOMINAL_A 2.0f /* 本路负载额定电流 */
#define VREF 3.3f
typedef enum { OK, OPEN, SHORT_GND, SHORT_VCC, OVER_TEMP } load_st;
static float sense_amp(uint16_t adc)
{
float v = adc * VREF / 4095.0f; /* SENSE 引脚电压 V */
float is = v / RSENSE_OHM; /* 检测电流 A */
return is * K_MIN; /* 按最坏 K 估电流上限 */
}
load_st vn920_diag(uint16_t adc, int in_hi, int out_hi)
{
float v = adc * VREF / 4095.0f;
float i = sense_amp(adc);
if (v > 4.5f) return OVER_TEMP; /* SENSE 被抬到 5.5V */
if (!in_hi) return OK; /* 关断态,不判定 */
if (!out_hi) return (v < 0.05f) ? SHORT_GND : OVER_TEMP;
if (i < NOMINAL_A * 0.05f) return OPEN;
if (i < NOMINAL_A * 0.70f) return SHORT_VCC;
return OK; /* 比例落在区间内 */
}
注意 NOMINAL_A * 0.70f 这个阈值不是拍脑袋:K 本身就有 ±8%~±10% 的漂移,再叠上 ADC 与电阻误差,判定门限至少要留 20% 以上余量,否则正常负载会被报成"对 VCC 短路"。
一句话总结:高边驱动的负载诊断是五步——先认清 RON 与电流随工况的边界,再用 K 下限反算检测电阻,然后用 INPUT/OUTPUT/SENSE 真值表分组定位,接着靠软件限住热振荡的触发次数,最后补上外部瞬态抑制与地线保护;顺序里少一步,现场都只能靠换件试。
本文基于 ST VN920 / VN920-B5 / VN920SO 单通道高边固态继电器数据手册(Rev.2,2004 年 7 月)整理优化。
沧州艾诺威电子 — 国家高新技术企业,20+项国家专利
嵌入式系统开发 · 物联网方案 · AI智能硬件 · 一站式交付
电话:13930711029 | 邮箱:tech@czinv.com | 24小时内响应