ARTICLE DETAIL

资讯详情

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

eFuse+MCU分工:电源入口主动保护设计全解析

eFuse+MCU分工:电源入口主动保护设计全解析 做嵌入式板卡尤其是带外部接口的工业设备我一直觉得“入口电源”是最容易被低估的设计点。前阵子我在给一个PLC扩展IO模块改版12V总线进板板上有继电器、通信接口、传感器供电。客户要求短路保护响应快、能记录过流事件、还要支持远程复位。第一版参考了老项目的做法输入端放一个大电流保险丝加TVS再用分立元件搭缓启动和限流结果负载短路测试时保险丝还没熔断下游电容和LDO先炸了。后来我把方案改成了TI的TPS259483AYWPR加Microchip的PIC18F4525前端用eFuse做“肌肉记忆级”的快速保护后面由8位单片机做“慢决策”的监控和管理。这套方案跑完短路注入、浪涌冲击和EMC测试之后我再回头设计其他产品电源入口都愿意按这个思路来做。这篇文章把整套方案拆开讲包括为什么这么分工、参数怎么算、固件状态机怎么写以及打样后踩过的几个真实坑。1. 为什么要把电源入口从“被动保险”改成“主动保护”1.1 传统方案卡在哪很多人第一反应是电源入口串个保险丝不就行了我在早期项目里也这么干但做工业设备做多了发现保险丝PTC分立MOSFET这套组合有很尴尬的问题。保险丝熔断依赖热量累积对短路当然有保护但熔断时间随过流倍数、环境温度变化非常大。同样的过流倍数在常温下可能几十毫秒断在60℃的机柜里可能直接飘到几百毫秒。对工业总线来说这段时间足够让下游DC-DC输入过压、MOSFET雪崩、电容过热。保险丝另一个麻烦是动作后需要人工更换远程设备根本不可能派人去拆壳。PTC自恢复保险丝能自动恢复但大电流、低内阻的PTC体积往往很夸张动作点同样受环境温度影响而且它不是“切断”只是把电流压下去漏电流仍然存在。对需要彻底断电、等待冷却再恢复的场景PTC并不合适。还有一些硬件工程师喜欢用分立MOSFET搭限流电路一颗采样电阻、一个运放、一只调整管。轻度过载时它能顶住真遇到输出短路运放带宽和环路响应跟不上功率管瞬间进线性区热量根本散不出去。更要命的是这套电路几乎没有状态输出故障发生后只能靠人拿万用表去查。这些方案共同的痛点是没有“诊断能力”。设备坏了你只知道坏了不知道是过压、过流还是短路也不知道坏了多少次、发生在什么工况下。对于工业现场来说这个信息缺口很致命。1.2 eFuse加MCU的组合到底怎么分工TPS259483AYWPR这颗料本质上是一个带保护功能的智能开关。芯片内部集成了功率MOSFET、限流比较器、过压比较器、热关断和软启动控制。它的响应时间在微秒到毫秒量级短路发生时它自己就能把输出关断或限流钳位根本不需要MCU插手。PIC18F4525在这里做的是“慢决策”启动时的浪涌辨识、故障计数、冷却窗口、远程通讯上报需要毫秒到秒甚至分钟级的时间尺度。硬件快速动作和软件策略分开各干各的时间尺度这套架构比某一颗芯片本身更重要。我不建议让MCU直接参与短路保护。PIC18F4525的ADC采样、中断响应再怎么快也是微秒级起步等它读到电流异常再拉EN功率管早就烧了。正确的做法是eFuse负责“不让设备死”MCU负责“死了之后怎么恢复、怎么报告”。1.3 什么样的人适合直接套这套方案这套组合最适合12V/24V供电的工控板、IO模块、传感器控制盒这类设备本地负载电流在2A到5A之间板上有大容量电容器或者有继电器、通信接口这种容易被外部干扰的部件。你需要的是一次短路不被上游电源跳闸、能远程复位、能记录故障原因那这个方案可以直接照抄。如果负载是几百安培的电池包或服务器整机柜那就要换更高规格的热插拔控制器了。TPS259483这类eFuse定位在板级和中等功率设备选型前先看清楚功率边界。2. TPS259483AYWPR 的关键工作机制与设计参数2.1 内部架构和主要引脚的作用你可以把TPS259483理解成一个“知道分寸的开关”VIN进来后经过一个N沟道功率MOSFET到VOUTMOSFET旁边有一个采样管把负载电流按比例镜像出来送给限流比较器。当电流超过ILIM设定的门限时芯片不会直接断掉而是主动压低栅极电压把输出电流钳在限流值附近如果热度继续累积内部结温保护再介入同时把FLT拉低。核心引脚我整理了一个表方便设计时对照引脚方向作用VIN / VOUT电源主功率路径输入与输出EN输入使能控制高电平有效ILIM输入对地接电阻设定限流值CDVDT输入对地接电容设定VOUT上升斜率OVP输入外部分压电阻设定过压关断阈值IMON输出电流镜像输出外接电阻转成电压给ADCFLT输出开漏故障指示低电平有效GND地散热与电流回流这里要多说一句这款器件用的是带散热焊盘的QFN类封装型号后缀AYWPR指定了这个封装细节设计PCB时底部焊盘一定要打足够密的热过孔接到大面积GND铜皮上。eFuse好不好用一半取决于散热焊盘做得踏不踏实。2.2 启动斜率电容不让大电容变成“浪涌炸弹”很多工业板子在电源入口并联了一大堆电解电容和陶瓷电容冷启动时电容充电电流非常猛。如果不做任何限制充电电流很容易达到几安甚至十几安可能直接触发限流或者把上游电源拉垮。解决思路是用CDVDT引脚上的电容控制VOUT上升斜率。斜率慢了充电电流就小。基本公式是I充电 C负载 × (dV/dt)举个例子假设负载端有470µF电容你希望启动浪涌电流不超过200mA那么dV/dt 200mA ÷ 470µF ≈ 0.426V/ms。对12V输入来说VOUT从0到12V需要大约28ms。再根据数据手册里dV/dt与CDVDT电容的关系表反查电容量通常是一个线性比例。实际选值建议再留50%余量宁可启动慢一点也不要让限流被充电电流误触发。这里有个细节如果VOUT后面还接了DC-DC模块DC-DC输入侧通常自带10µF到100µF电容加在一起要按最坏情况的总电容算。我踩过一次坑按板子本地电容算了斜率结果DC-DC启动瞬间输入侧还有一坨电容直接把限流顶穿了。2.3 限流电阻与过压阈值怎么定ILIM引脚对地电阻决定限流值阻值越小、限流越大具体对应关系以所选型号数据手册的ILIM章节为准。设定限流值时我习惯按“最大稳态电流×1.2到1.3”来选不要为了扛浪涌去无限拔高限流值。浪涌电流应该靠斜率电容去压而不是靠增加限流门限去纵容。OVP引脚的过压阈值通过两个电阻分压设定分压点接到OVP引脚内部基准一般在1V左右量级。比例公式是VOVP_th Vref × (RTop RBottom) ÷ RBottom例如输入正常12V你希望在24V左右关断那就按24V和基准电压的比值去配两个电阻。这两个电阻必须用1%精度或更好的薄膜电阻因为分压精度直接决定过压保护点准不准。不要用普通厚膜电阻凑合。2.4 热估算与电流降额正常导通时功率损耗主要来自导通电阻P I² × RDS(on)。假设RDS(on)是40mΩ2A稳态电流下P只有0.16W基本无感。但在限流故障状态下比如输入12V、限流3A、输出接近短路FET上的压降接近11V瞬时功耗能做到30W以上。这种状态不能持续太久否则内部热关断必然介入。所以选型时要算清楚你的设备允许短时间进入限流模式多久比如给电机堵转或者继电器浪涌留200ms的容忍这个热量能不能被PCB和封装吸收如果吸收不了就把限流值降下来或者外加强制风冷/更大面积铜箔。3. PIC18F4525 的监控与决策层硬件怎么接3.1 最合理的供电拓扑别让MCU被自己管理的电源“卡死”这里有一个很多人第一版就会踩的坑MCU的供电直接从eFuse输出取电。看着省事但一旦eFuse限流锁断VOUT掉电MCU也跟着掉电那你设计的“自动复位”“远程重启”全成了空话——MCU自己都没电了谁去拉EN我的做法是让PIC18F4525单独从VIN取电经过一个小功率LDO降到5V。比如12V输入用一颗78L05或者更高效的降压芯片单独给MCU供电。这样无论eFuse后级发生了什么MCU始终活着能感知FLT、能记录数据、能拉低EN执行复位。完整的供电链路是VIN外部电源 → TVS → 输入电容 → TPS259483 → VOUT → DC-DC/负载VIN外部电源 → LDO → 5V → PIC18F4525供电TPS259483的FLT → PIC的IO口TPS259483的EN → PIC的IO口控制TPS259483的IMON → PIC的ADC通道3.2 IMON电流监测的ADC量程设计IMON引脚输出的是与负载电流成比例的电流信号需要外接一个电阻Rimon把它转成电压再送给PIC的ADC。具体增益系数要查数据手册但设计思路是固定的让满量程电流对应的电压落在ADC参考电压的70%到80%这样既不会轻易削顶又能保留一部分过流诊断的余量。用PIC18F4525的10位ADC时如果参考电压用5V的VDD分辨率约为4.88mV。对大多数板级监控够用但如果IMON满量程只有3.3V我建议把PIC的VREF外部接到一颗3.3V基准或者在允许的情况下把IMON的Rimon调大一点。实际固件里我会用一个线性校准系数把ADC读数折算成电流值// 伪代码示意满量程电压对应满量程电流 uint16_t adc_value read_adc_channel(ANO); float voltage (float)adc_value * 3.3f / 1023.0f; float current_mA voltage * CURRENT_PER_VOLT;具体数值别拍脑袋打样后用电负载做几个标准电流点把CURRENT_PER_VOLT校准一下。IMON在低电流时精度一般不要指望它取代高精度电流采样电阻它更适合做趋势监控和保护判断。3.3 EN、FLT的接线与上电时序EN引脚高电平有效。如果希望板子上电后eFuse默认打开可以在EN上接一个大电阻到EN允许的高电平如果希望MCU全权控制则用PIC的GPIO驱动。比较稳妥的做法是用一颗小MOS管或三极管做转换PIC的5V GPIO控制三极管的基极三极管集电极控制EN。这样既隔离了电平又能保证默认状态可控。FLT是开漏输出必须接上拉电阻。上拉电压建议用PIC的5V供电轨阻值10kΩ到100kΩ。如果板上有继电器、接触器这类强干扰源FLT线上加一级RC滤波比如1kΩ串联加100nF对地。工业现场的走线不要长距离平行于继电器驱动线否则FLT会被感应出莫名其妙的毛刺。上电时序上让PIC先起来再打开EN。最简单做法是MCU初始化完成后再把EN驱动为高。如果怕上电瞬间MCU的IO口不确定就用上拉电阻默认使能等MCU跑起来再接管——但不管用哪种都要保证PIC自己始终有电。4. 固件状态机浪涌和真故障的分辨逻辑4.1 状态定义与切换条件有了硬件快速保护固件的任务从“保护”变成了“判断”和“恢复”。我一般用一个五状态的状态机来管理电源路径状态进入条件MCU动作PWR_BOOT上电复位初始化ADC、GPIO等待VIN稳定PWR_RUNVOUT正常、FLT为高周期性采样IMON/温度无操作PWR_FAULT_HOLDFLT下降沿触发记录时间戳、保存当前IMON值EN拉低保持100msPWR_RETRY保持结束且重试次数未超限EN拉高监测VOUT恢复PWR_FAULT_LOCK连续N次故障放弃自恢复通过串口或状态灯上报需人工干预这个状态机的好处是短路发生时eFuse以微秒级速度关断PIC不需要抢时间FLT降到低电平后PIC才从从容容地记录、冷却、重试。4.2 重试次数、冷却窗口怎么定重试策略是这套系统的灵魂。我常用的一套参数是首次故障后冷却5秒再重启1分钟内允许2次重启超过后进入10分钟长冷却10分钟内累计5次故障直接锁定。锁定后不再自动重启因为大概率是负载真的坏了继续重启只会把故障扩大。这里最关键的是冷却窗口要大于负载电容重新充电的时间。比如启动斜率是30ms那冷却5秒绰绰有余但如果你的负载是电机堵转后热量散不出去冷却5秒显然不够建议拉长到30秒甚至1分钟。另外FLT低电平只是“一个故障发生了”不代表你知道是什么故障。我建议在FAULT_HOLD状态里顺手把IMON的采样值存下来如果故障瞬间电流是限流值的几倍那是短路如果只是刚刚超过限流更像是过载。给每个故障打上标签以后远程排查会省很多事。4.3 可裁剪的参考代码用PIC18F4525的INT0外部中断接收FLT信号主循环里跑状态机大框架是这样typedef enum { PWR_BOOT, PWR_RUN, PWR_FAULT_HOLD, PWR_RETRY, PWR_FAULT_LOCK } pwr_state_t; volatile uint8_t flt_pending 0; void __interrupt(high_priority) HighISR(void) { if (INTCONbits.INT0IF) { flt_pending 1; INTCONbits.INT0IF 0; } } void pwr_task(void) { switch (pwr_state) { case PWR_RUN: if (flt_pending) { flt_pending 0; record_fault(read_imon_mA()); en_set_low(); pwr_state PWR_FAULT_HOLD; } break; case PWR_FAULT_HOLD: // 保持100ms后进入重试或锁定 if (timer_expired(100)) { if (retry_count MAX_RETRY) { retry_count; en_set_high(); pwr_state PWR_RETRY; } else { pwr_state PWR_FAULT_LOCK; } } break; case PWR_RETRY: if (flt_pending || !vout_ok()) { flt_pending 0; pwr_state PWR_FAULT_HOLD; } else if (vout_ok()) { retry_count 0; pwr_state PWR_RUN; } break; default: break; } }实际产品里还要把冷却计时、串口上报、LED指示都塞进去但核心逻辑就是这个。这套代码我已经在不同项目里复用了七八次稳定性很好。5. 打样之后的实战复盘布局与EMC教训5.1 输入端的TVS和储能电容位置第一次打样我把TVS放在了PCB边缘离TPS259483的VIN引脚很远。短路测试时电源线缆很长寄生电感和输入电容形成谐振关断瞬间VIN上拉出超过40V的尖峰差点把芯片打穿。后来把TVS挪到eFuse的VIN引脚正前方用短粗走线直接跨接在VIN和GND之间尖峰问题立刻缓解。输入电容同样要紧贴VIN引脚建议100µF电解加10µF陶瓷再加100nF高频电容三个电容各司其职电解扛大电流、陶瓷抗高频、小电容滤极高频噪声。TVS选型要注意钳位电压不能超过TPS259483的绝对最大输入电压。比如你的母线正常24V选一个钳位在36V左右的TVS既能在浪涌时钳住又不至于太早启动把正常电压削掉。5.2 IMON和FLT小信号线的抗干扰处理IMON出来的电流信号很小走线长了以后特别容易捡到开关噪声。我建议Rimon电阻紧贴eFuse放置转成电压之后再串联一个1kΩ电阻并并联100nF电容低通截止频率大约1.6kHz滤掉大部分开关纹波再进PIC的ADC。ADC采样时做16次平均效果更好。FLT走线同样要短。如果你必须把它引到很远的地方不要直接拉一根长线去接MCU中间加一颗缓冲器或光耦避免长线把干扰耦合进来。有一次现场设备频繁误报故障查了半天发现FLT线和继电器驱动线在连接器里并排走了20厘米继电器一动作FLT就被感应出低电平毛刺。加RC滤波后问题消失。5.3 参数余量和实测校准的建议限流点和理论计算之间一定有偏差这是正常的。我实测过这类eFuse限流点误差通常在标称值的正负百分之十到十五左右取决于温度和工艺。所以设计时不要卡着负载极限设限流留出20%以上余量才靠谱。测试工具方面推荐用电子负载的恒流CC模式去拉载慢慢往上加电流记录FLT触发点和输出电压跌落。真短路模拟不要用普通继电器去合闸继电器触点闭合瞬间有抖动波形惨不忍睹。我一般用一颗大功率MOSFET做短路开关用信号发生器给栅极一个干净的方波这样能在示波器上看到从短路到关断的完整响应时间。最后再说一个我调完这批板子后的体会排查这类电源保护问题顺序永远是先看限流门限有没有被电容充电拖动再看FLT的滤波是否到位最后才怀疑MCU逻辑。只要这个顺序不乱大部分所谓“误保护”的问题都能在半小时内找到根源。
返回列表