尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

eFuse+MCU工业电源入口保护方案:从TPS259483到PIC18LF45K40的实战设计

eFuse+MCU工业电源入口保护方案:从TPS259483到PIC18LF45K40的实战设计 做嵌入式、工控板这一行最烦的就是电源入口出问题。前两年我做过一个工业传感器节点12V 母线进来后面带着 MCU、RS-485 收发器和一堆外设最初用的是保险丝加 TVS 加 PMOS 防反接的老三样结果一次现场短路保险丝烧了用户直接拆回来返修拆开一看连 PCB 铜箔都黑了。后来重新设计换成了 TPS259483AYWPR 这颗电子保险丝配合 Microchip 的 PIC18LF45K40 做管理才算是把电源路径保护这件事做得比较体面。这篇文章就围绕这套方案把选型逻辑、电路设计、固件配合和实际调试中踩过的坑完整过一遍给正在做嵌入式或者工业电源入口保护的朋友一个可以直接抄作业的参考。先说我为什么会被这套组合吸引。eFuse 这类器件在消费电子里已经很常见了但工业现场电源路径要面对的情况更恶劣热插拔、感性负载反电动势、母线电压漂移、浪涌电流、甚至操作工误接电源。传统分立方案不是不能做但故障类型多、器件分散、阈值分散性大再加上没有状态输出出问题只能靠万用表一点点量。TPS259483AYWPR 把过流、过压、欠压、热关断、缓慢启动这些东西集成在一个封装里而 PIC18LF45K40 负责策略层——什么时候允许上电、故障发生后怎么处理、要不要重试、状态怎么上报。硬件做快速响应软件做决策记录这个分工恰恰是嵌入式系统里最顺手的结构。1. 方案的整体思路为什么是 eFuse 加 MCU 而不是分立电路1.1 工业电源入口到底在防什么很多人觉得电源路径保护就是加个保险丝这是把问题想简单了。作为一个从现场维护那边吃过苦头的过来人我列几个真实场景第一热插拔。板卡在带电状态下插拔输入端子会产生很大的 dV/dT寄生电容被瞬间充电电流尖峰能到几十安培。第二负载突变。电磁阀、继电器、电机这类感性负载在开关瞬间会产生反电动势直接反向冲击电源端。第三电源自身的不干净。工业现场经常是 24V 开关电源并联供电别人家设备一短路母线上就是一次剧烈跌落或尖峰。第四用户乱接正负极接反或者接入过高电压这在现场一点都不罕见。保险丝只防过流而且是一次性的。TVS 管能吸收一部分浪涌但能量容量有限反复冲击之后也会失效。防反接 MOS 管只管极性错误对过压和过流毫无办法。所以用一堆分立器件去拼一个电源入口保护不是不行而是你每增加一种故障防护就要增加一类元器件每一类元器件都有自己的分散性和失效模式。板子做出来占面积大故障种类多了之后你根本没法快速定位。而 eFuse 这类器件是把采样、比较、逻辑、功率开关全部集成在一起故障响应的一致性比任何分立方案都好这就是我选择它的第一个理由。1.2 eFuse 相比保险丝和分立保护方案的优势这张表是我在给同事做方案对比时用的直接放出来给大家参考对比项传统保险丝 TVS分立采样限流电路TPS259483AYWPR 这类 eFuse过流保护有但熔断后需更换有靠采样电阻 比较器有可复位、可编程过压欠压保护只能靠 TVS 钳位需要额外比较器电路集成阈值可调热保护无基本忽略内置热关断状态输出无需要自己搭FLT 引脚开漏输出软启动 / 浪涌控制无靠电容硬冲可以加 RC 缓启动集成可配置占板面积较大很大单颗小封装搞定这张表背后其实是两类成本。一类是硬件成本分立方案光是把过流采样的比较器和基准源做好PCB 面积和物料成本就上去了另一类是维护成本保险丝烧了要换现场没有备件就得停机这种隐性代价比元器件本身的单价贵得多。eFuse 是自动恢复或者通过 MCU 控制的故障排除后还能继续用这在工业设备维护里面是非常大的优势。1.3 MCU 不是来和 eFuse 抢活干的而是来补位的有一个误区我见过很多次刚接触 eFuse 的工程师以为 MCU 也要参与过流判断实际上根本来不及。过流保护在 eFuse 内部是靠硬件比较器完成的响应时间在微秒甚至亚微秒级别MCU 哪怕跑 64MHz 也不可能跟上这个速度。MCU 的真正角色是策略管理上电时安排时序先让输入稳定再打开使能运行中监控 FLT 脚一旦硬件保护动作立刻记录故障现场并决定是否重新尝试必要时通过 GPIO 控制限流电阻网络实现不同工况下切换限流阈值。我用一个通俗一点的比喻eFuse 像门口站岗的保安任何危险动作他先物理拦截反应速度极快。MCU 是值班室的队长保安打来电话说他拦下一个人队长要判断这是什么情况、要不要放行、要不要上报。两者各司其职才能把保护这件事做得既有速度又有策略。2. TPS259483AYWPR 关键细节从参数到配置电阻的计算2.1 这颗芯片内部到底集成了什么东西TPS259483AYWPR 是 TI TPS25948x 系列里的一个型号看尾缀时要特别留意同一系列的 A/B/Y/W/P/R 这些尾缀往往对应不同的参数等级、封装形式和卷带包装所以设计时一定要以最新版数据手册的命名对照表为准。从功能框架上看这颗 eFuse 内部包含了功率 MOSFET、电流采样放大器、多个比较器限流、过压、欠压、过热、软启动控制逻辑和电荷泵驱动。输入输出之间由内置 MOSFET 控制正常工作时 MOSFET 全导通压降很低出问题时 MOSFET 被拉断或者限制在某个电流值等效于在电源路径上串入一个可控阻抗。这也就是说它的保护动作不是把电源直接切断那么简单。比如限流保护模式下当输出电流超过设定阈值内部反馈环路会把电流钳在设定值附近输出电压被拉低而不是瞬间跳闸。对很多嵌入式系统来说这种电压跌落但电流受限的特性反而能避免让后级电路经历一次剧烈的电源中断有些设计还专门靠它做次级保护协调。参数方面我不建议背数据手册但有几个关键项设计时要核实输入电压范围是否覆盖你的母线电压比如 12V 系统还是 24V 系统输出限流范围能否覆盖你的负载最大电流过压和欠压阈值是否可调、调节范围多大FLT 引脚的电气特性开漏极性软启动时间有没有外部脚位可调。千万注意这些参数在不同尾缀下可能有差异我上个月查资料时就看到有人把不同型号的手册混着看差点算错限流电阻。2.2 限流电阻和过压分压电阻的计算过程限流设置通常是靠一个外部电阻完成的即 ILIM 引脚对地接电阻。数据手册里会给一个 K 常数你需要的电阻值等于 K 除以目标限流值。实际工程中计算分四步走第一步确定负载的最大正常工作电流比如系统稳态耗流 1.2A峰值 1.8A第二步在数据手册上查 K 值这通常是一个带量纲的常数第三步代入公式算出理论电阻值第四步就近选标称电阻再反推实际限流值确认这个值比负载峰值电流高但比线缆和 PCB 铜箔能承受的极限低。举一个我实际用过的例子我当时的系统稳态电流约 1A启动瞬间因为有 470uF 储能电容瞬态电流能到 2A 以上。如果把限流设在 1.5A一启动就会触发保护设在 4A 又起不到保护作用。最后把限流定在 3A留出 1A 的裕量给电容充电同时把软启动时间调长一点让电容不是瞬间被拉满。具体计算时假设手册给的是 R_ILIM K / I_LIM要求电容充电时间大致和软启动时间匹配可以通过加大 dV/dT 脚对地电容来延长软启动这样电流被限制在 3A 以内整个过程就非常平稳。过压保护阈值同样可以通过外部电阻分压来设定。这个电路的原理是拿一个内部基准电压和分压点的电压做比较分压点电压等于输入电压乘以后面那个分压比。计算时要反过来先定你想要的过压阈值比如 15V然后根据内部基准反推分压电阻比例再选择合适标称值的电阻。建议两个分压电阻都选 1% 精度以上的薄膜电阻如果本身比较器带有迟滞那么不用额外处理如果没有需要在软件上做防抖或者在外部加一点 RC 滤波避免阈值附近振荡导致 FLT 反复跳变。2.3 EN 和 FLT 两个脚和 MCU 的配合EN 是使能脚逻辑上就是高电平允许输出低电平关闭输出。和 PIC18LF45K40 这类 3.3V MCU 直接连接之前一定要确认 TPS259483AYWPR 的 EN 输入电压高电平阈值是多少。如果阈值在 1.2V 左右那 3.3V GPIO 驱动没有问题如果 EN 内部有上拉或下拉板卡上电一瞬间会有一个默认状态容易造成输出在你还没初始化 GPIO 之前就打开了这是很多设计翻车的隐患。我的做法是在 MCU 复位后先把 EN 脚配置成输出低电平把 eFuse 按住等系统时钟、外设、标志位都准备好了再打开。FLT 在许多 eFuse 上是开漏输出正常工作时引脚是高阻态需要外部上拉电阻拉到 MCU 的电源域故障发生后引脚被拉低。这就带来了一个细节上拉电阻接到哪个电源时必须想清楚。如果 MCU 是 3.3V 系统而 eFuse 供电是 12V那就必须把 FLT 上拉接到 3.3V而不是 12V否则 MCU 的 GPIO 会被 12V 打坏。另外开漏输出意味着这个引脚没办法驱动很大电流上拉电阻选 10k 到 100k 都没问题主要取决于你对信号上升沿速度和功耗的要求。我自己常用 10kMCU 输入配置为带上拉或外加上拉再配合电平变化中断来捕获下降沿。3. PIC18LF45K40 在保护链里做的事情3.1 为什么选这颗 8 位机而不是更高性能的 MCU说实话做电源管理监控这种活一颗 8 位 MCU 的性能绰绰有余。PIC18LF45K40 是 Microchip 的经典 8 位系列LF 前缀代表低电压版本工作电压能到 1.8V 到 3.6V这在工业设备需要不同电平域共存时很方便。K40 系列的外设组合也很合适带 ADCC 的 10 位 ADC 用来采电压电流电平变化中断 IOC 用来捕捉 FLT 这类异步事件多个定时器做延时和轮询EUSART 用来向上位机上报状态。你不需要一颗 Cortex-M4 去盯着一个信号引脚过度选型只会增大功耗和开发成本。另外我必须赞一下这颗 MCU 的复位机制和内部振荡器。工业现场电磁环境差如果外部晶体振荡器抗干扰弱很容易复位。PIC18LF45K40 可以用内部振荡器跑系统时钟省掉外部晶体少一个干扰源。当然它有丰富的外设和足够多的 GPIO如果后续想加看门狗、接外部存储做故障日志引脚也够用。在这套方案里它最重要的任务不多初始化时把 EN 脚按住运行期间盯着 FLT做状态机流转记录故障日志仅此而已。3.2 固件思路状态机加中断不靠轮询死等我写这套保护逻辑的时候坚持了一个原则所有关键故障事件都用中断处理轮询只用来做周期性的健康检查。FLT 是异步信号你不知道它什么时候来如果主循环正在处理一个耗时的 UART 发送或 EEPROM 写操作轮询 FLT 可能延迟几十毫秒故障信息就丢了。PIC18LF45K40 的 IOC 电平变化中断正好派上用场配置好引脚后FLT 从高到低或从低到高都会触发中断。在中断服务程序里做三件事读 GPIO 确认电平、关闭 EN、记录故障原因和时间戳其他事情统统丢给主循环处理。下面是我项目里使用的简化代码框架正面示意这种逻辑#define EFUSE_EN LATCbits.LATC0 #define EFUSE_FLT PORTAbits.RA2 volatile unsigned int fault_count 0; volatile unsigned char fault_flag 0; void efuse_enable(void) { EFUSE_EN 1; // 打开输出路径 } void efuse_disable(void) { EFUSE_EN 0; // 立即关闭输出路径 } void __interrupt() isr(void) { if (IOCIF) { if (EFUSE_FLT 0) { fault_flag 1; fault_count; efuse_disable(); // 故障时立刻切断 } IOCIF 0; // 清除中断标志 } } void main(void) { init_oscillator(); init_gpio(); init_ioc(); efuse_disable(); // 上电先按住等待系统就绪 init_timer0(); init_uart(); EFUSE_EN 1; // 就绪后打开电源路径 while (1) { if (fault_flag) { // 进入故障处理状态机 handle_fault(); fault_flag 0; } } }实际项目里我在 handle_fault 函数里做了重试策略第一次故障发生后延时 100ms重新打开 EN如果再次触发再延时 500ms 重试连续三次都失败就把状态机切到永久锁死只有收到上位机清除命令或断电重启才能恢复。这个逻辑很直接地满足了工业设备的两种需求对瞬时故障要容忍并自动恢复对真正的短路要避免反复吸合打火。3.3 掉电瞬间怎么保住故障现场电源保护这一行最讲究的就是在电源都已经崩掉的情况下还能留下线索。PIC18LF45K40 自带 Data EEPROM可以在故障发生时把故障类型和计数写到非易失存储里下次上电时读取出来。但要小心一点故障发生后如果输入电源还在掉电过程中留给 MCU 的时间可能只有几毫秒到几十毫秒必须先把关键信息放到 RAM用一个紧急标志位然后尽可能快地写 EEPROM。EEPROM 写周期在几个毫秒左右如果系统电压撑不住数据可能写一半就没电了。我的经验是在输入侧放一个足够大的储能电容让 MCU 在电源断开后还能靠余电运行几十毫秒这段时间足够完成一次 EEPROM 写操作。还有一个系统级联动值得提如果把 FLT 中断同时接到 MCU 的一个唤醒引脚并且让 MCU 进入睡眠模式就能实现一个低功耗待机方案。平时 MCU 休眠eFuse 正常工作一旦保护动作FLT 下降沿把 MCU 唤醒MCU 记录完故障后重新进入休眠待机电流能控制得非常低。这在电池供电的嵌入式设备里很有价值也不复杂核心就是把 FLT 的 IOC 加上睡眠唤醒使能。4. 硬件设计和 PCB 布局最容易翻车的几个地方4.1 原理图的关键连接点怎么接下面的表格是我设计时反复核对过的连接清单列出来供参考信号 / 引脚连接方式注意事项IN 输入接 12V/24V 母线和输入滤波电容电容靠近 IN 引脚TVS 管放在最前面OUT 输出接负载和输出滤波电容输出电容不要超过手册推荐最大值ILIM对地接限流电阻电阻选低温度漂移远离功率发热区dV/dT对地接软启动电容电容值决定输出爬升速度EN接 MCU GPIO串 10k 电阻防止走线过长时的毛刺误触发FLT开漏输出上拉到 3.3V上拉电阻建议 10kGND功率地和信号地单点汇接避免大电流在地平面产生压差输入端的 TVS 管位置要放在最靠近端子连接器的地方这是为了在浪涌进入 PCB 之前就把它钳住。TVS 和 eFuse 的分工要明确TVS 管主要吸收静电和感性负载产生的瞬间尖峰能量不大但电压很高eFuse 主要处理持续性的过流和过压两者的时间尺度完全不同。如果只用 eFuse 去扛静电芯片内部的 MOSFET 不一定受得了如果只用 TVS 去做过流保护TVS 又会烧毁。这里说的配合才是工业级设计该有的样子。4.2 布局布线三个命门功率环、采样电阻、散热第一个命门是功率环路要短。从输入端子到输入电容再到 eFuse 的 IN 脚从 OUT 脚到输出电容再到负载这两条路径上的电流变化率很大走线长了不但有压降还会向外面辐射噪声。理想做法是让输入电容和输出电容尽量贴近器件引脚功率回路形成一个最小面积的环。反馈和信号线不要和功率走线长距离平行否则你会在 FLT 上看到很多莫名的毛刺。第二个命门是 ILIM 电阻和分压电阻的布线。ILIM 脚对电流非常敏感这个电阻如果距离发热元件太近阻值会随温度漂移限流点就不准了。我在实际测试中发现如果把 ILIM 电阻放在 eFuse 旁边并且 eFuse 本身温升到 70℃以上某些贴片电阻的阻值能偏出去好几个百分点限流点明显下降严重时会让设备在正常负载下就误保护。解决方法是把这个电阻稍微挪远一点或者使用温度系数低于 25ppm/℃ 的精密电阻。第三个命门是散热。eFuse 在工作时MOSFET 的导通电阻会产生功率损耗电流越大发热越严重。选封装时要仔细看热阻参数大多数这类芯片底下会有一个散热焊盘PCB 上必须铺铜并打过孔到内层或底层地平面帮助散热。我习惯在散热焊盘下打 9 到 16 个过孔孔径 0.3mm 左右过孔开孔不要太靠近焊盘边缘防止焊接时漏锡。如果不做散热处理芯片会先于外部故障进入热关断——这种情况最难排查因为看起来设备是自己莫名关机的。4.3 热设计和实测数据说明我在 24V 输入、3A 负载条件下测过整块板的温升。芯片封装表面温度稳定在 65℃ 左右环境温度 25℃算下来温升 40℃这个余量是健康的。如果发现芯片温度超过 85℃就要检查散热焊盘是不是虚焊了或者限流值是否设置得过高。另一个技巧是用热成像仪拍照比单独测芯片表面温度更有价值因为你能直接看到热源分布验证 ILIM 电阻是不是也处在高温区域。没有热成像仪的话用热电偶贴在关键器件表面也能凑合就是反应慢一点。从设计规范角度纯铜厚度建议至少 2Oz如果你只是选了 1Oz 板厚在大电流路径上会额外发热有压降的地方全部集中在细走线和过孔上。设计后期我习惯在原理图上标注功率走线宽度比如 2A 走 2mm 以上要求 PCB 厂严格按这个执行这样做出来的板子才会比较皮实。5. 调试现场实录常见问题与排查技巧5.1 一上电就限流查哪里最有效如果你遇到的现象是板子一上电输出就起不来或者起来一瞬间电压跌得很厉害那多半不是芯片坏了而是三件事没调好软启动太慢或太快、限流点设得太低、输出电容太大。我先说一个最实用的调试流程先把负载断开用一个可调电子负载或者大功率电阻作负载从 0A 开始逐步增加电流观察输出电压什么时候开始跌落。假如实际限流点比设定值低了 20% 以上优先怀疑 ILIM 电阻的精度和温漂而不是怀疑芯片。我上次遇到类似问题最后发现是贴片电阻买成了普通厚膜 5% 精度的换上金属膜 1% 精密电阻后限流点立即恢复正常。第二个常见原因是上电瞬间的浪涌电流触发过流保护。不要急着把限流调高正确的做法是先看软启动电容。软启动时间越长输出电压爬升越慢给输出电容充电的瞬间电流就越小。如果你在示波器上看到限流保护发生在输出上升的起始段优先增大 dV/dT 脚电容然后保留原有限流值。这个顺序很重要因为在保护能力不变的前提下解决问题的优先级要高于把保护阈值调松。5.2 FLT 信号乱跳、MCU 收不到中断怎么办我在调试初期遇到过 FLT 引脚有毛刺、MCU 收不到中断的情况排查一圈后结论是上拉电阻太小。当时用了 1k 上拉信号沿倒是很快但回路里形成了振铃FLT 在故障和正常状态之间快速抖动了好几次。MCU 的 IOC 中断寄存一次跳变就会被清掉结果就是软件只看到一次中断没有来得及读电平故障就被漏掉了。处理方法是把上拉电阻改成 10k并且 MCU 进入中断后在确认电平之前加一个几微秒的延时等信号稳定后再读取。顺便提一个非常隐蔽的坑有的 eFuse 在故障发生后 FLT 拉低但如果故障源消除而 EN 仍然为高芯片可能会自动重新尝试输出这个过程中 FLT 可能会跟着恢复成高电平。如果你的软件在 FLT 低电平中断里立刻关闭 EN那倒是没有冲突但如果你是等到主循环再读 FLT可能就读到高电平了。所以我的固件策略是中断里抓标志位而不是读电平主循环处理完后再做一次持续的电平确认这样才能区分瞬时抖动和确实有故障。5.3 限流值怎么会越跑越偏工业现场的温升对限流值的影响我大概是调试了两个月才真正意识到严重性。原本设计限流是 3A设备在环境温度 60℃ 的机柜里连续运行一小时之后发生了一次莫名其妙的输出跌落用电流探头一测实际限流点已经掉到了 2.4A。原因就是 ILIM 电阻离 eFuse 太近被热源烤得阻值漂移了。排查方法很简单拿热风枪对着板子局部加热同时用直流电源拉载观察限流点是否跟着变化。如果是把 ILIM 电阻挪到远离热源的位置或者换成温度系数更低的电阻就可以解决。更讲究一点的设计会在软件里做一个温度补偿。PIC18LF45K40 的内部温度指示器可以读芯片结温我们可以利用这个温度值对限流设置做一定程度的修正不过一般模板产品用不上这么高级的功能做好布局就能避免 90% 的问题。5.4 调试仪器和流程建议调试电源保护电路我建议准备这几样东西可调直流电源带电流限制功能先在低电流状态下上电以免短路烧板、电子负载用来做恒流拉载、数字示波器至少要能同时看输入电压、输出电压、输出电流三路信号的波形建议 200MHz 以上、电流探头没有电流探头就用采样电阻加差分探头但注意采样电阻的功率余量。要注意的关键点是示波器探头的地线夹子要尽量短否则地线电感会把你看到的纹波和毛刺装点得很吓人。测 FLT 信号时建议用 10x 探头不要用 1x否则探头电容可能影响信号的边沿。调试顺序我总结成一个口诀空载先上电小电流粗测逐级加负载再考验过压。具体说就是先不带负载上电确认输出电压和 FLT 状态都正常然后电子负载从 100mA 开始每次增加 500mA观察限流点是否跟设定一致加负载的同时用示波器观察输出波形有没有振荡最后再用可调电源把输入电压抬高到过压阈值以上验证 OVP 动作和 FLT 报告是否正常。整个过程做下来如果都没有异常这个板子才算真正可以被放进机柜里面去熬了。一个人做电源保护的调试确实比较枯燥但等你拿着这套方案把现场短路的板子完整救回来看到 FLT 把故障时间、故障类型都记录得清清楚楚的时候你会觉得前面这些细节都是值得的。这套eFuse 做硬件保护、8 位 MCU 做策略管理的组合我后来又用在了好几个 24V 工业设备项目上基本逻辑没有变过变的只是限流电阻的阻值和软启动电容的大小。如果你正在评估类似的电源入口方案只要记住别想着让 MCU 去抢硬件的活也别指望硬件能帮你做重试策略把两头都用在正确的岗位上这个方案就一定能稳下来。
返回列表