ARTICLE DETAIL

资讯详情

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

电子保险丝+MCU:构建可靠又可观测的电源路径保护方案

电子保险丝+MCU:构建可靠又可观测的电源路径保护方案 做嵌入式产品这么多年我最大的感触是电源路径保护这件事做得好没人夸你做得差第一个被客户投诉的往往就是它。样机在实验室里跑得好好的一到现场供电一抖板子就复位负载侧电容微短路保险管爆了客户一句“你们东西怎么老烧”就能把你半个月的心情毁掉。我这次要聊的方案是把 TI 的电子保险丝 TPS259483AYWPR 和 Microchip 的 PIC18F47Q10 组合到一条电源路径上让硬件负责“秒级切断”让 MCU 负责“策略管理”在嵌入式设备和工业控制里搭一套既可靠又能看清楚故障的电源保护方案。这套方案解决的核心问题很直接限流、过压、过温、短路这些硬件级保护不与主控逻辑混在一起同时 MCU 又能主动控制上电时序、记录故障次数、决定要不要自动重试。适合正在做工业现场设备、车载电子、传感器节点、电机驱动控制板供电的工程师也适合想把“保险丝”升级成“智能电子开关”的团队参考。1. 为什么选“电子保险丝 MCU”这套组合1.1 传统保护方案的三个痛点先说最传统的玻璃管保险丝。它确实便宜、可靠短路时熔断速度也够快但它是一次性的。现场设备一旦发生瞬时过流可能只是某颗电容失效结果整条保险丝烧掉客户换起来麻烦你也得背锅。更关键的是玻璃管保险丝的熔断特性随温度变化很大标称 2A 的保险丝在高温环境里可能 1.6A 就开始老化时间一长整个系统的保护点根本不准确。自恢复保险丝PPTC看起来解决了“要换”的问题但它有两个先天毛病一是漏电流偏大静态功耗不符合工业现场对低功耗的要求二是动作之后的阻抗恢复曲线很慢而且每动作一次特性都会漂移一点几次之后就很难保证批量一致性。用在消费类产品里还行放在长期运行的工业设备上我心里一直没底。还有一类常用方案是“分立 MOS 管搭建负载开关”。通过采样电阻、运放或比较器做限流再用逻辑控制栅极。这个方案的问题在于高压侧的电流采样需要专用的高边驱动器环路补偿一旦没调好限流时容易震荡而且功率 MOS 的过流保护、过温保护、软启动全都要自己搭PCB 面积和调试周期都蹭蹭往上涨。这次做的项目里需要保护多路电源路径如果每路都这么干BOM 和研发成本都不可控。1.2 TPS259483AYWPR 到底是什么角色TPS259483AYWPR 属于集成式电子保险丝eFuse这一类器件。你可以把它理解成“一个小封装里封进了功率 MOS、电流采样电阻、比较器、驱动电路和一堆保护逻辑”的完整负载开关。它的好处是外部不需要自己去搭采样运放和栅极驱动只需要通过几个引脚上的电阻电容设置阈值就能获得限流、过压保护、欠压锁定、软启动和热关断等功能。在我的项目里它负责电源路径上最底层的“硬保护”。当负载侧真正发生短路时它内部的功率管会在几十微秒级别醒来并限制电流然后根据配置锁断或进入打嗝模式。MCU 无论跑得多快都很难做到这么快的物理响应所以这个“第一道防线”必须由专用硬件来完成。这里特别强调一句具体到 TPS259483 的引脚定义、绝对最大额定值和延迟时间一定要以 TI 最新数据手册为准不同批次和温度范围内的表现可能有差异设计时得给自己留余量。1.3 PIC18F47Q10 在这里不是跑数的主控而是电源管理的大脑有人可能会问既然 TPS259483 自己就能保护还要 MCU 干什么我的答案是因为工业应用里“保护”只是开始“管理”才是重点。PIC18F47Q10 是 Microchip 的 8 位 MCU常见封装有 40/48 引脚版本带 12 位 ADC、多个可配置逻辑单元CLC、过零检测ZCD等价格合适资源对电源管理来说非常够用。它在这个方案里的任务是控制 EN 引脚的使能时序读取 FLT 和 PG 状态通过 ADC 实时采集输入电压和负载电流维护一个故障状态机决定是否重试、是否锁死并把故障代码上报给上位机。比如现场发生了一次瞬时过流TPS259483 把输出切断FLT 信号拉低。这时 MCU 记录“第 1 次故障”等待一段时间后重新使能 EN。如果设备能正常启动那这只是一次瞬态扰动客户完全无感知如果连续几次都在启动阶段就过流MCU 就判定负载存在硬故障直接锁住 OFF 并上报。这种策略只有软硬结合才能做出来。2. 硬件设计关键参数计算不能靠“感觉调”2.1 整体电源路径拓扑先画一下这块板子的供电关系。外部电源进来之后先经过输入端的滤波电容和必要的 TVS 保护然后送入 TPS259483 的 IN 引脚。OUT 引脚连接负载侧的储能电容和后续 DC/DC 模块。PIC18F47Q10 的 GPIO 分别接在 EN、FLT 和 PG 信号上另外通过电阻分压采样输入电压输出电流则可以直接看 TPS259483 的电流监测输出如果有 IMON 引脚或外部分流电阻。这里有个设计原则eFuse 到负载之间的功率走线要短、要粗因为这段路径上的寄生电感会在短路瞬间产生很大的 di/dt 电压尖峰而 MCU 的检测走线要远离这段功率回路否则 ADC 采样会有明显的开关噪声。我见过不少板子限流保护并没有误动作倒是 MCU 端口被干出毛刺最后查出来都是布局太随便。输入侧和输出侧的电容也值得专门说一句。输入电容主要用来抑制导线电感带来的电压跌落建议按照 eFuse 数据手册推荐值起步不要盲目减小输出电容则直接影响软启动浪涌电流后面算软启动时间时要用到。2.2 限流电阻和软启动电容怎么选TPS259483 这类 eFuse 的限流点一般是通过 ILIM 引脚对地接一个电阻来设置的常见换算关系是 I_LIM 与 R_ILIM 成反比。这里我用一个常见的系数举例假设数据手册给出 I_LIM 的换算系数 K1200那么想设置 2A 限流点时R_ILIM K / I_LIM 1200 / 2 600Ω实际工作中我不会直接用标称 600Ω 普通电阻而是选 1% 精度的低温漂电阻。原因很简单如果电阻温度系数太大环境温度变化几十度限流点会跟着漂移系统保护的一致性就差。然后是软启动。TPS259483 通常用一个 dV/dT 电容控制输出电压的爬升斜率。为什么要专门控制这个斜率因为负载侧有大量储能电容如果 OUT 输出瞬间就弹到目标电压充电浪涌电流可能达到十几安培直接触发过流保护。计算思路是先把负载侧的等效电容 C_LOAD 估算出来比如 200 μF再根据你想容忍的浪涌电流计算允许的最大电压变化率。假设目标浪涌电流不超过 0.5 Adv/dt I_INRUSH / C_LOAD 0.5 / 200μ 2.5 V/ms如果输出电压是 12 V那么从 0 爬到 12 V 的时间约为 4.8 ms。然后根据 dV/dT 引脚给出的充电电流数据手册里有数值我这里用常见值说明方法用手册提供的公式反推需要的电容值。实际选型时可以先用计算值再在示波器上实测上电波形调整。提示软启动电容不是越大越好。拉长启动时间会让负载端的后级 DC/DC 长期处于低压输入状态有些模块在欠压时反而会进入奇怪的保护状态。我在一款交换机板卡上就踩过这个坑软启动调到 20 ms后级电源模块启动到一半就重启后来把软启动电容调小到 6 ms 左右才正常。2.3 OVP 过压阈值怎么设置很多嵌入式系统的输入电压来自 24 V 或 12 V 工业总线这些总线在感性负载通断时经常出现电压过冲。TPS259483 内置的过压保护OVP功能可以做到输入电压一旦超过设定阈值立即切断输出避免浪涌电压烧到后级电路。OVP 设置一般是靠 OVP 引脚上的电阻分压实现。假如 OVP 的内部参考电压是 1.2 V举例值想设置 12 V 系统在 14 V 时触发保护选 R_BOTTOM 10 kΩR_TOP R_BOTTOM × (V_OVP / V_REF - 1) 10k × (14 / 1.2 - 1) ≈ 106.7 kΩ实际可以用 100 kΩ 6.8 kΩ 组合凑出接近值最终再实测微调。需要特别提醒的是OVP 只能处理持续过压或慢速浪涌对纳秒级、极高能量的雷击浪涌它心里很清楚自己做不了还是要在输入端补 TVS 或压敏电阻。另外如果系统本身就有输入反接风险还得看所选型号是否支持反向电流阻断不支持的话就要在前级加理想二极管电路或防反接 MOS。2.4 PIC18F47Q10 的接口分配MCU 侧的接口分配其实不复杂但每个引脚的作用要想清楚。我是这样分配的EN由 MCU GPIO 控制默认输出低电平保持关断。EN 引脚是高压侧控制信号MCU 的 3.3 V 电平直接驱不一定合适可以串一个 1 kΩ 电阻限制电流必要时加电平转换。FLT故障输出通常是开漏结构需要上拉到 3.3 V接到 MCU 的外部中断引脚配置下降沿触发。这是整个系统里响应最快的一条信号路径很重要。PG电源良好输出表示 eFuse 已经完成了启动输出稳定接一个普通 GPIO 供 MCU 查询。ADC 通道一个采集输入电压分压一个采集电流监测信号。这里注意ADC 参考电压建议选内部参考源而不是 VDD防止 MCU 供电波动时采样值也跟着漂。信号分配用表格汇总一下信号TPS259483 引脚MCU 引脚方向备注使能控制ENRA4MCU - eFuse低电平关断故障反馈FLTINT0/RC0eFuse - MCU开漏上拉下降沿中断电源良好PGRC1eFuse - MCU电压未稳时保持无效输入电压采样IN分压RC2ADC分压网络 - MCU分压比按 ADC 范围设计电流监测IMON/分流RC3ADCeFuse - MCU参考地要接采样回路3. 固件实现状态机比“检测到故障就拉低 EN”更靠谱3.1 先搞清楚硬件保护和软件保护的边界写固件之前我一直在心里给自己加一条规矩TPS259483 的硬件保护是第一条防线MCU 的软件只是“善后和决策”。不要试图用 MCU 去做限流MCU 从检测到信号到操作 GPIO 的延迟通常有几微秒到几十微秒而硬件中断动作可以达到微秒级别两者根本不是一个量级的。所以固件的职责是管理状态不是替代硬件。MCU 要做的是在 EN 上发出使能信号等待 PG 变有效一旦收到 FLT 下降沿立刻进入故障处理流程记录时间点、累计故障次数、决定是否重试以及通过通信接口把状态上报。这个思路在整个嵌入式系统中的价值远大于“我能在 10 μs 内关断”这种不可能实现的承诺。3.2 初始化代码片段这里给一段基于 MPLAB X XC8 的简化初始化代码ADC 和相关中断先用常见的寄存器名表达具体地址和位定义以实际头文件为准。核心是把 EN 引脚设为输出低电平FLT 对应的外部中断配置为下降沿并初始化 ADC 通道。void Power_Init(void) { // 1. EN 引脚RA4默认输出低电平保持关断 LATA ~0x10; ANSELAbits.ANSELA4 0; TRISAbits.TRISA4 0; // 2. FLT 外部中断INT0下降沿触发 INTCONbits.INTEDG0 0; // 下降沿触发 INTCONbits.INT0IF 0; INTCONbits.INT0IE 1; // 3. PG 引脚配置为输入 TRISCbits.TRISC1 1; ANSC1 0; // 4. ADC 初始化12位模式内部参考 ADCON0bits.ADON 0; ADCON1bits.ADPREF 0b11; // 内部参考具体请查器件头文件 ADCON0bits.ADFM 1; // 结果右对齐 // 5. 打开全局中断 INTCONbits.PEIE 1; INTCONbits.GIE 1; }3.3 故障状态机设计状态机是我这次项目的核心设计。它有三个基本状态启动中、正常运行、故障保持另外还有重试等待和锁死状态。上电后 MCU 先保持 EN 为低等待使能命令。收到命令后拉高 EN进入软启动状态。在软启动状态里 MCU 轮询 PG等待输出稳定。如果此时收到 FLT 中断说明启动过程中就发生过流可能是负载端短路也可能是软启动时间太短。MCU 应当拉低 EN进入故障保持然后按策略处理。正常运行状态下FLT 任何一次下降沿都要认真对待。MCU 的记录逻辑是这样的每次故障后拉低 EN等待 500 ms 冷却时间然后再次使能。如果连续 5 次重试都失败就判定为永久性故障进入锁死状态直到外部命令或掉电才能解锁。这个策略在工业设备里很实用瞬态干扰不会导致设备停机真正的问题又不会无限重试把功率管烧坏。typedef enum { SM_POWER_OFF, SM_POWER_ON, SM_RUN, SM_FAULT_HOLD, SM_RETRY_WAIT, SM_LATCH_OFF } PowerState; void Power_StateMachine(void) { switch (g_power_state) { case SM_POWER_OFF: if (g_cmd_enable) { EN_SET_HIGH(); g_fault_count 0; g_power_state SM_POWER_ON; } break; case SM_POWER_ON: if (g_flt_flag) { EN_SET_LOW(); g_fault_count; g_power_state SM_FAULT_HOLD; } else if (g_pg_ok) { g_power_state SM_RUN; } break; case SM_RUN: if (g_flt_flag) { EN_SET_LOW(); g_fault_count; g_power_state SM_FAULT_HOLD; } break; case SM_FAULT_HOLD: // 故障冷却延时500ms if (g_fault_count 5) { g_power_state SM_LATCH_OFF; } else { delay_ms(500); EN_SET_HIGH(); g_power_state SM_POWER_ON; } break; case SM_LATCH_OFF: // 锁死等待上位机清除故障命令 break; } }这段代码里的关键是g_flt_flag在中断服务程序里只负责置位不在中断里做任何耗时操作。这是嵌入式开发的老规矩但在电源管理这种场景里尤其重要因为 FLT 中断可能和 ADC 采样、主循环任务并发发生处理不好就会丢失事件。ISR 我建议写成最简单的方式只清标志置位把复杂的逻辑全部放到主循环的状态机里void __interrupt() interrupt_High(void) { if (INTCONbits.INT0IF) { INTCONbits.INT0IF 0; g_flt_flag 1; } }3.4 ADC 采集和故障记录ADC 采集我用来做趋势判断。限流保护靠硬件但“电流逐渐变大”这种劣化趋势只有 MCU 才能看到。比如一个电机驱动模块随着温度升高堵转电流从 1.2 A 慢慢爬到 1.8 A虽然还没到限流点但已经能说明问题了。这种信息通过 ADC 采样、软件平滑处理后可以作为预警上报提前通知维护人员检查。读取一个 ADC 通道的代码比较简单uint16_t Read_ADC(uint8_t channel) { ADPCH channel; // 选择通道 ADCON0bits.GO 1; // 启动转换 while (ADCON0bits.GO); // 等待转换完成 return (uint16_t)((ADRESH 8) | ADRESL); }电压换算时要注意分压网络的比例。比如 ADC 输入引脚通过 100 kΩ/10 kΩ 分压采样 12 V 电源那么 ADC 实际看到的是 1.09 V 左右而 12 位 ADC 在 2.048 V 内部参考下每一步约 0.5 mV换算回系统电压时要乘分压比V_IN ADC_CODE × (V_REF / 4095) × ((R_TOP R_BOTTOM) / R_BOTTOM)这个公式虽然基础但我见过很多新人在这一步摔跤原因就是忘记乘分压比导致软件里显示的输入电压和万用表测出来差十几倍。4. 实测把保护功能一个一个“逼”出来4.1 上电波形和软启动实测板子焊好之后我不急着接负载先把输入端接到限流可调的直流电源上示波器同时抓 EN、IN、OUT、FLT 四个点。第一眼要看的是软启动EN 拉高之后OUT 电压应该以一条相对平滑的斜线爬升而不是“哐”的一下跳上去。如果爬升太快说明软启动电容太小如果爬升过程里出现台阶或波动可能是负载侧某个电路在启动过程中有额外的耗流。PG 信号也很直观。它应该在 OUT 电压达到正常值之后才变为有效这是 MCU 判断“输出电压已经建立”的重要依据。如果 PG 比 OUT 早跳或者根本不跳第一嫌疑是 OVP/UVLO 配置问题第二才是 PG 引脚上拉电阻和电平。4.2 限流点和短路测试限流测试我用电子负载的恒流模式加载。把负载电流逐步从 0.5 A 往上加一直到接近设定的 2 A 限流点观察输出电压是否出现明显跌落。如果 TPS259483 的配置是“恒流后打嗝”输出电压可能会在限流点附近抖动这属于正常保护动作。比较关键的是看限流点是否和计算值一致如果偏得太多就要回查 ILIM 电阻精度和走线噪声。短路测试更有意思但也更危险操作时一定要把示波器探头接牢。我常用的办法是输出端预留一个大电流跳线帽测试时用一根短粗线直接短接跳线帽两端。示波器上可以清楚看到 FLT 信号在极短时间内拉低输出电流被硬件迅速限制。MCU 的中断标志位这时应该已经置位串口上也能看到对应的故障代码。这里建议连续测试几次看每次 FLT 的响应时间是否一致如果差距很大通常是输入储能电容不足或采样 PCB 走线引入的噪声。测试结果记录下来大概是这样测试项目注入方式现象软件记录限流保护电子负载 CC 模式加载到 2.2 AOUT 电压被限制FLT 拉低故障代码 0x01输出短路输出端短粗线直接短接输出快速关断FLT 瞬时响应故障代码 0x01过压保护输入电源从 12 V 升到 14.5 VOUT 关断恢复 12 V 后不自动重试故障代码 0x02过温保护热风枪吹 eFuse 封装输出关断降温后恢复故障代码 0x034.3 过压与欠压边界测试过压测试没什么花活就是慢慢把输入电压往上调。需要注意的是OVP 触发之后当输入电压恢复正常时器件是否自动恢复输出这取决于你选择的配置。有些场景要求“过压恢复后自动重启”有些则希望锁断一段时间由 MCU 来决定下一步。我项目里用的是 MCU 收到 FLT 后拉低 EN 的方式由软件重试这样既能利用硬件的快速响应又能通过软件控制恢复节奏。欠压UVLO方面TPS259483 通常也支持配置输入电压低于某值时禁止开启。这项测试可以配合可调电源降到设定阈值以下观察 EN 一直拉高时输出是否仍然不建立。如果欠压阈值和 OVP 阈值离得太近可能出现输入电压抖动时频繁开关的情况这时要在软件里加一个确认延迟也就是要求电压持续稳定超过 N ms 才认为状态可靠。5. 常见问题与排查技巧实录5.1 一上电就保护输出起不来这是最常见的问题原因排前三的分别是输出侧电容太大导致浪涌电流超过限流点、软启动电容太小、ILIM 电阻值设计余量不足。排查顺序建议先空载上电如果空载正常就一步步加大负载电容同时用示波器盯住 OUT 的爬升斜率和电流波形。空载都不正常时重点查 ILIM 引脚电压和 PCB 焊接。5.2 FLT 引脚毛刺导致 MCU 误动作FLT 是开漏输出如果上拉电阻太大比如 100 kΩ信号沿很缓很容易被外部噪声干扰。我在一块板上遇到过 FLT 在正常情况下偶尔低跳几个微秒结果 MCU 老以为发生过流。排查后发现是这块板子的 FLT 走线经过了一个电感附近被开关噪声耦合。后来我把上拉改成 4.7 kΩ并在 MCU 引脚侧并联一个 1 nF 电容毛刺基本消失。如果希望更可靠还可以利用 PIC18F47Q10 内置的可配置逻辑单元CLC把 FLT 信号与一个软件控制的使能信号做逻辑与之后再触发中断。5.3 限流点实测值和设定值差得远这里有两个容易忽略的因素。第一是 ILIM 电阻本身的热漂移环境温度从室温升到 80℃ 时普通厚膜电阻可能偏出好几个百分点建议选温度系数 ±25 ppm/℃ 以下的薄膜电阻。第二是 ILIM 引脚的 PCB 走线它本身是一个小信号检测点不要让任何电流流过这条走线。我见过有人把 ILIM 电阻的地端和负载大电流地串在一起结果地线压降直接改变了电阻两端的感知电压限流点自然不准。5.4 PCB 布局和散热电子保险丝内部有功率 MOS大电流场景下的发热不可忽略。PCB 布局上除了把功率回路走宽eFuse 的焊盘和散热焊盘一定要正确接地并且通过尽量多的过孔连到背面铜箔。实测在 2 A 连续负载、环境温度 55℃ 时如果散热设计不足封装表面摸上去会明显烫手长期可靠性让人担心。设计阶段最好先用数据手册给出的热阻参数估算一下结温批量前必须做满载老化测试。5.5 MCU 软件层面的“防抖”和“防抖过”FLT 中断来了之后我通常会在状态机里加一个 5 ms 到 10 ms 的确认窗口只有持续检测到 FLT 为低才正式认定故障。为什么因为有些负载比如冷启动时的电机会产生幅度较大的瞬态电流硬件上虽然没触发保护但 FLT 线路上的耦合噪声已经够把电平拉低一会儿了。这个确认窗口不会影响真正的保护响应因为硬件已经关断输出软件只是决定要不要重试所以宁稳勿快。结尾这套方案我做下来最深的体会有两点。第一把“硬件保护”和“软件策略”的边界划清楚是电源路径保护设计里最重要的事。TPS259483 负责在微秒级切断风险PIC18F47Q10 负责在宏观上管理状态、记录故障和恢复两边各司其职整套系统才既能快又能稳。第二所有计算出来的限流点、OVP 阈值、软启动时间都只是设计起点最终一定要用示波器和电子负载把每个保护动作实测出来再根据现场环境微调。电这个东西不会撒谎波形不会撒谎出问题的时候往往是你的假设出了问题。最后再分享一个小技巧正式批量之前把故障记录格式和恢复策略写成一份内部文档不同的工程师接手调试时按文档里的状态机和测试用例走一遍能帮你提前排除掉大量现场才会暴露的问题。
返回列表