ARTICLE DETAIL

资讯详情

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

eFuse电子保险丝与MCU协同:嵌入式电源保护自动恢复方案

eFuse电子保险丝与MCU协同:嵌入式电源保护自动恢复方案 做嵌入式电源管理这几年我越来越觉得“保护”这两个字比“性能”更容易被低估。一个24V工业传感器节点、一台变频器控制板或者一套车载中控系统真正让工程师头疼的往往不是主控算力不够而是电源路径上某个瞬间的浪涌、倒灌或者短路把板子烧了。这次我想分享一个我最近在设备端电源管理模块上落地的方案用 TI 的 TPS259483AYWPR 电子保险丝做主路径保护配合 Microchip 的 PIC18F86J15 做状态监测和故障恢复逻辑。这套组合非常适合嵌入式和工业场景既能做硬保护又能做软的智能管理属于典型的“硬保险丝MCU大脑”架构。如果你正在设计需要抗浪涌、过压/欠压保护、短路保护同时又要求可复位、可上报故障的系统那这篇文章应该能给你不少实际操作层面的参考。先说清楚这个方案到底解决什么问题。很多嵌入式产品用自恢复保险丝或者普通MOS管负载开关做保护但自恢复保险丝动作慢、精度差负载开关又没有完整的过压/欠压窗口保护。TPS259483AYWPR 这类电子保险丝eFuse本质上是一个带精密保护功能的智能功率开关它能在一个很小的封装里集成过流保护、过压保护、欠压保护、浪涌电流限制、反向电流阻断等功能。而 PIC18F86J15 作为一颗8位单片机虽然算力不算强但胜在外设丰富、功耗低、工业级可靠性好非常适合干这种“盯着电路、上报状态、执行恢复逻辑”的活。两者一配合硬件层快速截断故障软件层再判断要不要重试、要不要记录故障次数、要不要通知上位机整个电源路径就不再是一条哑电路而是一个可观测、可干预的子系统。1. 内容整体设计与思路拆解1.1 设计目标从“烧板子”到“可恢复”在立项之前我先把需求理清楚。这个模块的服务对象是一台嵌入式环境监控设备内部包含一个 Cortex-M 主控、几个传感器、一个4G模组。整机由24V工业电源供电板上有三级 DC-DC 把电压降到 5V、3.3V。问题出在供电路径上现场电磁环境复杂电源线会引入浪涌电机启停会让24V母线跌落到18V偶尔操作员插拔接头还会造成瞬间短路。原来我用的是插拔式保险丝烧一次就得跑现场换一次维护成本极高。这次设计的核心目标有三个在输入端挡住过压、欠压、过流和反接避免后级电路受冲击故障发生后不能锁死要能在 MCU 控制下自动恢复但连续故障要达到阈值后彻底关闭防止反复硬上电把电路搞坏把电流、电压、故障标志这类信息送给主控或远端形成可追溯的运行记录。围绕这三个目标TPS259483AYWPR 负责第一道防线PIC18F86J15 负责第二道防线。硬件保护是“即时”的不需要 MCU 介入就能在微秒级切断路径软件保护则是“策略”的MCU 根据硬件上报的状态决定下一步动作。1.2 为什么不用运放MOS管自己搭保护电路可能有人会问保护电路无非是采样电阻比较器MOS管为什么还要用集成 eFuse我自己早期也这么干过但后来发现自搭方案在工业现场有很多坑。首先是精度过流比较器的阈值受电阻温漂和比较器失调电压影响量产后每个批次的一致性很难保证其次是响应速度分立方案要做到几个微秒内关断大电流并不容易PCB寄生电感稍大就容易振铃最后是功能缺失像输出压摆率控制、反向电流阻断、欠压/过压窗口检测这些功能自己搭一套非常占面积而且调试周期很长。TPS259483AYWPR 这种集成方案把上述难点都封装好了。它的内部有一个功率FET、一套精密的电流采样放大电路、多个比较器和一个控制逻辑模块。用户只需要用几个外部电阻设置阈值再把输出压摆率控制电容接上就能得到一个性能远好于分立方案的电源开关。更重要的是eFuse 的动作行为是可编程的可以配置成故障锁存模式也可以配置成自动重试模式。这种灵活性对嵌入式系统非常友好。比如配一个200ms的自动重试系统在短时瞬态故障后就能自愈而持续短路时MCU能在后台收到脉冲信号从而判断出“当前有持续短路”并做出进一步处理。1.3 PIC18F86J15 的角色系统级电源管家PIC18F86J15 不是用来替代专用硬件保护的。它更像一个电源管家负责让保护更有“智能”。它通过 GPIO 控制 TPS259483AYWPR 的使能脚EN通过 ADC 读取 eFuse 的电流监测输出IMON通过中断引脚接收故障信号FLT。当系统正常时MCU只需要周期性采样电压和电流做轻量级的低功耗巡检当故障发生时MCU响应中断记录故障类型和时间戳再按照预设策略决定是立即重启还是等待条件恢复后重启。采用 PIC18 而不是更高性能的 ARM 核心一方面是因为这颗芯片本身在 Microchip 生态里非常成熟工业级版本温度范围宽另一方面是这个电源管理任务本身不复杂用一颗独立的小 MCU 可以避免它跟主控抢资源。而且万一主控挂了电源路径仍然受 PIC18 控制主控复位不会影响供电保护逻辑。这种“看门狗式”的独立设计在工业设备里非常实用也让整机更容易通过安全相关的认证。2. 核心硬件设计与保护参数计算2.1 TPS259483AYWPR 典型引脚功能和外部配置先说硬件这是整个方案的底座。TPS259483AYWPR 的引脚不多但每一根都很关键。在我的设计里最基本的接线如下引脚功能连接方式说明VIN输入电源正极经过防反二极管或 TVS 后接入尽量靠近连接器VOUT输出到后级 DC-DC输出端要放至少 10uF 以上的储能电容EN/UVLO通过电阻分压接 VIN同时接 MCU GPIO用于设置欠压锁定阈值也能通过 MCU 直接关断OVP通过电阻分压接 VIN设置过压保护阈值ILIM接设置电阻到 GND设置过流保护阈值dVdT接电容到 GND设置输出压摆率控制上电浪涌IMON经过 RC 滤波后接 MCU ADC输出电流成比例的小信号FLT经过上拉后接 MCU 中断脚故障时输出低电平通知 MCUGND系统地需要单点连接避免大电流地噪声串扰这里我要提醒一个很多人容易踩的坑IMON 引脚输出的信号本质上是内部电流镜的镜像电流而不是直接输出的电压。你需要在外围接一个下拉电阻把电流转换成电压再送给 ADC。电阻阻值不能太大否则会造成信号带宽下降、响应迟钝。通常我会用 1kΩ 到 10kΩ 之间并在 ADC 输入对地加一个 10nF~100nF 的滤波电容。具体阻值根据你想让满量程电流对应的电压值来确定。2.2 过流保护阈值设置过流保护这个参数直接影响整个系统的安全性和可用性。设置得过小电机启动、传感器加热这类正常瞬态电流都会被误判为故障设置得过大后级器件又得不到有效保护。我的经验是先看整个负载的稳态电流最大值再给至少 1.5~2 倍余量。比如系统稳态最大电流是 1.2A但 DC-DC 的输入电容充电和通讯模组发射会有 2A 左右短时脉冲那我就会把 ILIM 设置在 3A 左右。这样既不会误触发又能在 3A 以上及时切断。具体的 ILIM 电阻阻值需要查阅 TPS25948 系列的数据手册通常手册里会给出一个“电流设置因子”公式大概是 ILIM 引脚电压与内部参考电压比较或者直接由 ILIM 电流决定阈值。我在实际设计时发现与其凭记忆硬记公式不如用 TI 官方的设计工具或者应用笔记里的参考曲线。这并不丢人因为不同批次的 eFuse 内部参考电压会有细微差异手册给出的最大/最小值边界才是设计依据。2.3 过压与欠压窗口的电阻分压计算欠压锁定UVLO和过压保护OVP都是通过电阻分压采样输入电压实现的。这里有一个容易犯的错把分压电阻选得太大以为这样省电。实际上分压电阻太大时引脚输入漏电流会造成阈值漂移而且对噪声更敏感。工业上我一般选择总分压电阻在 100kΩ 到 500kΩ 之间既保证静态功耗可接受又能让噪声引起的电压波动相对较小。假设我们需要 24V 系统欠压阈值 18V过压阈值 30V。通过分压网络需要让 VIN18V 时才能解除欠压锁定同时 VIN30V 时触发过压。计算方式就是基本的电阻分压先约定分压点电压等于 IC 内部参考电压比如 1.2V 或者手册中的固定阈值然后联立两个方程求两个电阻。如果你用的是和不完全一样的内部参考可以先用可调电阻网络在调试阶段精细校准最后再用低温漂的精密电阻固定。最后别忘了在分压点并联一个小电容通常是 1nF~10nF用于滤除输入电压上的高频纹波避免比较器来回抖动导致误触发。2.4 输出压摆率控制与浪涌电流抑制热插拔场景下如果 VIN 突然接通输出电容上的初始电压为零eFuse 内部功率管会瞬间导通在输入输出之间几乎短路产生巨大的浪涌充电电流。这个电流不仅可能触发过流保护还会拉低输入电压影响系统里其他设备。TPS259483AYWPR 的 dVdT 引脚就是用来控制这个过程的。dVdT 电容越大输出电压爬升越慢浪涌电流就越小。具体选择时可以根据输出的总电容、最大允许浪涌电流和输入输出电压差来计算。类比生活场景这就好比给一辆车加装了“油门缓踩器”不让它一脚地板油飞出去。对于 24V 输入、12V 输出、输出电容 100uF 的系统我通常把 dVdT 电容选在 10nF~47nF 之间对应几个毫秒到十几个毫秒的软启动时间。太短了起不到限制作用太长了又可能让后级 DC-DC 在启动期间处于输入电压不足的临界状态反而引发欠压复位。2.5 PIC18F86J15 的电源监测接口设计PIC18F86J15 这一侧除了通过 IMON 读电流还可以直接用 ADC 读取输入电压经过电阻分压和输出电压。有的设计为了省 IO只读一个输入电压但实际现场中输出电压同样重要。比如负载短路瞬间 eFuse 已经关断了如果只看输入电压你会误以为系统一切正常只有盯着输出电压才能发现它掉到了接近 0V从而判断故障发生在输出侧还是输入侧。我的建议是至少保留三路 ADC 采样VIN、VOUT、IMON或者 VIN、VIN_2、IMON并用 MCU 的参考电压作为 ADC 基准。如果担心基准精度不够可以在 MCU 外部加一颗精密基准比如 2.5V 的 REF3025这样能显著提高电压阈值判断的一致性。注意 MCU 的供电也要干净否则 ADC 读数会毛刺很多。我通常会用一节 LDO 给 PIC18 供电而不是直接从 DC-DC 输出取电。3. 固件实现与关键时刻的处理策略3.1 初始化流程与底层驱动抽象固件部分我倾向于先把底层接口写成独立的小模块方便日后移植到其他 MCU。核心的接口包括ADC 采样、GPIO 控制 EN、外部中断捕获 FLT、以及一个毫秒级和微秒级延时函数。在 PIC18F86J15 上我用的是标准外设库不同系列的 PIC 寄存器差异不大但引脚映射要注意。初始化顺序建议这样配置系统时钟和外设使能 ADC 模块配置 EN 引脚为输出初始拉低保持电源关闭配置 FLT 引脚为输入、上升沿/下降沿中断配置三路 ADC 通道初始化一个环形缓冲区用于存储故障事件延时 50ms 后再拉高 EN让 eFuse 开始软启动。为什么要先拉低 EN 再延时因为很多板子上电时MCU 的 IO 状态不确定可能在 eFuse 准备好之前就误开启导致保护逻辑没有运行起来。先明确关断等 MCU 稳定后再开启是最稳妥的策略。3.2 故障中断与软件状态机eFuse 的 FLT 引脚在正常时为高电平故障时拉低。MCU 收到中断后我先读回 FLT 电平确认确实是故障而不是毛刺再通过 ADC 读取当前的 VIN 和 IMON辅助判断故障类型。软件状态机是这个模块的灵魂我把它设计成四个状态NORMAL电源正常周期巡检电流电压FAULT_DETECTED刚收到 FLT 中断正在做故障确认和类型识别RECOVERY_WAIT等待一段时间先让故障源冷却或后续电压恢复RESTART_ATTEMPT拉高 EN 尝试重新启动同时记录重试次数LATCH_OFF连续重启失败或故障严重锁定关闭直到人工干预或上位机清零。一个典型的自动恢复流程是收到 FLT 中断MCU 在 50ms 内拉低 EN确认输出电容放完电再延时 200ms拉高 EN。eFuse 的 dVdT 电路会让输出缓慢上升。如果 30ms 内没有再收到 FLT则认为恢复了如果收到 FLT则重试次数加一。连续重试 5 次仍然失败就进入 LATCH_OFF并通过一个状态引脚或者 I2C 告诉主控“电源路径已锁断”。这里有个细节需要注意不要在主中断函数里做任何延时否则会影响其他事务。我一般只在中端函数里置一个“事件标志”具体的状态机运行在主循环里。PIC18 的优先级不高但处理这种毫秒级逻辑完全够用。3.3 电流信息的滤波与有效值计算IMON 引脚输出的电压信号会包含开关电源的开关纹波和负载瞬态分量。直接把这个 ADC 数据丢给状态机做阈值判断很容易误报警。我会在固件里做一个 16 点移动平均滤波器采样周期 1ms输出一个平滑后的电流值。移动平均的窗口不能太大否则瞬态大电流被抹平就失去了侦测尖峰的意义。16 点对应 16ms 的时间常数对于工业负载来说比较适中。同时我还要区分“瞬时过流”和“持续过流”。eFuse 本身有快速硬保护MCU 侧更多是关注平均值和趋势。比如某个负载电流在 100ms 内从 1A 涨到 2.5A这可能是硬件逐渐老化或者局部短路的前兆我会在固件里设置一个“预警阈值”比如额定电流的 80%超过后往日志里写一条 warning。这个功能是单纯 eFuse 无法提供的也是引入 MCU 的意义之一。3.4 与主控的通信接口实现PIC18F86J15 和主控 MCU 之间我用了 I2C从机地址可以拨码设置。通信报文格式很简单读取寄存器地址和长度包含设备状态、当前电流、输入电压、故障计数、温度补偿系数等。由于是内部板间通信速率不用太高100kHz 就够。主控侧只需要周期性读取这些寄存器的内容就能在触摸屏或者上位机上显示“24V电源正常电流 0.8A故障次数 0”。如果你的系统没有主控PIC18 也可以直接驱动一路串口输出调试信息。在调试阶段用 UART 输出关键事件是非常有用的。我习惯在状态切换时打印一行类似[PWR] FAULT: overcurrent, VIN23.8V, IMON3.2A, retry2。这样在现场跑问题的时候不需要连仿真器光看日志就能定位问题。4. 实操过程与核心环节验证4.1 硬件调试顺序先点亮再保护后智能化拿到样板后不要一上来就接大负载。我给自己的调试顺序是空载上电用示波器看 VOUT 是否正常爬升爬升时间是否符合 dVdT 设置测量 IMON 引脚的静态电压确认空载下电流读数接近零用电子负载拉小电流验证过流保护的准确性调整输入电压验证 OVP 和 UVLO 阈值是否符合设计值最后才接入整个系统的大负载做热插拔和短路测试。第一步就可能发现问题。比如 dVdT 电容没焊好VOUT 瞬间冲到全压伴随输入电压塌陷。这说明软启动没有生效或者 dVdT 引脚虚焊。务必用示波器同时测 VIN 和 VOUT 两个通道观察上电瞬间的两个波形。只有看到 VOUT 平滑上升才能说明 eFuse 工作正常。4.2 过流保护触发点的标定过流保护标定需要精密电子负载但现场没有的话也可以用一串功率电阻并联做粗调。我开发时用的方法更简单把电子负载设成恒流模式从 0.5A 开始以 0.1A 步进增加记录每个电流值下 eFuse 是否动作。正常情况下它会在设置阈值附近发生保护并且 FLT 引脚拉低。经验告诉我实际动作点会比理论计算值略微偏高因为内部比较器有一定的失调电压和响应延迟。在量产出厂之前我会在板端测试动作点并记录偏差。如果偏差超过 ±5%就要检查 ILIM 电阻精度或者查看是不是 IMON 到 MCU 之间的滤波电容太大了导致 ADC 读数跟不上真实电流但这并不会影响硬保护动作点。注意做这种标定时输入电源必须能提供足够大的短路电流。如果输入电源自身限流点低于你的 eFuse 阈值那当负载电流还没达到保护阈值的时候输入电源先进入恒流模式电压被拉低eFuse 反而会因为欠压保护动作。这时候你看到的现象是“还没到额定电流就保护了”不一定是 eFuse 的错要先用一个大容量铅酸电池或者大功率电源做实验。4.3 示波器抓波形与规格书中的行为做比对调好参数之后我会用示波器记录几组关键波形测试场景波形观察点预期表现正常上电VIN、VOUT、ENEN拉高后 VOUT 缓慢上升无回沟输出短路VIN、VOUT、FLT、IMONFLT 快速拉低VOUT 迅速掉到0过压浪涌VIN、VOUT、FLTVIN 超过阈值FLT 拉低VOUT 关闭自动恢复VOUT、EN、FLTFLT 拉低后 EN 被 MCU 拉低延时后重新拉高VOUT 再次软启动在抓输出短路波形时有一个重要的安全措施先用一个几十厘米长的导线做短路而不是直接把探棒怼到输出上。这样回路里的寄生电感会比较小但更容易触发快速保护。如果你看到 FLT 已经拉低但 VOUT 上仍然出现一个很深的负压甚至反向电压那就要检查输出端是否接了大容量电解电容电容能量在短路瞬间会倒灌回 eFuse造成体二极管反向导通。解决办法是在输出端加一个肖特基二极管或者增加 eFuse 的输出预放电电路。4.4 连续故障恢复实验验证 MCU 策略我把一个继电器接成周期短路器让输出每隔 5 秒短路一次。第一次短路后eFuse 保护PIC18 等待 500ms 后重新启动系统恢复。接着第二次短路同样恢复。直到连续 5 次后状态机进入 LATCH_OFFEN 保持低电平即使短路源移除也不自动上电。这个验证非常有意义因为它模拟了现场可能出现的“反复打嗝”现象。没有 MCU 的情况下eFuse 自动重试可能会一直“噼噼啪啪”重启长期打嗝对功率器件和电源都有损伤。有了 PIC18 的计数逻辑就能在故障持续时果断锁死等待人工排查。在实验过程中我发现一个有意思的细节当短路持续时间很短比如只有 1mseFuse 可能刚进入保护还没完全关断VOUT 只是轻微跌落就恢复了。这种情况往往不会触发 FLT 中断或者中断脉冲太短导致 MCU 没有捕获到。所以我额外用了一个模拟比较器或者 MCU 的快速 GPIO 输入捕获来记录 VOUT 的跌落事件。这一点在后续版本中变成了多功能接口也是让整个系统更成熟的关键改进。5. 常见问题与排查技巧实录5.1 故障一eFuse 不启动EN 拉高但 VOUT 一直为零首先要确认 EN 引脚电平确实到了高电平阈值。很多人用 MCU 的 3.3V GPIO 直接驱动 EN而 eFuse 的 EN 高电平阈值可能要求高于 3.3V或者需要上拉到 VIN 才能可靠开启。这种情况发生在一些宽压输入的 eFuse 上。我的建议是EN 引脚不要直接接 MCU GPIO而是通过一个三极管或者 MOSFET 做电平转换用 VIN 作为上拉源MCU 只需要控制低电平就能关断。比如用 NPN 三极管基极接 MCU集电极接 EN发射极接地。MCU 输出高电平时三极管导通EN 被拉低eFuse 关断MCU 输出低电平时三极管截止EN 被上拉到 VINeFuse 开启。这样既安全又简单。还有一种可能是 EN 引脚内部的欠压锁定还在起作用。如果输入电压在 UVLO 阈值以下即使 EN 为高eFuse 也不会开启。用示波器测量 EN 和 VIN 的波形对比阈值基本就能定位。5.2 故障二IMON 读数不准确IMON 的准确度和外部转换电阻有关但还有一个容易被忽略的因素IMON 引脚上如果接了太大的电容会把电流信号滤平导致读数滞后在动态负载下看起来很不准。我曾经在调试时发现电流读数比实际值低了 30%后来用电烙铁把滤波电容从 100nF 拆掉换成 10nF 后读数立刻就正常了。这个教训告诉我们IMON 引脚的滤波应该分成两级第一级小电容滤高频第二级由 MCU 侧软件再做平均。不要指望一个大电容解决所有噪声问题。如果确认硬件没问题还要检查 ADC 参考电压。PIC18F86J15 的内部参考电压在全温度范围下精度有限最好是外接基准或者至少用电源轨进行比率式测量。如果你是用 VDD 作为 ADC 参考而 VDD 本身来自不稳定的 DC-DC那测出来的 IMON 也会跟着 VDD 波动。我后来把供电改成了一颗高性能 LDO这个问题就消失了。5.3 故障三自动恢复成功后仍然报故障这个问题多半出在故障标志没有清除上。有些 eFuse 的 FLT 引脚是锁存型的即使输入恢复正常FLT 也会维持低电平直到 EN 被重新触发。在我的方案里MCU 在拉起 EN 之前会先拉低 EN 至少 10ms 再重新拉高这样 eFuse 内部逻辑复位FLT 才能恢复为高。如果 MCU 只是简单地把 EN 保持在高电平故障是不会消失的。所以在固件里每次重启之前必须做完整的“EN 拉低 - 延时 - EN 拉高”流程不能偷懒。5.4 故障四板子工作时偶发性重启偶发性重启最难查。如果你发现 FLT 从来没有动作VIN 也没有明显的跌落但系统还是不断重启那问题往往不在 eFuse而在后级的 DC-DC 或者主控本身的复位脚。不过电源路径的保护设计也有责任排除输入侧的瞬态。我在一个项目里遇到过类似现象后来用示波器长抓 VIN发现每隔几秒有一个负向的 200V 尖刺持续不到 1us普通电压表根本看不出来。这是因为现场有电磁阀动作耦合到电源线上。解决办法是在输入端增加 TVS 管和共模电感并且把 eFuse 的 OVP 阈值降低一点让这种尖刺被主动关断而不是穿过 eFuse 打到后级。如果只依赖 MCU 的 ADC根本来不及响应因为 ADC 采样率太低了。这就是 eFuse 硬保护存在的真正价值。5.5 故障五热插拔瞬间输入电源被拉垮热插拔的瞬间即使 dVdT 已经控制了输出爬升输入端的连接器跳变仍可能产生火花或者因为电缆电感造成输入电压剧烈振荡。我建议在离 eFuse 输入很近的地方放一个 22uF~100uF 的电解电容和一组陶瓷电容。这个电容的作用是稳定输入电压在输出需求发生阶跃变化时提供局部能量缓冲避免远端电源来不及响应。同时输入走线要短而粗尽量靠近连接器放置保护器件。如果你的系统允许还可以在输入端加一个 PTC 热敏电阻做第二道防线。不过要注意 PTC 的冷态电阻会带来压降而且热恢复时间很长不适合做快速恢复。我更倾向于用 TVS 管 输入电容 eFuse 的组合既快速又不会引入额外的常态损耗。6. 最后再分享一点经验做这类电源保护方案我最大的体会是硬件保护设计得再好如果固件里的故障处理逻辑不严谨到现场一样会出幺蛾子。真正靠谱的系统是两个层面协同工作eFuse 管住微秒级瞬态MCU 管住毫秒级策略。TPS259483AYWPR 和 PIC18F86J15 的组合在嵌入式设备里不算最豪华的方案但胜在平衡——硬件保护能力专业MCU 控制灵活而且两者的市场保有量都很大数据手册和应用笔记非常丰富。如果你在做一个新的电源路径保护模块建议先从最小系统开始验证把各项阈值标定准确再逐步增加自动恢复、日志上报这些智能功能。板子调试的时候多抓波形、多测一次短路实验就能比只看算出来的参数更有把握。希望这篇文章能帮你在设计电源保护时少走一些弯路。
返回列表