首页 / 资讯中心 / 文章详情

eFuse+MCU电源路径保护设计:器件选型、参数计算与固件状态机实战

eFuse+MCU电源路径保护设计:器件选型、参数计算与固件状态机实战 ★ FEATURED ARTICLE
去年有个网关项目让我印象很深客户要求输入口必须扛住 24V 电压跌落和 5A 级别的瞬时过流冲击结果初期样机在实验室里连烧了两块板都是后级 DCDC 还没来得及反应前级输入口已经先“交代”了。后来我把电源路径上的保护器件换成 TI 的 TPS259483AYWPR 电子保险丝又用一颗 Microchip 的 PIC18F4515 单片机去做状态管理和故障记录问题才算真正落地解决。这篇就说清楚这套“eFuse MCU”的电源路径保护方案到底怎么设计、怎么算参数、怎么调。内容覆盖器件选型逻辑、分压电阻和软启动电容的计算过程、PIC18F4515 的固件状态机以及我在实盘调试中踩过的几个坑。适合做嵌入式硬件、工业控制器和电源设计的工程师参考哪怕你是第一次接触电子保险丝看完也能把最小系统跑起来。1. 为什么是“eFuse 单片机”而不是保险丝或纯模拟保护1.1 传统保护方案的三处硬伤很多老工程师习惯用保险丝或者 PTC 自恢复保险丝来做输入保护这方案在简单产品里没问题但要放在工业设备和嵌入式系统里三个短板就会慢慢暴露。保险丝的动作原理是热积累过流之后要靠熔体升温熔断来切断回路这个时间通常是毫秒到秒级。对于瞬时浪涌比如电机启动或者大电容充电保险丝根本分不清是故障还是正常冲击往往还没熔断后级 DCDC 已经过压或者过流损坏了。PTC 自恢复保险丝更慢动作之后还会残留一个高阻状态等它恢复回来设备可能已经经历过好几次异常冲击寿命和数据可靠性都打了折扣。还有一类做法是分立元件搭保护电路用比较器、采样电阻和 MOSFET 做限流或断电。这种方案看起来很灵活但采样电阻的温漂、比较器的失调电压、PCB 布线的寄生参数都会让保护点飘移。我在实验室测过一套分立方案常温下限流点是 3.2A工作半小时后限流点漂到 3.8A而且每次调整都牵一发动全身调试周期很长。保险丝的问题在于“不可控”PTC 的问题在于“不精确”分立方案的问题在于“不稳定”。在需要快速、准确、可恢复、可诊断的工业应用里这些方案都不够理想。1.2 eFuse 负责“快”单片机负责“管理”TPS259483AYWPR 这种电子保险丝本质上是一颗集成 MOSFET 和保护控制逻辑的智能开关。它内部的比较器检测流过 MOSFET 的电流一旦超过外部电阻设定的限流值就立刻把 MOSFET 拉到恒流区或者直接关断这个动作在微秒级完成。同时它还能做输入欠压锁定、输出过压保护、可编程软启动、反向电流阻断一颗芯片相当于把保险丝、PTC、分立保护电路的核心功能全集合了。但 eFuse 再强它也只是一个固定策略的“执行者”。限流点、OVP/UVLO 阈值是通过外部电阻定死的运行中无法动态调整它也不会记录故障发生的时间和次数。这时候就需要一颗 MCU 来做“管理者”。PIC18F4515 在这里的角色非常明确用 ADC 读取 eFuse 的 IMON 引脚实时换算负载电流用 GPIO 或外部中断读取 FLT 引脚判断当前是否发生故障用 GPIO 控制 EN 引脚决定何时开启、何时关闭、何时自动重试再把故障信息通过 UART 上报或者存到 EEPROM 里做历史记录。这里有一个最关键的架构认知真正的快速保护永远由 eFuse 的模拟电路完成MCU 只负责策略和诊断。不要指望 PIC 检测到电流异常再去关断那至少要几十微秒到上百微秒对于短路来说已经太晚了。正确分工是 eFuse 先保护MCU 后处理这样既快又智能。1.3 这套组合最典型的三类应用场景嵌入式设备里最常见的是 5V 或 12V 输入轨保护。比如摄像头、边缘网关、传感器节点外设接口多、线缆长很容易因为外部短路把主板电源拉垮。eFuse 放在输入口后级再大的短路电流也会被限制住不会连烧整个板。工业设备里更常见的是 24V 或 12V 输入保护。工业现场有感性负载、长线缆、热插拔背板上电瞬间的浪涌和运行时的过流冲击都很频繁。eFuse 配合 TVS 管和反接保护能有效吸收和切断这些异常。还有一类是电池供电设备。电池电源路径需要低静态电流、低导通压降同时要防反接、防过流、防输出短路。eFuse 的导通电阻可以做到毫欧级静态电流也不高比传统二极管加保险丝方案效率更高。PIC18F4515 这类 8 位 MCU 功耗也低待机时能配合 EN 引脚把整个电源路径做到接近零功耗关闭。2. 两颗核心器件怎么选、怎么看2.1 TPS259483AYWPR一颗可配置的智能电子保险丝拿到这颗粒子别急着看内部框图先看数据手册首页的特性表。我当时的关注点是输入电压范围、可调限流范围、软启动可编程能力、OVP/UVLO 配置方式还有 FLT 和 IMON 两个状态输出。TPS25948 这一系列属于 TI 的电子保险丝产品线后缀里的数字和字母往往代表不同的档位和功能。TPS259483AYWPR 这个名字里“A”通常代表特定版本或特性组“YW”代表封装规格最后的“PR”一般是卷带包装。我个人的习惯是不靠记忆猜规格一定在现场对着手册确认功能表。尤其要看三个容易整错的地方限流设定电阻公式、软启动电容与时间的关系、OVP/UVLO 阈值计算方式。这颗 eFuse 的典型功能包括可编程电流限制、可编程软启动限制启动浪涌电流、输入欠压锁定、输出过压保护、反向电流阻断以及 IMON 电流监测输出和 FLT 漏极开路故障输出。有这些引脚做一套完整的智能保护链路就非常顺手。它的故障响应是微秒级别靠内部比较器和驱动器直接控制 MOSFET。负载过流时它会先进入限流状态而不是立刻关断给后端提供一定缓冲若过流持续过长时间导致结温升高到保护点它就会关断并拉低 FLT。这种先限制、再关断的行为比直接熔断的保险丝温和得多。2.2 PIC18F4515够用而不浪费的 8 位控制核心PIC18F4515 属于 Microchip 的增强型 8 位系列40 引脚封装内部有 10 位 ADC、增强型 CCP 模块、USART、SPI/I2C、定时器、看门狗和上电复位/欠压复位等。这类 MCU 的性能在嵌入式里不算强但拿来做电源路径管理性能和资源都绰绰有余。它的核心价值在于外设齐全。10 位 ADC 用于采集 IMON 电压分辨率在 3.3V 参考下约 3.2mV配合合理的采样电阻电流分辨率可以做到毫安级别。UART 用于把实时电流和故障码发送到调试串口或者上位机。WDT 防止 MCU 程序跑飞后放任电源不管这一点在工业设备里非常重要。我为什么不用更高性能的 32 位 MCU因为在这个场景里 8 位 MCU 足够成本低、功耗低、工具链成熟。尤其是 PIC18 系列的 BOR欠压复位和 PWRT上电延时复位在电源异常波动时能保证 MCU 自己先复位到安全状态再去处理 eFuse 的策略而不是带着脏状态乱跑。2.3 选型时容易被忽略的两个细节第一个是封装热阻。eFuse 正常工作时有导通功耗在满负荷 5A 下即使 RDS(on) 只有几十毫欧功耗也有 0.5W 以上。如果 PCB 散热不理想热阻过大eFuse 的结温保护会比预期更早触发。选封装的时候要看数据手册里的热阻参数并且在设计阶段确认 PCB 铜箔面积和过孔数量。第二个是 IMON 电流镜像电阻的选择。IMON 是电流输出需要在外部接一个采样电阻转成电压。电阻太小电压信号偏弱ADC 量化误差变大电阻太大满负荷时电压可能超过 MCU 的 ADC 输入范围。我一般会把最大设计电流对应的 IMON 电压控制在 ADC 参考电压的 60%~80%留出一点裕量同时并联 100nF 电容做滤波。3. 硬件电路设计与关键参数计算3.1 整体拓扑输入保护链路的完整拼图这套方案的硬件结构可以这样理解工业 12V 输入先经过第一级防护防反接二极管或者 PMOS 防反接电路然后是 TVS 管吸收瞬态浪涌再用输入电容稳住电压之后进入 TPS259483AYWPR 的输入引脚。eFuse 的输出引脚接负载侧通常是一个较大的输出电容再往后是 DCDC 或各路负载。PIC18F4515 的 GPIO 连接非常直接一个引脚接 EN 控制使能一个引脚接 FLT 读取故障状态一个 ADC 通道接 IMON 采样电压。为了确保上电时 eFuse 默认处于关闭状态EN 引脚上要加一个 10kΩ 下拉电阻。因为 MCU 上电瞬间 IO 是高阻态如果芯片 EN 内部没有下拉浮空电平可能让 eFuse 在 MCU 启动前就导通这不符合“先初始化、再使能”的安全原则。FLT 引脚是漏极开路结构外部必须加上拉电阻到 MCU 电源电压否则读不到电平变化。IMON 输出要远离功率路径的走线避免开关噪声干扰 ADC 采样。我在布局时会把 PIC 放在 eFuse 的下风侧信号线尽可能短并且加 RC 滤波。3.2 限流、软启动、过压欠压的定量计算先把设计目标定下来输入 12V最大负载电流 5A负载侧有 470µF 的电容要求过压保护触发点在 14V欠压启动电压 9V软启动时间约 10ms。限流电阻的计算。多数 eFuse 的 ILIM 引脚是通过外接电阻设定限流值公式一般是 I_LIMIT K / R_ILIMK 是手册给出的比例系数。以我这颗料为例手册中 K 的量级在 1650 左右A·Ω那么 5A 限流对应 R_ILIM 1650 / 5 330Ω。这个电阻要选 1% 精度温度系数尽量低因为限流点的精度直接取决于它的稳定性。软启动电容的计算。软启动的本质是控制输出引脚电压的上升斜率让输出电容缓慢充电避免上电瞬间把浪涌电流放大器变成“短路”。I C × dV/dtdV/dt 越慢浪涌电流越小。手册一般会给出 C_SS 与软启动时间的对应关系我按经验取 100nF 得到 10ms 量级。实测时用示波器看 VOUT 上升沿再微调电容值即可。过压保护分压电阻。OVP 引脚内部的参考电压假设为 1.2V以手册为准通过分压电阻采样 VIN。设 R2 为 10kΩ过压触发点为 14VR1 (V_OVP_SET / V_REF - 1) × R2 (14 / 1.2 - 1) × 10kΩ 106.7kΩ取标称值 107kΩ。欠压启动分压电阻。UVLO 引脚常见做法是内部有电流源或参考电压外部电阻设定阈值。如果按参考电压 1.2V 计算启动电压为 9V设 R4 为 10kΩ则R3 (V_UV_START / V_REF - 1) × R4 (9 / 1.2 - 1) × 10kΩ 65kΩ。这两组分压电阻都要用 1% 精度并且注意电阻的耐压等级。工业 24V 输入场景下分压电阻承担的电压不高常规 0402 或 0603 封装即可但如果输入瞬态超过电阻额定电压还是需要谨慎选择。3.3 IMON 采样电阻和 PIC18F4515 的 ADC 量程配合IMON 引脚输出的是与负载电流成比例的电流镜像假设这颗 eFuse 的镜像比例是 1A 对应 50µA以手册为准。我希望 5A 满量程时 ADC 采样电压在 1V 左右那么采样电阻就是R_IMON V_IMON_MAX / I_IMON_MAX 1V / (5A × 50µA/A) 1V / 250µA 4kΩ。如果你希望更大信号可以用 4.7kΩ5A 时对应 1.176V仍远低于 3.3V ADC 量程。实际设计中我还会在 IMON 到 ADC 之间加一个 1kΩ 串联电阻和 10nF 对地电容构成低通滤波滤掉开关噪声。采样点避开 MOSFET 开关瞬间效果更好。PIC18F4515 的 ADC 是 10 位参考电压取 3.3V那么理论分辨率是 3.3V / 1023 ≈ 3.2mV。配合前面的 4kΩ 采样电阻电流分辨率大约为 3.2mV / (4kΩ × 50µA/A) 16mA已经足够观察负载变化和故障预兆。3.4 引脚分配与最小系统连接表PIC18F4515 引脚作用连接对象RA0/AN0ADC 采样IMON 经 RC 滤波后的电压RB0/INT0外部中断eFuse FLT 漏极开路输出带上拉RB1GPIO 输出eFuse EN 使能控制RB2GPIO 输出状态指示灯/继电器控制可选TX/C6UART 发送调试串口/上位机日志MCLR复位输入接上拉电阻到 VDD视需要接外部复位钮VDD/VSS电源3.3V 或 5V 供电并联 100nF 10µF 去耦电容这套引脚分配不唯一但思路是把 FLT 接到支持外部中断的引脚上这样故障发生时 MCU 能被立刻打断而不是靠轮询浪费时间。EN 用普通 GPIO 即可不需要 PWM除非你要做更复杂的限流斜坡控制。4. 固件实现从裸机到可上线的状态机4.1 软件要做的三件事PIC18F4515 的代码逻辑并不复杂分成三块初始化、采集与换算、故障状态机。初始化阶段必须完成的动作包括关闭 eFuse 使能、配置 FLT 引脚为输入并启用上拉或外部上拉、配置 ADC 通道和参考电压、配置 UART 波特率、启动 WDT。特别强调初始化完成后到正式使能 EN 之间要留一个延时让 MCU 内部电源和时钟稳定也让 eFuse 自己的内部电路达到稳态。采集与换算阶段MCU 周期性地读取 IMON 电压做多次平均之后换算成电流。不要用单次采样值直接判故障因为系统上的噪声和瞬态会让单次值产生误报。至少做 8 次或 16 次移动平均或者用中值滤波。故障状态机阶段是整个固件的核心负责把 FLT 引脚的硬件中断翻译成可执行的重试策略和日志记录。4.2 ADC 初始化与 IMON 电流换算PIC18 的 ADC 配置代码我直接给一个可参考的框架。寄存器名和位定义以编译器头文件为准项目里用的具体型号是 PIC18F4515。#define VREF_MV 3300U #define IMON_RES_KOHM 4.0f #define IMON_RATIO_A_PER_UA 0.00005f // 1A - 50uA按手册修改 static unsigned int adc_read(unsigned char ch) { ADCON0 (ADCON0 0xC3) | ((ch 0x07) 2); // 切换通道 ADCON0bits.GO 1; while (ADCON0bits.DONE); return (ADRESH 8) | ADRESL; // 10位结果 } static unsigned int adc_read_filtered(unsigned char ch) { unsigned long sum 0; unsigned char i; for (i 0; i 16; i) { sum adc_read(ch); } return (unsigned int)(sum / 16); } unsigned int get_load_current_ma(void) { unsigned long raw adc_read_filtered(0); // AN0 unsigned long v_uv raw * VREF_MV / 1023UL; // 电压单位mV // I_load_mA V_imon_mV / (R_imon_kohm * 1k * IMON_RATIO) unsigned long current_x1000 v_uv * 1000UL / (unsigned long)(IMON_RES_KOHM * 1000 * IMON_RATIO_A_PER_UA); return (unsigned int)(current_x1000); }这段代码的关键在于比例换算。IMON 镜像比例和采样电阻共同决定电压到电流的传递函数。产线校准时我会在负载端加一个标准恒流源拉 1A、2A、5A 三组电流记录 ADC 原始值做一次两点或三点校准把校准系数存进 EEPROM。这样就能消除器件个体差异带来的电流读数误差。4.3 故障处理状态机的四种状态我设计的保护状态机包含四个基本状态运行态、瞬时故障态、持续故障锁存态、恢复等待态。正常运行态下MCU 周期采集电流如果 FLT 没有触发就一直停留在该状态。FLT 下降沿中断发生后MCU 进入瞬时故障处理。此时先读取 IMON 电压和 FLT 电平记录故障时间戳判断是过流、过压还是欠压结合寄存器状态或 IMON 值辅助判断。如果只是单次瞬时故障比如电机启动瞬间的过流尖峰eFuse 自己限流扛过去了FLT 信号很快恢复MCU 就不需要做任何关闭动作只需记录一条瞬时故障日志。如果 FLT 在短时间内反复触发比如 5 秒内连续出现 3 次就判定为持续故障进入锁存态强制 EN 拉低关闭输出并记录故障码。恢复等待态对应两种策略一是硬件自动重试模式eFuse 自己周期性尝试重启MCU 只负责记录二是由 MCU 控制的锁存模式eFuse 关断后MCU 等待一个较长的冷却时间比如 30 秒再从运行态重新使能。工业场景我倾向第二种避免短路点未排除时反复热插拔造成二次损伤。enum power_state_t { ST_INIT, ST_RUN, ST_FAULT, ST_LATCH_OFF, ST_RECOVERY };故障处理的大体逻辑可以这样写void on_flt_irq(void) { if (fault_cnt MAX_FAULT_CNT) { fault_cnt; log_fault_to_eeprom(FAULT_CODE_OVERCURRENT); start_recovery_timer(); // 这里不要立刻拉高 EN让 eFuse 硬件先恢复 state ST_FAULT; } else { en_off(); state ST_LATCH_OFF; log_fault_to_eeprom(FAULT_CODE_LATCH); } }一个很重要的原则MCU 在收到 FLT 之后绝不能只做“立即重新开启”这一件事。必须先读 FLT 状态确认 eFuse 是否已经恢复正常再看负载电流是否回落到安全范围最后才决定重新使能。盲目重试只会让故障无限循环。5. 常见问题与排查技巧实录5.1 一上电就过流保护负载根本拉不起来这个问题在带大电容负载时出现频率最高。现象是上电瞬间 FLT 立刻拉低VOUT 起不来。原因就是软启动时间不够输出电容充电电流超过了限流点。比如 470µF 电容如果软启动时间只有 1ms充电电流高达 470mA 甚至几安培而限流点设置恰好比较低自然会误触发。解决思路是把 C_SS 调大把软启动时间放到 10ms 甚至 20ms。也可以分两步先让 eFuse 在小限流下把输出电容预充到某个电压再切换到正常工作限流值。后者需要 MCU 配合在启动阶段以较低占空比 PWM 控制 EN或利用 eFuse 的分级限流引脚实现。判断这类问题最快的方法是用示波器看 VOUT 上升波形。正常软启动时 VOUT 是平滑的斜坡如果 VOUT 上升中出现台阶或者直接跌回零说明限流和软启动参数不匹配。5.2 IMON 读数跳动ADC 值不稳定IMON 是电流镜像输出对 PCB 布局噪声非常敏感。我第一次调试时ADC 读数在 850 和 930 之间来回跳幅值十几个 LSB换算成电流超过了 200mA 误差根本没法做判断依据。排查后发现两个问题一是 IMON 走线经过功率电感下方开关噪声耦合严重二是采样电阻没有就近接地地回路干扰大。解决办法是把 IMON 采样电阻和滤波电容靠近 PIC 引脚放置走线远离电感同时在 MCU 侧加一个 1kΩ 串联电阻和 10nF 电容组成低通滤波。软件里再做 16 次平均读数波动从 80 个 LSB 降到了 2 个 LSB 以内。还要注意 ADC 采样时序不要在 FLT 刚释放或者 EN 刚切换的瞬间采样这个时刻电源暂态还在持续采集到的是过渡值而不是稳定电流。5.3 FLT 不定时误触发板子自己复位还有个很隐蔽的坑FLT 误触发不是因为负载过流而是因为输入电压瞬间跌落跌破了 UVLO 阈值。比如系统里另一个大电流设备突然启动输入电源被拉低 1V如果 UVLO 阈值设置太接近工作电压eFuse 会把它当成欠压故障关断输出。我做过一次压降分析24V 输入系统里长线缆加输入电容不足时瞬态跌落能到 3V 以上。所以工业现场用 eFuse输入电容一定不能小至少要按最大瞬态电流的 10 倍裕量来选。比如 5A 负载输入电容 100µF 起步还要靠近 eFuse 输入引脚。排查这类问题用示波器观察 VIN 和 FLT 的时序关系最直观双通道同时抓取看 FLT 拉低前 VIN 是否有一个明显跌落。5.4 量产前必做的压力测试组合保护电路最怕的是只在实验室正常环境“看起来没问题”到了量产和现场才暴露问题。我建议量产前做三组测试电流爬坡测试、EN 反复开关测试、短路冲击测试。电流爬坡用电子负载从 1A 以斜坡爬到 6A确认限流点在 4.5A~5.5A 范围内稳定。EN 反复开关测试是通过 MCU 指令让 eFuse 每 500ms 开关一次跑 2000 次以上看状态机和 eFuse 的配合是否出现累计误差。短路冲击测试最粗暴在 VOUT 侧直接短接看 eFuse 能否快速关断、MCU 能否正确记录故障。短路点不要用普通鳄鱼夹应该用一个专用的大电流开关模块保证接触稳定否则测量结果会被火花和接触电阻干扰。这三组测试跑完基本能覆盖 90% 的现场异常情况。现象优先检查排查方法上电无法启动软启动电容、限流电阻、输出电容示波器看 VOUT 斜坡增大 C_SS限流值偏高或偏低ILIM 电阻精度、温度系数电流爬坡测试对比设定值IMON 波动采样电阻布局、滤波电容、地回路短走线、加 RC 滤波、软件平均FLT 误触发输入电容、UVLO 分压、负载瞬态双通道示波器抓 VIN 和 FLTMCU 死机后电源无保护WDT 配置、EN 默认电平启用看门狗、EN 加外部下拉最后再聊两句实操体会这套方案做完以后我最大的感触不是“保护速度有多快”而是“每次故障都有据可查”。以前用保险丝烧了就换根本不知道是过压还是过流烧的现在 PIC 每次复位都能把故障码、故障计数、当前电流值记下来工业现场排障效率高了很多。哪怕设备宕机了拉出串口日志就能定位一大半问题。还有一个小建议给所有准备抄这套思路的朋友调试时别一上来就打满参数。先用一半限流值把电路和状态机调通确认 FLT 中断、ADC 采集、故障记录都正常再逐步把限流值拉回设计点。一步一步来你会发现很多所谓“玄学故障”其实都是参数组合和时序配合的问题。
阅读完成 · 觉得有帮助?
咨询建站