ARTICLE DETAIL

资讯详情

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

STM32与电子保险丝协同:电源路径过流过压保护设计实战

STM32与电子保险丝协同:电源路径过流过压保护设计实战 当涉及嵌入式系统、工控设备或任何对可靠性有要求的电子设计电源路径的保护往往是决定产品生死的一环。最近做了个项目核心是把 TPS259483AYWPR 这颗电子保险丝与 STM32F103RC 主控配合起来构建一条过流、过压、欠压、短路都能快速响应的受控电源路径。这套方案现在不大幅占用PCB面积又能给后端电路提供精确保护特别适合嵌在PLC、传感器采集节点、电机驱动板或其他对功耗和安全性都有要求的应用里。这篇文章会把这套方案从选型、硬件设计、参数计算到软件联动、故障排查的完整过程捋一遍给正在做类似电源保护的同行一个可以抄作业的参考。最开始选型我认真对比了传统自恢复保险丝、分立MOS管做过流保护以及集成式电子保险丝三条路线。传统PPTC虽然便宜但精度差、响应慢一次短路后特性还会漂移对后端是精密逻辑电路或者MCU的场景非常不友好。分立MOS方案响应速度能上去但需要自己搭采样放大器、基准源、比较器和驱动电路元件多不说一致性还得靠调试来凑。TPS259483 这类集成eFuse会把功率MOS、采样电阻、电流检测放大、比较器、定时器和各种保护逻辑封装在一起外部只需要少量电阻完成参数设定保护阈值的一致性和响应一致性就有了保障。这在批量生产时能省不少心事也是我看中它的根本原因。1. 电源路径保护的整体设计与芯片选型思路1.1 为什么需要一颗电子保险丝而不是普通保险丝普通保险丝在很多工程师眼里就一个功能烧断。它可靠但在嵌入式系统里往往不那么“聪明”。熔断时间随过流倍数变化环境温度也会影响熔断曲线并且一旦熔断需要人工更换无法复位。对于无人值守的工业节点一次短路过流就导致现场停机运维成本会非常难看。电子保险丝的思路完全不同。它把保护分成了几个层次稳态过流限制、短路快速关断、输入过压/欠压闭锁以及软启动限制浪涌电流。遇到异常时内部功率管可以在微秒到毫秒级别切断电源路径不需要人干预故障排除后可以选择自动重试或软件控制恢复。这种可控性正是嵌入式系统想要的——主控可以感知发生了什么故障、什么时候发生然后决定是否让电源重新输出。TPS259483AYWPR 这颗料在 TI 的 eFuse 家族里属于带完整保护功能且支持精确电流限制的一类。和普通固定阈值的保护芯片不同它的电流限制阈值由外部电阻设定可以从几百毫安覆盖到数安培级别。这个灵活性对连接不同负载、不同功率等级的应用场景很重要。此外它还提供过压保护OVP和欠压保护UVP引脚可以通过电阻分压设置窗口确保输入电压处于规格范围内才允许输出。从系统架构的角度看它更像一个放在电源边缘的“执行机构”输出的故障状态FAULT引脚和使能EN/ENUVLO引脚可以直接接到 STM32F103RC 的GPIO上让主控随时知道电源路径的健康状况。1.2 STM32F103RC 在方案中的角色划分STM32F103RC 在这里不是被动的旁观者而是电源路径的高级决策者。硬件保护靠 TPS259483 自身的高速模拟电路但系统级策略由软件来定。打个比方eFuse 是保安能在事发瞬间把门关上MCU 是安保中心负责判断门外是什么人、什么时候重新开门、要不要拉响警报。具体职责可以拆成五块。第一通过对 FAULT 引脚的中断响应记录故障发生时间和故障类型。第二通过 EN 引脚控制电源输出通断比如系统启动阶段先评估负载状态再决定是否上电。第三通过 ADC 采集 TPS259483 的 IMON 电流监控输出实时估算负载电流。第四与 eFuse 的 I2C 接口如果有配置需求的话联动动态调整参数或至少预留通信读取状态的通道。第五把故障信息通过串口、CAN 或以太网上报到上层系统供远程运维使用。STM32F103RC 作为一颗 Cortex-M3 内核的芯片主频72MHz资源虽然不算豪华但在这个场景下完全够用。它的 I2C 外设可以和 TPS259483 通信多个定时器可以生成 PWM 或做故障时间戳12位 ADC 通道足够采集 IMON 电压还有丰富的 GPIO 中断引脚可以响应 FAULT 信号。选它而不是更高端的芯片考虑的是成本、供应链成熟度和功耗。1.3 方案对比为什么不用分立元件方案我在这个项目里认真考虑过分立元件方案——采样电阻加运放后端接比较器比较器输出控制一个低压差 P-MOS 或 N-MOS。这样做看似成本更低其实有一堆隐患。分立方案的电流检测精度受采样电阻温漂和运放失调影响批量一致性差每个板子可能要单独校准。而且过流响应的延迟取决于运放带宽和比较器传播延迟遇到硬短路时在保护动作前功率管可能已经进入了不安全工作区SOA严重的会直接烧管。集成 eFuse 的优势在于内部功率管和安全工作区是匹配设计过的它知道自己能在多短的时间内把能量断开。TPS259483 的这个系列针对过流和短路做了优化内部有快速的电流检测比较器检测延迟在微秒级。这意味着即使用户在输出端直接短路eFuse 也能在 MOSFET 损伤之前关断路径。这种损毁前的保护能力分立方案很难做到同等水平。当然集成方案也不是没有代价单价确实比一颗保险丝加一个MOS管高但对工业设备来说多出来的成本买的是可靠性、一致性和可维护性从全生命周期成本来看反而是赚的。2. 硬件电路设计的核心细节与参数计算2.1 TPS259483AYWPR 的引脚功能与基本外围电路TPS259483AYWPR 的封装是带焊盘的常见引脚包括电源输入 IN、电源输出 OUT、使能引脚 EN/ENUVLO、故障输出 FAULT、电流限制设定 ILIM、电流监控 IMON、过压设定 OVP、欠压设定 UVLO以及输入电源和地。外围电路的核心就是围绕这些引脚把阈值电阻分压网络布置好。在设计外围之前需要先确认几个系统参数输入电压范围是多少允许的最大负载电流是多少启动时希望容忍多大的浪涌电流以及后级电路的最高耐压是多少。比如我这里输入是12V标称但会波动在9V到16V之间后端负载最大预估2A瞬间浪涌如电机启动到3A是可以接受的但硬短路必须立刻切断。这些参数决定了电阻分压的取值。基本连接上输入引脚接输入端滤波电容输出引脚接输出端电容和负载。输入和输出端的陶瓷电容至少需要1uF到10uF推荐在输入、输出各放一组小容值高频电容与中容值储能电容的组合。对于噪声比较大的工业环境输入侧还可以再串一个共模电感或加TVS管做瞬态吸收。EN 引脚如果不需要由外部控制可以直接通过电阻上拉到输入电源让芯片在上电时就自动开始工作。但既然要配合 STM32F103RC就会把它接到GPIO用软件控制输出电压。2.2 关键电阻参数的计算ILIM、OVP、UVLO、软启动电流限制电阻 R_ILIM 的计算这是整个方案里最核心的参数。TPS259483 的电流限制基准电压通常是一个固定值具体视型号典型内部基准在0.9V左右以数据手册为准通过下拉电阻设定电流阈值。设目标过流阈值为 I_LIM则R_ILIM V_REF / I_LIM比如我希望限制在2.5AV_REF取0.9V那么 R_ILIM 0.9 / 2.5 360 欧姆。实际可以选择330欧或者390欧然后看具体限流效果微调。这里要注意R_ILIM 的阻值精度直接决定限流精度所以必须选1%精度的电阻温度系数也要注意最好是25ppm/°C以下的低漂移型号。过压保护电阻分压的计算。OVP 引脚的内部基准电压 V_OVP_REF 也是固定值。假设我希望当输入电压超过 16.5V 时就关断输出则可以用两个电阻 R_OVP_TOP 和 R_OVP_BOTTOM 组成分压V_OVP_REF V_IN_MAX × R_BOTTOM / (R_TOP R_BOTTOM)通常数据手册会给 OVP 引脚内部基准在1V左右。如果取 R_BOTTOM 10K则R_TOP R_BOTTOM × (V_IN_MAX / V_OVP_REF - 1) 10K × (16.5 / 1 - 1) 155K取标称值150K或160K再校验。分压电阻同样用1%精度确保阈值不要漂出系统容忍范围。欠压保护电阻分压的计算。EN/ENUVLO 引脚有两层作用既作为使能开关也作为欠压锁定输入。通过两个电阻把输入电压分压到该引脚当分压后的电压低于内部基准时输出强制关闭。设最低容许输入电压是9V内部基准 V_ENUVLO_REF 1.2V需要查手册确认取 R_EN_BOTTOM 20K则R_EN_TOP R_EN_BOTTOM × (V_IN_MIN / V_ENUVLO_REF - 1) 20K × (9 / 1.2 - 1) 130K。这样输入低于9V时eFuse 就会认为欠压而关闭。由于 EN 引脚同时还有逻辑控制作用软件要把 GPIO 拉低时需要在外部并联一个下拉开关或者直接通过开漏输出控制否则分压网络本身会给 EN 引脚一个高电平没法通过软件关断。这个问题是我调试时踩过的坑后面细说。软启动时间设置TPS259483 的输出斜率通常通过一个电容或内部固定方式控制。如果芯片支持外部电容设置启动时间比如参照 STM32F103RC 那类设计中常见的软启动引脚接法则根据 C_SS 与启动时间的关系公式计算。目的是限制上电浪涌输出侧有大电容时如果没有软启动等效于瞬间短路限流电路会在启动阶段就把电流限制住导致输出电压爬升很慢或者进入保护。设计时我会让启动时间覆盖输出电容充电所需的时间常数通常取 5 到 10 毫秒范围经过实测确认负载上电时不会出现明显的电压跌落或保护误触发。2.3 输出电容与输入电容的选型原则输出侧电容的选择考虑两类需求一是维持稳态供电的稳定性二是应对负载瞬态。对于 12V 输出、2A 负载这种级别输出端建议放一个 100uF 左右的铝聚合物电容或者多个 22uF 陶瓷电容并联加上至少 1uF 的陶瓷高频去耦。容量太大不好因为 eFuse 在进入电流限制时输出电容能量要泄放容量越大恢复时间越长。容量太小也不好负载瞬变时输出会明显跌落甚至触发后级的欠压复位。输入侧电容主要是抑制来自电源线的电压尖峰和维持 eFuse 内部控制器的工作稳定。推荐在输入引脚附近放 10uF 陶瓷电容输入端口的输入端再并联一个 100uF 电解电容或者钽电容应对远端电源的走线电感产生的反电动势。这个组合在工业环境里实测下来比较稳妥。2.4 与 STM32F103RC 的接口电路设计要点MCU 与 TPS259483 之间的接口并不复杂但有几个细节容易出错。第一FAULT 引脚通常是开漏输出必须外部上拉到 MCU 的电源域。这样既保证在 eFuse 故障输出时可以正确拉低电平也避免开漏输出无法主动拉高的问题。选择上拉电阻要兼顾功耗和边沿速度通常 10K 就比较合适如果要求中断响应更快可以降到 4.7K。第二EN 引脚如果由 MCU GPIO 控制建议通过一个小电阻比如 100 欧串联避免万一 GPIO 被配置成高阻或者外部电压异常时电流过大。同时要注意电平转换如果 MCU 是 3.3V I/O而 eFuse 的 EN 阈值是按输入电压比例定义的3.3V 高电平在输入电源比较高时可能不足以把 EN 拉到“使能”状态。这种情况就把 EN 引脚接到 MCU 的 5V 容忍引脚或者用一个 NPN 三极管/电平转换芯片实现控制。这里最好按数据手册里的 EN 逻辑电平规格来确认。第三IMON 电流监控输出如果接到 STM32F103RC 的 ADC就要注意输出电压范围不能超出 3.3V。IMON 内部通常会输出一个与负载电流成比例的电流源外部接一个电阻转成电压。选择电阻时要保证最坏情况下过流阈值附近IMON 电压仍低于 ADC 参考电压可以适当留 20% 余量。同时 IMON 输出端要加一个 RC 滤波器滤除开关噪声和负载瞬态尖峰避免 ADC 采样值抖动剧烈。3. 软件层面的联动控制与状态机设计3.1 故障中断的处理思路STM32F103RC 的 GPIO 可以配置成 EXTI 外部中断。FAULT 引脚被拉低时就是一个下降沿中断。中断服务程序里不要在ISR中做复杂处理只做标志位记录和简单的时间戳后台主循环再把标志位转为具体动作。否则会引入不确定延迟甚至影响系统其他实时任务。一个可行的做法是定义 faultFlag 全局变量外部中断里只把它置位并读取 TIM 计数器做时间戳。主循环里发现 faultFlag 后读取 FAULT 引脚当前电平确认故障是否仍然存在然后通过 I2C 或 GPIO 读取 TPS259483 的状态寄存器如果支持记录故障类型、当前电流值和输入电压值。最后再根据策略决定是否自动恢复。需要注意FAULT 引脚在故障条件解除后可能不会自动恢复高电平要确认芯片是锁存模式还是自动重试模式。TPS259483 系列不少型号支持配置自动重试或关断锁存如果设置为锁存软件必须在确认负载短路移除后通过把 EN 拉低再拉高进行手动复位。3.2 电流数据的采集与滤波算法通过 IMON 采集负载电流时ADC 直接读到的原始值参考的是模拟电源电压需要转换成真实电流。假设 IMON 输出电流 I_IMON K × I_LOAD外部电阻 R_IMON 1K则 ADC 电压 V_ADC I_IMON × R_IMON。配合 ADC 的 12 位分辨率和参考电压可以计算出数字量对应的电流值I_LOAD (ADC_VALUE / 4096) × V_REF_ADC / (K × R_IMON)这里的 K 可以从数据手册找到典型值。实测下来 IMON 的线性度还是不错的大约在满量程的 1% 到 2% 范围内。但 ADC 采样值不能直接拿来用负载瞬态或者开关电源高频纹波会在采样点上产生明显毛刺。我常用的滤波方式是移动平均加限幅。比如采集 16 个样本做平均如果当前平均值与上一次的差值超过设定阈值则认为是负载阶跃而不是噪声直接更新否则继续平均。这样既能跟踪电机启动时的大电流变化又不会被 100mV 级别的高频干扰骗到。3.3 电源路径状态机的设计软件里把电源路径抽象成一个状态机比直接写 if-else 要清晰得多。状态可以划分为POWER_OFFEN 拉低eFuse 关闭等待软件命令上电。POWER_STARTINGEN 拉高等待输出电压稳定等待 eFuse 进入正常态。POWER_ON正常输出周期性采集 IMON 和输入电压监控 FAULT。POWER_FAULTFAULT 触发记录故障信息停止输出或等待恢复策略。POWER_RETRY进行自动重试计数如果连续多次故障则进入锁死状态需要人工介入。状态机的好处是每一个切换条件都很明确代码评审和后期维护都容易。比如从 POWER_ON 切到 POWER_FAULT触发条件是 FAULT 引脚拉低从 POWER_FAULT 切到 POWER_RETRY则是重试时间到了。这比一个庞大的中断里塞逻辑可靠得多。3.4 与上层系统的故障上报协议设计如果这套电源保护集成到更大的系统里故障上报协议就需要提前规划。我习惯在定义结构体时预留如下字段故障时间戳32位毫秒计数、故障类型枚举过流/过压/欠压/短路/过热、故障期间的电流采样值、输入电压采样值、故障持续时长、自动重试计数。上报方式按照项目具体通信链路选择比如 CAN 上报的话就用 CANopen 的 EMCY 对象Modbus 就用异常寄存器列表。协议设计上最重要的原则是报故障要控制频率不能故障一发生就把总线刷爆。我一般设置一个最小上报间隔比如 1 秒内最多上报 5 次超出频率的事件只更新本地日志。否则 MCU 在高频故障恢复场景下会疯了一样发报文反而干扰其他节点通信。4. 实际操作中的常见问题与排查经验4.1 上电瞬间误保护软启动时间不够引发的误触发第一次做这套方案时上电后发现 TPS259483 偶尔会在一上电就进入限流模式输出的 5V 爬升过程出现台阶甚至直接把 FAULT 拉低。排查过程比较痛苦最初以为是后端负载电容太大但把输出电容从 100uF 降到 10uF问题依旧存在这就说明不是电容容量的事。后来用示波器抓了输入电压的波形发现输入端在上电瞬间存在一个幅度不小的高频振铃。由于电源线较长输入电容不足远端电源模块在上电瞬间产生的反电动势叠加到了 VI 上触发 OVP 保护。解决办法是在输入端增加了稍大容量的储能电容并在输入引脚附近放一个小容量高频陶瓷电容同时把软启动时间从 2ms 调到 8ms问题就消失了。这个教训提醒我eFuse 的保护功能越灵敏对外围电路和环境噪声的容忍度就越低。上电时序和输入电源质量必须纳入设计考虑尤其是用开关电源供电时建议先用示波器确认输入端的浪涌特性再定参数。4.2 FAULT 引脚电平异常上拉电阻与开漏输出的配合问题有一次调试中FAULT 引脚没有故障时电压只有 1.2VMCU 一直误判为故障状态。起初以为是芯片坏了换了新片也一样。检查电路才发现FAULT 是开漏输出我接了一个较小的上拉电阻到 12V 电源轨但 MCU 的 GPIO 输入端口是 3.3V 逻辑引脚内部有保护二极管直接把 12V 通过上拉电阻拉到了夹紧状态导致电平被限制在 1.2V 左右。正确的做法是上拉到 MCU 的 3.3V 电源域而不是电源系统的输入电压。如果设计需要上拉到更高电压则必须加电平转换或者用分压网络把 FAULT 输出送到 MCU 前先衰减到安全范围。这个问题在混合电压系统里特别容易犯检查原理图时要格外注意电源域关系不能想当然。4.3 ILIM 电阻温度漂移导致限流阈值变化另一个容易忽略的问题来自限流电阻的温度系数。普通厚膜电阻的温漂可能到 100~200ppm/°C对于限流阈值来说折算到整个温度范围内可能偏差 2% 到 5%。如果设计时阈值的裕量本来就小设备在高温环境下工作就可能出现本来不该触发限流的工况误触发了。我建议这里的电阻至少选 25ppm 以下的金属膜电阻或者精密电阻。如果追求更高稳定性可以用绕线电阻或者薄膜电阻网络。成本会高一点但换来的是保护阈值的稳定而在工业环境里稳定性和可重现性通常比单颗物料省几分钱更重要。4.4 系统级联调时的注意MCU 复位与电源保护打架还有一个很现实的问题MCU 自己的供电也可能来自 TPS259483 保护的电源路径。这种情况下如果 MCU 工作异常导致电源路径被误关断MCU 就陷入了一个死循环——它没法靠自身恢复电源。解决思路有三种一是主控供电与被保护负载供电分开eFuse 只保护高功率负载部分逻辑控制部分用单独的稳压器供电二是增加看门狗和电源路径自恢复逻辑让 MCU 在死机前有最后一次机会去复位 EN三是设计硬件上电优先级让主控在上电时先于负载运行通过延时继电器或负载开关把负载挂到电源路径上。这个在系统架构阶段就必须想清楚否则调试到后期要改动布线就很伤。4.5 常见问题速查表现象可能原因排查方法解决方案上电即保护软启动过快、输入浪涌示波器抓输入波形增大软启动电容/时间增加输入储能电容负载正常却偶发保护限流阈值裕量不足观察实际负载电流峰值提高 ILIM 阈值或优化负载启动特性FAULT 电平异常上拉电源域不对、上拉电阻不合适检查电平、查看原理图改为 MCU 电源域或加电平转换限流值随温度变化ILIM 电阻温漂大温箱测试换精密低温漂电阻短路后无法恢复芯片处于锁存模式读状态寄存器或试拉 EN软件复位 EN 或配置自动重试模式输出电压跌落后不回输出电容/负载不匹配抓瞬态波形调整输出电容增加软启动时间5. 一些实操建议与扩展思路这套 TPS259483AYWPR 与 STM32F103RC 的组合在这个项目里验证下来可以达到保护可靠、状态可感知、恢复可编程的效果是很适合嵌入式和工业场景的电源路径保护模板。后续如果要扩展我第一推荐的是把这套电源保护逻辑做成独立模块内部带自己的小 MCU对外只提供标准接口这样移植到不同主控平台时不用重写底层逻辑上层只要解析故障码和控制命令即可。第二可以增加远程诊断功能IMON 的实时电流数据配合通信链路就能对负载健康度长期监测比如发现某台设备的待机电流逐渐上升提前判断出电解电容老化的趋势。最后聊聊我个人的体会。做电源保护设计最重要的不是把保护阈值算得多精确而是理解保护动作对系统行为带来的连锁反应——你让电源关断了后端逻辑是否做好了失电保护的准备你让电源恢复了系统是否一定会安全地重新启动这些东西比单纯算一个电阻值重要得多。TPS259483 这类芯片给了你精确控制的工具但工程智慧在于如何设计整个反馈闭环。希望这篇文章能给正在做类似电源保护的你一些启发少走一些我走过的弯路。如果在实际调试中遇到具体问题也可以沿着这个方向排查多半都能找到原因。
返回列表