ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

eFuse+MCU实现工业电源路径保护:从保险丝到智能防护

eFuse+MCU实现工业电源路径保护:从保险丝到智能防护 前阵子做一块 24V 工业控制板老化测试第三天还是出事了输出短路后保险丝虽然熔断但后级的 DCDC 和主控 MCU 已经“先走一步”。我拆开板子看了半天发现不是保险丝选得不对而是传统熔断器从过流发生到真正断开中间那几十毫秒里能量已经足够烧穿半导体器件。后来我换了一种思路电源入口处的保护不再让保险丝单独扛而是交给 TPS259483AYWPR 这类 eFuse 做快速限流和过压切断再配合 STM32L4A6RG 做状态采集和恢复策略。简单说就是用“硬件快速保护 软件策略兜底”的方式守住嵌入式和工业应用中的电源路径。这篇文章把我的完整设计思路、关键参数计算、硬件接法、固件状态机以及实测踩坑记录整理出来希望对正在做电源防护设计的工程师有点帮助。1. 从一次板卡烧毁说起为什么保险丝不够用1.1 那次冒烟的 24V 电源入口当时那块板子是一套传感器采集终端供电来自 24V 开关电源入口处放了一只 5A 慢熔保险丝后级是一颗 24V 转 5V 的 DCDC再往后是 STM32 和模拟前端。老化测试第三天一个接线端子被维护人员误碰短路保险丝确实断开了可 DCDC 的输入引脚和板上的 TVS 已经烧黑主控部分跟着掉电重启最后返厂排查才发现 PCB 铜箔都在短路点附近起了泡。这个案例让我印象很深。保险丝不是没有保护作用而是它的动作时间由过流倍数决定过流越大断得越快但在“刚刚超过额定值”或“短路阻抗较高”的情况下熔断时间可能长达数百毫秒甚至更久而后级的 MOSFET、DCDC 芯片根本撑不了那么久。换更小电流的保险丝又会频繁误断影响现场可用性。1.2 传统保险丝的三个硬伤第一是动作慢。普通玻璃管保险丝或慢熔保险丝在 1.5 倍过流时熔断时间是秒级的这对半导体器件来说等于没有保护。第二是精度差。保险丝的熔断特性受环境温度影响很大同一只 5A 保险丝在 -40℃ 和 85℃ 下的实际熔断电流可以相差 20% 以上设计的时候只能按很宽的余量去选。第三是不可恢复。电磁阀、电机启动瞬间会产生大电流如果阈值选得不够宽一次浪涌就把保险丝打断现场维护就得拆机更换。自恢复保险丝虽然解决了可恢复问题但其动作特性更慢而且在多次动作之后内阻会明显变大压降也跟着上升。对 3.3V/5V 这类低压轨来说几十毫欧的压降就会让后端电源动态响应变差。1.3 eFuse 到底是什么eFuse 通常叫电子保险丝本质是把功率 MOSFET、电流采样电路、限流比较器、过压比较器和逻辑控制集成在一个芯片里。它不靠发热熔断金属丝而是靠检测电流和电压后主动关断 MOSFET。所以响应速度可以做到微秒级限流精度也比保险丝高得多。以 TPS259483AYWPR 这类器件为例内部有背靠背功率 MOSFET能够在输入过压、输出短路、电流超过阈值等情况下快速断开电源路径。它的好处是断开之后不会像保险丝那样留下物理损伤可以靠 EN 引脚重新开启也可以配置成故障锁存模式等 MCU 或维护人员确认后再复位。1.4 我为什么把 MCU 也牵扯进来eFuse 本身已经能做硬件保护为什么还要加 STM32L4A6RG因为很多现场问题不是“断不断开”一句能说完的。我需要知道这次故障是过压还是短路需要记录故障发生时刻的电压电流值需要在设备重启之后按顺序给各个负载上电还需要在故障过后通过 RS485 或者以太网把事件上报到上位机。这些逻辑靠 eFuse 的纯硬件状态机很难灵活实现。所以我的做法是eFuse 负责最快速的物理保护STM32L4A6RG 负责观测、判断、记录和恢复策略。两条腿走路既不会因为 MCU 死机导致电源失去保护也不会因为硬件保护太“死板”而无法处理现场复杂的恢复需求。2. TPS259483AYWPR 的“硬开关”基本功限流、过压、启动时序2.1 集成背靠背 FET 的意义刚开始接触 eFuse 时我也想过用分立 MOSFET 加比较器搭一个保护电路但做出来的问题很多栅极驱动要自举电流采样要用精密电阻过压比较器要调响应时间短路时 MOSFET 的米勒平台会让我怀疑人生。用 TPS259483AYWPR 这类集成器件之后功率通路和采样逻辑都在芯片内部完成我只需要关心外面几个电阻电容。背靠背 FET 的内部结构意味着两件事一是可以阻断从输出侧反灌到输入侧的电流有些客户现场会把输出端误接外部电源背靠背结构能防止反灌二是它可以提供真正的“断开”状态而不是像 LDO 或普通 MOS 管那样只降压不断路。对嵌入式和工业应用来说这等于给后级设备加了一道可靠隔离。2.2 限流电阻计算从负载需求反推我手里的 TPS259483AYWPR 数据手册上限流阈值是通过 ILIM 引脚和外部电阻设置的。这非常方便因为你只需要一个电阻就能改动整个系统的电流上限。设计时我先估算系统最大负载电流再留出启动浪涌和动态负载的余量。举例板卡正常工作时最大电流约 2.8A启动瞬间电机或电容充电会有约 4A 的尖峰那保护点就不能低于 5A否则一开机就跳。我按 5.5A 目标限流来选 ILIM 电阻查阅手册中的典型曲线或表格后发现对应的电阻值在 100kΩ 到 120kΩ 这个区间。我选用 1% 精度 110kΩ 做初版然后带着电子负载实测微调。最终把限流点校准到 5.4A既能覆盖启动浪涌又能在真正短路时迅速切断。千万不要照搬参考设计里的电阻值。不同板卡的电源电压、负载电容、线缆阻抗都不一样参考值只能当起点。我的习惯是先用数据手册的推荐值搭一套能工作的板子再用电子负载实际校准最后锁定电阻标称值。2.3 过压阈值与欠压锁定分压网络工业现场最恼人的问题之一就是电源电压漂移。24V 标称的电源空载时可能跑出 28V重载时跌到 19V。如果你把过压点设得太低浪涌一来就切断设得太高后端 DCDC 就可能先烧掉。TPS259483AYWPR 的过压和欠压检测引脚可以通过分压电阻网络设置阈值。我的计算流程是这样的先定过压阈值 28.5V欠压阈值 18V。根据手册给出的检测引脚内部基准电压用分压比算出上电阻和下电阻。我习惯把下电阻选在几十千欧级别这样既能忽略 MCU 引脚漏电流的影响又不会因为阻值太高引入明显的噪声。上电阻选择标准 1% 系列计算完成后还要复核整个链路的输入阻抗确保不会影响电源采样精度。这里有个很容易忽略的点分压电阻的耐压和功率。24V 系统上电阻两端压差可能接近 28V0805 封装的电阻耐压通常是 150V没问题但如果用在 48V 或更高电压系统里就要仔细算功耗和耐压甚至用两个电阻串联分摊电压。2.4 压摆率控制让热插拔不再冒火花嵌入式和工业设备经常需要带电插拔。插进去的瞬间后级大电容会把输入电压瞬间拉低产生很大的浪涌电流。如果不限制启动压摆率输入端接插件的接触针脚就可能打火电容充电电流也会让限流保护误动作。TPS259483AYWPR 的 dV/dT 引脚就是干这个的。在这个引脚上对地接一个电容可以控制输出电压上升斜率。电容越大斜率越缓。我最初在样板上去掉这个电容上电瞬间电流尖峰到了 12A虽然限流没触发但电源指示灯跟着闪了一下。加上 1nF 电容后启动时间拉长到几个毫秒浪涌电流降到 4A 以下。调压摆率的时候注意一个平衡斜率太慢系统上电时间变长有些负载要求电源电压在指定时间内稳定斜率太快浪涌电流又会超标。我通常先按负载总电容计算最小启动时间再反推 dV/dT 电容值。这里没有捷径必须用示波器看波形。2.5 FLT、PG 与自动恢复模式的组合TPS259483AYWPR 会输出故障信号和电源正常信号这对和 MCU 联动非常重要。FLT 在故障时拉低PG 在输出电压达到阈值后拉高。我把 FLT 接到 STM32 的 EXTI 引脚把 PG 接到普通 GPIO两个信号合在一起能判断出很多状态。自动恢复模式我一般不用除非负载特别简单。工业环境里的短路故障往往需要人工确认频繁自动重启会让整个系统处于反复冲击状态反而可能扩大故障。所以我的默认配置是故障锁存一旦发生保护eFuse 保持断开直到 MCU 判断现场条件允许才通过 EN 引脚重新启动。3. STM32L4A6RG 在保护链路中的角色监控与决策3.1 为什么选这块 MCU 而不是用比较器堆STM32L4A6RG 属于 STM32L4 系列Cortex-M4F 内核主频最高 120MHzFlash 1MBSRAM 320KB这在工业控制板里属于中高端配置。我选它不是因为算力高而是因为它的模拟外设非常适合做电源监控。它带三个 5Msps 的 12 位 ADC多个 DAC还有内置比较器和运算放大器。也就是说电压电流采样、阈值比较、故障上报、通信协议栈全部可以在一个 MCU 里完成不需要再加外部比较器芯片。对板卡面积和 BOM 成本控制很有帮助。另外L4 系列的低功耗模式非常灵活平时待机电流可以做到很低。设备在大部分时间处于空闲状态时可以把 MCU 睡下去只留 FLT 引脚作为唤醒源故障到来时用几十微秒时间恢复工作。3.2 接口规划让每个引脚都干对事我在硬件的接口分配上非常坚持一条原则电源保护相关的控制和反馈必须用独立引脚不能和复用功能混在一起。FLT 接 PA0PG 接 PA1EN 接 PA2三个引脚固定不挪。ADC 通道则分给输入电压采样、输出电压采样、负载电流监测三路。实际项目里还出现过另一个选择直接用 eFuse 的电流监测引脚把电流转换成电压送给 ADC。如果 MCU 的 ADC 参考电压不够准我建议用 L4 内部基准 VREFINT 校准或者干脆外接一个高精度参考源。电源监测的精度直接决定恢复策略判断的可靠性不能省。3.3 用 ADC 实时采样电源参数我写了三个采样通道VIN、VOUT、IMON。VIN 和 VOUT 通过电阻分压后进入 ADCIMON 来自 eFuse 的电流监测输出。由于 eFuse 的电流监测引脚输出电压通常和电流成正比我需要先读一次空载电压作为零点再用电子负载灌一个已知电流标定出斜率这样 MCU 就能估算实时负载电流。12 位 ADC 对工业 24V 电源来说分辨率和噪声性能都够用。但我不会把 ADC 采样循环放在主循环里直接读而是用定时器触发 DMA 搬运三轮采样平均后更新一次状态。这样主循环永远不会被 ADC 阻塞也不会因为中断太频繁影响通信任务。3.4 比较器与内部 DAC 的“硬件辅助”有些工程师会把保护完全寄托在 ADC 采样上这里我要泼一盆冷水ADC 采样、计算、判断再拉低 EN这个环路在 STM32L4 上至少也要几十微秒遇到硬短路时eFuse 自身几微秒就动作了MCU 根本赶不上。所以我的设计是让 eFuse 做“物理层保护”MCU 的比较器做“第二道快速检查”。STM32L4 内置比较器可以把输入电压与内部 DAC 设定的阈值比较一旦超限立即触发中断时间比 ADC 转换快一个数量级。我会把 VIN 分压接到比较器正输入用 DAC 输出一个 27V 对应的电压值阈值一旦超过就立刻在中断里标记“过压事件”同时读取 eFuse 是否已经动作为后续恢复策略提供依据。4. 完整的硬件链路从 24V 入口到 MCU 管脚4.1 输入级TVS、共模电感和输入电容电源入口的第一道防线不是 eFuse而是 TVS 管。我用一个贴片 TVS 并联在输入两端击穿电压选在 30V 左右既能吸收静电和感性负载产生的尖峰又不会在 28.5V 过压点以下提前导通。TVS 后面再放一个共模电感用于滤除来自开关电源的共模噪声尤其是现场有变频器或电机驱动时这个电感能明显改善后级波形。输入电容的选择也很有讲究。我放了两个电容一个是 10μF/50V 陶瓷电容用于吸收高频尖峰另一个是 47μF/50V 电解电容用于提供瞬时能量防止输入线缆较长时负载启动瞬间把输入电压拉垮。电解电容的存在让 eFuse 的输入侧在短路时不会瞬间跌到零这对芯片内部的偏置电路非常重要。4.2 eFuse 周边参数选型清单我把 TPS259483AYWPR 外围器件整理成一张表方便新项目直接参照。功能引脚推荐配置说明限流设置ILIM110kΩ 1%按目标 5.4A 实测校准过压阈值OVLO上 150kΩ下 10kΩ约 28.5V 动作欠压锁定UVLO上 200kΩ下 20kΩ约 18V 释放启动斜率dV/dT1nF 对地启动时间约 5ms故障输出FLT10kΩ 上拉至 3.3V低有效电源正常PG10kΩ 上拉至 3.3V高有效使能ENMCU GPIO 控制高有效这张表的电阻值仅供初版参考不同批次芯片的基准电压会有微小差异所以一定要用数据手册的典型曲线复核一遍。拿不准的时候宁可保守一点先把限流点调得偏低测试通过后再往回收。4.3 输出级与负载端注意事项输出侧的电容决定了短路瞬间的放电能量选得太大故障时 eFuse 已经断开但输出电容上的残余能量还是可能损坏后级器件。我一般控制在 22μF 到 100μF 之间具体看负载需求。如果系统里有多个负载我习惯在 eFuse 输出之后再加一级负载开关按启动顺序分别供电。这样冲到 eFuse 前端的容性负载不会一次性全部暴露启动浪涌更小。MCU 先开启主控电源等主控初始化完成后再开启外设电源整体可靠性会提高不少。4.4 接口信号映射表STM32L4A6RG 与 eFuse 的引脚映射如下表每个信号都留有测试点方便调试。信号MCU 引脚方向用途FLTPA0EXTI 输入故障中断PGPA1GPIO 输入电源正常指示ENPA2GPIO 输出控制 eFuse 开关VIN_SENSEADC1_IN3模拟输入输入电压采样VOUT_SENSEADC1_IN4模拟输入输出电压采样IMONADC1_IN5模拟输入负载电流监测4.5 PCB 布局里最容易被忽略的三件事第一功率路径尽量短而粗。eFuse 的输入和输出走线要按 1A/mm 的铜箔载流能力设计24V/5A 的路径至少 2mm 以上并且最好在顶层和底层各走一趟用多个过孔缝合。第二采样线要从 eFuse 引脚根部单独引出不能直接在功率走线中间打孔接飞线。IMON 信号对噪声非常敏感靠近功率回路走线会引入开关噪声导致 ADC 读数跳动。我一般会把 IMON 走线包地距离功率线至少 1mm。第三散热焊盘不能只放一个过孔。eFuse 底部的大焊盘用于导热我会在焊盘上打 4 个以上过孔到内层地平面再对过孔做阵列填充。别小看这个连续短路测试时芯片内部的功率 FET 会产生大量热量散热不好会反复进入热关断看着像误动作。5. 固件状态机让电源保护“有策略”而非“拍脑袋”5.1 初始化外设、中断、默认状态固件上电后我先把负责 FLT 的 PA0 配成下降沿中断把 PA1 配成输入PA2 配成输出并拉低确保在 MCU 初始化完成之前 eFuse 不会上电。接着初始化 ADC、DAC、定时器和 DMA全部完成之后再去检查 PG 信号和输入电压采样值。如果 PG 已经为高说明 eFuse 输入端已经带电但输出可能处于关闭状态。我会再读一下 VIN 和 VOUT如果 VIN 正常、VOUT 为零说明故障锁存发生过此时不马上重新启动而是先记录一次“上电异常事件”然后留出 500ms 观察窗口确认输入稳定后再拉高 EN。5.2 正常运行采样、滤波、阈值判断正常运行时的策略很简单每 1ms 用 DMA 触发一轮 ADC 采样三个通道各采 16 次取平均值。平均值经过一阶低通滤波后和预设的过压、欠压、过流阈值比较。这里我会区分“硬阈值”和“软阈值”。硬阈值就是 eFuse 硬件保护点MCU 不能去改它软阈值是 MCU 自己设定的预警线比如 VIN 到 26V 时开始记录到 28V 时连续 3ms 超过就主动关闭 EN防止设备在临界高压下长时间运行。软阈值通常比硬件保护点更保守但又不至于触发硬件锁存。5.3 故障处理中断里只做标记主循环做决策FLT 中断服务函数里我只做三件事置一个 fault_pending 标志、记录当前系统时间、保存 FLT 引脚电平状态。其余所有判断都在主循环中完成避免在中断里执行 ADC 采样或电阻分压运算这些耗时操作。这个设计在几次现场故障中证明非常有效。如果 FLT 拉低是因为负载瞬时短路eFuse 会迅速断开MCU 在中断里醒来主循环读取 PG 低电平后判断为“硬件保护动作”此时我不会立刻重启而是先看输入电压是否恢复正常再延时 2s 尝试重启。如果 1 分钟内连续发生 3 次就进入锁存状态等待人工复位。5.4 恢复策略自动重启、锁存与手动复位恢复策略本质上是给系统一个“犯错机会”。我把策略分成三档普通过流、瞬时短路、永久故障。普通过流且负载电流在几毫秒内回落到正常范围可以自动恢复并记录一次告警瞬时短路在 3 次内恢复也允许自动重启永久故障即 1 分钟内连续 3 次触发则锁定 EN只有掉电或按键才能复位。我专门留了一个按键引脚用于手动复位并在固件里实现了 3s 长按才生效。这样做是防止维护人员误触按键导致设备瞬时重启。工业设备的安全恢复一定要让人有“确认”的时间而不是瞬间恢复后再次进入故障循环。5.5 可上代码一个精简的 C 骨架下面是一个剥离了硬件抽象层细节的状态机骨架可以直接参考typedef enum { PWR_OFF 0, PWR_STARTUP, PWR_NORMAL, PWR_FAULT, PWR_LATCHED } PwrState; static PwrState pwr_state PWR_OFF; void pwr_state_machine(void) { switch (pwr_state) { case PWR_OFF: if (vin_ready()) { pwr_enable(1); pwr_state PWR_STARTUP; } break; case PWR_STARTUP: if (pg_is_high() vout_ready()) { pwr_state PWR_NORMAL; } else if (fault_pending) { fault_pending 0; pwr_state PWR_FAULT; } break; case PWR_NORMAL: if (fault_pending) { fault_pending 0; pwr_state PWR_FAULT; } break; case PWR_FAULT: pwr_enable(0); fault_count; if (fault_count 3) { pwr_state PWR_LATCHED; } else { HAL_Delay(2000); pwr_enable(1); pwr_state PWR_STARTUP; } break; case PWR_LATCHED: // 等待人工按键复位 break; } }这个骨架没有处理中断里保存现场的问题但状态迁移逻辑是完整的。实际项目中我还加了一个故障原因记录结构体把 VIN、IMON、PG 状态和时间戳打包存入 Flash方便现场排查。6. 实测调参与避坑保护要快但不能误动6.1 电子负载验证过流点先查斜率再读数调限流点时电子负载的“上升斜率”设置比目标电流还重要。我首次测试时把电子负载电流直接设成 10A瞬间电流跃变太快eFuse 在 2μs 内就触发保护记录下来的电流峰值根本不是芯片设定的 5.4A。第二次把上升斜率设成 0.5A/ms才看到限流点在 5.5A 附近开始生效输出被压住电流不再上升。这里要解释一下eFuse 内部限流是持续监测电流并调整 MOSFET 栅极负载从低到高慢速变化时你能看到恒流特性——输出电压下降输出电流保持在设定点。如果负载阶跃太快限流环路还没反应芯片会直接认为短路并断开这属于保护动作而不是稳态限流。6.2 启动浪涌与 dV/dT 的现场调优启动波形我最常遇到的问题不是浪涌太大而是浪涌和输入电源过压保护叠加。24V 开关电源在冷启动瞬间输出电压会小幅振荡如果 dV/dT 太慢eFuse 导通时间被拉长输入电压可能被负载拉低如果 dV/dT 太快输出电容充电电流会触发限流。我最终把 dV/dT 电容从 330pF 调到 1nF启动波形才既平又稳。用示波器看输出电压曲线没有明显台阶输入电流尖峰小于 4A。如果现场板卡已经定型但启动时序需要调整最快的办法就是改这个电容不用动 MCU 代码。6.3 地弹噪声如何污染 ADC 采样有一次 IMON 读数在空载时反复跳动从 0.1A 跳到了 0.8A排查了半天发现罪魁祸首是 ADC 采样地线接到了功率地的高边。短路测试时功率地线上有大电流脉冲地电位瞬间抬升ADC 的采样基准跟着被污染了。解决方法是把 MCU 模拟地单独布一小块铜皮在靠近 MCU 的地方用 0Ω 电阻或磁珠与功率地单点连接。所有模拟采样信号和模拟参考电压都参考这颗模拟地信号地不能在功率路径上两点连接。改完 PCB 后IMON 读数空载误差稳定在 ±0.05A 以内。6.4 温度变化对限流值的影响工业设备环境温度变化很大eFuse 内部的电流采样基准和 MOSFET 导通电阻都会随温度漂移。我在 -20℃ 和 65℃ 环境箱里分别测过限流点发现差距大约在 ±8%。这不算大但如果你的系统最大持续电流本来就贴着限流点设计温度升高后很容易变得频繁误动。所以我最终把系统最大持续电流压在限流点的 60% 左右5.4A 的限流点实际只允许持续 3.2A剩下的是启动浪涌和温度余量。这样做虽然牺牲了一点输出能力但换来了整个生命周期内的可靠性。6.5 这套方案里最值钱的一条建议如果你也想复现这套 TPS259483AYWPR 加 STM32L4A6RG 的电源路径保护方案我最想提醒的就是不要让 MCU 出现在快速保护环路上。eFuse 的硬件保护必须在几微秒内完成而 MCU 只需要负责毫秒级甚至秒级的恢复决策和记录。把这两个时间尺度分开系统才会既快又稳。我自己在三个项目中验证过这个架构无论现场是短路、过压还是误操作接线板子都没有再冒过烟。电源路径保护这种事平时看起来像小角色一旦出问题它就是整块板子的生死线。
返回列表