ARTICLE DETAIL

资讯详情

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

eFuse+MCU协同:工业电源入口的过压过流反接保护设计

eFuse+MCU协同:工业电源入口的过压过流反接保护设计 上个月有个客户返修板子现场反馈就一句话“设备突然就不开机了”。拆开外壳电源入口那一小段铜皮已经烧成了黑色板上主控芯片和一块DC-DC一起报废。查下来的原因其实很常见现场操作人员把24V电源线正负极接反了电流倒灌进来整块板子几分钟不到就交代了。这种问题在工业控制柜里特别容易碰到因为现场环境不像实验室那么讲究线缆插错、电压拉偏、负载短路都是常态。后来我把这块板的电源入口重新设计了一遍核心方案就是两颗芯片TI的TPS259483AYWPR和Microchip的PIC18F85J10。前者是一颗带完整保护功能的电子保险丝eFuse后者是板上的主控MCU。两者配合以后电源路径上的过压、欠压、过流、短路、热插拔浪涌甚至反接风险都能在微秒到毫秒级被拦住同时把故障状态上报给系统、记录日志。这篇文章我就把这套方案的选型思路、外围参数计算、固件状态机和调试中踩过的坑完整写出来。如果你正在做嵌入式工控板、数据采集设备、传感器节点这类对电源可靠性要求不低的硬件这部分内容应该能帮你少走不少弯路。1. 方案拆解为什么电源路径要交给eFuse和MCU1.1 电源路径上常见的故障场景先梳理一下工业现场到底会发生哪些事。第一类是反接。操作人员把正负极接反或者维护时接错端子电流直接倒灌。板内如果有电解电容反压下可能炸裂后级DCDC和主控芯片当时不坏但反向电压造成的闩锁效应和损伤往往要过几天才显现排查起来非常痛苦。第二类是过压和欠压。工业现场24V母线在电机启停时会有很大的电压尖峰稳压器故障、两根线短接也会把高压引入板内。欠压则更隐蔽比如线缆过长、接头接触不良导致电压跌落系统会表现出莫名的复位或者外设不稳定。第三类是过流和短路。直流电机堵转、电容性负载热插拔瞬间充电、线缆绝缘层磨破都会造成电流冲击。传统保险丝动作太慢往往是保护动作之前MOS管或者主控已经烧掉了。第四类是热插拔浪涌。板卡在带电状态下插拔连接器输入端瞬间对板上大电容充电冲击电流可能达到正常工作电流的十几倍。接口的金属端子打火时间长了还会氧化碳化。这些场景有个共同点故障都发生在“电源入口到负载”这一段路径上。后级无论做得多稳都挡不住前面进来的垃圾能量。所以这一段的保护必须单独做。1.2 保险丝和分立MOS管方案为什么不够用传统保险丝最明显的优势是便宜、简单但劣势同样突出动作之后不可恢复现场换熔芯非常麻烦熔断时间离散很大小过流可能几十秒才断已经来不及保护板内芯片最关键的是没有任何遥测能力故障发生时你根本不知道是过流还是短路。工控设备追求的是“故障可诊断、状态可上报”保险丝完全做不到。也有工程师用P沟道MOS管加比较器、稳压管搭分立保护电路。这么做能实现反接保护和过压关断但问题也不少。分立元件的阈值精度随温度漂移环境温度一变保护点跟着变短路响应速度受比较器带宽和MOS管栅极电容限制很难做到可控限流功能如果想做得准得自己搭采样电阻和运放占掉一大块板面积调起来也费劲。eFuse把这些都集成进一颗芯片里内部有功率开关管、电流采样、比较器、驱动逻辑和故障保护逻辑。外部只需要接几个电阻电容设定阈值就可以实现比较精确的可编程限流、过压过欠压锁定、软启动斜率控制和故障状态输出。更重要的是它可以通过MCU的GPIO随时关断和重新使能相当于给电源路径加了一把能“主动控制”的闸门。1.3 TPS259483AYWPR和PIC18F85J10的角色分工这套方案里两颗芯片各管一摊分工很明确。TPS259483AYWPR在主功率路径上担任“物理层保镖”。它内部是一颗导通电阻很低的功率开关串联在输入电源和后级DCDC之间。正常情况下流过电流异常时通过调节栅极电压把电流压住或者直接切断。它不依赖MCU的固件水平哪怕主控固件跑飞了、程序卡死在死循环里过流保护依然能动作。这就是硬件保护的“保底”价值。PIC18F85J10负责“策略层管理”。它要做的事情包括判断系统什么时候具备上电条件通过EN引脚控制eFuse的开关读取FLT故障信号一旦保护动作就立刻进入故障处理流程通过ADC采样IMON电流监测输出实时掌握负载电流是否接近限流点根据当前工作状态决定是报警、降载还是尝试自动恢复。8位MCU虽然算力一般但干这种电源管理任务绰绰有余外设接口也够用成本又低工业环境里的稳定性和供货情况都经过了大量项目验证。这两个芯片一串效果就是“硬件管底线、软件管策略”。2. TPS259483AYWPR 外围硬件设计与参数计算2.1 最小电路和信号链路TPS259483AYWPR这颗eFuse在电路上并不复杂典型接法是输入电源直接进IN脚OUT脚接后级负载中间串联一颗低阻抗功率开关。以我们这块板为例输入是12V母线后级接一个5V的DCDC和几个传感器模组典型工作电流约1.3A。外围连接大致是这样输入侧IN脚对地放一颗10µF/25V的陶瓷电容紧贴引脚摆放用来滤除电源输入的高频毛刺和给功率开关提供瞬时能量。输出侧OUT脚对地放一颗10µF和一颗0.1µF处理负载瞬态和环路的稳定性。EN/UVLO引脚通过两个电阻分压接到输入电压上设定欠压工作阈值。dVdT引脚接一颗对地小电容设定输出电压上升斜率。ILIM引脚接一颗对地电阻设定限流点。FLT和PG输出开漏结构分别外接10k上拉到3.3V再通过1k串联电阻进MCU的IO。IMON引脚通过一颗RMON电阻接地把电流监测信号转成电压给MCU的ADC。需要注意的是TPS25948系列内部的功能引脚在不同子型号上差异不大但具体的引脚功能分布和阈值特性一定要以对应型号的数据手册为准。我这边画原理图时会把数据手册里的引脚功能表打印出来贴在显示器旁边对着查避免凭印象连线。2.2 限流电阻的计算思路限流点的设置是整个外围设计里最关键的参数。限流值设得太低正常工作时eFuse频繁进入限流模式甚至误关断设得太高就失去了保护意义短路时仍可能损坏后端芯片。TPS25948系列限流电阻和限流点的关系可以近似为R_ILIM K / I_LIM其中K是数据手册给出的系数需要在对应的图表里确认。我这边用一个工程实例来说明计算方法。假设我们系统正常工作时最大电流是1.5A那限流点我一般会留出45%左右的裕量取2.2A。如果手册给的K值约等于960Ω·A那么R_ILIM 960 / 2.2 ≈ 436Ω实际选取E24系列标准电阻要么取430Ω要么取470Ω。选完后要回查手册的限流曲线看离散系数是否还在允许范围内。如果产品使用环境温度范围很宽比如从零下40度到85度限流点会随芯片的温度系数发生变化那就还得再留一层裕量比如把限流点适当上调到2.3~2.4A避免低温环境下出现误限制。这里特别提醒ILIM脚是精密阈值端走线要短而干净不要把高频开关信号的走线平行贴过来否则限流点会抖动。另外这颗对地电阻建议用0.1%精度的低温漂电阻普通的5%贴片电阻温度系数太大限流点的批量一致性会很差。2.3 欠压阈值EN/UVLO的电阻分压EN/UVLO引脚的作用是设定“输入电压低于多少伏就不允许eFuse开启”。比如我们板子最低允许9V输入低于9V时候系统要直接切断输出避免后级DCDC在输入不足时工作在不稳定区。内部阈值电压一般比较低典型值在1.2V附近具体看手册。外部用两个电阻从IN分压到EN/UVLO分压公式是V_EN V_IN × R_bottom / (R_top R_bottom)如果取V_IN 9V时V_EN 1.2V可推导出分压比R_top / R_bottom 9 / 1.2 - 1 6.5如果R_bottom取10kΩ则R_top 65kΩ实际选68kΩ。选68k以后实际启动点会略低于9V问题不大。但是要额外考虑静态功耗分压电阻串接在12V母线两端等效阻值约78kΩ静态损耗大约1.8mW完全可以接受。调试时别只看计算值用稳压电源缓缓升高输入电压同时观察eFuse的输出导通电压点看它是否落在期望的8.8~9.2V范围内。如果出现临界抖动可以适当加大R_top或者利用EN/UVLO引脚内部的迟滞特性。2.4 dVdT软启动电容的选择dVdT引脚的用途是限制eFuse开通时的输出电压上升斜率从而间接限制对后级大电容充电的浪涌电流。道理很简单如果输出端挂了一大堆电容而功率开关一瞬间全通瞬时充电电流等于输出电容乘以电压变化率极可能触发过流保护甚至烧接口端子。软启动的核心公式是I_charge C_load × (dV / dt)假设输出侧总电容是1000µF希望输出电压在5ms内从0V充到12V那么平均充电电流I 1000µF × (12V / 5ms) 2.4A如果限流点设在4A这个充电电流就不会触发保护还有一定余量。dVdT电容的计算思路则是根据芯片内部给该引脚充电的恒流源I_dVdT让引脚电压以期望斜率上升C_dVdT I_dVdT × t_rise / V_out比如内部电流源是2µA期望上升时间5ms输出电压12V则C_dVdT ≈ 2µA × 5ms / 12V ≈ 833pF实际取820pF或1nF都行。上电后最好用示波器电流探头实测一下浪涌电流峰值如果发现触发限流把电容往上调一档比如1nF换2.2nF让充电过程更平缓。注意软启动时间太长也会导致后端DCDC的启动时序问题所以要根据整板时序要求权衡。2.5 PCB布局和散热处理eFuse的PCB布局有几个容易忽略的细节。第一功率路径要短和粗。IN到OUT走线上流过的是全部负载电流路径上任何一点阻抗都会产生电压降增加损耗并且影响限流精度。我习惯把输入输出主路径用整块覆铜连接宽度根据载流查表计算12V/3A以内至少2mm宽并配合底层完整地平面回流。第二限流电阻和IMON采样电阻要靠近芯片引脚中间不要打孔穿层。打过孔带来的寄生电阻和地弹会影响采样精度。如果可能采样电阻的接地端单独走一小段线回到芯片GND做开尔文连接避免大电流地上的电位差污染阈值信号。第三散热问题。eFuse在短路或深度限流时功率管上的压降非常大。比如12V输入、负载短路开关管为了限流会被动增大导通阻抗承受的功率可能有好几瓦甚至更高。芯片本身有过温保护但如果PCB没做好散热热量散不出去保护动作会变得很“神经质”。我一般会在芯片下方的底层、顶层都铺满地铜并打一排过孔把热量导到背面有条件的话芯片周围留出通风区域。测试过limit状态下工作10秒的温升如果壳温超过90度就得优化散热否则芯片寿命和动作特性都会受影响。2.6 与PIC18F85J10的电平匹配TPS259483AYWPR的FLT、PG输出是开漏必须外部上拉才能有高电平。我这边统一上拉到PIC18F85J10的3.3V供电轨这样MCU直接读IO电平不需要电平转换。IMON电压也要核对接ADC的范围。PIC18F85J10的ADC参考电压我用的3.3V所以IMON经过RMON电阻转换后的最大电压必须低于3.3V并留出至少200mV的裕量。通过比例系数计算比如当满量程限流电流对应IMON脚输出电流为某个值选择合适的RMON使得最大检测电压在2.8~3.0V左右。如果RMON选得太大一旦负载异常电流IMON电压过高轻则ADC读满量程重则直接击穿ADC引脚所以电压估算时最好留足够余量。EN使能脚的电平阈值也要确认确保PIC拉高拉低都能可靠落在eFuse的电平规格内不要出现“MCU置高但eFuse半开”这种临界工作状态。3. PIC18F85J10 固件监控、状态机与保护策略3.1 GPIO和ADC的初始化硬件搭好以后关键就是固件怎么把这套保护机制“用好”。PIC18F85J10的初始化代码不算复杂但要确保几个配置位正确。void eFuse_HW_Init(void) { // EN引脚输出且初始为低保证上电瞬间eFuse不导通 TRISFbits.TRISF0 0; LATFbits.LATF0 0; // FLT引脚输入开漏输出上拉到3.3V TRISFbits.TRISF1 1; // PG引脚输入 TRISFbits.TRISF2 1; // IMON引脚设为模拟输入输入通道接入ADC ANSELAbits.ANSA0 1; TRISAbits.TRISA0 1; // 配置外部中断INT1下降沿触发接FLT信号 INTCON2bits.INTEDG1 0; INTCON3bits.INT1E 1; INTCON3bits.INT1IF 0; INTCONbits.GIE 1; INTCONbits.PEIE 1; }FLT信号为什么不用主循环轮询而要用外部中断因为短路故障发生时eFuse可能在几微秒内就关断输出如果主循环正在忙别的任务轮询周期可能超过10ms根本来不及记录故障时刻和保护现场。用下降沿外部中断可以把故障时刻精确锁定下来同时立即进入故障处理状态。这在现场排查时非常有用。3.2 上电时序与状态机设计我们系统设计了五个电源状态状态转移条件如下表当前状态状态含义转移条件下一状态PWR_OFF输出关闭MCU初始化完成且输入电压在允许范围PWR_PREPWR_PRE等待稳定延时50ms确认PG有效PWR_ONPWR_ON开启输出EN拉高等待PG有效且无FLTPWR_RUNPWR_RUN正常运行检测到FLT下降沿PWR_FLTPWR_FLT故障处理故障清除恢复条件满足PWR_PRE这个状态机的好处是逻辑清晰每个状态下该做什么、不该做什么非常明确。在实际代码里我用一个switch来实现每个case对应状态所有状态转移都发生在统一的1ms定时节拍里严禁在状态机里用delay阻塞。上电时序上MCU也是硬件上电后先自己跑起来读取输入电压和PG状态确认前方电源已经稳定再延时几十毫秒拉高EN让eFuse开通。这样做的原因是避免输入电源还在建立过程中MCU就急着把负载接上导致上电瞬间电流叠加反而把启动过程拉长。3.3 IMON电流采样和电流阈值告警电流监测是本方案里很有价值的一环。通过IMON电压能实时知道负载电流就像给电源回路装了个电表。换算关系如下uint16_t adc_val adc_read_once(IMON_AN_CHANNEL); float v_imon (float)adc_val * 3.3f / 1023.0f; float i_load v_imon / (RMON * K_IMON);RMON是IMON脚的外接电阻K_IMON是芯片的电流镜像比例这两个都是硬件设计时确定的。如果MCU计算量紧张可以不用浮点直接以整数百分比表示当前电流相对于限流点的比值。代码可以写成uint16_t i_percent (uint32_t)adc_val * 1000 / ADC_FULL_SCALE;满量程对应限流点附近i_percent超出1000就意味着达到限流点。这里有一点经验要分享ADC的采样值如果直接用来判断很容易被噪声干扰出现零星尖峰。我建议每次采样取连续3次中值再加上一个10次采样的滑动均值才用于告警判断。采样周期设在5~10ms太频繁反而增加CPU负担响应也不一定更快。告警分级方面我设了两级电流达到限流点的80%时点亮黄色LED串口输出警告日志达到95%并持续200ms就触发降载策略比如关闭非关键外设、通知上位机降低输出功率。这个“先降载再关断”的策略比直接让eFuse限流更温和也更容易让设备在临界工况下继续运行。3.4 故障锁定与自动恢复策略FLT中断来了以后第一步不是急着重启而是记录现场。我把故障时间、当前IMON电流百分比、PG状态、输入电压值全部存入EEPROM备份区同时将系统电源状态切到PWR_FLT。恢复策略要看具体场景。如果eFuse配置成锁定模式那FLT会一直保持为低只有把EN拉低再拉高或者完全断电重上电才能解除锁存。如果配置成自动重试模式那芯片会在一定时间后尝试重新开通。工业设备不建议无限重试。短路故障不排除的情况下反复重启每次都会有大电流冲击很容易把其他器件二次损坏。我用的策略是第一次FLT触发后拉低EN等待500ms冷却然后重新使能如果连续三次都在启动后短时间内再次触发FLT就转入深度故障状态保持输出关闭只有检测到输入电源彻底下电再上电或者板卡上的人工复位按键按下才能重新进入上电流程。这个策略至少保证一件事真正的故障不会在设备上“反复抽搐”而是干净利落地待机等待维修。3.5 非阻塞扫描与定时任务调度嵌入式里最容易犯的错误就是用delay延时来“凑时间”。我在这个项目里强制自己用系统定时器节拍驱动所有任务。1ms中断做状态机调度10ms做一次电流采样50ms扫描一次按键100ms发送一次串口状态日志。按键扫描也用非阻塞方式处理读取IO后做软件去抖检测到按下边沿才把事件加入队列主循环按当前状态决定怎么响应。这套结构在调试现场设备时特别好用调试按钮、复位按钮、模式切换按钮都可以并行存在互不阻塞。现场工程师只需要按一下按钮设备就能打印当前电源保护状态比接仿真器方便多了。4. 实际调试中的坑与参数调优记录4.1 四个最常见的问题我把这半年调试中遇到的高频问题整理成一个速查表方便排查时对照。现象可能原因处理方法上电瞬间FLT脉冲闪一下然后恢复正常dVdT电容太小容性负载充电电流触发保护加大dVdT电容延长软启动时间限流点实测值与设定值差10%以上ILIM电阻精度差PCB污染导致漏电电阻离芯片热源太近换0.1%低温漂电阻清洗板面检查铺地隔离IMON读数来回跳平均电流正常但告警乱报采样回路受开关噪声干扰IMON引脚加RC滤波软件改用中值加滑动平均短路恢复后系统反复重启自动恢复策略过于激进或者eFuse配置成自动重试且后端故障未排除改为锁存模式加入重试次数上限和冷却时间这些坑看起来都是小问题但每一个都可能在现场变成大麻烦。比如IMON读数乱跳导致误告警那一次客户反馈设备每天凌晨都会报一次过流白天又正常。查到最后是附近一台大功率变频柜启动时产生了强干扰IMON走线又离输入开关节点太近直接把噪声耦合了进来。改完走线、加了RC滤波问题再没出现过。4.2 用示波器和电子负载验证保护点调试电源保护电路不能光靠万用表电子负载和示波器是刚需。验证限流点时我用电子负载设置恒流模式从1A开始加载每次加0.5A直到输出电流不再跟随设定。正常的eFuse会进入平坦的限流区电流被稳定钳在设定点输出电压开始跌落。此时观察输出电流波形应该是一条尽量平坦的直线如果有锯齿振荡说明环路补偿有问题需要检查输入输出电容。验证短路保护时我用一个功率MOS管作为短路开关由信号发生器控制导通把OUT瞬间拉到GND。示波器同时抓输入电压、输出电压、FLT引脚和IMON电压观察从短路发生到FLT下降沿再到输出关断的总时间。这个总时间决定了后端电路能扛多长时间的瞬时冲击如果时间太长就说明ILIM电容或者外围RC滤波拖了后腿。软启动波形也要看一下。正常输出电压应该是一条斜率稳定上升的斜坡如果出现台阶说明dVdT引脚电容选得不对或者补偿电容的充放电过程被外部干扰影响。4.3 eFuse不是万能的前后级协同很重要调试过程中我有个很深的体会eFuse负责的是“可预期范围内的过载、短路和上电浪涌”不是所有电源故障的最终防线。输入端的ESD、雷击浪涌、高幅值瞬态电压由前面的TVS管、气体放电管、共模电感来处理更合适。eFuse的耐压范围有限超过它的绝对最大额定值芯片本身也会损坏。我们这块板子的前端就放了一颗双向TVS并联在输入母线之间用来吸收高频尖峰再往前有保险丝和防反接MOS管。真遇到反接并且TVS被击穿保险丝就负责兜底断掉。限流保护也不等于系统级的完全隔离。比如负载内部DCDC发生了硬短路eFuse确实能限流但过流状态下功率管承受的功耗很大如果散热不好芯片很快就触发过温保护。过温保护本身没问题但反复热关断对PCB铜箔和焊点也是疲劳应力尽量在软件层面把异常负载尽早识别出来并切断而不是一直靠在硬件极限边缘硬扛。5. 批量测试与进一步扩展5.1 产测环节的设计产品进入小批量后每一块板子的电源保护功能都要在产品产测环节覆盖到。我这边安排的测试项目主要有四项一是BIST自检。MCU上电后先自动开启自检通过GPIO拉低EN确认FLT引脚能在预期时间内响应验证eFuse的故障上报链路完整。这能提前筛掉eFuse焊接不良、FLT开路上拉漏焊等硬件问题。二是分级加载测试。产测软件通过电子负载对输出端加载标称电流、80%限流电流和接近限流点电流实测限流动作值并记录到生产数据库。每块板的限流点偏差如果在±10%以内就算合格偏差过大直接标记返修。三是短路保护测试。用气动控制的短路开关快速短接输出验证系统在几百毫秒内进入PWR_FLT状态并且不会烧毁板内其他器件。测试后检查MCU的EEPROM中是否记录了正确的故障标志。四是静态功耗检查。eFuse未开启时整板静态电流要低于设计上限防止输出侧有元件对地短路造成泄漏电流异常。5.2 多路电源轨的扩展这套“eFuse MCU”的思路完全可以复制到多路电源轨场景。比如一块主板上有5V、12V、3.3V三路负载每路都放一颗eFuse由同一个MCU统一管理。MCU的IO不够时可以用I2C接口的GPIO扩展芯片来增加控制信号个数或者直接选用支持I2C访问的智能eFuse把故障状态和电流数据都挂在总线上读。扩展时要注意的是各路eFuse的EN时序要做到错峰启动避免多路同时软启动导致输入母线上电流叠加过大。启动顺序按照“先大电流负载、后小电流负载”的顺序安排比较合理。如果项目的功率进一步增大比如超过单颗eFuse的电流能力可以考虑TPS25948系列中更高电流的型号或者把多路eFuse并联安排但并联使用需要考虑均流问题采样电阻和封装散热都要重新评估不像普通一路方案那么简单。我在实际使用中还有一个习惯eFuse功能再全我仍然会在电源入口留一个最保守的传统保险丝。原因很朴素半导体器件终究有失效概率而且失效模式中有相当一部分是短路失效这时候前面那颗朴实的保险丝反而是最后一道真正能断开回路的保障。电源路径保护从来不是某一颗芯片的独角戏而是整个链路层层分工的结果。
返回列表