ARTICLE DETAIL

资讯详情

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

电子保险丝与MCU协同的电源路径保护方案设计与调试

电子保险丝与MCU协同的电源路径保护方案设计与调试 有次在现场排查故障设备半夜掉电告警翻了大半天日志才发现根源是某块从板电源模块输入端的MLCC短路瞬间把24V总线拉垮同一条总线上其他四块板卡全部欠压复位。后面换了电容恢复运行但这十几分钟的业务中断加上换保险丝、查故障这种被动式处理方式让我下定决心把电源路径保护方案彻底升级——用TPS259483AYWPR这颗电子保险丝做硬件级保护用PIC32MX695F512L做监控与恢复策略管理。这套组合基本上覆盖了嵌入式和工业应用里电源路径保护的绝大多数需求而且已经在我手头的几个项目里稳定跑了大半年今天把整个设计和调试过程完整记录下来给后面要做同样方案的工程师做个参考。1. 电源路径保护为什么保险丝方案在嵌入式场景里不够用了1.1 一次短路引发的连锁反应回到开头那个故障案例。从板内部MLCC短路表面上看是一颗电容坏了但真正破坏力到的是那条24V电源总线的整体崩溃。普通保险丝在过流时确实能熔断但它的动作速度通常不够快慢断保险丝从过流到断路需要几百毫秒甚至几秒在这么长的时间里被短路点拉垮的总线电压足以让其他板卡的DCDC欠压保护动作最终导致整机掉业务。更麻烦的是快断保险丝烧断之后现场必须人工更换。无人值守的机柜里一次小小的电容短路可能就让整套设备停机等待维护人员到场。我后来想了一下这种故障模式的核心问题不在于保险丝有没有起作用而在于保护层级太粗——直接保护的是整条母线而不是那条母线下的每一路负载。1.2 传统方案的三个软肋在换方案之前我试过传统保险丝、自恢复保险丝PPTC、以及分立MOS管做的限流电路它们各自都留下了不太愉快的回忆保险丝不可复位没有诊断信息动作之后只能换而且你根本不知道它是因为过流烧掉的还是因为过温、老化等原因失效的。PPTC动作曲线太糊动作时间和电流、环境温度强相关设计余量很难卡准。小电流故障时可能根本不动作持续小过流慢慢把板子烤坏。分立MOS管限流电路精度差用采样电阻加运放加MOS管搭的限流环路元器件数量多环路补偿调起来费劲短路响应时间能做到几十微秒就算不错了而且保护阈值受温漂影响明显。真正让我彻底倒向电子保险丝方案的是两点一是eFuse的限流阈值精度和响应速度远超分立方案二是它能输出故障标志和电流监测信号让后端MCU可以知道哪一路、什么时候、为什么出了故障。1.3 电子保险丝加MCU监控到底改变了什么TPS259483AYWPR不是一颗普通的开关内部集成了导通MOSFET、电流采样、比较器、驱动和控制逻辑外部只需要接几个电阻电容就能实现可编程限流、软启动、过压保护、反向电流阻断和热关断。而PIC32MX695F512L也不是简单拉个GPIO控制开关——它通过I2C读取eFuse的状态和遥测数据通过ADC采样IMON电流信号通过外部中断接收FLT故障通知然后按照我预先写好的恢复策略决定是复位、重试还是锁存同时把故障时间、故障电流、状态寄存器的值写进Flash日志。这个模式把电源路径保护从一个纯硬件动作变成了一套硬件保护软件策略的闭环。硬件负责微秒级的安全兜底软件负责毫秒级以上的监控、诊断和恢复决策两者职责明确互不干扰。2. TPS259483AYWPR这颗电子保险丝的硬件逻辑2.1 一颗eFuse到底在干什么如果你把普通保险丝理解为一次性安全气囊那电子保险丝就是带传感器和通信接口的智能断路器关断之后可以通过软件或者使能引脚重新合闸还能告诉你它为什么跳闸。TPS259483AYWPR属于TI TPS25948系列输入电压范围覆盖2.7V到23V内部导通MOSFET的导通电阻很低具体值以所选料号的datasheet为准所以正常载流时的损耗很小。保护功能方面过流、短路、过压、反向电流、过温全都集成在里面不需要外部搭一堆比较器。我用的这颗后缀版本支持SMBus/I2C遥测可以直接读取输入电压、输出电压、电流、温度和故障状态寄存器对系统集成来说省了非常多事。要注意一点同一系列下面不同后缀的eFuse在功能上会有差异——有的带I2C有的不带有的限流范围不同。设计的时候一定要把你选的具体料号的datasheet翻出来对着引脚一个一个核对不要拿通用电路直接抄。我第一版原理图就是参考了同系列另一颗料号的参考设计结果FLT引脚功能就对不上后面返工了一次。2.2 启动过程软启动、UVLO、负载电容怎么配合eFuse的启动过程是这个器件最好玩的地方也是最容易踩坑的地方。直接导通会有个问题如果输出端接了比较大的电容导通瞬间充电浪涌电流可能是安培甚至十几安培这个电流远大于你设定的限流阈值eFuse会误判为短路然后立刻关断表现出来就是启动-过流-关断-重启的打嗝现象。解决办法是CAP引脚外接一个电容来控制输出电压的爬升斜率。电气上相当于让输出端电容的充电电流被限制在预设范围内而不是瞬间充满。参数计算思路大致是这样的假设输出12V负载等效电容100uF希望启动时间控制在1ms以上那么平均充电电流大约是I C × dV/dt 100uF × 12V / 1ms 1.2A如果你的限流阈值设在3A那么1.2A的浪涌电流完全在安全范围内启动过程会很顺利。但如果负载电容更大、限流阈值更低就要加大CAP电容把启动时间拉长否则启动瞬间就会触发过流保护。这个负载电容-充电流-限流阈值的三角关系是设计eFuse外围电路时首先要算清楚的账。2.3 引脚对接与外围电路我这里把TPS259483AYWPR的关键引脚和对接方式整理一下方便你对照自己的设计引脚功能推荐接法备注EN/UVLO使能和欠压锁定MCU GPIO直接控制或电阻分压设置开启阈值同时实现软件开关和硬件欠压保护FLT故障开漏输出接MCU外部中断上拉到MCU电源故障时拉低快速通知MCUIMON电流监测镜像输出对地接精密电阻转电压送ADC电压值与输出电流成正比CAP软启动电容对地接电容电容越大启动越慢SDA/SCLI2C/SMBus通信接MCU的I2C外设加上拉电阻读取状态和遥测寄存器VIN/VOUT功率输入输出粗走线紧贴去耦电容按载流需求设计线宽2.4 选型时容易忽略的三个点第一限流设置电阻一定要用1%精度或者更好的精密电阻它直接决定限流阈值的准确性用5%贴片电阻会让实际的保护点偏得离谱。第二热性能要提前评估eFuse正常工作时也有I²R损耗4A电流下典型几十毫欧的导通电阻就有接近0.5W的功耗PCB上必须保证足够的铜皮散热面积后面第六章我会单独讲实测温升。第三如果输入电压纹波偏大UVLO分压电阻最好设计一点迟滞不然电源在临界点附近抖动时eFuse会反复开关板子就跟抽风一样。3. PIC32MX695F512L在监控链路里的角色与系统架构3.1 为什么监控主控选了PIC32MX695F512L如果只是控制一个开关用一颗8位单片机就够了。但电源路径保护真正值钱的部分在于策略管理同时监控多路电源、记录故障快照、和上位机通信、把诊断数据存储下来。这些需求对MCU的资源要求一下就上来了。我选PIC32MX695F512L主要看中它几个点80MHz的MIPS内核512KB Flash加128KB RAM跑监控逻辑和故障日志存储都绰绰有余外设数量非常全多路UART、I2C、SPI、DMA、12位ADC这些独立外设可以直接分配给不同任务不用像有些MCU那样反复复用引脚工作温度范围能覆盖工业场景的-40℃到85℃。最关键的是它的所有串行外设里我既可以用硬件I2C读eFuse遥测又可以留出UART连调试口、留出CAN口接工业总线不存在外设不够分的问题。有人问我为什么不用STM32或者其他Cortex-M的片子说实话用肯定也能用但PIC32MX695F512L有一个很实际的优点引脚复用相对简单外设就是外设你不需要在一堆AFIO配置里反复折腾。对做电源管理这种外设种类多但单个外设逻辑不复杂的场景这种设计哲学反而更省时间。3.2 监控系统的信号链路设计整个系统的连接关系我用四条链路来说明这样逻辑比较清楚模拟回采链路eFuse的IMON引脚对地接精密电阻输出电压送给PIC32的一个ADC通道输入输出电压各自通过电阻分压后也送ADC板内温度用NTC加分压电阻再占一个ADC通道。数字控制链路PIC32的GPIO输出接eFuse的EN/UVLO引脚用于软开关和复位FLT开漏输出接PIC32的外部中断输入引脚。通信链路PIC32的I2C外设接eFuse的SDA/SCL读取状态寄存器、配置寄存器和实时遥测数据另一路UART作为本地调试和日志输出。告警链路PIC32的GPIO驱动状态LED和蜂鸣器CAN口或者以太网口保留给总控系统上报故障信息。这四条链路合在一起就构成了一个完整的电源监控节点。功率路径是单向的从输入电源经过eFuse到负载信息路径是闭环的MCU既能看又能控还能把数据送出去。3.3 电平与地处理的几个细节如果eFuse工作在12V输入而PIC32是3.3V供电逻辑引脚的电平匹配就要特别注意。FLT是开漏输出上拉电阻直接上拉到3.3V即可这样它的高电平就是3.3V不会超过MCU引脚耐压。EN/UVLO引脚一般可以直接由3.3V GPIO驱动但一定要核对datasheet里的逻辑高电平阈值如果输入电压变化导致内部逻辑阈值漂移那就别省电平转换芯片的钱。地处理上功率回路和信号回路要分开。我的做法是输入电源的GND、eFuse的GND、输出端负载的GND走功率地MCU和模拟采样电路的地单独走信号地两者在电源输入端一点连接。这样短路瞬间功率地上的大电流di/dt不会在信号地上产生地弹电压MCU才不会被莫名复位。4. 从电路到PCB的落地细节4.1 关键参数的工程计算设计时先确定正常工况的最大电流然后留20%到30%裕量作为限流阈值。举例来说某路负载常态工作电流2.5A短时突发可以到3A那么限流阈值设在4A比较合理。在这个基础上按照目标限流值从eFuse手册的对应表格或者曲线中查取RLIM电阻值用1%精密电阻。软启动电容的选择按前面那个公式反过来推t_min ≥ C_load × V_out / (I_limit × 0.9)这里的0.9是为限流阈值余量留的保险系数。确定最小启动时间后再按照CAP引脚电容与压摆率的对应曲线选定电容值。我在实际项目里12V输出、330uF负载电容、4A限流CAP电容选了纳法级别的容值启动过程平稳没有出现过流误触发。4.2 PCB布局的功率路径与信号路径PCB布局直接决定这个方案的成败。功率路径上的走线要按载流需求加宽经验上1盎司铜厚、电流4A、温升控制在20℃以内的话走线宽度至少2mm。输入输出的去耦电容必须紧贴VIN和VOUT引脚不然高频上的去耦效果会大打折扣。IMON采样走线一定要细、要短、要远离功率路径更不要跨过任何开关节点。它是微弱电流信号旁边哪怕只有一点耦合ADC读数都会出现毛刺。我习惯的做法是给IMON走线旁边包一圈地线这在第二版改板之后效果非常明显。布局顺序建议是输入接口→防反接和输入电容→eFuse→输出电容→后级负载。MCU放在功率路径的侧边不要放在功率路径中间避免被大电流回路的热量影响。4.3 一个真实改板案例第一版打样回来空载测试正常但一加上负载ADC读到的电流就跳得厉害IMON电压在高电流时偏差超过10%。排查了好久最后发现是IMON采样线有一段走在功率MOSFET开关节点旁边开关节点的dv/dt通过寄生电容耦合到采样线上。第二版的改动非常简单——采样线换层、两边包地、远离开关节点问题直接消失。这类问题光靠理论分析很难发现必须实测才能暴露这也是我说别省打样的钱的原因。另外有个容易被忽略的点输出端如果带了较大的感性负载比如继电器线圈或者长线缆eFuse关断瞬间会产生反冲电压。在输出端加一颗TVS管是很有必要的不然反冲电压超过eFuse的耐压值器件可能直接损坏。5. 固件侧的监控与故障处理策略5.1 监控逻辑的分层设计固件侧的逻辑一定要分层不能把所有事情都堆在中断里做。我按时间尺度和安全级别分了四层第一层eFuse硬件自身保护微秒级响应不依赖任何软件。第二层PIC32外部中断接收FLT下降沿毫秒级响应。中断服务程序里只做一件事——置位故障标志不做任何耗时的操作。第三层ADC周期采样IMON和电压毫秒级轮询。用来发现慢速变化比如电流缓慢漂移、电压轻微跌落。第四层I2C定期读取eFuse的遥测寄存器百毫秒级刷新。用于长期趋势分析和日志记录。分层的核心原则是越快的处理越简单越复杂的处理越慢做。中断里如果去做I2C读寄存器I2C总线上有从设备不响应或者总线仲裁的问题会让中断处理时间不可控这是嵌入式软件设计里的大忌。5.2 状态机与代码结构监控任务我实现成了一个简单的状态机核心状态就五个typedef enum { PWR_IDLE, // 空闲输出关闭 PWR_RUNNING, // 正常运行输出开启 PWR_FAULT, // 检测到故障输出关闭 PWR_RETRY, // 自动重试等待 PWR_LATCHED // 重试超限永久锁存 } pwr_state_t;正常运行状态下主循环每1ms读取一次ADC采样值每100ms读取一次I2C遥测。如果某一时刻ADC采到的电流超过了限流阈值的80%我就认为这是过流前兆启动一个软件计时器如果这个超限状态持续超过10ms就主动关断eFuse并进入FAULT状态。这就是软件提前保护——不等eFuse的硬件保护动作而是通过趋势判断提前采取措施。FLT中断进来之后主循环读取eFuse的状态寄存器把故障类型、故障时IMON电压值、输入输出电压、以及系统运行时间一起打包写入Flash日志。这个快照在事后排查时价值极高等于给每次故障做了一个案发现场记录。5.3 恢复策略自动重试还是锁存恢复策略是设计时要提前想清楚的事情。对于瞬态故障比如电机启动瞬间的浪涌电流我会允许自动恢复但重试次数必须限制。我默认配置是自动重试3次每次间隔100ms3次之后如果故障依然存在直接进入锁存状态直到人工介入。对于持续故障比如负载短路必须锁存。如果不锁存而是反复打嗝eFuse内部的MOS管和外部电感的应力会非常大时间长了器件会提前失效。还有一个细节MCU自己也可能被看门狗复位所以在初始化阶段不要盲目清故障标志。正确的做法是先读Flash里的故障日志判断上一次异常的类型和恢复情况再决定上电时是否恢复输出。这样即使MCU复位了整个系统的故障历史也是连续的、可追溯的。6. 调试与验证实测数据与踩坑记录6.1 上电测试的正确顺序拿到板子之后不要直接做短路测试先按下面这个顺序来空载测试EN拉低确认输出为零EN拉高观察输出电压按软启动曲线缓慢爬升确认UVLO状态正常。阻性负载测试逐步增大电子负载电流观察IMON电压对应是否准确确认接近限流阈值时输出不再是稳压状态而是进入限流模式。电容负载测试挂上真实负载的等效电容确认启动过程没有触发打嗝保护。短路测试这一步一定要用MOS管电子开关做近端短路不要用手拿螺丝刀去碰短路瞬间的能量足够把人吓一跳。整个过程的测量点我给个参考表测量点测量工具观察内容VIN对GND差分探头输入电压跌落幅度VOUT对GND差分探头软启动波形、关断速度IMON对GND普通探头与输出电流的比例关系FLT对GND普通探头故障拉低时间、恢复电平EN对GND普通探头MCU控制时序是否正确6.2 那几个让我花时间最多的坑第一个坑是软启动电容和负载电容不匹配。第一次上大电容负载输出反复爬升又跌落波形就像锯齿波。原因是负载电容太大、启动压摆率太快浪涌电流瞬间超过限流阈值导致eFuse保护性关断。加大CAP电容把启动时间拉长之后问题解决。这个坑原理上很容易理解但不实测真的是想不到。第二个坑是FLT上拉电阻接错地方。FLT是开漏输出我一开始把它上拉到eFuse的VIN12V结果FLT高电平是12V而PIC32的引脚是3.3V电平直接把MCU引脚超压了。正确做法是上拉到MCU的电源这样FLT高电平就是3.3V和MCU完美匹配。第三个坑是I2C总线被拉死。SMBus设备讲究超时机制如果MCU的I2C外设认为总线忙而一直等待总线上的某个设备可能会一直把SDA拉低整个通信链路卡死。解决办法是在软件里实现I2C超时检测和总线复位逻辑或者干脆把这个外设挂在软件模拟I2C的GPIO上出问题的时候直接翻转引脚释放总线。第四个坑是地弹导致MCU复位。做短路测试的时候功率路径上瞬间流过几十安培的电流如果功率地和信号地没有分开地弹电压会直接打到MCU的复位引脚上。我改板的方案是功率地和信号地单点连接MCU供电引脚附近再加一个100nF电容滤波。第五个坑是UVLO阈值设计不当导致的反复开关。输入电源本身在临界电压附近有纹波eFuse的UVLO不断触发和释放输出一会儿开一会儿关。解决办法是MCU软件控制EN引脚先检测输入电压稳定之后再使能输出避免硬件阈值抖动期。6.3 热性能与长期可靠性验证硬件调试完成后热性能验证必不可少。以4A负载电流为例如果eFuse导通电阻是30mΩ那么导通损耗就是P I² × R 4 × 4 × 0.03 0.48W接近半瓦的功耗集中在一颗小封装器件里散热不能轻视。我实测发现PCB铜皮面积足够大、并且有底层铺铜过孔散热的板子满负载运行一小时表面温度大约比环境温度高20℃左右而散热设计不足的板子温度能高出40℃以上电子保险丝的限流点也会随温度漂移。短路的可重复性测试我也做了多次连续40次短路测试每次FLT都能在微秒级时间内拉低输出被迅速关断器件没有出现性能退化。高低温循环之后限流点的变化也在可接受的范围内。这套方案现在已经在项目里稳定运行了至少没有因为电源路径保护的问题再半夜去过现场。如果让我给准备做类似设计的人一句建议先把故障恢复策略想清楚再画原理图先把空载和阻性负载测明白再碰短路测试把IMON波形和FLT波形记录下来每次改板后对比。电源路径保护这件事真正值钱的部分永远是那些实测出来的细节而不是原理图上的那一堆连接线。
返回列表