资讯详情

基于eFuse与MCU的电源路径保护:从TPS259483到PIC18F4680的实战设计

📅 2026/10/7 17:45:44 | 华诺云谱 👁 阅读
基于eFuse与MCU的电源路径保护:从TPS259483到PIC18F4680的实战设计
半年修板子的血泪教训让我深刻认识到电源路径保护不是加个保险丝那么简单。尤其在做 24V 供电的电机控制、PLC IO 板这类工业设备时线缆长、电感大、负载突变频繁传统熔断器和自恢复保险丝要么反应太慢要么误动作闹心。后来我把 TI 的TPS259483AYWPR电子保险丝和 Microchip 的PIC18F4680单片机组成一个可控制、可上报状态的电源路径保护电路才终于把现场烧板子的概率压下去。这篇文章把整套设计思路、参数计算、固件框架和调试时踩的坑聊透适合正在做嵌入式或工业供电保护的工程师参考。1. 为什么要用 TPS259483AYWPR 替代普通保险丝1.1 传统保护方案的三个硬伤过去我处理电源保护无非三种方案玻璃管保险丝、自恢复保险丝PPTC、分立电路搭的限流电路。玻璃管保险丝最直接但响应速度在毫秒级到秒级很多瞬态短路根本救不回来。更麻烦的是每次保护动作都要换现场维护成本高。自恢复保险丝看着省事可它受温度影响严重25℃ 和 85℃ 下的动作阈值能差一倍多在工业宽温环境里很难精确设计。自己用运放加 MOSFET 搭限流电路门槛又太高温漂、环路稳定性、短路瞬态响应都是坑稍不注意就在打嗝或者振荡反而把后面的电源芯片搞崩。TPS259483AYWPR 这类 eFuse 解决了这些问题。它本质上是一个集成了功率 MOSFET、限流比较器、过压比较器、热关断、故障锁存/自动重试逻辑的片上保险丝。关键动作时间在微秒到百微秒级比机械保险快得多。而且它是半导体器件没有打火、氧化、疲劳寿命问题动作上万次依然稳定。1.2 这颗芯片到底能干什么我说的 TPS259483AYWPR 具体型号外观是紧凑型封装内部包含以下功能可调限流通过一只外部电阻设定限流点从几十毫安到几安培都可以配置。过压保护外部电阻分压设定 OVP 阈值超过便立刻关断输出。浪涌电流控制配置软启动电容控制开启瞬间的电流爬升速率。故障输出FLT 引脚在过流、过压、热关断时拉低通知 MCU。使能控制EN 引脚支持高电平使能可与 MCU GPIO 直接相连。它的输入电压范围覆盖 2.7V 到 28V意味着 3.3V、5V、12V、24V 这些常见电源轨都能用是一款很典型的工业级 eFuse。下面表格是我在 24V 系统上规划的关键指标要求参数需求配置方式输入电压24V允许 10V~28V 波动直接接入 IN输出限流2A按限流公式选择 ILIM 电阻过压阈值26.5VOVP 电阻分压浪涌启动启动电流峰值 2.5ASS 电容故障响应过流/过压自动关断并通知 MCUFLT 引脚连接 PIC这个配置思路很直接电源轨本身是 24V但现场来自开关电源浪涌和纹波都不小所以 OVP 设在 26.5V 而不是卡在 24V避免正常波动下的误保护。2. PIC18F4680 在系统里的定位不是点缀是大脑2.1 为什么一定要单片机参与有人会问eFuse 自己就能保护电源干嘛还要单片机我最初也这么想。后来发现单靠硬件保护解决不了事后管理的问题。比如设备发生限流了是瞬时短路还是持续过载如果没有记录你只能判断坏了。多个电源通道要按顺序上电否则后级电路会误动作这需要可控的 EN 时序。现场需要远程复位而不是派人去重新上电。需要记录故障次数、故障时间用于预防性维护。这些需求只有 MCU 才能处理。PIC18F4680 是我常用的型号它有 4 个定时器、10 位 ADC、多个 IO 口、电平变化中断PORTB 的 RB0-RB7 可以触发中断而且 3.3V/5V 供电可选和 TPS259483AYWPR 的电平接口很友好。关键是它便宜、抗干扰能力强Flash 有 64KB足够放下这个项目的固件留出余量做扩展。2.2 硬件信号通路怎么规划我把整个系统的信号通路画成了如下的对应关系TPS259483AYWPR 的 EN 引脚 ← PIC18F4680 的 RB0输出TPS259483AYWPR 的 FLT 引脚 → PIC18F4680 的 RB1输入且使能电平变化中断TPS259483AYWPR 的 PGPower Good若有 → PIC18F4680 的 RB2输出分压电压 → PIC18F4680 的 AN0用于 ADC 监测限流电阻的电压可选 → PIC18F4680 的 AN1用于估算电流这里有个关键点FLT 引脚不能只连中断还需要通过一个 10kΩ 上拉电阻到 5V。因为 eFuse 的 FLT 输出通常是开漏结构只有上拉到 MCU 的电源电压它才能获得正确的高电平。我第一版设计忽略了导致 FLT 电平始终是 0误以为一直处于故障状态。这个小坑后面还会细说。另外PIC18F4680 的 I/O 口要设置为数字输入/输出并且使能弱上拉或者外部上拉。考虑到工业现场的干扰我在 EN 和 FLT 线上各串联了 100Ω 电阻做阻尼并加 10nF 的小电容到地形成简单 RC 滤波避免高频噪声引起误动作。3. 硬件电路设计参数计算不能拍脑袋3.1 输入输出电容与 TVS 的选择输入端的电容主要功能是抑制 THD 和维持能量但更重要的是尽量靠近 IN 引脚放置。我用了一只 10μF/50V 的 MLCCX7R并联一只 0.1μF 高频电容。输出端同样放 10μF/50V因为负载为电机驱动板时启动瞬间有较大电流需求。这里特别提醒MLCC 的直流偏压特性很坑。标称 50V 的 10μF 在 24V 下实际容量可能只有 60% 左右。所以我在设计时多并联了一路 4.7μF防止高压时电容量掉太多引起稳定性问题。如果你有空间可以用 X7R 或 C0G 介质避免 Y5V 这种温漂和偏压都很大的料。在输入端到地再放一只双向 TVS 管比如 SMBJ28A钳位电压约在 45V 左右可以吸收来自长电缆的瞬态浪涌脉冲。虽然 TPS259483AYWPR 本身有一定的耐受能力但外加 TVS 是第一道防线PCB 布局上要求 TVS 的走线尽量短直接跨接在输入端子和 GND 之间。3.2 限流电阻 ILIM 的计算过程限流值的设定是这套设计里最关键的一步。TPS259483AYWPR 的限流公式一般是[ I_{LIM} \frac{K}{R_{ILIM}} ]K 是芯片内部给出的系数具体数值要从数据手册里查。以我手里这颗芯片为例K 取 100000单位 A·Ω目标限流 2A则[ R_{ILIM} \frac{100000}{2} 50000Ω 50kΩ ]但直接用理论值的前提是库里的电阻精度足够。我建议选择 1% 精度的贴片电阻并且留出 10% 的余量。如果系统允许最大持续电流是 2A我会把限流点设在 2.4A 左右避免正常峰值一下就到极限。重新算[ R_{ILIM} \frac{100000}{2.4} ≈ 41667Ω ]这个值不是标准 E96 系列电阻实际选 42.2kΩ 或者 43kΩ 都行得到实际限流 2.37A 或 2.33A完全可接受。调起来麻烦的是限流电阻和芯片引脚之间不要加长走线。ILIM 引脚对噪声比较敏感走线长了容易捡拾干扰导致限流点漂移。我见过有人把 ILIM 电阻放在 5cm 外的板边结果限流值低了一半后来改成贴芯片旁边才好。3.3 过压阈值 OVP 的电阻分压过压保护的典型应用场景是 24V 输入采用电阻分压把输出电压按比例降到内部参考电压 1.2V。假设上分压电阻为 R1下分压电阻为 R2则[ V_{OVP} 1.2V \times \frac{R1R2}{R2} ]设定 V_OVP 26.5V。为了降低功耗分压电阻的总阻值取 100kΩ 级别。我取 R2 4.7kΩ则[ R1 \frac{26.5 \times 4.7k}{1.2} - 26.5 不行直接算[ \frac{R1R2}{R2} \frac{V_{OVP}}{1.2} \frac{26.5}{1.2} ≈ 22.08 ][ R1 R2 22.08 \times 4.7k ≈ 103.77k ][ R1 ≈ 99.07k ]取标准值 R1 100kΩ实际阈值[ V_{OVP} 1.2 \times \frac{100k4.7k}{4.7k} ≈ 26.74V ]在允许范围内。注意分压电阻的精度同样应选 1%因为 24V 系统中 1% 误差带来的阈值偏移约为 ±0.27V可以接受。若采用 5% 电阻阈值可能偏移到 25.5V 或 28V前者容易误跳后者可能保护不够。3.4 电平匹配3.3V 单片机用不了 5V eFuse 怎么办PIC18F4680 可以工作在 5V我用的是 5V 供电所以和 TPS259483AYWPR 的逻辑电平是匹配的。如果你的 MCU 是 3.3V需要注意 TPS259483AYWPR 的 EN 阈值可能高于 3.3V 的阈值区间。最简单的做法是加一个简单的 MOSFET 电平转换电路用一颗 N-MOS栅极接 MCU 的 EN 信号源极接地漏极接 eFuse 的 EN 并带上拉到 5V。MCU 输出高电平时 MOSFET 导通EN 被拉到 0禁用 eFuse输出低电平时 EN 被上拉电阻拉到 5V使能 eFuse。这种反逻辑在开关电源电路中很常见因为很多芯片 EN 内部是上拉到输入电压的需要拉低才能关闭。但注意 TPS259483AYWPR 的 EN 极性要看手册是高使能还是低使能。我用的配置是高使能所以更简单的选型是直接选用逻辑电平兼容的版本或者加一个二极管串联电阻做电平偏移。4. PIC18F4680 固件设计故障处理状态机4.1 初始化代码骨架PIC18F4680 的固件用 C 语言加 MPLAB XC8 编译器。初始化分三步时钟、IO、ADC/中断。// 配置端口 TRISBbits.TRISB0 0; // EN 输出 TRISBbits.TRISB1 1; // FLT 输入 TRISBbits.TRISB2 1; // PG 输入 LATBbits.LATB0 1; // 默认使能 eFuse // 使能 PORTB 电平变化中断 INTCONbits.RBIE 1; INTCON2bits.RBIP 1; // 高优先级 INTCONbits.PEIE 1; INTCONbits.GIE 1; // ADC 配置 ADCON1 0x0D; // AN0-AN1 作为模拟输入其余数字 ADCON0 0x01; // 选择 AN0 通道使能 ADC我习惯把 EN 设为默认有效因为单片机复位期间引脚是高阻态必须用外部 10kΩ 下拉/上拉电阻保证 eFuse 处于安全状态。我用了外部 10kΩ 上拉到 v5V这样即使 MCU 崩了电源默认也是接通的状态——大多数应用错宁可继续输出也不希望突然断电但这取决于实际场景如果你要Fail-Safe模式就改成默认断开并另设复位按钮。4.2 FLT 中断处理去抖与状态记录FLT 信号在故障瞬间拉到低但在实际现场会有毛刺。不能一进中断就立刻关设备我会做一个 20ms 的软件去抖void __interrupt(high_priority) high_isr(void) { if (INTCONbits.RBIF) { INTCONbits.RBIF 0; // 读取 FLT 和 PG 电平 if (!PORTBbits.RB1) { faultCounter; // 连续 3 次低电平才确认为真实故障 if (faultCounter 3) { faultConfirmed 1; LATBbits.LATB0 0; // 关闭 eFuse } } else { faultCounter 0; } } }这里要提一个重要细节FLT 只在故障期间是低电平如果该型号支持锁存模式FLT 可能持续保持低电平直到重新使能。我在实际应用中更倾向于使用非锁存模式让 eFuse 自动重试但前提是故障是瞬态的。配置锁存与否可以通过一个 MODE 引脚或者寄存器选项选择。建议对负载特性不明的情况先用锁存模式调试稳定后再切换成自动重试。另一个坑是PIC18F4680 的 RB0-RB3 在复用功能上各有差异RB1 同时也是外部中断 INT1但我选择用 PORTB 的电平变化中断而不是 INT1好处是所有 RB 引脚变化都可以触发比如以后 PG 引脚状态变化也会被捕捉到扩展性好。4.3 自动复位与控制策略有些故障是可通过复位恢复的比如负载短暂过流、浪涌引起的高压。设计了这样的控制逻辑故障发生后先关闭 EN延时 100ms。重新打开 EN并检测 FLT 是否恢复正常。如果 5 秒内又触发故障则关闭并记录故障次数。若故障次数超过 3 次停止重试输出常断并点亮故障灯/通过串口上报。实现代码如下简化版状态机typedef enum { ST_ENABLE, ST_WAIT_FLT, ST_DISABLE, ST_RETRY, ST_LATCH } state_t; state_t state ST_ENABLE; unsigned char retryCnt 0; while (1) { switch(state) { case ST_ENABLE: LATBbits.LATB0 1; state ST_WAIT_FLT; break; case ST_WAIT_FLT: if (faultConfirmed) { faultConfirmed 0; LATBbits.LATB0 0; state ST_DISABLE; } break; case ST_DISABLE: __delay_ms(100); if (retryCnt 3) { state ST_RETRY; } else { state ST_LATCH; } break; case ST_RETRY: retryCnt; LATBbits.LATB0 1; state ST_WAIT_FLT; break; case ST_LATCH: LATBbits.LATB0 0; // 永久关闭 // 记录错误码并上报 break; } }这里的重试延时 100ms 并非随便取的。eFuse 在故障后内部结温已经升高如果立刻重启可能热积累导致更快进入热关断。等 100ms 是为了让芯片温度下降同时也让后级电路放电完毕。如果你知道后级滤波电容很大比如 4700μF延时还需要更长例如 300ms否则重新上电时又触发浪涌保护。4.4 通过 ADC 实时监测输出状态除了数字逻辑我还会用 PIC18F4680 的 ADC 采样输出电压。TPS259483AYWPR 输出端经过一个 100kΩ/10kΩ 分压到 AN05V 参考对应 50V 量程实际 24V 输出时 ADC 读数约为 3.33V。采样频率不需要太高每 10ms 采一次即可。代码片段unsigned int read_voltage(void) { ADCON0bits.CHS 0; // 选择 AN0 ADCON0bits.GO 1; while(ADCON0bits.DONE); return ADRESH 8 | ADRESL; }如果在运行过程中发现电压跌落了 5% 以上同时 FLT 没有报故障很可能是负载短时大电流超过了限流点但 eFuse 还没来得及关断或者限流点设得过高。我通常在代码里加一条经验判断输出电压低于预期电压的 80% 时也主动切断输出形成软件过流保护。这个软件保护的精确度可以做校表用于监测堵转、异常负载很实用。5. 调试踩坑实录浪涌误触发、FLT 毛刺与布局雷区5.1 启动浪涌电流误判为短路第一个版本设计完上电测试发现只要带载启动eFuse 就立刻保护。用示波器抓电流波形发现启动瞬间电流峰值高达 4A而限流点设在 2.4A。后来查原因是因为输出端有 470μF 电容。虽然 eFuse 有内部软启动但我没有设定合适的 SS 电容导致启动斜率偏快。查阅数据手册SS 引脚外接电容值决定了开启时的 dI/dt。我原来的设计把 SS 电容留空等于用了默认最快的斜率。后来加了一颗 10nF 的电容启动电流峰值降到了 1.8A问题解决。经验是SS 电容的选择要结合输出电容大小。我总结了一个经验公式并不精确SS 电容 (nF) ≈ 输出电容 (μF) / 10。比如输出 470μFSS 电容取 47nF 左右。这个值只是起点最后用示波器确认。5.2 定时采样时的 FLT 毛刺导致误动作在电机启动瞬间FLT 引脚出现 10μs 左右的低电平毛刺虽然 PICC 已经做了 20ms 去抖但在第一次调试的时候我用的是立即响应导致系统频繁切断。后来增加去抖时间并确认毛刺来自 bldc 电机的地反弹。因为 eFuse 的 GND 和电机驱动板的地走线过长开关瞬间的地电位差被 FLT 检测到。整改办法是缩短地线同时在 FLT 引脚加 100nF 对地电容让噪声进一步被抑制。这也是为什么前面提到 FLT 线上要串电阻的原因串 100Ω 对地 10nF实测毛刺从 10μs 缩到不到 1μs完全不影响系统。5.3 PCB 布局的三个关键位置经过这一版调试我把 PCB 布局的核心心得总结为输入电容、输出电容、ILIM 电阻必须放在和芯片同一面且紧靠引脚回路越小越好。FLT、EN 信号远离功率走线尤其是输出端的高频纹波线。芯片底部散热焊盘要打满过孔并连接到功率地平面否则热关断频繁限流值也会随温度漂移。我有一次把 eFuse 放在板角散热焊盘没有过孔实际连续带 2A 负载不到五分钟就热关断。加了散热过孔和局部铜箔后同样的负载温度下降了 25℃ 左右表现非常明显。5.4 反向电流与负载断开瞬间的负压有些感性负载在断开瞬间会产生反向电动势可能从 OUT 端倒灌能量到 eFuse。TPS259483AYWPR 内部是否集成了反向电流阻断要看具体版本。我的负载是直流电机在 PWM 驱动时续流路径可能造成输出端电压高于输入端。应对方法是在 OUT 端到地加一个反向二极管提供续流通道。如果器件支持输出到输入反向阻断功能可以启用避免倒灌打穿芯片。这一条容易被忽略尤其是纯容性负载基本没事但一接继电器、电磁阀、电机就必须考虑。6. 从 24V 工业现场到 5V 嵌入式系统的移植经验6.1 改变电压量级时参数计算表这套方案不只适用于 24V。我做蓝牙网关时用 5V 供电同样用 PIC18F4680 和 TPS259483AYWPR 做 USB 端口保护。只需改动几个参数参数24V 工业板5V 嵌入式板输入电压24V5V过压阈值26.5V ~ 28V5.5V限流点2A1ASS 电容47nF输出 470μF10nF输出 100μFTVS 管SMBJ28ASMBJ6.0AOVP 计算按照同样公式目标 5.5VR24.7kR1≈24.9k取 24.9k 标准值。限流电阻按公式 K/2 50kΩ。整体思路完全一致。6.2 多路电源路径保护共享单片机管理工业设备往往不止一路供电比如模拟板、数字板、通信板分开供电。我做过一个 4 通道保护模块每路用一片 TPS259483AYWPR所有 FLT 输出通过 74HC244 缓冲后接到 PIC18F4680 的额外 IO 口EN 则由 PIC 的四个 GPIO 分别控制。这种架构下PIC 实现了时序上电和故障隔离。代码里一张小的配置表管理每一路的使能顺序通道上电延时限流故障后动作CH1 模拟板0ms0.8A锁存CH2 数字板50ms1.2A重试 3 次CH3 通信板100ms0.5A锁存CH4 电机驱动150ms3A锁存这个功能用普通 MCU 就能做得很顺关键是每一路要独立供电避免一路故障影响其他通道。6.3 通信上报与日志记录让保护更有价值PIC18F4680 自带 UART 模块我用一个串口把故障记录发到上位机格式很简单[HEARTBEAT] VIN23.9V CH1OK CH2OK [FAULT] CH3 OVERCURRENT, retry2 [RESET] CH3 recovered这些日志存在 Flash 或 EEPROM 里供现场排查。有了故障历史你才能知道是周期性峰值导致还是长时间过载对于产品迭代很有帮助。7. 扩展思路把 eFuse 保护做成标准的电源管理单元如果你的产品不止一个电源轨完全可以在此基础上做一个小型的电源管理单元板卡把 TPS259483AYWPR 和 PIC18F4680 的通用性发挥出来。我目前在做的事情就是把 3.3V、5V、12V、24V 四类电源轨各自独立保护再由 PIC 统一控制上电时序和故障策略。这样一套方案既能应对工业环境的瞬态冲击又能给嵌入式系统提供精确的电流限制后续还可以在这个基础上增加 I2C 或 CAN 通信接口把电源状态上传到总控制台。在具体实现时有一个细节值得注意不同 eFuse 型号的特性会有差异比如电流限制精度、OVP 阈值范围、是否支持反向阻断都要以对应的数据手册为准。我在文中提到的电阻计算公式和引脚功能都是基于 TPS259483AYWPR 的典型应用实际项目里一定要手算一遍并用样机实测验证。最后分享一个我觉得最有价值的调试习惯上电之前先把 ILIM 限流点调到理论值的一半TLV 电压调高一点排除误保护问题等电路稳定后再逐步逼近目标值。这样能在早期把短路少烧几块板子。电源路径保护这种东西平时不起眼但关键时刻能救一块板子也能救一次现场交付。希望我的这些踩坑经验能帮你少走弯路做出一版可靠的电源保护设计。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑