ARTICLE DETAIL

资讯详情

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

eFuse与PIC协同的工业电源路径保护设计实战

eFuse与PIC协同的工业电源路径保护设计实战 做嵌入式的朋友应该都遇到过这种局面功能逻辑调试得好好的样机却会在某个早晨不明不白地烧掉。十次里有八次问题不在 CPU、不在传感器而在电源路径——上电瞬间的浪涌、热插拔时的打火、负载短路时的过流任何一个都能让一块板子报废。今年我负责一块工业监控子卡的电源管理部分输入是典型的 24V 工业总线后端带着通信模块、传感器和一片做逻辑控制的单片机。选型最终落在两颗器件上TI 的 TPS259483AYWPR集成式电子保险丝负责电源路径保护和 Microchip 的 PIC18F87J11负责策略、监控和上报。这个组合不算花哨但把“模拟层的快速保护”和“数字层的智能管理”分得很清楚浪涌、过流、过压这些微秒级的事件交给 eFuse 的模拟环路单片机只做它擅长的状态管理、测量与通信。这篇文章把整个项目从选型评估、参数计算、原理图设计到固件状态机、实测波形和踩坑记录完整整理了一遍。适合正在做嵌入式和工业板卡的工程师参考也适合想深入了解“为什么电源路径要单独做保护”的同行阅读。1. 项目背景与整体设计思路1.1 为什么工业设备必须认真对待电源路径工业现场不是实验室里那条干净的直流电源线。24V 总线上经常并联着继电器、接触器、电机驱动器甚至变频器这些设备一动作母线电压就会出现几十伏的尖峰或明显的跌落。再加上线缆往往走得很长分布电感也不小热插拔板卡时连接器上会产生电弧和振荡。这些情况对后面的 DC-DC、接口芯片和传感器来说都是实实在在的威胁。另一个常被低估的问题是上电浪涌。板卡上往往有几十到几百微法的电容尤其是 DC-DC 输入侧的储能电容。输入端一上电这些电容瞬间充电充电电流可以轻松超过正常工作电流的十倍。如果板卡是在机箱背板上热插拔的这个浪涌会在连接器针脚上拉出电弧烧蚀触点甚至把背板上的其他模块电压拉低导致整机复位。短路就更不用说了。没有保护时短路电流只受线阻和电源内阻限制几十安培的电流足以把 PCB 走线烧成炭把连接器烧变形。传统保险丝虽然能断开但响应速度慢动作后有更换成本而且不能做到精确的电流阈值控制。如果把电源路径比作家里的配电箱普通保险丝是那种只能烧一次的老式保险丝而 eFuse 就是可以自动恢复、可以整定电流、还能告诉主人“我为什么跳闸”的空气开关。TPS259483AYWPR 这类器件把过去需要用采样电阻、比较器、MOSFET、驱动电路才能实现的保护功能全部集成到一颗芯片里反应时间从毫秒级缩短到微秒级这正是工业板卡最需要的东西。1.2 模拟保护器件与微控制器的分工很多工程师的第一个想法是“用单片机做保护”ADC 采样电流超过阈值就关断。这个想法在低速场景能跑但到了电源保护这个层面就危险了。单片机 ADC 采样加软件判断一个周期最快也要几十微秒到几百微秒而且这个时间还会被中断、任务调度影响具有不确定性。工业现场的故障可是不讲情面的短路电流在几微秒内就能把管子击穿软件根本来不及反应。所以这套方案的第一个原则是保护交给模拟器件管理交给单片机。TPS259483AYWPR 内部的电流限制环路、过压比较器、反向电流比较器都是纯硬件实现的响应时间用微秒计而且和固件是否跑飞没有任何关系。也就是说哪怕 PIC18F87J11 被一个 bug 卡死电源路径依然处于受保护状态。这一点在工业项目中非常重要因为它满足“失效安全”的基本要求。PIC18F87J11 的角色是“策略层”。它负责在系统启动时决定何时使能电源路径运行中通过 IMON 引脚持续观察负载电流通过分压电阻观察输入输出电压收到 FLT 故障信号后记录事件、执行重试或锁存并通过 UART 把状态上报给上位机。这样分工之后每一层都很简单也都很好验证模拟层用示波器和电子负载测数字层用串口和状态机测。1.3 方案选型为什么是 eFuse 而不是分立器件做这个项目之前我也认真比较过几种方案。最传统的做法是保险丝成本低但功能太弱既不能精确限流也没有故障指示换一次要拆机。分立方案是“采样电阻 电流检测放大器 比较器 PMOS/NMOS 驱动”这在我之前的一个设计里用过性能可控性不错但占用面积大而且功率级、采样、比较、驱动之间的稳定性和温度补偿全靠自己调开发周期明显拉长。智能高边开关比如常见的 BTS 系列也能做保护但电流阈值、软启动时间等参数大多固定可调性不如 eFuse 灵活。相比之下TPS25948x 系列属于专用 eFuse限流点、软启动斜率、过压阈值都可以用外围电阻电容配置还能输出 IMON 电流镜像信号给单片机非常适合“既要可配置又要实时监控”的场景。我选的是 TPS259483A 子型号封装是 YWPR 代码对应的 WQFN 小封装。这个封装在 PCB 上非常省地方但散热全靠底部焊盘和过孔后面布局章节会重点说。至于单片机选 PIC18F87J11很多人可能会问“这都什么年代的 8 位机了”。选它的原因很朴素资源够用、外设丰富、供货稳定、生态成熟。对于一块电源管理子卡128KB Flash、接近 4KB RAM、16 路 10 位 ADC、两路 EUSART、两路 MSSP完全够了没必要上复杂的 32 位平台增加认证和维护成本。安全、够用、可控是我在工业项目中选型的第一原则。2. 核心器件与关键参数逐项拆解2.1 TPS259483AYWPR 的电源保护功能拆解TPS259483AYWPR 属于 TI 的 TPS25948x eFuse 系列基本工作条件是 2.7V 到 18V 输入最大连续电流可到 8A内部功率 FET 的导通电阻典型值在 3 毫欧左右。这颗芯片实际上是把一整条“电源保护链路”做进了单片封装里集成的 MOSFET 是主开关电流限制比较器负责短路和过流功率限制环路负责在输出短路时限制管子上的功耗UVLO 和 OVP 比较器负责电压窗口反向电流比较器负责防止输出侧倒灌另外还有故障计时器、软启动斜坡控制和 IMON 电流镜像输出。逐一展开说。限流是 eFuse 最核心的功能通过 ILIM 引脚外接电阻设定。正常运行时路径阻抗很低导通损耗很小一旦输出电流达到设定值内部环路会控制 FET 线性导通把电流钳在设定值附近而不是像保险丝那样被动发热后再熔断。功率限制环路则是在输出短路时发挥作用那时输出电压很低如果只限流不管功率管子上的功耗会非常大功率限制环路会把电流进一步线性回折避免 FET 过应力。这个特性在“输出大电容 后级 DC-DC”的组合下特别有用。软启动是通过 dv/dt 引脚接电容实现的控制 VOUT 的上升斜率。斜率越慢对输入侧的浪涌冲击越小热插拔时连接器越安全。OVP 和 UVLO 功能则保证只有输入电压落在合理窗口内才允许输出。反向电流保护解决的是“输出侧电压高于输入侧”的场景比如电机回馈、双电源热备份时防止电流从输出端倒灌回输入端。FLT 是开漏故障输出任何故障触发后都会拉低这个信号直接接到单片机中断引脚用于记录和决策。IMON 引脚输出与负载电流成比例的电流外部接电阻后变成电压供单片机 ADC 读取这样负载健康状况就实时可见了。下面这张表把主要功能、对应引脚和设计时的设置方式整理了一下写代码和画原理图时可以对照着看功能实现方式设计时的处理限流保护ILIM 引脚接电阻设定阈值按负载峰值电流留 1.2~1.5 倍裕量软启动/斜率控制dv/dt 引脚接电容按输出电容大小折中浪涌与启动时间UVLOEN/UVLO 引脚分压设定允许工作的最低输入电压OVP分压连接至 OVP 引脚阈值低于后级电路最高耐压故障计时ITIMER 引脚接电容大于正常启动时间避免误触发故障输出FLT 开漏输出上拉到 3.3V接 MCU 中断电流监测IMON 电流镜输出外接电阻转电压进 ADC2.2 PIC18F87J11 的控制角色PIC18F87J11 是一颗 80 引脚的 8 位单片机程序存储器 128KBRAM 接近 4KB最高可以跑到 48MHz换算成 MIPS 是 12 兆指令每秒。外设方面10 位 ADC 带 16 个通道两路 EUSART、两路 MSSPSPI/I2C 可配置、多路定时器还有 nanoWatt XLP 低功耗技术。对一块电源管理子卡来说这套外设列表几乎是量身定做的。ADC 用来采样 IMON 和输入输出电压分压EUSART1 用 Modbus 类协议和上位机通信EUSART2 留作调试日志输出MSSP 挂了一颗外部 EEPROM 存事件记录定时器提供 1ms 系统时基WDT 看门狗防止固件跑飞GPIO 控制 EN、读取 FLT、驱动状态指示灯。引脚分配情况我在设计时做了张表贴在工作台上也整理在下面PIC18F87J11 引脚方向连接目标用途AN0A/D 输入IMON 经 RC 滤波负载电流实时监测AN1A/D 输入VIN 分压输入电压监测AN2A/D 输入VOUT 分压输出电压监测RB0/INT0中断输入FLT 上拉后接入故障事件捕获RC0输出eFuse EN使能/关断电源路径UART1 TX/RX异步串口上位机状态上报与指令下发UART2 TX异步串口调试终端日志输出I2C1 SDA/SCL双向AT24C02事件存储RC1~RC3输出LED 灯状态指示为什么坚持用 8 位机因为保护逻辑本质上是一个状态机加几个采样任务对计算能力要求很低反而是串口、中断、低功耗这些“外围体验”更重要。PIC18F87J11 在这方面的积累非常成熟XC8 编译器编译出来的代码稳定片上资源不会被浪费而且这颗料在工业渠道里流通量大交期和价格都让人放心。对于追求长期供货和可维护性的工业产品这比追新芯片更稳妥。2.3 信号链与电气接口注意事项信号链是这套设计里最容易出问题的地方。FLT 是开漏输出必须外接上拉电阻我把上拉接到 3.3VPIC 的 VDD阻值选 10kΩ。IMON 输出的是电流信号外部电阻转成电压后进入 ADC但在进入电阻之前我先加了一级 RC 低通滤波用 1kΩ 电阻串联加 10nF 电容到地截止频率大约 16kHz专门滤掉开关电源带来的高频噪声。EN 引脚由 PIC 的 GPIO 控制。启动时PIC 先完成自检确认 VIN 在合理范围、FLT 没有触发然后再把 EN 拉高让电源路径开始软启动。为了防止 GPIO 在单片机上电瞬间的随机输出状态导致误开 MOSFET我在 EN 线上加了一个 100kΩ 下拉电阻同时串了一个 1kΩ 限流电阻。这样即使 PIC 还在复位eFuse 也不会被意外打开。还需要注意电平参考地的一致性问题。TPS259483AYWPR 的 IN、OUT、EN、FLT、IMON 都以电源地为参考PIC18F87J11 的电源也是从这块电源地取下来再稳压的所以两者共地没问题。但如果你的板卡里还有其他隔离区域比如隔离 CAN 或隔离串口隔离侧的信号绝对不能直接接到 eFuse 的引脚上必须经过数字隔离器。这个坑我在另一个项目里踩过隔离侧毛刺直接灌进来导致 FLT 误触发排查了很久才发现是隔离泄放电容导致的共模问题。3. 硬件设计实操从原理图到 PCB3.1 电源架构与电路拓扑整个电源架构可以分成四段。第一段是输入防护24V 工业总线进来之后先经过一个 TVS 管吸收浪涌尖峰再经过一个极性保护二极管虽然 eFuse 本身有 OVP 功能但 TVS 的存在可以避免长时间过压把 eFuse 内部环路推到极限。第二段是 TPS259483AYWPR 本体它的 IN 脚接输入OUT 脚接输出中间就是那条受保护的电源路径。第三段是输出储能和滤波包括输出电容和后续的 DC-DC 转换器。第四段才是 PIC18F87J11 所在的 3.3V 数字域由一个低功耗 LDO 从 5V 转下来。把 eFuse 放在 DC-DC 前面而不是后面是刻意为之。因为 DC-DC 输入侧的电容在冷态上电时是最主要的浪涌来源eFuse 挡在它前面就能把它充电的过程变成受控的软启动过程。如果你把保护放在 DC-DC 后面前面的浪涌和短路反而保护不到就失去了意义。后级如果有多个负载分支比如两组传感器、一个通信模块可以在各自的 5V 或 3.3V 上再加负载开关由 PIC 单独控制这样某个分支短路时不会连累整个系统。输入电容的选择也值得一提。我在 IN 脚附近放了 10µF/50V 的陶瓷电容加 0.1µF 高频去耦输出侧放了 100µF/35V 的电解电容加 0.1µF 陶瓷电容。这里有个矛盾输出电容越大短路时 eFuse 放出的能量越大故障计时需要越长输出电容越小后级 DC-DC 的输入瞬态稳定性越差。实际值需要在软启动斜率和后级需求之间来回试我的做法是先按手册推荐值起步然后用电子负载做短路实验逐步调整。3.2 关键参数计算限流、软启动与过压阈值这一节给的是我当时实际的计算过程和最终取值具体数值依赖 TPS25948x 数据手册里的曲线和公式大家参考思路就好不要直接照抄电容电阻值。第一步是确定限流点。我的负载最大稳态电流约 3.5A启动时 DC-DC 和负载的瞬态电流会超过稳态值所以限流点取 4.5A是稳态电流的 1.3 倍左右。根据数据手册里 ILIM 引脚电流阈值与外部电阻的关系曲线4.5A 对应的电阻大约是 13kΩ我选了精度 1% 的 13kΩ焊好后用电子负载校准实测限流点在 4.4A 到 4.6A 之间符合预期。第二步是软启动斜率。输出侧电容约 200µF电解加陶瓷如果斜率太快充电电流会撞上限流点造成高压差大电流伤害 MOSFET。我按手册给出的 dv/dt 引脚充电电流典型值约 2.5µA 来计算若接 4.7nF 电容输出斜率大约是dv/dt I_dv/dt / C_dv/dt 2.5µA / 4.7nF ≈ 0.53 V/ms24V 输出电压爬满大概需要 45ms。这个速度让充电电流只有 200µF × 0.53V/ms ≈ 106mA远低于限流值热插拔时连接器几乎看不见火花。缺点是启动时间变长但对于工业监控子卡45ms 完全可接受。如果你在做的是需要快速启动的设备可以把电容减小到 1nF斜率会提高到 2.5V/ms但要注意浪涌电流会相应增加。第三步是故障计时。eFuse 的短路保护通常有一个计时窗口防止启动瞬间的充电电流被误判为故障。这个窗口时间由 ITIMER 引脚电容决定。我的启动时间约 45ms再留一倍余量把故障窗口设定在 100ms 左右最终选了对应这个时长的电容值。窗口太长也不好真正的硬短路时eFuse 会在这个窗口内维持限流而不是立刻关断窗口过长意味着故障能量更大。第四步是 OVP 阈值。后级 DC-DC 的输入最高耐压是 36V所以 OVP 阈值取 32V。分压比计算很简单内部 OVP 比较器参考电压大约 1.2V那么 Rtop / Rbottom (32V - 1.2V) / 1.2V ≈ 25.7。我选了 499kΩ 和 19.6kΩ 的组合并且在上分压电阻两端并联了一个 1nF 的电容滤掉 VIN 上的高频毛刺防止继电器动作时产生的尖峰误触发 OVP。最后是 UVLO。我希望 VIN 低于 10V 时不要企图启动电源路径低于 9V 时强制关断避免后级在欠压状态下工作。通过 EN/UVLO 引脚的分压电阻设定这两个阈值实际计算时看手册里的 UVLO 迟滞参数我这里选择约 8V 的表决值确保在 10V 以下是完全禁止输出的。把这些参数整理成一张表画原理图时对照填参数设计目标关键取值限流点4.5AR_ILIM ≈ 13kΩ (1%)软启动斜率≈0.53V/msC_dv/dt 4.7nF故障计时窗口≈100msC_ITIMER 按手册选择OVP 阈值32V分压 499kΩ / 19.6kΩ并联 1nFUVLO 启动点10V 以上允许EN/UVLO 分压电阻设定3.3 PCB 布局与布线要点电源板的布局本质上是在管一条“能量走廊”电流从输入端进来经过 FET从输出端出去。这条走廊上的每一个电阻、过孔、拐弯在 4A 电流下都可能变成发热点。我在 1oz 铜厚的两层板上把主功率路径走线宽度做到 3mm 以上并且铺铜面积尽量加大如果层数允许最好是上下两层用多个过孔缝合形成完整的电流通道。WQFN 封装的散热是重点。TPS259483AYWPR 底部有一个大焊盘这个焊盘必须焊接到 PCB 的铜皮上才能在满载时把热量导走。我在这块铜皮上打了 4×4 排列的 0.3mm 过孔阵列过孔接到背面的大面积铺铜同时背面铺铜尽量延伸到散热区域。焊好后用热像仪看过常温 3A 负载下芯片表面温度稳定在 65℃ 左右温升可以接受。如果散热处理不好这个数字可能会高出 20℃ 以上限流点会提前触发系统会莫名奇妙地“降功率”。输入输出电容的摆放也有讲究。输入电容必须紧贴 IN 引脚输出电容紧贴 OUT 引脚中间不要穿过多余的过孔否则寄生电感会让 eFuse 内部的开关瞬间产生电压尖峰直接影响限流环路的稳定性。IMON 信号属于模拟小信号要走短线并且远离功率输出铜皮和 DC-DC 的电感区域。FLT 和 EN 这类控制信号虽然不敏感但最好加 100Ω 串联电阻起到简单的 EMI 滤波作用。还有一件事只有踩过坑才会注意在板子上留足够的测试点。VIN、VOUT、ILIM 引脚电压、IMON 电压、FLT、EN每个信号都要拉一个测试点出来。调试电源板必然要示波器探头的没有测试点就只能拿探头去戳芯片引脚不仅危险还容易短路。这个习惯帮我省了无数时间。4. 固件实现与项目落地4.1 系统状态机与运行流程保护功能在硬件层完成固件只负责“什么时候开、什么时候关、出了问题怎么办”。这段逻辑如果不用状态机几轮迭代之后一定变成一团乱麻。我画了一个非常朴素的状态机只有六个状态POWER_ON、CHECK、ENABLE、RUNNING、FAULT、RETRY_WAIT、FAULT_LATCH。实际项目里没有用任何图形工具就在代码里用枚举加一个 switch 实现。上电后PIC 先做自检读取 EEPROM 里保存的配置和上次故障记录这叫 POWER_ON 状态。然后进入 CHECK这个状态下 PIC 通过 ADC 读 VIN 分压确认输入电压在允许窗口内同时检查 FLT 引脚是否为高无故障。如果一切正常进入 ENABLE把 EN 引脚拉高eFuse 开始软启动。软启动期间 PIC 观察 IMON 和 FLT一旦 FLT 拉低立刻进入 FAULT。RUNNING 是正常运行态PIC 周期性地采样 IMON、VIN、VOUT每 100ms 通过 UART 上报一次状态同时保持对 FLT 中断的监听。FAULT 状态下PIC 先记录事件时间、故障前电流、输入输出电压然后决定是进入 RETRY_WAIT 还是 FAULT_LATCH。我的策略是前 3 次故障允许间隔 1 秒重试超过 3 次就锁死必须由上位机发命令或人工断电才能恢复。这个策略看起来简单但实际很有效启动瞬态引起的假故障一般重试一两次就过去了而真正的硬故障不会因为重试而消失锁死可以避免反复冲击。整套状态机的核心代码如下逻辑非常直白typedef enum { ST_POWER_ON, ST_CHECK, ST_ENABLE, ST_RUNNING, ST_FAULT, ST_RETRY_WAIT, ST_FAULT_LATCH } sys_state_t; sys_state_t st ST_POWER_ON; void state_machine_tick_1ms(void) { switch (st) { case ST_POWER_ON: // 自检、读配置 if (self_test_ok()) st ST_CHECK; break; case ST_CHECK: if (vin_in_window() flt_pin_high()) st ST_ENABLE; else if (flt_pin_low()) st ST_FAULT; break; case ST_ENABLE: en_pin_write(1); soft_start_progress 0; st ST_RUNNING; break; case ST_RUNNING: // 在采样函数里刷新 IMON/VIN/VOUT if (fault_flag) st ST_FAULT; break; case ST_FAULT: log_event(EVT_FAULT, fault_reason); en_pin_write(0); retry_count; if (retry_count 3) { st ST_FAULT_LATCH; } else { st ST_RETRY_WAIT; } break; case ST_RETRY_WAIT: if (retry_wait_elapsed()) st ST_CHECK; break; case ST_FAULT_LATCH: // 等待上位机 clear 命令 break; } }4.2 PIC18F87J11 关键外设配置与驱动思路PIC18F87J11 的 ADC 是 10 位分辨率对于 IMON 这种需要相对值而非绝对精度的信号完全够用。我在采样上做了一点处理每 10ms 采一次 IMON取最近 8 次平均值这样既平滑了纹波又不会让 CPU 陷入持续等待。ADC 的参考电压直接用 VDD因为 IMON 的分压电阻链条也是以 3.3V 为参考的省掉外部基准一致性反而更好。FLT 中断用 INT1 实现配置为下降沿触发。ISR 里不做复杂操作只做两件事把 fault_flag 置位把当前系统 tick 值记录下来。真正的状态迁移放在主循环的 1ms tick 里处理避免在中断里调用任何带有不确定性的函数。看门狗我开了 4 秒在主循环结尾清零这样即使某个任务卡死系统也能自动复位并进入 CHECK 而不是僵在那里。UART 我用 115200 波特率8N1接收采用环形缓冲区加状态机解析。PIC18F87J11 的 EUSART 带硬件字节接收中断每收到一个字节就存入环形缓冲主循环里再逐字节处理成完整命令帧。这个结构和大部分单片机项目的处理方式一致移植性很好。值得提醒的是CRYSTALLESS 版本或使用内部振荡器时波特率误差可能偏大通信不稳时先用示波器看 TX 脚波形确认每一位宽度是否符合预期。一个典型的 FLT 中断处理和主循环 tick 如下void __interrupt() isr(void) { if (INT1IF_bit) { fault_flag 1; fault_tick sys_tick; INT1IF_bit 0; } if (TMR0IF_bit) { sys_tick; state_machine_tick_1ms(); TMR0IF_bit 0; } }这段代码没有在中断里做任何延时或打印所有的决策都发生在主循环的稳定上下文里。这不仅是风格问题更是可靠性问题电源板最怕中断里出现重入或者长阻塞一个 10ms 的延时函数出现在 ISR 里就意味着故障响应延迟 10ms这在短路场景里是致命的。4.3 监控、告警与主机通信上位机通信我选了一个很简化的 Modbus 风格协议帧格式固定为地址、长度、命令、数据、CRC16。命令表设计得很小因为功能就那么多查询状态、查询实时电流电压、清除故障锁存、修改重试次数、手动开关输出。用固定协议而不是裸串口发字符串是因为工业现场总有干扰裸字符串很容易被一个误码搞成歧义而带 CRC 的帧可以明确判别丢帧或者坏帧出错时直接丢弃即可。帧格式0xAA 0x55 LEN CMD DATA...[LEN-2] CRC16_L CRC16_H例如上位机下发 0xAA 0x55 0x03 0x01 0x00 0x00 CRC表示“查询实时状态”板卡回 0xAA 0x55 0x09 0x81 状态字 IMON_H IMON_L VIN_H VIN_L VOUT_H VOUT_L CRC。每帧最多 20 字节115200 波特率下单帧往返不到 2msPLC 或者上位机轮询完全够用。日志功能帮了我大忙。系统把最近 8 条事件写进外挂的 AT24C02事件内容包括状态迁移、故障原因、故障环境值。调试阶段发现“无缘无故”的故障时查日志往往比盯示波器更高效。方案定版前的两周里我靠着日志在凌晨发现一个规律故障总出现在继电器吸合的时间点附近后来定位到是 VIN 线上的毛刺触发 OVP。如果没做日志这种偶发现象可能要在现场靠运气才能复现。LED 指示也做了简单但明确的三态绿色常亮表示正常运行黄色闪烁表示正在重试红色常亮表示锁存故障。这套灯码规则写进了产品手册现场维护人员不需要串口工具也能判断板卡状态。5. 实测记录与问题排查实录5.1 正常上电与故障注入实测所有参数定下来之后我在实验室做了一轮完整的故障注入测试。测试环境是台式可调电源、电子负载、100MHz 示波器加电流探头以及一块用来模拟热插拔的带电背板测试台。正常上电的波形很干净EN 引脚被拉高约 2ms 后VOUT 开始线性上升实测斜率约 0.5V/ms和计算值吻合。IMON 对应的电流在软启动期间只有约 100mA没有出现浪涌尖峰24V 输出在 45ms 左右爬满期间 FLT 始终为高。后级 DC-DC 在 VOUT 超过 7V 后开始正常工作5V 和 3.3V 电源平稳建立。短路过流测试更有意思。我用电子负载直接把输出短路示波器捕获到电流先快速冲高随后被限流环路钳在 4.5A 附近VOUT 随之塌陷然后 FLT 拉低FET 关断电流归零。整个过程从短路瞬间到 FLT 拉低大约 5µs远快于任何软件响应。这验证了当初“保护不依赖单片机”的设计原则——同样的场景如果等软件去判断至少需要几百微秒FET 可能已经热穿了。过压保护和欠压测试也顺利VIN 调到 31.5V 左右 OVP 动作VOUT 关断VIN 降到 9.5V 左右 UVLO 动作反向倒灌测试时我在输出端外接一个高于输入的电压源eFuse 迅速关断路径电流表读数归零。热插拔测试做了 200 次循环连接器触点没有明显烧蚀痕迹母线上其他模块没有出现复位。整体测试结论保护动作可靠、参数符合设计值、系统可长期运行。5.2 常见问题速查表调试过程中积累了不少“看起来诡异、实际有规律”的问题整理成速查表放在项目文档里这里分享出来现象可能原因排查与解决方法上电时 FLT 反复触发软启动斜率太快充电电流撞上限流点或故障窗口太短增大 C_dv/dt把启动斜率降到 0.5V/ms 以下增大 ITIMER 电容3A 负载下芯片发烫、提前限流散热焊盘虚焊或过孔不足芯片温度过高补散热过孔阵列检查 WQFN 焊盘焊接质量IMON 读数跳动超过 ±10%IMON 走线耦合了 DC-DC 开关噪声缩短 IMON 走线加 RC 滤波输出侧加去耦继电器动作时 OVP 误触发VIN 线上感应尖峰超过阈值扩大 OVP 分压电容到 1nF或提高 OVP 阈值PIC 在重负载切换时复位3.3V 电源跌落超过 BOD 阈值加大 3.3V 储能电容检查 LDO 输入电容UART 通信偶发乱码波特率偏差或地电位差示波器看波形校准内部振荡器确认共地热插拔仍有可见火花输入电容过大或 eFuse 未处于最前端减小输入电容确保保护在电源入口每条都是我实际碰到过的。比如第四项当时日志里记录的全是 OVP 故障一开始我以为是 eFuse 本身问题后来用示波器长时间挂在 VIN 上终于抓到继电器闭合瞬间的 28V 尖峰而阈值是 32V按理不该触发。再细查发现分压电阻焊盘旁边有一条高频走线耦合出来的噪声叠加在采样点上把有效电平推过了阈值。给上分压电阻并联 1nF 电容后问题彻底消失。这说明排查问题的关键是先有日志定位方向再用示波器验证现场而不是一上来就怀疑芯片。5.3 实测后的体会与扩展思路项目收尾后回头看最大的体会是“分层”的价值。模拟层的 eFuse 负责快速保护和参数限幅数字层的 PIC18F87J11 负责策略和可观测性两者各司其职谁也不替代谁。这个认知让我后来做其他电源类项目时少走了很多弯路永远不要在固件里做需要“及时”的保护但一定要在固件里做“聪明”的管理。另外一个很实际的建议是量产前的每一块样机都尽量保留手动使能跳线。我最初的设计里 EN 只受 PIC 控制结果有一次固件升级失败导致 PIC 一直锁死在复位状态电源路径也跟着没法打开只能拆板子短接 EN 到 VIN 才能恢复。后来我在 EN 线上并联了一个 2pin 跳线帽位置默认短接由 PIC 控制调试时拔掉跳线就能手动强制关断。这个改动成本几乎为零却避免了无数尴尬。这套架构后续还有不少扩展空间。如果现场需要动态调整限流点可以考虑选 I2C 可编程配置的 eFuse 版本如果要做双电源冗余可以再加一颗 eFuse 做 ORing由 PIC 监控两路供电的健康状态通信协议也可以从简化 Modbus 升级成标准 Modbus RTU这样 PLC 可以直接轮询板卡参数。年后我准备把同样的架构移植到一个 12V 电池供电的手持设备上届时再把低功耗状态和软启动策略单独调一轮。这就是电源路径保护的典型玩法硬件守住底线固件提供智能两者合起来才是一块让人睡得着觉的工业板卡。
返回列表