ARTICLE DETAIL

资讯详情

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

电子保险丝+MCU:工业电源路径保护设计实战与调试

电子保险丝+MCU:工业电源路径保护设计实战与调试 做嵌入式和工业电子的人最怕的不是功能做不出来而是现场供电出了幺蛾子。设备装上去第一天好好的第三天现场一拔插就烧了排查半天发现是供电路径上少了保护。我最近在给一套工业采集节点做电源改造时用了一颗TI的电子保险丝TPS259483AYWPR加一颗Microchip的PIC18F46K80把整条电源路径的保护和状态监控补完整了。这个组合挺典型一颗芯片管功率路径上的过流、过压、浪涌和短路一颗8位MCU管逻辑、诊断和上报。整套东西做下来硬件成本可控PCB面积不大最重要的是现场再也没因为供电问题半夜打电话。下面把项目从器件选型、参数计算到固件状态机的完整过程拆开讲。无论你是在做工业控制器、传感器节点还是汽车电子的外设供电这套“电子保险丝MCU监控”的思路都可以直接套用。1. 项目概述与整体设计思路1.1 这个项目解决了什么问题嵌入式设备里电源路径往往是“裸奔”的。很多板子就是输入电源进来经一个LDO或者DC-DC直接给负载供电。运气好电压一直稳定用几年没问题运气不好负载短路、热插拔打火、后级板卡故障轻则烧个MOS管重则整块板报废。工业应用里更麻烦。24V或者12V总线上挂着几十个节点任何一根线被压坏、任何一个板卡短路都会拖垮整条母线。如果没有防倒灌、防过流、防浪涌的设计现场工程师只能逐段断电排查非常痛苦。这个项目里TPS259483AYWPR作为电子保险丝接在主电源路径上承担四件事过流保护负载电流超过设定阈值时在微秒级时间内关断MOSFET过压保护输入电压异常升高时切断后面负载浪涌电流控制通过软启动电路限制给容性负载充电时的冲击电流短路保护输出短路后快速关断避免热失控PIC18F46K80则负责外围的“智力”部分读取电子保险丝的状态信号控制使能开关记录故障事件并通过串口或CAN总线上报给上层系统。说得直白一点TPS259483是“保镖”PIC18F46K80是“秘书”。保镖管出手挡刀秘书管记录情况、请示下一步。两者配合比单纯塞一颗自恢复保险丝可靠得多。1.2 为什么是“eFuse MCU”这个组合有人会问过流保护用普通保险丝不就行了吗自恢复保险丝也行啊再加一串二极管防倒灌成本还低。这话放到消费级产品里没错但工业场景中这几个方案都有硬伤一次性保险丝熔断之后必须人工更换现场运维成本高。而且规格选大选小都难受选小了一启动就断选大了短路时又烧得不够快自恢复保险丝PPTC响应速度慢短路时故障能量已经把后级芯片打坏了它才慢慢加热断开。还有一个问题是内阻受温度影响大高温下误触发概率高分立MOS管方案可以做到电流检测和开关但保护阈值全靠分立比较器搭精度低、温漂大、器件数量多PCB上占地方TPS259483这类电子保险丝本质上把功率MOSFET、电流采样放大器、比较器、基准源、软启动电路全封装在一个芯片里。你设定一个阈值它就在那个阈值附近精确动作不用你自己去调运放的偏置。用完了还能通过EN引脚恢复逻辑上完全可控。MCU在这里不是可有可无的“点缀”。工业设备需要自诊断、自恢复、远程上报这些功能靠纯硬件逻辑也能实现一部分但灵活性差。比如“连续三次过流后进入锁死状态”纯硬件可能要加计数器芯片或者比较器阵列MCU里就是三行代码的事。再比如把故障发生时的母线电压记录下来纯硬件就很难做。所以我从一开始就定下来保护动作交给eFuse硬逻辑决策和记录交给MCU。1.3 电路总体框架整个系统的供电和监控关系如下输入电源典型12V或24V直流先进TVS管做瞬态抑制再进TPS259483的输入端TPS259483的输出端接负载负载容性较大靠dVdT引脚的外接电容控制启动斜率PIC18F46K80的供电建议从输入侧取经过独立的LDO降压到5V或3.3V。这一点很关键如果MCU也接在eFuse输出后面一旦输出短路保护关断MCU自己也没电了故障记录和上报就全废了TPS259483的故障输出引脚FLT接到MCU的外部中断引脚MCU的GPIO控制eFuse的EN引脚用来做上电时序控制和故障后的重试这里多说一句MCU供电位置的问题。我见过不少项目为了省一路电源把MCU直接挂在被保护的电源轨道上结果故障关断后整机黑灯。如果设备本身不需要远程诊断这样可以但凡你要“故障上报”或者“恢复尝试”MCU必须独立于被保护路径供电。2. 核心器件TPS259483AYWPR与PIC18F46K802.1 TPS259483AYWPR一颗芯片完成电源路径全部保护TPS259483AYWPR属于TI的电子保险丝产品线后缀里的AYWPR对应封装和包装形式。这类产品的内部框图大致是这样输入端经过一个功率FET到输出端FET旁边有电流检测放大器输出端有电压监控比较器再加上一个软启动控制电路。选这颗芯片而不是普通负载开关核心原因是它带完整保护组合。负载开关通常只有“开”和“关”最多带个软启动没有过流限制能力。TPS259483可以实时测量流经MOSFET的电流一旦超过外部电阻设定的ILIM阈值就在极短时间内把FET栅极拉低阻断电流通路。在项目中的关键职责是热插拔保护现场设备支持热插拔时插拔瞬间会产生非常大的浪涌电流尤其是后级有大容量电解电容时。电子保险丝的软启动功能让输出电压缓慢上升等效把电容充电电流限制住反向电流隔离如果输出侧电压高于输入侧比如负载是电机断电后反电动势会倒灌某些eFuse内部结构可以从输出到输入构成不看希望的路径。此时要确认所用器件的体内二极管特性和阻断能力必要时在输出侧再加二极管或者选用带负载断开功能的版本限流精度分立方案很难做到精度eFuse内部的精密放大器可以在较宽温度范围内保持一个相对稳定的限流阈值实际拿到芯片后第一件事不是画板子而是把数据手册里的“Recommended Operating Conditions”和几个典型曲线打出来尤其是ILIM电阻与限流阈值的关系曲线、dVdT电容与启动时间的关系曲线。这两个参数是整个电路设计的基础后面计算都要用。2.2 PIC18F46K80为什么选这颗8位MCUPIC18F46K80是一颗40/44引脚封装的8位增强型MCU最大的特点是自带ECAN模块和12位ADC。工业节点里常见的需求它基本覆盖CAN通信、多路模拟量采集、EEPROM数据存储、多个定时器。有人会说现在32位MCU这么便宜为什么还用8位这个项目里我对主控的要求其实不高读几个GPIO、定时采样、跑一个简单状态机8位MCU完全够用。选PIC18F46K80还有一个实际原因它的工作电压范围宽工业级温度范围而且MPLAB X IDE加上MCC代码生成器配寄存器非常快调试时能省很多时间。另外PIC18F46K80的CAN模块在很多工业改造项目里是刚需。采集节点的供电保护状态需要发给PLC或者上位机走CAN是最省事的方式。如果你手上已经有CAN网络那么这颗MCU天然合适。如果没有CAN需求把上位机通信换成串口或者RS485也一样代码逻辑不受影响。关于固件开发环境用MPLAB X IDE配合MCC先勾选需要的时钟源、CAN、EUSART、ADC和GPIO。MCC生成的初始化代码可以直接作为底层自己在上层写应用逻辑。我第一次用的时候不太习惯后来发现只要不去手动改生成的初始化函数直接添加自己的模块代码维护非常轻松。2.3 两者配合的关键信号链电子保险丝和MCU之间本质上只走三条信号线ENMCU输出控制eFuse是否允许导通FLTeFuse输出开漏结构故障时拉低IMON或者电压采样点MCU的ADC输入用于观察输出电压状态这三条线就构成了完整的“保护-感知-决策”闭环。FLT是硬逻辑发生时不需要MCU参与eFuse自己就断开了。MCU听到FLT拉低后再决定是上报告警、自动重试还是保持锁定。我做项目时习惯在FLT和MCU之间加一个RC低通滤波比如100Ω串一个1nF到地目的是滤除FLT引脚在启动瞬间可能出现的毛刺。但这会引入一点延迟如果系统对故障响应时间要求特别苛刻就不要加这个滤波器直接靠MCU里的软件去抖。工业现场一般是后者稍微滤波一下会让状态更干净。3. 硬件设计与参数计算实操3.1 输入/输出电路与关键引脚配置先给一个我用的参考连接方式下面讲参数怎么定。输入IN接电源正极靠近芯片引脚放0.1uF陶瓷电容和10uF电解电容或大容量MLCC。陶瓷电容负责高频去耦电解电容负责吸收热插拔时的能量冲击输出OUT接负载同样放一个10uF电容。注意这个电容主要是稳定环路不能太小ENMCU的GPIO通过一个10kΩ电阻接到EN引脚MCU未初始化时靠这个电阻把EN拉低保证芯片默认关闭FLT开漏输出外部接10kΩ上拉到MCU的VDD然后进MCU外部中断引脚ILIM通过一个电阻接到地阻值决定限流阈值dVdT通过一个电容接到地容值决定软启动时间OVLO/UVLO如果该型号具备独立过压和欠压检测引脚用分压电阻网络把输入电压映射到引脚上设定过压/欠压阈值这里要特别说一下EN引脚的电平范围。很多eFuse的EN阈值是1V左右逻辑高电平范围很宽3.3V的MCU可以直接驱动不需要电平转换。但开漏的FLT上拉电压要参考MCU的IO电源别上拉到输入电源上去否则电平不匹配。我见过有人把FLT上拉到24V直接把自己MCU引脚打坏的这种低级错误一定要避免。3.2 ILIM、OVLO/UVLO分压电阻的计算思路ILIM电阻是限流精度的关键。选电阻时先确定系统的最大负载电流I_max再乘1.2到1.5的裕量系数得到目标限流阈值I_limit。举个例子负载正常工作电流4A峰值瞬间5A我按1.3倍设到6.5A。这个值必须大于设备启动瞬态电流但又不能太大否则短路时能量还是太大。确定I_limit后在数据手册里找到ILIM电阻与限流阈值的关系曲线或者公式取一个靠近标准阻值的1%精度电阻。这里有几个细节阻值必须用1%精度不能用5%的否则限流点误差直接超过规范ILIM引脚走线尽量短且要靠近芯片引脚不要有长走线引入寄生电感如果系统工作温度变化很大注意电阻的温度系数建议选低TCR的厚膜电阻OVLO和UVLO分压电阻的计算就是普通电阻分压公式。输入电压正常值为V_nom欠压阈值设为V_uvlo过压阈值设为V_ovlo根据芯片引脚的基准电压V_ref用分压比算出上下电阻值。要注意分压电阻的阻值不能太大否则引脚输入偏置电流会造成误差一般选几kΩ到几十kΩ的量级。工业应用中24V系统我习惯把欠压设在18V过压设在30V留出足够窗口给电压波动。算完后还要把几个关键电压数据拟合到表格里方便调试时对照。3.3 软启动与浪涌电流控制软启动是嵌入式电源设计里最容易被忽略的环节。很多人觉得上电就通电能亮就行。但在热插拔场景下输出端一旦接了大电容上电瞬间相当于对地短路充电电流可能是稳态电流的十倍以上。如果不限制轻则触发过流保护导致系统起不来重则把输入电源拉垮影响整条母线上的其他设备。TPS259483的软启动时间由dVdT引脚上的接地电容控制。电容越大输出电压爬升越慢浪涌电流越小。但这个时间也不宜过长否则现场设备上电响应太慢用户会以为设备坏了。我一般先用最小0.1nF到1nF起步配合电子负载看输出波形再逐步增加观察启动过程中ILIM引脚是否有脉冲、FLT是否误触发。如果你是首次调这个电路建议顺序是先不接负载只接一个空载的板卡用示波器观察VOUT上升波形然后把电子负载设成0.5A步进看限流点是否稳定最后再模拟短路看关断响应和恢复是否正常。这三步做完才能放心交付现场。3.4 故障信号到MCU的中断接线FLT引脚是开漏结构这是设计上有意为之的多个eFuse的FLT可以连在一根线上形成“有线或”逻辑。在这个项目里FLT通过上拉电阻接到MCU的INT引脚平时是高电平一旦芯片发生故障内部FET关断开漏管把FLT拉低MCU产生下降沿中断。我给FLT引脚配了一个10kΩ上拉和一个小到可以忽略的滤波电容。很多人会问为什么不用软件轮询而用中断因为网络摄像头实时性要求不那么高但工业电源故障处理要在毫秒级别才能留下有效现场数据。中断方式可以在MCU忙其他任务时也能立即响应不会因为主循环卡在某个阻塞型函数里而丢失事件。中断服务程序里不要做太重的处理先把故障引脚状态和时间戳记录下来置一个标志位真正的状态处理和重试逻辑放到主循环里去做。这是嵌入式编程的基本功中断里做太多事会导致其他中断延迟尤其是CAN通信中断时容易出现报文丢失。3.5 PCB布局与散热要点电源设计的成败一半在PCB布局。TPS259483的散热主要靠封装底部的散热焊盘和PCB铜箔不是靠芯片外壳。所以布局上我特别在意几点功率路径的输入输出走线用加宽铜箔尽量短减少寄生电阻和电感。24V系统下5A电流的走线至少要有2mm以上宽度或者铺铜皮散热焊盘要打多个过孔连接到底层的大面积地平面帮助热量传导。过孔不要太小0.5mm直径以上效果才会输入输出电容尽可能靠近芯片引脚摆放形成一个低阻抗环路。电流检测引脚、ILIM引脚要远离电感类元件和开关节点避免磁场干扰在流经IC时要注意输入地线与负载地线的汇合点。功率地和控制地不能先分开很远再接否则负载电流在地线上产生的压降会被FLT或者ILIM的参考地拾取引起误动作关于散热实测eFuse在正常导通状态损耗很小导通电阻只有毫欧级别但限流发生时刻功率很足。6.5A限流、输入24V、输出被拉到一半电压时芯片上瞬时功率几十瓦虽然保护电路动作很快但一次动作积累的热量也可能让结温升几十度。所以限流值设定不能太贪宁可让负载更早触发保护。4. 固件逻辑与状态机实现4.1 基于MCC的初始化流程PIC18F46K80的初始化在MPLAB X IDE里可以用MCC图形化配置效率很高。我的初始配置如下时钟内部16MHz不需要外部晶振。PIC18F46K80内部振荡器精度足够CAN通信使用省掉两个引脚GPIOEN配置为数字输出初始化为低电平FLT配置为输入使能内部弱上拉不过我在外部已经接了10k上拉另外留一个LED指示灯输出外部中断把FLT引脚分配到INT0或PORTB变化中断上选择下降沿触发ADC配置一个通道采样输出电压转换结果用12位EUSART配置为115200-8-N-1用于调试信息输出ECAN配置为CAN 2.0B波特率250kbps标准帧。250k是工业现场最常用的速率兼容性好MCC生成代码后不要直接去修改代码生成器管的那部分而是新建一个app.c和app.h把业务逻辑全部放进去。这样下次用MCC重新配置外设时不会把业务代码覆盖掉。4.2 故障处理状态机故障处理逻辑不推荐用一堆if-else堆出来状态机更清晰。我分这么几个状态POWER_OFF初始状态EN拉低eFuse关闭。上电后、故障锁死后、收到外部复位命令后都会回到这里POWER_ON正常供电状态。EN拉高周期性读ADC和FLT信号输出心跳报文FAULT_FAST检测到FLT下降沿中断。先延时10ms去抖再读取ADC确认输出是否异常记录故障类型和时间戳然后立刻重新拉低EN进入FAULT_CONFIRMFAULT_CONFIRM判断是否需要重试。用一个计数器记录连续故障次数如果少于预设值延时500ms后重新置EN为高回到POWER_ON如果连续故障次数达到三次进入FAULT_LATCHFAULT_LATCH锁死状态EN保持低电平通过串口和CAN上报“过流故障且无法自恢复”只有收到主机清理命令或者人工断电重启才能跳出这个状态机的核心思想是“先断、再判断、再恢复”。第一优先级永远是切断故障路径而不是试图在故障持续期间反复尝试。现实设备里负载瞬时干扰和真实短路是有区别的瞬时干扰可能在10ms后就消失了这时候快速恢复对生产系统影响最小真实短路持续时间长三次重试都为0说明后级板卡需要人工检修了。4.3 故障记录与通信上报PIC18F46K80自带数据EEPROM可以把最近的若干条故障记录写进去。每条记录包括故障序号、故障类型码、故障发生时输入电压的ADC值、自上次上电以来的运行时间、故障次数。这样现场维护人员把板子拆下来插上调试线就能直接读到之前发生了什么。通信协议我设计得很简单周期心跳帧每1秒通过CAN发送一帧包含当前供电状态、输出电压、累计故障次数故障事件帧故障发生时立即发送一帧包含故障类型和关键参数Modbus RTU命令通过串口接收“清除故障锁定”命令寄存器写入特定值MCU收到后清除故障计数器回到POWER_OFF状态等待重新使能细节上要注意CAN报文的接收和发送建议用中断或FIFO方式不要在主循环里阻塞等待发送完成。尤其是在故障处理过程中如果主循环被一个发送函数卡住几十个ms外部中断虽然能进来但状态机迟迟无法处理可能残留危险。5. 实际调试中的常见问题与排查心得5.1 上电瞬间误过流设备无法启动这是最常见的现象板卡一上电FLT闪一下输出起不来。很多人第一反应是限流阈值设小了其实大多数情况是软启动时间太短。排查方法是拿示波器同时看输入电压、输出电压、FLT三路波形。如果是软启动引起的问题会看到VOUT在爬升过程中FLT拉低而输入电压纹丝不动。解决方向有两个增大dVdT电容延长软启动时间或者检查负载侧电容是否过大考虑局部预充电。还有一种特殊情况是MCU在上电时把EN拉成了高电平但整机电源还没有稳定导致eFuse看到欠压或者异常瞬态而直接拒绝输出。这个要在MCU程序里保证初始化完成后延时几百毫秒再拉高EN不要“顺手”在焊完板子第一次刷机时就给EN一个默认高电平。5.2 FLT一直为低或者有时无故闪断如果FLT持续为低先用手摸一下芯片温度如果烫手大概率是过温或持续过流。如果不是则用万用表检查EN引脚电压是否真正达到高电平阈值。很多情况下MCU的引脚是开漏输出的软件上写了拉高但忘了配置为推挽输出结果EN悬空芯片一直关闭。如果FLT是“有时无端闪一下”重点查地线。电子保险丝内部电流检测参考点在芯片的地引脚上如果大电流负载的地线路径和芯片地之间有一段公共阻抗负载突增时地电位被抬起来内部比较器就会误触发。这种问题示波器探头地线直接夹在芯片GND上观察负载电流突变时GND电压有没有上跳就能确认。5.3 MCU复位导致EN抖动造成eFuse反复开关MCU在快速复位时GPIO的电平会经历一个不确定状态如果EN恰好在这个窗口被拉到高电平eFuse会瞬间打开然后MCU初始化完毕后又拉低造成负载端一次无谓的电源抖动。大功率负载还好控制板卡可能因为这个抖动直接掉电重启。我在设计上做了两道保险一是硬件上EN外接10kΩ下拉电阻MCU未配置前保持低电平二是程序初始化时第一件事就是把这颗引脚配置成输出并输出低然后再做其他初始化。这两步配合基本杜绝了复位抖动。5.4 实用排查建议速查表现象可能原因排查方向一加电就FLT输出起不来限流设定过小、软启动太短、后级短路减小ILIM电阻前先用电子负载测实际电流示波器看VOUT上升斜率FLT持续低EN未拉高、芯片过温、输入过压检查EN实测电压摸芯片温度测OVLO分压点电压FLT偶尔误触发地线噪声、ILIM布线过长、DPDT电容干扰示波器地线夹在芯片GND脚观察负载突变时的地电位跳动限流值与设定值偏差明显ILIM电阻精度差、引脚走线过长换1%电阻缩短走线用电流探头实测校准高温环境经常触发保护电阻温漂、限流点选得太贴近最大值检查电阻TCR限流值留足高温裕量检查板子散热短路后不能可靠恢复故障计数逻辑错误、EN未在锁死前关闭状态机打印日志确认“FAULT_CONFIRM→FAULT_LATCH”迁移条件5.5 现场调试顺序拿到新做好的样机别着急把负载接满。我的调试顺序一般是第一步单独给板子供电MCU程序只跑“上电延时拉高EN”的最小功能示波器看输出有没有正常建立第二步接上一路轻载比如几十欧姆电阻确认限流值附近电压不塌陷第三步短路输出看FLT响应时间记录从短路到关断的波形。好的设计应该在几十微秒内切断第四步接真实负载热插拔十次以上观察是否有误触发第五步把故障日志、CAN上报功能打开模拟电容短路场景验证故障记录能写进EEPROM前三步基本上用示波器就能完成第四步才真正暴露问题。我修过很多板卡问题往往不在理论计算上而在高频开关噪声、地线干扰这些“测出来才知道”的细节上。6. 结尾一点个人体会项目做完我最大的感受是电源路径保护在嵌入式系统里不能只靠一颗器件也不能只靠一堆软件判断。TPS259483AYWPR这种电子保险丝把“硬保护”做到了芯片级别PIC18F46K80再把“软诊断”补上去两张牌合起来才算把工业现场那些复杂供电问题兜住。如果这个方案要扩展后面我打算加一路独立电流检测用MCU的12位ADC周期性记录负载电流曲线用来判断负载是不是在缓慢老化、接触电阻是不是在增大。这样一来系统就不只是“出事才报”而是可以做到“趋势预测”。硬件的改动不大eFuse输出端加一个低值采样电阻再接一个差分放大器和ADC通道就行。工业现场预防性维护很多时候就是靠这种不起眼的数据积累做起来的。芯片数据手册、参考电路和代码的事等我有空整理出来再单独写一篇。现阶段上面的设计思路和调试技巧足够你把手上的电源路径保护先做扎实。
返回列表