ARTICLE DETAIL

资讯详情

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

eFuse与单片机协同:工业电源入口保护设计实践

eFuse与单片机协同:工业电源入口保护设计实践 先说个我实际碰到的场景。去年调试一块工业数据采集板24V输入经过DC-DC降压到5V给主控供电结果一次短路测试时不小心把输出口误接到GND几毫秒的功夫一颗DC-DC芯片当场烧穿板子上的主控也跟着重启复位现场数据全丢。事后复盘才发现这颗DC-DC本身不是罪魁祸首真正的隐患在电源路径入口——整块板的输入端没有任何可靠的保护机制浪涌、短路、过压全靠下一级电路硬扛扛不住就直接烧板。改版时我在电源入口同时引入了一颗TPS259483AYWPReFuse电子保险丝和一颗PIC18LF46K228位低功耗单片机把“电源路径保护”从被动的烧板子兜底变成了主动的上电管理和故障隔离。这篇文章就围绕这两个器件记录我在设计、调试、测试中验证过的做法和踩过的坑给同样在做嵌入式或者工业电源设计的同行做个参考。整个系统的设计目标很朴素输入端能扛住过压、欠压、反向电压和短路冲击故障发生时快速断开电源路径故障消除后能自动/手动恢复同时主控侧要能实时知道电源路径的状态能主动控制通断。TPS259483负责“硬保护”PIC18LF46K22负责“软策略”两者配合起来才算是一条完整的保护链路。1. 为什么工业板的电源入口总在“最没防备”的地方坏掉1.1 常见损坏模式复盘工业设备里电源入口是整块板子上“待遇最差”的器件。大多数人画原理图时顺手放一个保险丝、一个TVS管、一个大电容就觉得入口保护做完了。但实际现场遇到的损坏模式要多得多输入电源接反操作工人把24V端子正负极接错极性反接瞬间板子上的电解电容直接放炮DC-DC芯片的体二极管反向导通轻则降压芯片报废重则整板冒烟。上电浪涌工业现场经常是几十米长的电源线线缆本身有寄生电感冷启动瞬间在入口打出远超标称的电压尖峰常见示波器捕捉到40V甚至60V的毛刺。热插拔带电插拔电源端子时插头接触阻抗变化导致电压跌落和反弹后级电路反复重启。短路和后级故障负载端元器件击穿、线缆被机箱夹破、工人误接线都会在DC-DC输出侧或母线上形成低阻抗路径电流瞬间拉高发热烧毁PCB走线和器件。这几种模式有个共同点故障能量都集中在电源入口到DC-DC之间的这段铜皮上。这段路径在以往设计里几乎没有任何主动管理能力保险丝熔断慢、TVS管只能钳压不能切断电流后级全靠DC-DC芯片自己的过流保护在扛扛不住就烧。1.2 分立方案和传统保险丝的痛点早期我也用过自恢复保险丝PTC加TVS管的组合但实测下来痛点非常明显。首先是自恢复保险丝的动作速度。慢速熔断型保险丝在过流时靠热积累动作短路瞬间电流已经冲上去了保险丝还没反应过来后级芯片已经先烧了。某些快速熔断型玻璃管保险丝速度稍好但动作后必须人工更换在无人值守的工业站点根本不可接受。PTC虽然能自恢复但它的动作特性受环境温度影响极大——同一个PTC在-40℃环境下过流要很久才跳在85℃环境下稍微过流就跳保护点飘忽不定对设计来说是灾难。其次是电压冲击的问题。TVS管只能把电压钳制在某个范围它本身不切断电流如果输入源本身故障输出高压TVS会一直导通直到热失效烧成短路。也就是说分立方案里既有“断不开”的问题也有“断开之后就恢复不了”的问题。1.3 器件组合的设计定位新方案里的核心思路是引入一颗集成式电子保险丝TPS259483做第一道电气级保护用PIC18LF46K22做系统级的策略判断和故障管理。TPS259483这类eFuse和传统保险丝最本质的区别在于它内部是一个可控的MOSFET开关管导通阻抗低关断速度在微秒级同时集成了过压保护、欠压锁定UVLO、过流限制可编程、反向电流阻断、浪涌电流控制dVdt斜率控制、热关断和故障指示Power Good等功能。说人话就是一颗芯片把传统保险丝的“熔断功能”、TVS的“钳压功能”、分立MOS管的“开关功能”全部整合在一起而且动作阈值可由外围电阻精确设定故障后可主动恢复还能向主控输出状态信号。但eFuse也不是万能的。它的保护逻辑是“固定阈值、固定反应”的它不知道你这块板子当前的工况是什么也不知道这次复位应该等多久再重试。这时候就需要PIC18LF46K22登场——它通过GPIO和ADC实时监控eFuse输出的状态信号和母线电压通过固件逻辑决定什么时候允许上电、故障后多久重试、连续故障多少次后彻底锁定并报警。这就是我前面说的“硬保护”和“软策略”的分工。2. TPS259483AYWPR 的“硬保护”到底硬在哪2.1 芯片内部保护链路怎么运作TPS25948系列是TI家的eFuse产品AYWPR后缀对应的是特定封装和卷带规格WPR一般对应小尺寸封装。这颗器件的基本工作逻辑可以理解为输入端IN和输出端OUT之间串联一个功率MOSFET芯片内部有比较器阵列持续监控电压和电流一旦触发保护条件就控制这个MOSFET快速关断把故障能量隔离在输入端。它的内部保护路径大致分这几层过压保护OVP监控IN引脚电压超过设定阈值就关断MOSFET防止输出端被异常高压拉高。阈值一般通过外接电阻分压网络设定。欠压锁定UVLO输入电压低于设定值时保持关断状态避免后级电路在电压不足的区间反复横跳。限流保护ILIM通过外部电阻设定电流限制点当输出电流超过设定值芯片会先限制电流不再上升如果持续时间过长再关断。这个特性和保险丝“一刀切”的断开方式完全不同对容性负载和电机类负载非常友好。反向电流阻断当输出端电压高于输入端比如后级大电容放电倒灌内部比较器检测到反向压差后关断MOSFET防止电流从OUT流回IN。这个特性对电源入口防反接尤其有用——正负极接反时芯片不会让电流倒灌烧毁前级。热关断TSD芯片内部结温超过保护点通常在150℃左右时无条件关断防止自身烧毁等温度降下来再恢复。说人话这颗eFuse相当于把“一个快速开关、一个保险丝、一个电压钳位器、一个温度监控器”封装到一起而且每个保护阈值都能按你的系统需求调。2.2 可编程限流点的实际用法限流点是这颗芯片最实用也最容易被用错的地方。它通过ILIM引脚外接电阻设定限流值芯片内部的电流检测放大器把流过MOSFET的电流转换成比例信号与设定值比较。我在这块板上的设定思路是这样的后级DC-DC的最大瞬态需求是1.8A启动瞬间会有电容充电电流尖峰如果直接把限流点设成1.8A启动瞬间就会误触发。把限流点设成2.5A既能覆盖正常工作时的1.8A峰值又能给短路故障留出2.5A以上的触发空间。如果短路电流远大于2.5A芯片会迅速限流如果只是轻微过载芯片会允许短时间的过流而不立即断开这个“容忍窗口”非常关键。实际选电阻时需要查数据手册里ILIM电阻与限流电流的对应曲线或公式。我的经验是先用公式算出标称值再留20%30%的余量因为电阻本身的精度1%或者5%和温度漂移会影响实际限流点。提示限流电阻的位置和走线要尽量靠近ILIM引脚走线过长容易耦合噪声导致限流点误抖动。我吃过这个亏后面会细说。2.3 进击的启动波形和抗浪涌逻辑嵌入式系统上电瞬间最怕的就是浪涌电流。板上有大容量电解电容和MLCC冷启动瞬间它们相当于短路电流瞬间可以达到数十安培常规设计如果不做缓启动输入电源都会被拉垮。TPS259483处理浪涌的方式是“斜率控制”。芯片的dVdt引脚外接一个电容用来调节MOSFET导通时的栅极驱动速度控制输出电压从0爬到设定值的时间。电容越大导通越慢输出电压爬升越缓浪涌电流就越小。我在系统里选了dVdt引脚对地接1nF电容配合4.7mF的输出电容和2.5A限流点实测冷启动时的输入浪涌电流被限制在600mA以内开机瞬间非常平稳。这个参数设计需要配合后级负载特性去调整不是随便放一颗电容就完事如果负载是容性极高的模块比如多路大电容并联启动时间要适当拉长否则限流点会被启动电流顶到造成“上电失败”的假象。3. 围绕 eFuse 的外围电路每个引脚都别想当然3.1 输入/输出电容的选择和放置很多人在入口放了eFuse之后就不再加输入电容了这是典型的想当然。eFuse本身不是稳压器输入端的电压尖峰依然要靠输入电容吸收。我在IN引脚对地放了两个电容一个10µF的MLCC负责吸收高频毛刺一个47µF的电解电容负责吸收线缆带来的低频浪涌。这两颗电容尽量贴近芯片的IN和GND引脚走线要短粗不然寄生电感会把保护效果吃掉一半。输出端电容的作用不太一样它主要为了抑制负载瞬态和防止输出端在故障恢复时出现电压过冲。我放的是并联的22µF MLCC加100µF电解既能提供瞬态电流支撑又能配合dVdt电容形成RC缓启动网络。3.2 dVdt 启动时间和限流电阻的计算启动时间和限流点的联调是这块板调试中花时间比较多的部分。先说我的计算公式逻辑输出电压建立时间主要由dVdt引脚电容和内部电流源决定基本关系是电压爬到目标值需要的时间t ≈ (C_dVdt × V_OUT) / I_source。不同芯片的内部电流源大小不一样具体值要查手册。我的目标启动时间是810ms这样既能避免浪涌又不会让后级DC-DC因为输入电压爬升太慢而在启动窗口里反复重启。实测下来用1nF电容启动时间约9ms刚好卡在设计窗口中间。限流电阻的计算同样以手册的公式为准我需要的限流点是2.5A按公式算出来标称值后并了一颗0.1%精度电阻把温度漂移对保护点的影响压到最低。这里多说一句工业场景温度变化大如果限流点本身随温度漂移太多保护动作时机会变得不可预测这对后期故障排查是噩梦。3.3 PG 与 EN 引脚给单片机的“心跳线”Power GoodPG引脚是这颗eFuse和单片机沟通的核心接口。当输出电压达到设定阈值的90%左右PG引脚内部开漏输出释放通常需要一个上拉电阻到逻辑电平单片机上就能读到“电源路径正常”的高电平一旦输出跌落或故障关断PG被拉低。这个引脚相当于给单片机报心率的“心跳线”单片机通过它就能第一时间知道电源侧异常。EN引脚则是反向的控制通道。单片机输出高电平或悬空时eFuse开始工作输出低电平时芯片强制关断。我在EN引脚和单片机GPIO之间串了一个1kΩ电阻再接一个10kΩ下拉到地防止单片机复位期间引脚悬空导致eFuse意外开启。这个细节挺重要单片机在程序跑飞或者复位时引脚输出是不确定的没有这颗下拉电阻eFuse可能在“不应该上电”的时候通了电。4. PIC18LF46K22 的角色软策略和状态机4.1 为什么选这个型号的单片机选PIC18LF46K22而不是STM32或者更高端的ARM很多人可能不理解。我的理由很简单这块板的保护逻辑不需要跑复杂算法也不需要操作系统要的是高可靠性、低功耗、宽温范围和程序逻辑透明可控。PIC18LF46K22是Microchip的8位单片机工作在1.8V3.6V在工业温度范围内运行稳定内部自带可配置振荡器和多路ADC对我来说完全够用。特别是LF后缀的低功耗版本在待机模式下电流可以压到纳安级很适合需要长期在线监控、又不希望器件本身发热影响系统可靠性的应用。4.2 供电、时钟与引脚分配这颗单片机我直接用电eFuse输出侧的一路低压给单片机供电省掉一路独立的DC-DC。它自带内部振荡器我没用外部晶振省了两个引脚也少了一份BOM。时钟配置成16MHz对这个逻辑规模来说跑得动也有余量。引脚分配上做得很明确PG信号接RB0配置为外部中断输入PG下降沿能立刻唤醒单片机。EN控制接RC2配置为数字输出正常拉高需要断开时拉低。母线电压采样输出电压接AN0通过两个电阻分压后送入ADC单片机周期采集。还有一个LED状态灯接RD0用于现场故障指示。4.3 固件这里的三重判定逻辑PG信号本身能告诉我们“电源路径是否正常”但仅凭一个信号判断故障类型是不够的。我在固件里实现了三重判定逻辑。第一重是PG快速中断。RB0上PG下降沿触发单片机从休眠中唤醒立刻把EN拉低主动切断电源路径然后进入故障记录流程。这一重的作用是“抢先行动”不等软件轮询周期把故障隔离时间从毫秒级压缩到微秒级。第二重是电压数据校验。PG信号可能有毛刺不能只看一次跳变就锁定故障。我通过ADC连续采样母线电压32次如果持续低于欠压阈值且PG持续低电平才确认故障成立否则认为是瞬时扰动等待恢复后重新上电。这个设计避免了现场线缆晃动导致的误锁定。第三重是故障计数和恢复策略。单片机内部维护一个故障计数器每次确认故障后递增如果故障恢复后系统能稳定运行一段时间计数器递减如果连续故障次数达到设定的上限比如3次单片机进入锁定状态不再自动重试LED快闪报警必须人工断电或按键复位才能解除。这个策略是我一个重要工程经验——自动复位不是越多越好多轮快速重试会让故障负载反复暴露在高压下可能扩大损坏范围锁定后等人来处理反而更安全。5. 两个器件协作时的完整时序与异常流程5.1 正常上电时序正常上电时外部24V接入输入端TPS259483先处于关断状态等待EN引脚被拉高。单片机上电后完成内部初始化确认所有外设状态正常后在程序里拉高EN引脚eFuse开始按dVdt斜率缓启动。输出电压在9ms内逐步爬升到24VPG引脚释放单片机在RB0上收到PG上升沿此时系统开始启动后级的DC-DC而不是在电压还没站稳的时候就给负载通电。这个顺序很重要——如果你在PG还没释放时就打开后级负载相当于在电源路径还没建立稳定的时候就施加冲击容易触发eFuse限流。5.2 过流、过压、短路时的系统行为短路发生时负载电流瞬间冲击到限流点以上TPS259483在微秒级时间内进入限流状态限制电流不再上升如果持续过流超过芯片的容限时间MOSFET关断输出电压跌落PG被拉低。此时单片机的RB0中断触发EN被拉低双保险锁定关断。整个过程下来输入端到输出端的能量被限制在可控范围内后级DC-DC和负载没有受到大电流冲击。我已经用示波器抓过短路波形电流尖峰被限制在2.5A附近输出电压在几十微秒内归零后级板卡完好无损。过压故障时比如输入误接36V电源芯片的OVP比较器动作同样关断MOSFETPG拉低单片机记录故障类型。这个场景下单片机侧的逻辑和短路故障流程一致只是故障原因可以从ADC读到的电压值区分出来。5.3 协调设计的权限边界谁听谁的这套系统里最怕的就是两个保护层级“打架”。比如eFuse自己认为过流该关断了单片机却因为还没收到PG下降沿而继续保持EN高电平或者单片机想主动重启电源路径但eFuse的欠压锁定还在。我的解决办法是明确两层保护的职责边界eFuse的一级保护永远优先它不具备“被单片机阻止”的可能单片机管的是策略层它可以在eFuse允许的范围内做上电、断电和重试。具体到固件实现上单片机的EN引脚只有两种状态——正常时始终置高故障后始终置低不做中间状态每次重新置高前都会等待PG确认低电平并持续一段时间确保eFuse自身已经完成故障复位。这个“先确认后上电”的原则帮我避免了大多数时序混乱问题。注意eFuse在故障关断后内部需要一定时间冷却和复位才能再次接受EN信号。实际测试中我遇到过“故障后立刻重试却不响应”的现象排查下来发现是单片机给EN引脚拉高太快eFuse还没准备好。解决办法是在固件里加了一个最小重试间隔的定时最短也要等500ms以上。6. 实测数据和我在调试中踩过的几个坑6.1 示波器实测的关键波形调试完成后我搭了一套完整的测试环境24V开关电源模拟输入用电子负载做恒流和短路测试示波器同时抓取输入电压、输出电压和输入电流三路波形。正常启动输入24Vdvdt启动波形平滑输出电压没有过冲输入电流峰值约580mA持续时间约9ms后级DC-DC稳定启动PG上升沿出现在输出电压达到90%之后。短路测试用电子负载直接把输出短接到0V输入电流瞬间被限制在2.5A附近300µs内MOSFET完全关断输出电压从24V跌落到0VPG下降沿触发单片机中断EN在中断服务程序里被拉低整个过程输入侧电源没有跌落。连续做20次短路测试板卡无任何损坏这就是eFuse方案对比保险丝的优势。6.2 调试中的坑点清单第一个坑是限流电阻的走线布局。初版PCB我把ILIM电阻放在远离芯片的位置过了一段细走线结果在电机启停时频繁误触发限流。后来查手册和对比测试确认是走线寄生电感导致限流参考电压抖动把电阻挪到芯片引脚旁边后彻底解决。第二个坑是PG上拉电阻的取值。PG是开漏输出上拉电阻太大比如100kΩ时PG边沿变缓中断触发有延迟太小比如1kΩ又会多耗电流影响低功耗。实测下来用10kΩ最合适边沿时间和功耗平衡最好。第三个坑是和输入电源内阻相关的。我的24V电源是开关电源本身有输出电容干扰较小但如果输入线太长、内阻大短路发生时输入电压会被拉到很低eFuse可能先触发欠压锁存而不是限流保护。测试时一定要用实际线缆长度复测我在实验室用短粗线测试没问题拿到现场用长线就出现过故障识别不准确的情况。第四个坑是关于单片机复位状态下的引脚电平。初版固件默认RC2引脚在复位期间是高阻态单片机复位时EN引脚浮空而eFuse的EN悬空在某些版本里被内部上拉识别为“使能”导致系统处于不受控状态。后来我加了外部10kΩ下拉电阻并在固件初始化第一步就把RC2配置成数字输出并拉低等初始化完成再拉高。这个顺序很关键。6.3 留给后续版本优化的空间这个方案不是终点我已经在规划下一个版本要做的两件事。第一是加入远程故障告警通过UART把故障类型和时间戳上报给上位机或网关这样现场设备异常时运维人员能第一时间知道是过压、过流还是欠压减少现场排查时间。第二是考虑用两颗eFuse做冗余并联或主备切换进一步提升无人值守站点的可用性但这需要额外的均流处理不是简单并联就能实现。回到开头那次烧板事故现在这块改进版已经连续在现场运行了几个月经历了多次输入侧波动和其他站点偶尔出现的接线失误电源路径始终没有出过问题。个人实际体验下来eFuse加单片机的组合确实比单纯堆保险丝、TVS管可靠得多而且整个保护策略是可编程的想调整阈值和保护行为时改固件就行不需要动PCB。如果在做类似工业或嵌入式电源入口设计建议认真考虑一下这条路。
返回列表