ARTICLE DETAIL

资讯详情

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

基于TPS259483与STM32L496的电子保险丝电源保护方案

基于TPS259483与STM32L496的电子保险丝电源保护方案 上个月做一块工业控制板的老化测试12V电源上电瞬间后端一块传感器模组直接冒烟了。拆开检查输入端的瓷片电容击穿短路DC-DC前端的电感磁芯也裂了一块。问题根源很清楚——整条电源路径上没有任何保护外部电源稍微一抖后端设备就跟着遭殃。后来我把整条电源路径重新设计在输入侧加了TI的TPS259483AYWPR做电子保险丝用STM32L496AG做主控负责监控与故障恢复。这套组合在当前嵌入式和工业应用里很有代表性今天就把这次改版的完整思路、硬件设计、软件逻辑和踩过的坑一次说清楚。文章适合做硬件的工程师、写嵌入式软件的开发以及准备把产品从“能跑”推向“耐造”的团队参考。1. 从一次“冒烟”事故说起电源路径为什么要保护1.1 事故复盘与需求拆解那次事故看着像偶然其实是典型的电源路径保护缺失。老化测试时用的是实验室可调电源启动瞬间电压出现了一个不小的过冲直接灌到传感器模组的输入端。模组内部有一颗耐压余量很小的LDO瞬间被击穿然后整个板子就冒烟了。事后我拿示波器回放电源波形才发现可调电源在冷启动时本身就带有明显的overshoot之前没关注是因为一直用着正常直到那批传感器模组换了一版PCB电容位置变了抗冲击能力弱了一圈问题才爆炸式显现。做嵌入式或者工业设备电源路径保护一般围绕三个核心需求展开过压保护外部稳压器失效、接错电源、热插拔产生尖峰都可能让后端承受超规格电压。过流保护负载短路、芯片损坏、线缆磨损都会让电流瞬间飙升烧毁PCB走线和连接器。浪涌抑制系统上电瞬间大电容充电会产生远高于稳态的浪涌电流可能导致连接器打火、保险丝误断、电源跌落。这三个问题越复杂的系统越明显。工业现场尤其离谱24V开关电源的纹波、变频器的谐波干扰、电机启停造成的母线电压波动全都叠在电源线上。如果不在一开始就把保护做进设计里后面出货了、装到现场了再出问题成本和口碑都扛不住。1.2 传统保险丝和分立MOS方案为什么不够很多人第一反应是加个保险丝不就行了早期我也这么干但实际用过就会发现传统保险丝有几个硬伤。首先是响应速度。普通熔断器的熔断时间在毫秒级甚至更慢而这期间瞬态电流可能已经冲过去了。对半导体器件来说毫秒级的过流足够让结温飙升到失效点。其次是精度。保险丝的熔断电流受环境温度影响很大标称1A的保险丝在高温环境下可能0.8A就断低温下1.2A还不一定断。再就是不可恢复性。一台设备卖到现场因为一次电压抖动就烧了保险丝客户得停机、拆机、换保险丝体验非常差。还有人会想那不如下一颗功率MOS管用MCU控制关断。这条路我也走过但现实是大电流下MOS管需要独立的栅极驱动要处理栅极电荷、米勒平台、关断尖峰要想实现过流保护就得加采样电阻、运放、比较器、基准源电路板面积凭空多出一大块一旦负载波形畸形误判的可能性非常高。更关键的是这些分立方案通常只能做“过流关断”或“过压关断”做不到集成式的浪涌控制、热关断、故障状态输出这些联动功能。所以那次事故之后我直接转向了电子保险丝eFuse方案。一颗芯片把功率开关、限流、过压、热关断、浪涌控制全集成进去外部再用一颗MCU做管理和恢复决策这正是TPS259483AYWPR加STM32L496AG这套设计的出发点。2. 选型思路TPS259483AYWPR 与 STM32L496AG 怎么分工2.1 TPS259483AYWPR一颗带“空气开关”的电子保险丝TPS259483AYWPR属于TI的eFuse功率路径保护器件简单理解就是它在电源输入和负载之间串联了一颗集成的高性能功率FET同时集成了多个保护比较器和控制逻辑。平时这颗FET完全导通就像一个导通电阻很小的开关几乎不消耗能量一旦检测到故障它会在微秒级时间内把电流限制住或直接切断通路保护后端不受伤害。我把它比作家里的“空气开关”但它比空气开关聪明得多。普通的空气开关只能在线路短路时跳闸而TPS259483AYWPR这颗芯片具备几层防护可编程限流通过外部电阻设定电流上限一旦超过芯片会主动进入恒流模式或切断输出。过压保护OVP引脚可以设定过压阈值输入电压一旦越过这个值内部比较器立即动作。浪涌电流控制通过dV/dT引脚的外接电容控制输出端的电压爬升斜率上电瞬间电容不会“一口吃成大胖子”。热关断内部结温超过安全值时自动关断输出避免芯片自身过热烧毁。故障状态输出FLT引脚会拉低告诉外部MCU出事了。使能输入EN引脚可以直接由MCU控制实现软件上电、下电。这颗芯片的设计目标就是在输入电源“不讲武德”的时候让后端设备全身而退。你不需要自己去搭采样电阻和比较器不需要调MOS管驱动只要把外围电阻电容配好防护逻辑就存在了。2.2 STM32L496AG电源路径的“管家”STM32L496AG是ST的超低功耗MCU系列Cortex-M4F核主频最高80MHz带有多路ADC、多路I2C/SPI/UART还有丰富的GPIO和外部中断。在这套方案里它不是什么算力担当而是电源路径的“管家”。为什么需要MCU参与因为单纯的硬件eFuse只能做“保护”做不了“策略”。举个例子现场设备碰到了瞬时过流你不可能让它永久锁死可能希望它自动重启几次但如果是真正的板级短路你又不想让它无限重启把板子烧坏。这个“重启几次然后锁死”的决策就要MCU来完成。STM32L496AG在这套系统里的职责很明确控制EN引脚实现受控上电和断电时序。接收FLT故障信号通过外部中断快速感知保护动作。通过ADC采样IMON或电流检测输出了解当前负载电流。执行故障恢复策略区分瞬时故障和永久故障。在低功耗模式下配合电源管理让系统在不工作的时候不额外耗电。这样一颗MCU的功耗非常低在STOP模式下等待FLT中断唤醒整板待机电流可以做到微安级。对嵌入式和工业设备来说这个特性很有吸引力。2.3 为什么这对组合是合理的做过方案选型的人都知道纯硬件方案和纯软件方案都有局限。纯硬件eFuse如果没接MCU保护动作倒是快速但你不知道发生了什么故障也不知道系统当前是否健康而如果用MCU直接驱动普通MOS管做保护又绕不开前面说的栅极驱动、模拟检测那一堆麻烦。TPS259483AYWPR加STM32L496AG的组合本质上是“模拟层做快保护、数字层做慢策略”。快速故障响应由芯片内部比较器完成微秒级动作MCU不需要陷入实时控制循环只需在故障发生后被外部中断唤醒做善后和恢复决策。这种分工让系统既快又智能电路板面积还很小。而且STM32L496AG本身面向工业应用工作温度范围宽外设丰富后续哪怕要扩展电压监测、温度监测、通信上报这颗MCU的资源也足够。我在设计时把I2C和UART都留了余量将来接个BMS协处理器或者远程监控模块都不用换主控。3. 硬件设计电路连接与关键参数计算3.1 最小电路搭建与引脚连接TPS259483AYWPR的外围电路设计思路和大多数eFuse芯片一致关键是几个外设引脚的电阻电容选值。整体连接方式如下输入侧IN引脚接需要保护的电源输入通常并联一颗10uF到100uF的电解电容和一颗0.1uF的陶瓷电容用于滤除高频噪声和防止上电瞬间电压跌落。输出侧OUT引脚接后端负载同样需要输出电容来稳定输出并配合dV/dT启动。EN引脚由STM32L496AG的一个GPIO控制。为了让MCU启动期间eFuse处于关闭状态我在EN引脚上加了RC延时默认拉低等MCU初始化完成后再拉高使能。FLT引脚接MCU的外部中断输入引脚用10kΩ电阻上拉到3.3V。正常时为高电平故障时芯片内部拉低。ILIM设置引脚通过一个高精度电阻接到GND决定限流值。OVP设置引脚通过两个分压电阻接到输入电压采样点决定过压保护阈值。dV/dT引脚接一个电容到GND决定输出爬坡时间。IMON引脚部分eFuse芯片会输出一个与负载电流成比例的电流或电压用于MCU的ADC采样评估当前负载健康状况。需要说明的是不同批次和版本的器件引脚名称和详细参数会有差异具体设计时务必以数据手册为准。我在这种电源保护芯片上从不敢凭经验盲配电阻都是先画好公式再对着手册逐项核对。3.2 限流阈值与过压阈值的计算限流电阻的计算不同芯片有不同的公式形式。以这类常见eFuse的设计惯例来说限流值ILIM与ILIM引脚的接地电阻R_ILIM之间通常存在反比关系I_LIM K_ILIM / R_ILIM其中K_ILIM是器件内部的电流系数单位通常是A·Ω具体数值需要查数据手册。比如我这次设计目标是3A限流查手册得知K_ILIM的典型值后计算得到R_ILIM约620Ω。实际焊接时我选了1%精度的620Ω电阻再用电子负载验证限流点实测在2.9A左右触发限流偏差在合理范围内。过压保护阈值同样通过分压电阻设定。OVP引脚的比较电压V_REF一般是内部基准假设为1V希望输入电压高于15V时触发保护分压关系是V_OVP V_REF × (1 R1 / R2)我取R2为10kΩ那么R1 (15 / 1 - 1) × 10kΩ 140kΩ。实际选了140kΩ的1%电阻。为了防止电压波动引起OVP误触发我通常会留5%到10%的余量也就是说如果系统工作电压是12VOVP阈值设在15V甚至16V都比较稳妥。这里有一个重要经验限流阈值和过压阈值不要卡着规格设一定要留余量。电源本身有纹波负载电流本身也存在动态波动把阈值设在临界点会导致系统在正常工作时就被保护动作打断。实际项目中我习惯将限流值设为最大稳态电流的1.3倍以上OVP阈值设为最高工作电压的1.2倍以上。目标指标计算公式计算值实际选用限流3AR_ILIM K_ILIM / I_LIM约618Ω620Ω/1%OVP 15VR1 (V_OVP/V_REF - 1)×R2140kΩ140kΩ/1%启动爬坡时间由C_dVdT决定2ms~5ms参考手册典型值3.3 PCB布局布线与散热硬件设计里原理图画得再漂亮布局布线不行照样翻车。TPS259483AYWPR本身是一颗功率器件热量主要靠封装底部的PowerPAD散出去所以PCB布局有几点要特别注意。输入输出电容一定要尽量靠近芯片引脚。我见过有人把输入电容放在5mm开外结果上电瞬间芯片输入端出现高频振荡FLT引脚乱跳。大电流路径要短而宽输入走线、输出走线都要加宽并且在地平面上保证完整的回流路径。散热焊盘要开足够多的过孔阵列到内层地和底层地过孔建议0.3mm孔径间距1mm左右让热量有出路。IMON和FLT这类信号线要远离输入输出功率走线更不能和电感、变压器这类磁场源靠太近。我习惯在采样线进入MCU ADC之前加一个RC低通滤波时间常数取100us左右滤掉高频噪声。还有一个看起来不起眼的细节EN引脚和FLT引脚的上拉/下拉电阻尽可能靠近芯片引脚摆放不要跨过太长的走线否则容易耦合噪声导致误触发。另外如果你设计的机型有多个电源域建议分别在每一个电源域的入口放一颗eFuse这样某个支路短路时不会拖垮整个系统。这个设计理念和保险丝分布完全一致只是把普通保险丝换成了可恢复的电子保险丝。4. 软件实现STM32L496AG 把电源保护管起来4.1 初始化与状态检测硬件焊好只是第一步软件上如果不把电源管理逻辑理清楚这套保护机制依然是一盘散沙。STM32L496AG端的初始化代码核心是GPIO、外部中断和ADC三个部分。使能引脚在MCU启动期间必须保持低电平。我见过不少代码GPIO初始化之前引脚默认状态不可控上电瞬间EN被意外拉高eFuse先于MCU软件开始工作后面所有时序逻辑全部乱了。所以我的做法是在上电时EN引脚通过10kΩ下拉电阻确保默认为低初始化代码先配置GPIO为推挽输出并输出低电平再按需要使能。void power_path_init(void) { // 使能 GPIOA 时钟 __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitTypeDef gpio {0}; // EN 引脚推挽输出初始为低 gpio.Pin EN_PIN; gpio.Mode GPIO_MODE_OUTPUT_PP; gpio.Pull GPIO_NOPULL; gpio.Speed GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(EN_GPIO_PORT, gpio); HAL_GPIO_WritePin(EN_GPIO_PORT, EN_PIN, GPIO_PIN_RESET); // FLT 引脚外部中断下降沿触发带上拉 gpio.Pin FLT_PIN; gpio.Mode GPIO_MODE_IT_FALLING; gpio.Pull GPIO_PULLUP; HAL_GPIO_Init(FLT_GPIO_PORT, gpio); // ADC 初始化IMON 采样 adc_init(); }FLT信号是低电平有效所以采用下降沿触发外部中断。进入中断服务函数后不要立刻做复杂处理先置一个标志位然后回到主循环做后续的故障确认。中断里做太长的操作会阻塞其他中断这在我实际调试中吃过亏。4.2 故障处理与恢复策略故障恢复策略是整个软件逻辑的核心。我的做法是设计一个简单状态机NORMAL系统正常eFuse处于使能状态。FAULT收到FLT中断进入故障确认流程。RETRY根据故障类型决定是否自动恢复。LOCKED多次恢复失败后锁定需要人工介入。这里要区分故障性质。如果是瞬时过流比如负载侧短暂启动大电流等几百毫秒后自动重试大概率能恢复如果是后端短路每次上电都触发保护那你重试一百次也没用还可能因为反复热冲击损坏连接器。所以我设定的策略是连续重试3次每次间隔500ms如果3次都触发保护就锁死并点亮故障灯同时通过UART上报错误码。void fault_isr_handler(void) { if (attempt_count MAX_RETRY) { // 关闭输出等待500ms HAL_GPIO_WritePin(EN_GPIO_PORT, EN_PIN, GPIO_PIN_RESET); HAL_Delay(500); // 重新使能 HAL_GPIO_WritePin(EN_GPIO_PORT, EN_PIN, GPIO_PIN_SET); attempt_count; } else { power_path_lock(); } }这个逻辑看似简单但细节里有个坑FLT引脚在限流模式下可能不是干净的单次下降沿而是持续的低电平或反复跳动。所以主循环里还需要软件去抖比如连续读取FLT引脚100ms确实为低电平才认定为正式故障。否则一个几十微秒的毛刺就触发一次重试次数很快耗尽系统被锁死实际上什么都没坏。4.3 低功耗与系统联动STM32L496AG的优势在于超低功耗这正好可以和电源路径管理结合起来。在系统不需要运行的时候MCU可以进入STOP模式只保留RTC和外部中断唤醒。FLT引脚连接到EXTI之后可以保证即使MCU在休眠eFuse发生保护动作时也能立刻唤醒MCU处理。我还把故障日志记在RTC备份寄存器里。系统每次上电先读取备份寄存器中的上次故障码如果存在未恢复的故障就通过蜂鸣器和指示灯给出明确提示。这个功能对现场维护特别有用工程师不用猜板子为什么不开机直接看错误码就知道是哪一路电源保护了。另外在正常运行时我让ADC周期性采样IMON引脚的电流信号判断负载是否出现缓慢漂移。比如某个电解电容开始漏电电流会缓慢上升虽然还没到限流点但已经能看出异常趋势。MCU可以提前给出预警而不是等到eFuse保护动作才慌张。这种“提前发现”的能力是单纯硬件方案完全不具备的。5. 调试实录最容易翻车的四个坑5.1 上电浪涌把限流“冲”掉了第一次打样回来后我信心满满地接上电子负载测试结果一上电负载还没启动FLT引脚就拉低了eFuse直接进入保护状态。排查后发现问题出在dV/dT电容太小输出电压爬坡太快。后端一大排去耦电容在极短时间内充电电流瞬间超过限流阈值。解决方式有两个一是加大dV/dT引脚电容把启动爬坡时间从0.5ms延长到5ms左右二是在软件上做错峰上电先让MCU初始化过50ms再使能eFuse避免MCU和外设同时抢电。这个问题的本质是限流保护既要防短路也要允许正常的浪涌充电二者必须通过启动斜率来平衡。5.2 FLT引脚抖动导致误中断FLT引脚抖动是我调试过程中最头疼的问题。第一次测过压保护时示波器抓到的FLT波形并不是干净的高低电平跳变而是在动作瞬间出现一连串毛刺导致MCU外部中断被触发了十几次。原因并不复杂输入电压在过压点附近反复穿越阈值芯片内部比较器输出也跟着反复跳变。我同时做了硬件和软件两层处理。硬件上在FLT引脚到地并联一个0.1uF电容把高频抖动滤掉软件上在中断服务函数里加一个20ms的去抖窗口窗口内反复确认FLT确实为低才判定为有效故障。两层叠加之后误触发问题彻底消失。5.3 感性负载关断的反向冲击这个坑是在做电磁锁控制时踩到的。电磁锁是典型的感性负载断开瞬间会产生很高的反向电动势。我原本以为有了eFuse就万事大吉实测发现关断瞬间输出端电压出现了反向尖峰幅度达到负几十伏虽然持续时间很短但对后端电路是潜在威胁。解决方法是在eFuse输出端到地之间加一个TVS二极管以及一只反向续流二极管让感性负载的续流电流有泄放回路。电源保护芯片主要处理正向上的过压和过流对负向尖峰的防护能力有限这一块还是得靠外围器件补足。5.4 热关断反复重启还有一次发现系统运行一段时间后eFuse周期性地进入热关断。刚开始以为是负载过流后来测量芯片表面温度发现已经接近100摄氏度明显是热量散不出去。检查PCB才发现PowerPAD底下的过孔阵列开得太少底层铜箔面积也不够热量全部积在封装里。重新画板在散热焊盘上增加了12个过孔并扩大了底层接地的铜皮面积同时把输入输出走线做了加宽处理让电流路径本身也承担一部分散热。改版后同样负载下芯片温度降了将近20摄氏度热关断再没出现。调试过程中遇到的问题和解决办法整理成一张速查表方便后面复制这个设计时快速定位现象可能原因处理方式上电即保护dV/dT电容太小、后级电容充电过快增大dV/dT电容软件错峰上电FLT引脚乱跳阈值临界穿越、布局耦合噪声加RC滤波软件去抖关断时反向尖峰感性负载未加续流/吸收电路输出端加TVS和续流二极管周期性热关断散热焊盘过孔不足、功率走线过窄增加过孔阵列加宽走线扩大接地铜皮6. 最后分享几个选型和量产的小经验这套TPS259483AYWPR与STM32L496AG的组合我到现在用了快一年最深的体会是电源路径保护不是简单“加一个保护器件”而是要把器件参数、MCU策略、PCB散热和现场运维串起来整体考虑。选型时不要只看限流值和耐压值还要关注启动斜率控制范围、FLT输出逻辑、芯片封装的散热能力。量产时限流电阻和OVP分压电阻一定要选温漂低的精密电阻不然温度变了阈值也跟着漂保护就不准了。另一个小经验是多利用eFuse的状态输出做产品自检。以前设备出厂测试只能测“能不能开机”现在通过MCU读取FLT和电流曲线可以自动判断每一路电源是否健康把保护动作的次数和原因记录下来对售后分析帮助巨大。后续如果要做多路电源的集中管理还可以把多颗eFuse挂到同一个MCU上用一套策略统一调度扩展性也比传统保险丝方案好得多。电源保护这件事做扎实了产品在现场的可靠性才会真正立得住。
返回列表