ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

eFuse与DSC协同实现工业电源过流保护与智能管理设计

eFuse与DSC协同实现工业电源过流保护与智能管理设计 1. 一块返修板教我的事保险丝在电源保护里的三个短板上个月我去客户现场处理一台返修的电机驱动板故障现象很奇怪板子没有冒烟也没有明显的烧毁痕迹但 24V 入口之后的 DC-DC 输出全部没了。拆开外壳一看入口处的保险丝外壳已经裂开后端一个 470µF 电解电容鼓了包。客户那边的维修人员说前几天现场有一次端子误操作电源线被短暂反接了一下然后设备就再也起不来了。这件事让我重新把电源路径保护这件事从头想了一遍。过去很多嵌入式设备和工业控制板入口处就是一颗保险丝加一个 TVS 管便宜、简单但它的短板在实际故障面前非常明显保险丝动作慢。反接、短路瞬间产生的能量往往先让后端器件损坏保险丝还没熔断或者刚熔断电容已经鼓包了短路电流大时保险丝熔断过程还会伴随燃弧在防爆场合是很危险的事情。不可恢复。熔断以后必须人工更换工业现场换一颗保险丝要停电、开柜、排查原因半个小时算快的。很多小设备压根没人愿意换直接拿铜丝短接等于把保护彻底废掉。只能保护过流一种故障。过压、欠压、浪涌、热插拔打火、反接普通保险丝一概不管后端电路全靠自己硬扛。所以我在后来的项目里基本把保险丝 TVS升级成电子保险丝eFuse 单片机的方案。这次要分享的组合是 TI 的 TPS259483AYWPR 这颗 eFuse配 Microchip 的 dsPIC33FJ256GP710A 数字信号控制器。两台器件配合起来实现过流限流、过压/欠压保护、浪涌控制、故障锁存与远程复位、以及带时间戳的故障日志记录。下面的内容不是照抄数据手册而是我在这套方案里实际搭电路、写固件、调试和踩坑的完整过程。先给大家一张需求清单后面所有设计都围绕它展开保护需求传统保险丝方案eFuse DSC 方案过流/短路保护熔断速度慢需更换微秒级限流/关断可恢复过压/欠压保护不支持可配置阈值关断输出上电浪涌/容性负载靠后端电路硬扛软件控制输出爬升斜率故障通知无FLT 引脚 MCU 外部中断故障日志无MCU 记录故障类型与时间戳远程/自动复位无MCU 控制 EN 引脚复位这个表里每一项都不是理论推导而是我在实际测试中验证过的。下面逐个展开。2. TPS259483AYWPR 的防护层次从限流、过压到软启停它到底怎么工作TPS259483AYWPR 是 TI TPS25948x 系列里的一颗电子保险丝这个系列内部集成了 MOSFET、电流采样电路、比较器、驱动逻辑和故障输出简单说就是一颗能感知自己过流、过压、过温的智能开关。它的工作方式和保险丝有本质区别保险丝靠融化断开电路eFuse 靠 MOSFET 的线性区或开关动作限流和切断电路动作时间可以做到微秒级而且不限次数。我给这套电源路径画了一个很简单的等式来解释它的工作电源路径保护 串联开关 故障感知 决策 执行。TPS259483 把这四件事集成在了芯片内部外部只需要配几个电阻电容把阈值设好就行。2.1 过流保护限流和切断是两回事eFuse 的过流保护有两种模式一种是限流模式一种是切断模式。限流模式下负载电流超过设定值后MOSFET 进入恒流状态输出电流被钳住电压会被拉低这时可以做软的处理如果芯片配置为切断模式超过阈值后直接关闭输出负载掉电。这里有个细节大家要留意很多负载在启动瞬间需要很大的电流比如电机启动、大电容充电如果一超限就直接切断系统根本起不来。所以实际设计中我会把 TPS259483 的过流响应配置成先限流持续一段时间后仍超限再关断给负载一个启动窗口。这个时间窗在数据手册里通常对应一个可编程的消隐时间具体引脚或配置方式以手册为准。2.2 过压和欠压让输入电压待在该待的地方工业现场最怕的不是电压慢慢漂而是突然出现一个尖峰或者电源掉到设各不能正常运行的范围。TPS259483 的 OVP/UVLO 引脚通过外部电阻分压监测输入电压当输入电压高于过压阈值时立刻关闭输出低于欠压阈值时关闭输出。这个特性配合后端的 TVS能把前级浪涌的破坏降到最低。2.3 软启动为容性负载留一条活路这个是我认为 eFuse 比保险丝高级的核心点。上电瞬间如果输出端挂着大电容不加控制的话充电电流会大得离谱甚至让前级电源直接进入保护。TPS259483 的软启动引脚接一个电容就可以控制输出电压的爬升斜率把充电电流限制在预设范围内。举个实际例子假设输出端接了 100µF 电容电源电压 12V如果不做软启动上电瞬间理论上就是电压突变电流取决于回路寄生电阻和电源能力往往是几十安培。做了软启动让输出电压在 2ms 内从 0 爬到 12V也就是爬升斜率 6V/ms那么充电电流约为 100µF × 6V/ms 0.6A。这个数就非常友好了。2.4 故障输出和使能控制让外部大脑可以参与决策TPS259483 有 FLT 故障输出引脚和 EN 使能引脚。FLT 引脚在故障动作时输出低电平可以直接接到 MCU 的外部中断引脚EN 引脚控制芯片的开启和关断MCU 可以通过一根 GPIO 线远程复位故障。这两个引脚是整套方案中硬件保护和软件管理的接缝下文会详细讲。3. dsPIC33FJ256GP710A 真正在做的是决策采样、判断、记录与恢复很多人看到这套方案会问eFuse 自己就能保护为什么还要加一个 dsPIC33FJ256GP710A直接用纯硬件电路不行吗我的答案是eFuse 负责快MCU 负责聪明。硬件保护动作是微秒级的但只能执行预设的逻辑它不知道负载是什么不知道故障发生了多少次不知道该不该重试更没法把故障信息告诉上位机。这些事需要一颗真正的处理器来做。3.1 为什么选 DSC 而不是普通 MCU选 dsPIC33FJ256GP710A主要是看中三点采样精度和速度。它内置的 ADC 配合 DMA可以做到多通道连续采样而不占用 CPU 主循环这对电流、电压的实时监控非常关键。数学能力。作为数字信号控制器在处理电流有效值、功率计算、平均值滤波这些运算时比普通 8 位或者低端 32 位 MCU 轻松得多工业上经常要算持续功率超限这需要做积分运算。外设资源。它的 PWM、UART、SPI、I2C、定时器数量都很充裕我在这套方案里要用到 ADC、外部中断、定时器、UART、GPIO 至少五类外设dsPIC33FJ 分配起来毫无压力。说白了普通单片机也能做但做了以后 CPU 占用率会很高留给通信和诊断的余量就少了。DSC 让我可以把采样循环压到很小同时还有一半以上的 CPU 性能留给上层逻辑。3.2 电流采样用 IMON 还是外加分流电阻电流采样是整套保护方案里最影响判断准确度的环节。TPS259483 这类 eFuse 通常会提供电流监测输出 IMON输出一个与负载电流成比例的电流或电压送到 MCU 的 ADC。用 IMON 的优势是省掉一枚分流电阻走线简洁缺点是这个信号在芯片内部经过放大带宽和精度受芯片规格限制而且受芯片自身温度影响。我的做法是如果在要求不高的场合直接用 IMON 输出经过一个 RC 低通滤波后送 ADC如果是要做精度较高的功率监测我倾向于在输出母线串一枚 20mΩ/1% 的分流采样电阻用电流检测放大器比如 INA240放大后送 ADC。通过校零和满量程校准这套采样的电流误差可以控制在 2% 以内。3.3 三级保护决策预警、慢断、快断我在固件里把保护逻辑分成了三级每一级的触发条件和动作都不同第一级是预警电流超过额定值的 80%持续 200ms 以上MCU 不切断输出只通过 UART 上报一条预警消息让上位机知道负载状态有异常。第二级是慢断电流超过额定值的 100%持续 1s 以上认为负载异常MCU 主动拉低 EN 引脚关闭 eFuse记录一条过载事件。为什么用 1s 而不是立刻切断因为有些负载的短时过载是正常的比如电机堵转瞬间直接切断可能比故障本身还麻烦。第三级是急断电流超过额定值的 150%持续 50ms 以上这个级别就是比较严重的短路或者器件损坏了MCU 立即关闭 EN同时记录急断事件。注意这里有个关键设计真正瞬时的短路是靠 TPS259483 内部的硬件比较器先动作的MCU 的处理速度根本来不及MCU 的三级逻辑针对的是持续过载不是突发短路。这就是我反复强调的硬件负责快MCU 负责聪明。3.4 故障记录与复位策略故障一旦发生MCU 会记录故障类型、故障时的电压电流值和时间戳写入内部 Flash。dsPIC33FJ256GP710A 的 Flash 可以用于数据存储但擦写寿命有限所以我不会每条故障都单独写而是把故障日志放在一个缓存区里积累几条后一次写入。复位策略这里有个细节系统上电后MCU 会先读 FLT 引脚状态如果 eFuse 处于故障锁存状态MCU 不会立刻复位它而是先等电源输入稳定再延时 5 秒后拉高 EN 尝试恢复。这个延时很重要很多现场故障是输入电源瞬时跌落引起的如果 eFuse 在这个时侯立刻重启很可能再次触发保护造成反复重启损坏负载。4. 两个器件拼在一起的电路骨架连接、参数计算与上电时序下面说说具体的电路连接和参数计算。我先给大家一个连接关系的总表再逐个展开参数计算过程。TPS259483 引脚连接对象作用VIN电源入口接输入滤波电容电源输入VOUT后端负载或 DC-DC接输出电容受保护输出OVP/UVLO分压电阻网络设置过压/欠压阈值ILIM限流设定电阻设置限流点SS/dVdt软启动电容控制输出爬升率ENdsPIC33FJ GPIOMCU 使能/复位控制FLTdsPIC33FJ 外部中断引脚故障通知IMONRC 滤波后接 ADC电流监测4.1 过压/欠压阈值的计算设内部比较器的参考电压为 VrefOVP/UVLO 引脚外接上分压电阻 R1 和下分压电阻 R2则阈值电压 Vth 满足Vth Vref × (R1 R2) / R2反过来给定目标阈值 VthR1 R2 × (Vth / Vref - 1)。拿 24V 系统举例我希望欠压阈值 18V过压阈值 33V。先选 R2 10kΩ假设该引脚参考电压 Vref 为 1.2V具体以数据手册为准我不能凭记忆替你确认那么欠压上分压电阻 R1 10k × (18 / 1.2 - 1) 140kΩ过压上分压电阻 R1 10k × (33 / 1.2 - 1) 265kΩ。实际取标称值 140kΩ 和 270kΩ再用 1% 精度电阻最终阈值会有细微偏差可以在原理图阶段用计算器验算一遍这个步骤不要省略。4.2 限流点和软启动电容的计算限流点通过 ILIM 引脚电阻设定数据手册会给出 ILIM 电阻和限流电流的对应系数一般形式是 Rilim K / I_LIM。假设目标限流 4A系数 K 查手册为某个值计算出的阻值取最近的标准电阻然后必须实测校准。因为 ILIM 电阻的电流基准和芯片内部 MOSFET 的导通电阻都会随温度变化理论值和实测值往往有差距我一般在测试阶段用电子负载把每个限流档位都拉一遍把实际限流值和理论值偏差记录到固件校准表里。软启动电容的选取先算输出负载的等效电容。比如输出端有 220µF 电解电容还有若干小陶瓷电容合计约 250µF我希望启动过程的影响不超过限流点的 70%也就是 4A × 70% 2.8A。充电电流公式I C × (dV/dt)。设电源电压 12V希望充电电流 2.4A留一点余量那么 dV/dt 2.4 / 250µF 9.6V/ms。输出电压从 0 爬到 12V 所需时间约 12 / 9.6 ≈ 1.25ms。再根据 SS 引脚内部充电路径的电流大小反推所需电容值。这个内部充电流数值比较小常见在微安级别我选电容时会按数据手册的公式去算不会凭感觉瞎贴一个 100nF 完事。4.3 固件骨架固件我用 C 语言写核心流程如下void init_power_protection(void) { init_adc_dma(); // 电流电压连续采样 init_ext_int(); // FLT 低电平触发中断 EN_GPIO 0; // 先保持关闭 } void check_history_fault(void) { if (FLT_PIN 0) { log_fault(FAULT_HARDWARE); delay_ms(5000); // 等待输入稳定 EN_GPIO 1; // 尝试恢复 } } while (1) { vbus get_avg(VBUS_ADC); // 母线电压 iload get_avg(ILOAD_ADC); // 负载电流 if (iload I_ALERT tick_alert 200ms) { send_uart(ALERT_OVERLOAD); } if (iload I_SLOW_TRIP tick_slow 1s) { EN_GPIO 0; // 关闭 eFuse log_fault(FAULT_SLOW_TRIP); digest_fault_buffer(); } if (iload I_FAST_TRIP tick_fast 50ms) { EN_GPIO 0; log_fault(FAULT_FAST_TRIP); digest_fault_buffer(); } }这段代码只是骨架实际项目中我会把阈值参数做成结构体从 Flash 里读取方便批量设备调整参数而不动代码。4.4 完整上电时序信号从系统上电到稳态可以分成五步电源输入建立eFuse EN 为低FLT 和 PGOOD 处于初始状态后端负载掉电。MCU 上电复位执行初始化读取故障历史。MCU 确认无硬件故障后拉高 ENeFuse 开始软启动输出电压按设定斜率爬升。输出电压达到稳态PGOOD 拉高MCU 收到 PGOOD 上升沿正式开始运行监控逻辑。正常运行期间MCU 持续采样母线电压和负载电流任何一级故障触发时执行对应动作并记录。5. 联调阶段踩过的四个真坑这一节是整篇里我最想写的。电路图看着再合理联调时该踩的坑一个都不会少。我挑四个典型的每个都讲清楚现象、原因和最终解决办法。5.1 第一个坑电机启动瞬间被误切断带电机负载测试时一启动就触发 eFuse 的过流关断电机根本转不起来。查了一圈发现电机启动瞬间的电流峰值超过了设定的限流点虽然只持续了几十毫秒但 eFuse 的硬件响应比 MCU 快得多直接就切了。解决办法是两招组合一是把限流点从 4A 抬高到 6A让启动峰值落在限流点以内二是把软启动时间拉长让输出电压缓慢爬升减小大电容充电带来的额外冲击电流。这里要注意限流点抬高后正常稳态电流的裕量变大但短路时的峰值电流也变大了所以后端器件的耐流能力要跟着确认不能光顾着让电机转起来。5.2 第二个坑故障锁存导致系统无法自恢复把 eFuse 配置成故障锁存模式后遇到一次瞬时过载输出被切断。MCU 按预设的 5 秒延时后拉高 EN 复位但发现复位不生效最后查到原因eFuse 在锁存状态下有些型号的 EN 引脚只在特定条件下才能重新开启比如必须先拉低 EN 保持一段时间再拉高才有效。我的固件原先是直接拉高 EN没有先拉低的过程。改成拉低 EN 保持 100ms → 再拉高之后复位就正常了。这个细节数据手册里往往藏在时序图里容易漏看。建议大家在自己板子上复现一次锁存故障用逻辑分析仪抓 EN 和 FLT 的时序确认自己的复位动作符合芯片要求。5.3 第三个坑IMON 采样噪声导致的误报警IMON 信号直接接 ADC发现负载电流明明很稳定MCU 却频繁报预警甚至偶尔触发慢断。用示波器看 IMON 引脚上面叠加了明显的高频毛刺来源是后级 DC-DC 的开关噪声沿着地平面耦合过来的。解决方法是两层硬件上加了一阶 RC 滤波截止频率设在 10kHz 左右把开关噪声滤掉软件上做了移动平均和阈值滞回处理电流判断分上升触发和下降恢复两个阈值避免信号在阈值附近抖动时反复触发。这两个措施加上以后误报问题彻底消失。5.4 第四个坑散热和地回路叠加出来的采样偏差满载 4A 连续运行时TPS259483 的表面温度明显上升。用热成像仪一看芯片周边 PCB 铜皮温度达到 85°C 以上。温度上来以后两个问题同时出现一是限流点漂移实测限流值比常温时低了约 8%二是采样电阻周围的温度梯度导致分流电阻阻值漂移电流读数出现偏差。处理办法在 PCB 布局上给 eFuse 的散热焊盘多打散热过孔让热量快速通向底层大铜皮分流电阻改用低温漂的合金电阻电流校准不再用常温单点校准而是在 25°C 和 85°C 两个温度点都做校准固件里按芯片温度做线性补偿。6. 换一个负载时这套参数该从哪开始调每一次新项目接入不同负载我都不建议直接抄上一个项目的参数。我整理了一个起始参数表方便大家快速定位负载类型额定电流建议限流点建议软启动时间MCU 慢断阈值MCU 急断阈值传感器板容性负载为主1A1.5A1ms1.2A / 1s1.5A / 50ms工业控制板小电机3A5A2ms4A / 1s6A / 50ms伺服驱动前级6A9A5ms7.5A / 500ms10A / 20ms24V 通信设备2A3A1ms2.5A / 1s3.5A / 50ms拿到表后第一步是用电子负载做静态拉载测试验证限流点实际值与设定值一致第二步做动态负载测试模拟负载突变确认不会误触发第三步做短路测试用一根短粗导线短接输出观察 eFuse 动作时间和 MCU 记录的内容是否正常第四步连续跑 8 小时满载用热成像仪确认芯片温度在规格范围内。最后提一个很多人忽略的验证项目反复上下电 100 次每次冷启动都检查 PGOOD 是否稳定建立、MCU 是否记录到异常。我遇到的多次偶发启动失败都是在这个测试里暴露出来的。这四步走完这套电源路径保护方案才算真正能用。每次做这类电源保护设计我心里都有一个同样的体会好的保护不是越灵敏越好而是在该断的时候断、该稳的时候稳、该醒的时候醒之间找一个平衡点。TPS259483AYWPR 给了硬件层面的可靠dsPIC33FJ256GP710A 给了系统层面的智能两者各司其职才是工业电源保护该有的样子。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进