电源路径保护设计:eFuse与MCU协同,打造可靠嵌入式供电系统
做嵌入式有一类问题是特闹心的整机调试的时候一切正常一到客户现场就烧。我印象最深的一块板子是给一个工业控制器供电的接口板客户那边一台大功率变频器一起动板子就重启最后查下来是电源路径上的浪涌把入口处的保险丝和 DC-DC 一起带走了。从那之后我就明白了一件事电源路径保护不是加个保险丝这么简单它是整个嵌入式系统可靠性的地基。这篇文章想聊的就是我在这类系统里常用的一套组合TI 的 TPS259483AYWPR一颗带限流、过压欠压保护、软启动的电子保险丝也就是常说的 eFuse搭配 Microchip 的 PIC18F4455一颗带 USB 的 8 位 MCU。一个负责在微秒级把故障挡在门外一个负责在毫秒级做策略判断、状态记录和人机交互。这套组合很适合嵌入式和工业应用里的电源路径保护也适合做热插拔背板、传感器节点、带 USB 接口的受控供电设备。下面这些内容都是我实际调过的方案写出来给准备碰电源保护的朋友做个参考。1. 为什么电源路径是嵌入式系统最容易忽略的薄弱环节1.1 三类典型故障浪涌、短路、热插拔瞬时冲击很多硬件工程师画原理图的时候注意力全放在 MCU、传感器、通信接口上电源输入位置往往就是一个保险丝加几个电容就交代了。但实际在现场电源路径上发生的问题远比你想象的复杂。第一类是浪涌。工业环境里大功率设备启停、继电器吸合释放、电机换向都会在电源线上感应出几百伏甚至上千伏的瞬态尖峰。我那块板子就是这么挂掉的——变频器启动瞬间母线电压剧烈波动输入端的陶瓷电容先击穿然后 DC-DC 输入过压损坏整条电源链崩了。第二类是短路。负载侧一旦出现器件击穿、线束破损、接线错误电源路径上瞬间流过的大电流不仅会烧掉负载还会把 PCB 铜箔、连接器、甚至前级电源一起拖下水。如果输入源是电池或者大功率电源适配器短路时的能量足够把一小块铜箔直接气化。第三类是热插拔。工业设备里板卡带电插拔很常见插头接触的瞬间输入电容充电会产生极大的冲击电流这个电流可以让连接器打火、让前级电源瞬间跌落、让系统复位。如果是负电压或者电源抖动厉害还可能引发逻辑混乱。1.2 传统保护手段的局限保险丝、自恢复保险丝、分立 MOS 电路传统的做法有几个但都有明显短板。玻璃管保险丝和贴片保险丝是最基础的它的优点是便宜、简单、扛大电流。缺点也很致命反应速度慢。普通保险丝的熔断时间是毫秒级甚至几十毫秒级别对于半导体器件来说这个时间足够让 DC-DC、MCU、传感器在过流状态下烧毁。而且保险丝熔断是一次性的换起来麻烦在无人值守的工业现场非常被动。自恢复保险丝PPTC比普通保险丝好一些能自动恢复但它的动作特性受温度影响很大动作时间同样慢而且长期过流之后内阻会漂移。用在玩具、消费类产品上还行放在工业设备里做保护基本不够看。分立 MOS 管方案是很多工程师喜欢用的一个 PMOS 串在电源路径上用电阻分压和稳压管做限流和过压关断。这种电路的优点是成本低、自己能控制但缺点是响应速度和精度完全取决于你搭的模拟电路温度漂移大过压欠压阈值不好精确设定限流也很难做到准。最麻烦的是这种电路故障模式不明确一旦元件参数飘了保护就失效了而且失效时你很难察觉。1.3 TPS259483 与 PIC18F4455 的分工逻辑所以后来我在新设计里把电源路径保护拆成了两层。第一层是 TPS259483AYWPR 这样的 eFuse它把限流、过压、欠压、软启动、短路保护和过热保护全部集成在一颗芯片里内部的功率 FET 开关速度可以达到微秒级能把故障能量在半导体器件损坏之前切断。这一层解决的是快的问题。第二层是 PIC18F4455 这样的 MCU它不直接挡电流而是负责聪明的部分读取 eFuse 的状态和电流反馈做上电时序管理故障之后决定是自动重试还是锁死把故障信息通过 USB 或串口上报甚至根据负载特性动态调整保护策略。这一层解决的是准的问题。这两层配合起来硬件快速动作软件慢速决策既不会因为瞬时故障就轻易断电也不会对真正的硬故障睁一只眼闭一只眼。2. TPS259483AYWPR 的选型要点与参数配置2.1 这颗 eFuse 的内部结构和关键引脚TPS259483AYWPR 属于 TI 的 TPS25948 系列是一颗集成 MOSFET 的电子保险丝内部包含电压基准、比较器、栅极驱动和功率开关。用起来它就相当于一个阻抗极低、开关速度极快的智能开关你只要设置好阈值它就自动帮你看着输入电压和输出电流。我手头这颗的具体电源参数不同后缀封装和档位会有差异所以严格的阈值数值你要以你拿到的那份数据手册为准。这里我把设计思路和引脚功能讲清楚。关键引脚大致是这么几个IN / OUT输入输出主功率路径内部是一个低导通电阻的 N 沟道 MOSFET。EN/UVLO使能和欠压锁定共用一个引脚。通过外部电阻分压设置输入电压低于多少伏时禁止导通高于多少伏时才允许启动。这是和传统保险丝最大的区别——它不是简单的通则通而是有明确的电压窗口。OVP过压保护引脚同样通过电阻分压设定输入电压上限超过就立刻关断内部 FET。ILIM限流设置脚接一个电阻到地来设定限流点。dv/dt输出压摆率控制脚接电容到地来设定输出电压爬升时间也就是软启动时间。FLT故障指示脚一般是开漏输出发生过流、过压、欠压、过热时拉低。PGPower Good输出电压到达目标值附近时输出有效信号可以用来告诉 MCU 后面可以加载了。这颗芯片还有一个我很看重的特性就是它有关断时输出放电功能关断后能把输出端的残余电荷泄放掉这个对热插拔场景特别有用防止输出电容上的残压把下一个刚插入的板卡打坏。2.2 限流点、OVP/UVLO、dv/dt 的配置计算这几个脚的外部元件计算是原理图设计的核心也是最容易出错的地方。先看限流。ILIM 脚的电阻值和限流点之间的换算关系在数据手册里会给出曲线或者公式。以我常用的配置为例如果系统最大负载电流是 1.8A我会把限流点设置在 2.5A 左右留出 35% 左右的余量。这个余量要算上负载的动态电流尖峰和电容充电电流但是也不能留太大否则限流保护就没有意义了。确定限流目标后查手册里的 RILIM 对应表选一个 E96 系列的接近阻值我这次用的是 6.8kΩ实测限流点很稳。然后是 UVLO 和 OVP。以我这次做的 12V 输入系统为例我希望输入电压低于 9V 时不启动高于 18V 时立刻关断。EN/UVLO 和 OVP 两个引脚内部都有一个约 1V 的基准分压电阻计算方式很常规UVLO 阈值V_UVLO V_REF × (R1 R2) / R2反推 R1/R2 的比值。OVP 阈值V_OVP V_REF × (R3 R4) / R4。我实际选的比值让 9V 对应 UVLO 动作点、18V 对应 OVP 动作点然后在分压电阻上并联一个小电容做滤波防止输入端的噪声毛刺引起误动作。这个小电容值一般取 1nF 到 10nF太大响应变慢太小滤不掉尖峰。dv/dt 脚的电容决定软启动时间。电容越大输出爬起来越慢冲击电流越小。我的经验是对于负载端有较大电容比如 1000µF的系统启动时间设长一点比如 5~10ms这样启动瞬间的电流冲击会明显缓和。电容值可以按手册里的充电电流公式算也可以直接参考典型值然后上示波器边测边调。我这块板子用了 1nF实测输出上升时间大概在 2ms 左右用于给 MCU 板和传感器供电已经很柔和了。2.3 故障响应模式与 FLT 信号怎么接TPS259483 在发生过流、短路等故障时内部 FET 会进入限流模式或者直接关断区别在于是不是闩锁Latch Off还是自动重试Auto-retry。这个行为通常由外部电路或引脚配置决定。设计时要根据应用场景来选。对于电池供电或者无人值守设备我一般倾向于用自动重试模式如果只是瞬时过流等故障消失后设备自己恢复不至于需要人去现场复位。但是注意自动重试也有坑如果负载一直是硬短路状态芯片就会反复尝试启动这时候功耗和发热会累积。所以我在 MCU 固件里做了计数器连续重试 N 次都失败就锁死等 MCU 收到上位机指令再重新使能。FLT 引脚一定要接上拉到 MCU 的电源域因为它是开漏输出不接上拉永远读不到电平。我在 FLT 上挂了 10kΩ 上拉到 3.3VPIC18F4455 工作在 5V 也可以直接上拉到 5V看你的系统电压域然后接到 MCU 的外部中断引脚这样故障一来MCU 能立刻被中断唤醒而不是靠轮询。PG 引脚也接出来了MCU 通过它来判断输出电压是否建立完成这个信号用来触发后续负载的使能时序避免在电压还没爬稳的时候就给负载上电。3. PIC18F4455 在电源管理系统中的角色监控、时序与通信3.1 为什么选 PIC18F4455USB 监控通道的价值可能有人会觉得随便找个 STM32 或者几块钱的 51 都能干这活为什么要选 PIC18F4455我的理由很简单它自带全速 USB 2.0 接口。在很多工业设备和测试仪器里电源路径保护不仅仅是要保护还要看得见。用 PIC18F4455 的 USB 接口可以把实时电压、电流、故障次数、重试状态这些数据直接上报给上位机调试的时候非常方便。你可以用 USB 转串口模拟 CDC 设备也可以用 HID 协议免驱动我用的是 CDC上位机直接开串口就能读到数据流。当然如果你不需要 USB完全可以用别的 MCU但这颗芯片的优势在于 5V 供电、IO 电平高、抗干扰好和工业现场的电源系统天然匹配而且内部有 10 位 ADC 和多个外部中断做监控足够用。3.2 固件逻辑状态机、故障处理与重试策略PIC18F4455 在系统里跑的核心是一个电源管理状态机各个状态之间不会乱跳每次跳转条件都明确。状态大概是这样的PWR_IDLE上电初始化读取配置参数此时 TPS259483 的 EN 拉低输出关闭。PWR_SOFTSTART拉高 EN等待 PG 信号变高同时用 ADC 持续采样输出电压。PWR_RUNNING正常运行周期性采样输入电压、输出电压和电流反馈一旦发现异常进入故障处理。PWR_FAULT收到 FLT 中断或者 ADC 采样越限立刻记录故障类型和时间戳然后按配置决定自动重试还是锁存。PWR_LATCH重试次数超限后锁死等待上位机命令复位。这个状态机我用一个小型定时器中断做时基主循环里做 ADC 扫描和通信处理故障中断里只做标记不在中断里做复杂操作。这里有个经验不要在 FLT 中断服务函数里直接拉 EN 复位先等硬件自动动作然后让主循环里的状态机去决定下一步这样可以避免中断嵌套和电平竞争。ADC 采样路径上我用了 TPS259483 的电流监测输出。这颗芯片有电流镜像输出脚电流采样信号经过一个电阻转成电压给 MCU 的 ADC 用。满量程对应关系以手册为准我在固件里用线性插值换算成了实际电流值配合上位机曲线显示能直接看到负载的实时功耗波形。3.3 与 TPS259483 的电平匹配和 IO 分配电平匹配这个点很容易被忽略。TPS259483 的 EN、FLT、PG 引脚逻辑电平要求要看具体手册我遇到的情况是可以用 5V 域直接驱动和读取。PIC18F4455 的 IO 是 5V 兼容的所以两者可以直连不需要电平转换。IO 分配我留了两个备用 GPIO 做扩展一个是控制外部负载的电源开关一个是接蜂鸣器或 LED 做本地报警。还有个细节EN 脚虽然由 MCU 控制但我并联了一个 100kΩ 下拉电阻这样即使 MCU 还没初始化TPS259483 默认也是关断的不会在系统刚上电、程序还没跑起来的时候就给负载供电。这是安全设计的一个小习惯。另外PIC18F4455 的 MCLR 复位引脚我接了外部看门狗防止 MCU 死机导致电源管理失灵。工业现场如果 MCU 死机至少要让保护芯片还处于默认配置eFuse 自身能独立工作不会因为 MCU 挂了就失去保护能力。4. 完整设计实例从原理图到 PCB 布局4.1 系统框架和电源树我做的这个具体项目是一个工业传感器采集节点输入是 12V/24V 可选的工业电源内部需要生成 5V 给 MCU 和传感器供电同时有一路 12V 输出给外部变送器供电。电源保护板正好可以用 TPS259483 作为总入口保护再用一颗 DC-DC 降压到 5V。系统框架是这样的电源输入经过防反接二极管、TVS 管、输入滤波电容然后进 TPS259483 的 IN。TPS259483 输出直接给需要受控的 12V 负载同时给后级 DC-DC 供电。DC-DC输出 5V 给 PIC18F4455 和传感器。PIC18F4455通过 ADC 采样输入输出状态通过 GPIO 控制 EN通过 USB 和 PC 通信。这个架构的好处是12V 负载和 DC-DC 共享一级保护一旦任何一路出现故障都会被 TPS259483 挡在入口处不会波及前级电源和 MCU。DC-DC 的后级再根据需求加一级 POL 保护层次清晰。4.2 关键参数计算实例给你一个可以照着用的计算组合还是那句话终极数值要对照你手里的手册确认这里给的是方法论。假设系统输入额定 12V允许范围 9V~18V最大负载电流 2A输出电容 470µF软启动时间目标 5ms。限流点 ILIM设定 2.5A。查 TPS259483 手册的 RILIM 表选取对应阻值。我这边选 6.8kΩ用小电阻网络微调实测限流点在 2.4~2.6A 之间。UVLO设 EN/UVLO 分压使 9V 时引脚电压达到内部基准 1V。假设上分压 R1100kΩ下分压 R212.5kΩV_UVLO_TH 1V × (100k 12.5k) / 12.5k ≈ 9V。OVP设 OVP 分压使 18V 时引脚电压达到基准 1V。上分压 R3100kΩ下分压 R45.88kΩV_OVP_TH 1V × (100k 5.88k) / 5.88k ≈ 18V。实际选型会取 E96 标准值之后用软件微调。dv/dt目标软启动时间 5ms参考手册中的 dv/dt 充电电流选电容 2.2nF然后示波器实测调整。这些计算都不复杂但要注意分压电阻的精度和温漂。我选的是 0.1% 精度、25ppm 温漂的电阻毕竟保护阈值偏差 5% 可能就导致系统在临界状态下乱跳了。4.3 PCB 布局与布线的经验PCB 布局里最关键的几个点我踩过坑之后才总结出来。第一ILIM 电阻一定要靠近 ILIM 引脚走线要短而且不能把电流采样电阻放在主功率回路上。ILIM 电阻走线如果太长寄生电感会影响限流比较器的稳定性严重时会振荡。第二输入电容和输出电容要紧贴 TPS259483 的 IN、OUT 引脚并且走线要宽因为故障切换瞬间 di/dt 非常大回路电感大会产生很高的尖峰电压这个尖峰足以损坏芯片。输入去耦我用了 10µF 陶瓷电容加 100µF 电解电容的组合陶瓷电容负责高频电解电容负责储能。第三eFuse 这类芯片的散热主要靠芯片底部的散热焊盘所以 PCB 底部必须打过孔到地平面并且地平面要尽量完整。限流工作的时候芯片上的功耗等于压差乘电流比如 12V 输入被限制到 10V 输出、电流 2A芯片就要消耗 4W散热不好几分钟就热保护了。第四FLT、PG 这些信号线不要和功率走线平行走太远否则开关瞬间的噪声会耦合到状态脚上引起误判。我在 PCB 上让这些信号线远离 IN/OUT 走线并且加了下拉电容滤除毛刺。5. 调试方法与实测结果分析5.1 上电测试流程与示波器测量点板子回来后我先不上正式负载用电子负载设置成轻载100mA按照下面的顺序测试。第一步只给 PCB 上电但不使能输出。用万用表确认输入电压正常TPS259483 的 IN 端电压等于输入电源电压输出端为 0V这说明芯片在 EN 拉低时确实处于关断状态。第二步用示波器同时测 EN 引脚和输出端电压让 MCU 拉高 EN观察输出上升曲线。这个时候看 dv/dt 是否生效输出应该是一条平滑的斜坡没有过冲和大幅跌落的平台。示波器探头一定要用短地线弹簧夹不能用鳄鱼夹否则地线电感会在高频开关时引入几百毫伏的噪声。测电流波形的时候可以用电流探头夹在输出线上或者用低阻采样电阻配合差分探头不要用普通探头直接跨接在采样电阻上。5.2 短路与过流试验实测波形怎么看确认正常后做最刺激也最必要的短路测试。我把输出用粗线直接短接到地然后观察 TPS259483 的动作。实测限流模式下输出电流会迅速被限制在设定值附近输出电压跌落到接近零此时 FLT 引脚拉低MCU 进入故障处理状态。拿示波器看 FLT 下降沿到输出关断的延迟这个时间决定了系统会不会烧东西。我测出来的延迟在几十微秒级别对于绝大多数工业负载来说完全够快。还要测一遍热插拔场景。用一个带开关的试验板模拟板卡插入输入电源接好线然后突然把输出负载加上去。如果没有软启动输出电容充电电流会非常大开了 dv/dt 之后能看到输出是慢慢爬升的电流冲击被压得很低。测试中我用电子负载做了动态负载从 500mA 以 1kHz 方波跳到 2A观察输出电压跌落和恢复时间。因为 TPS259483 的输出阻抗很低加上输出电容储能实测动态电压跌落大约在 100mV 以内符合系统要求。5.3 踩坑记录三个容易被忽视的问题第一个坑是 ILIM 电阻的布线。我的第一版 PCB 把 ILIM 电阻放在了板子边缘结果限流点比设定值偏高了 15%反复查都没找到原因。后来发现是 ILIM 走线穿过了一个功率回路附近被开关噪声干扰了。把电阻挪到芯片旁边、走线缩短之后限流点就准了。第二个坑是 FLT 上拉到 MCU 之后MCU 在复位期间的 IO 状态不确定。如果 MCU 的 GPIO 在复位瞬间输出低电平而上拉电阻又太小FLT 信号就会被人为拉低导致 TPS259483 误判故障。我的解决办法是用 10kΩ 上拉并且在 MCU 初始化代码里先把 FLT 对应的 GPIO 设成输入模式再开中断这样 MCU 复位期间不会主动拉低 FLT。第三个坑是上电瞬间的浪涌误触发。系统刚插电时输入端会有振铃如果 UVLO 分压电阻没加滤波电容振铃一旦超过阈值eFuse 会瞬间关断又恢复后级 DC-DC 就会反复重启。我在 EN/UVLO 和 OVP 两个分压点各加了一个 4.7nF 的滤波电容并把滤波电容紧贴芯片引脚之后这个问题彻底消失。调试到最后整个电源路径保护系统的动作逻辑很清晰了TPS259483 负责所有快速、硬件的保护动作PIC18F4455 负责状态感知、重试策略和 USB 上报两者各干各的互不拖累。如果你手头也在做类似带保护功能的嵌入式电源系统我的建议是先别急着上 MCU把 eFuse 的阈值和软启动时间用示波器调明白再让 MCU 接管策略。毕竟硬件保护是底线软件策略是锦上添花底线不牢再聪明的策略也救不回来。这套组合我目前用下来最顺手的地方在于调试的时候你能从上位机看到每一次故障的完整时间线而不是对着烧糊的芯片猜原因。希望这篇分享能让你在设计电源路径时少走几个我走过的弯路。