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

资讯详情

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

基于TPS259483与PIC32的工业电源保护与故障管理设计

基于TPS259483与PIC32的工业电源保护与故障管理设计 去年年底我帮客户改版一套工业环境监控终端板子本身不难难的是供电系统。现场设备要么在电机启停时被打坏要么保险丝烧了必须派人去换客户还提了一个过分的要求电源故障要在面板上显示还要通过串口上报给上位机。折腾下来我最终把方案定在了 TI 的 TPS259483AYWPR 做主功率路径保护搭配 Microchip 的 PIC32MX675F512L 做控制和状态管理。这篇文章把这套设计的来龙去脉、参数计算、固件状态机、实测踩坑写清楚给做嵌入式电源设计或者工业控制器的人一个可参考的样本。1. 传统保险丝TVS防反接方案越用越别扭的几个地方过去我设计工业板卡输入保护基本都是老三样自恢复保险丝、TVS 二极管、PMOS 防反接。凑合用没问题但客户只要提高要求这套组合的短板就会全部暴露出来。1.1 保险丝和自恢复保险丝在工业设备里的尴尬处境普通玻璃管保险丝或贴片保险丝优点是便宜、直观、谁都会用缺点则是响应速度慢。一个感性负载瞬间短路电流冲击可能已经过去了几毫秒保险丝才反应过来。这时候后级电路的 MOSFET、DC-DC、单片机可能已经受到损伤。更麻烦的是它不可自恢复现场设备一旦跳闸必须由人去更换这对无人值守站点来说就是灾难。自恢复保险丝虽然能恢复但它的动作特性受温度影响很大。夏天机柜温度高复位时间明显变长冬天又可能太灵敏正常浪涌都误触发。而且它漏电流偏大、动作一致性不高设计时很难精确设定1.5A 就切断这种硬指标。对工业现场来说这是一种靠不住的半保护。1.2 PMOS 防反接和 TVS 的隐藏代价PMOS 防反接电路很简单但有个容易被忽略的问题它只能防反接防不了过压。输入超过 DS 击穿电压MOS 直接损坏。要同时防过压就得在前面再堆一堆钳位电路。而 TVS 的钳位电压是固定的选型只能就高不就低。比如 12V 系统选 15V 的 TVS实际工作电压 12V 没问题但浪涌幅度稍微大一点TVS 导通后把电压钳在十几伏后级 12V 转 5V 的 DC-DC 可能已经处在极限状态。TVS 还有一个坑它对慢速过压几乎没有反应。长时间偏高的电压会慢慢蚕食后级电路寿命但 TVS 不会管。客户的原话是为什么别的板子都坏了你们的不坏——这种问题靠传统分离器件很难回答。1.3 真正需要的其实是可复位、可编程、能汇报的电源开关做完上一版之后我总结过工业控制系统里电源管理器件的核心价值并不是把故障消灭在萌芽而是让故障变得可见、可控、可恢复。保险丝只能告诉你坏了但没法告诉你为什么坏什么时候坏坏了多少次。这对做故障诊断的人来说是完全缺失的信息。TPS259483 这类集成电子保险丝的意义就在这里。它内部集成了功率 FET、电流采样、热关断、过压比较器、启动斜率控制外部只要接几个电阻电容就能设定行为。配合 MCU不但能实时读取故障信号还能通过控制 EN 引脚实现远程复位、远程关断。这让电源路径从一根粗导线变成了系统里一个可以监控的模块。设计思路也从尽量不让它烧变成了即使出了问题也要第一时间知道并且能在不影响整机的情况下恢复。2. TPS259483AYWPR 与 PIC32MX675F512L 的分工逻辑这套系统里两颗芯片的关系很清楚TPS259483 管功率通路的通断和保护动作PIC32MX675F512L 管状态感知、策略决策和人机接口。说直白点一个是带保险功能的电闸另一个是负责看电闸、记录电闸状态、在需要时主动拉闸或者合闸的值班员。2.1 TPS259483 在电源路径里的实际位置我这版设计的输入是 12V 工业直流电来自现场的开关电源。系统结构如下连接器进入之后先是一级防反和浪涌吸收TVS 和共模电感然后进入 TPS259483 的 VINVOUT 直接接到后面的 DC-DC12V 转 5V和外围负载。PIC32 等控制器的供电是从 5V 后面再降压出来的并不直接挂在 TPS259483 的输出上。这个位置意味着 TPS259483 是整块板子的总进水阀。它一关后级全部断电它限流后级任何过流都被卡住。选择 TPS259483AYWPR 而不是普通保险丝最主要原因是它的保护阈值可以通过电阻设定并且在故障条件下用一个引脚输出低电平通知 MCUMCU 再决定是让它闭锁还是重新尝试启动。2.2 MCU 在这里不只是读个状态PIC32MX675F512L 在项目里的具体职责有三块通过 GPIO 连接 TPS259483 的 FLT故障输出和 EN使能控制实时采集故障事件。通过 ADC 采集输入电压和负载电流的模拟量用于趋势判断比如发现电流持续偏高但还没到切断值就提前给上位机报警。维护一套故障状态机结合 RTC 时间戳把每一次过流、过压、重启记录到外部 EEPROM方便现场人员远程诊断。说实话用一个 512KB Flash 的 PIC32 做这点事有点大材小用但项目里这颗 MCU 本来还要承担传感器采集、LCD 显示、Modbus 通信等任务保护管理只是它的一个小模块。我反而觉得这种顺便做掉的方式最适合实际产品——谁都不愿意为电源保护单独加一颗 MCU。2.3 为什么不用全硬件逻辑实现有人会问TPS259483 本身已经有保护功能PIC32 最多就接一个中断引脚为什么还要写状态机原因在于保护动作和恢复策略是两码事。纯硬件只能做固定行为过流切断、过压断开但恢复策略必须可编程。比如远程要求重新上电、故障持续超过三次就转为闭锁不再自动重启、温度过高时主动降额运行——这些逻辑硬件做不了。另外独立 MCU 还能处理一个硬件很难搞定的问题故障分类。TPS259483 的 FLT 引脚只告诉你出事了但到底是过流、过压还是过热通过读取不同引脚或者配置不同状态MCU 可以做区分处理而不是一刀切。这在客户售后阶段省了一大半麻烦。3. 限流、过压、启动浪涌三组关键参数我是这样定的这类芯片的配置核心不在代码而是在 VIN、OVP、ILIM、dV/dT 那一排引脚上的电阻电容。下面这些数字不适用于所有 TPS259483 设计但计算方法可以通用。3.1 限流电阻 ILIM选 2A 还是 1.5A要算后级最大需求限流值由 ILIM 引脚到地的电阻决定关系通常是 Ilimit K / R_ILIM其中 K 是手册给出的系数。具体 K 值每颗料不同我设计时会先把目标电流定下来再反推电阻。我这块板子的 12V 侧负载包括一个峰值 1.2A 的加热器、若干传感器和 LED 指示正常总电流大约 1.4A。考虑启动时 DC-DC 输入电容充电和加热器冷态电阻较低我把限流值定在 2A。留 40% 余量不是拍脑袋而是为了避免正常尖峰触发保护同时又能挡住真正的短路。在 PCB 上我放了两套 ILIM 电阻焊盘一套按 2A另一套按 1.2A方便现场调整。这个技巧后来帮了大忙因为客户现场电压波动比想象中严重限流值在某些站点必须调高一点才能稳定运行。3.2 过压阈值分压网络计算与迟滞考虑TPS259483 的 OVP 引脚内部有一个基准电压通过外部两个电阻从 VIN 分压。12V 系统我期望过压保护点在 14V 左右因为现场开关电源空载时经常冲到 13.5V到 14V 就极不合理了。分压公式按常规算假设内部基准是 1.2V那么 Rtop/Rbottom (14 / 1.2) - 1 ≈ 10.67。如果 Rbottom 取 10kΩRtop 取 105kΩ 附近的标准值实际阈值会落在 13.9V 附近。这里要注意两个细节第一分压电阻必须用 1% 精度最好用温漂小的厚膜电阻第二OVP 检测路径非常敏感靠近引脚的部分不要走长线避免引入耦合噪声导致误关断。实际调试时我发现OVP 动作和恢复之间如果迟滞不够输入电压在阈值附近抖动时输出会反复通断直接导致后级 DC-DC 进入欠压保护。TPS259483 一般有内置迟滞但我还是把分压电阻的取值略微调整让恢复点比动作点低 0.5V 左右一次解决振荡问题。3.3 启动浪涌dV/dT 电容决定输出爬坡速度输出端我总共挂了 330µF 电解电容。如果没有启动斜率控制上电瞬间充电电流可能高达几十安即使限流电阻设定在 2A也会把输入电压拉垮。TPS259483 的 dV/dT 引脚用一只电容设定输出电压的爬升斜率原理是把输出端按指定速度从 0V 拉到 12V。一个简单的估算如果希望 10ms 完成爬升充电电流大约是 I C × dV/dt 330µF × 12V / 10ms ≈ 0.4A。这远低于 2A 限流说明这个斜率是安全的。我实际留的电容让爬坡时间接近 20ms一方面是保守另一方面是想降低 12V 转 5V 的 DC-DC 启动冲击。调试时我特意用示波器抓过 VOUT 波形发现如果不加 dV/dT 电容VOUT 会直接顶到输入电压然后有个明显回勾加上合适电容后波形是一条干净的斜坡后级 DC-DC 的输入浪涌几乎消失。3.4 欠压锁定和反向电流阻断这两个参数别忽略工业现场电源并不是稳定的。我遇到过输入电压慢慢掉到 8V 的情况这时候 DC-DC 已经无法正常工作板子反而处于半死状态。TPS259483 的 UVLO 功能支持通过电阻设置欠压锁定点。我把它设在 9V低于 9V 直接关断输出让 MCU 在电压彻底消失前完成状态保存。反向电流阻断也要重点确认。当输入断电、后级有大电容时能量会从 VOUT 向 VIN 倒灌这会导致 MCU 在断电后还维持一段时间供电行为不可预测。确认器件的反向保护功能开启后我特意做了一次快速断电测试VOUT 电压跌落干净利落没有出现倒灌维持的情况。4. 固件侧关键不是读个值而是故障状态机我见过不少人在 MCU 里只做一个动作检测 FLT 低电平就打印一条日志。这样太浪费了。真正有价值的是设计一个状态机让电源路径的每一个状态变化都可解释、可追踪。4.1 PIC32 的引脚配置与初始化PIC32MX675F512L 把 TPS259483 的 /FLT 接到一个外部中断引脚上EN 接到普通 GPIO另外再用两个 ADC 通道采集输入电压和负载电流的模拟信号。初始化代码大致是这样void PowerPath_Init(void) { // /FLT 信号低有效配置外部中断 TRISBbits.TRISB7 1; // 输入 CNPUEbits.CNPUEB7 1; // 内部上拉防止悬空 INT0R 0b0110; // 把 INT0 映射到物理引脚按实际原理图调整 IPC0bits.INT0IP 5; // 中断优先级 IEC0bits.INT0IE 1; // 使能 INT0 中断 IFS0bits.INT0IF 0; // EN 引脚默认拉到低电平等初始化完成后再使能输出 TRISBbits.TRISB6 0; // 输出 LATBbits.LATB6 0; } void __ISR(_EXTERNAL_0_VECTOR, IPL5AUTO) PowerPath_Isr(void) { IFS0bits.INT0IF 0; // 清标志 PowerPath_FaultHandler(); // 进入状态机处理 }注意PIC32 的引脚映射和寄存器名在不同型号上略有差异这段代码是示意实际以你的数据手册和原理图为准。关键在于低电平中断必须快速响应不能放在主循环里轮询。4.2 状态机正常、启动、过流、冷却、闭锁我把电源路径的状态分成了五种代码里直接用枚举表示typedef enum { PWR_IDLE, PWR_STARTUP, PWR_RUNNING, PWR_TRIPPED, PWR_LATCHED } PowerPathState;正常运行是 RUNNING。一旦收到 FLT 中断切换成 TRIPPED此时 MCU 先记录故障类型和时间再根据策略决定是否自动恢复。自动恢复的方式很简单把 EN 拉低 200ms再拉高让 TPS259483 重新执行一次完整启动流程。如果 3 次重试都失败进入 LATCHED 状态不再自动恢复同时面板上显示电源故障并等待人工或上位机命令清除。这个设计有一个很大的好处现场偶发的瞬时过流可以自动恢复整机几乎无感但真正短路导致的重复故障不会被 MCU 反复折腾因为三次之后它就放弃了。客户不会看到设备在那里啪嗒啪嗒地不断重启。4.3 故障日志与 RTC 联动每次状态切换我都会把当前系统时间、故障类型、输入电压、负载电流写进 I2C EEPROM。这样即使整机断电事后也可以通过串口把日志导出来分析。这几个数据合在一起非常有用如果输入电压高到 13.8V 才触发过压说明现场供电出了问题如果电流只是短暂超过 2A可能是某块外设插入时产生了浪涌。固件里还要注意一个细节放电顺序。检测到断电逻辑输入电压快速下降时MCU 应当立即把关键运行参数存到 EEPROM而不是等到 VOUT 跌到 4V 才想起写 Flash。因为 Flash 写入需要稳定的供电掉电边缘很容易写坏数据。我会把掉电存储的判断电压设在 10V比 UVLO 锁定点 9V 高一点点留出安全余量。4.4 远程控制和复位策略上位机通过 Modbus 指令可以读电源路径状态也可以下发远程复位命令。这时候 PIC32 只需要执行一次 EN 引脚的低高脉冲。我额外做了一个看门狗联动如果 MCU 发现 TPS259483 在 30 秒内连续复位 3 次就自动切断输出并且拒绝远程复位直到现场人工确认故障原因。这个策略看起来复杂实际写代码只要 10 行左右但客户觉得非常专业。说白了MCU 在这里不参与功率路径的实时保护——那是 TPS259483 的职责——MCU 负责的是更高级的决策层要不要恢复、什么时候恢复、恢复到什么程度、恢复失败后怎么办。5. 实测阶段遇到的三个意外每个都值得记下来研发调试和客户现场总是两个世界。实验室里测试很顺利一到现场就接二连三出现奇怪现象。我把三个最典型的记在这避免后来人重复踩坑。5.1 开机瞬间误报过流输入电源本身的冲击不是负载的问题第一版测试时每次插上 12V 电源TPS259483 有概率在 100ms 内拉低 FLT。我一开始怀疑是输出电容充电电流太大加大 dV/dT 电容后依旧偶发。后来用示波器同时抓 VIN 和 VOUT发现问题出在输入电源上工业现场开关电源在接通瞬间会有一个明显的过冲VIN 会从 12V 冲到 14.5V 然后回落这个过冲先触发了过压保护而不是过流保护。解决方法是把 OVP 阈值从 14V 稍微提高到 15V因为在 12V 系统里瞬间过冲到 14.5V 虽然不合规范但不算持续故障后级 DC-DC 完全能承受。同时我在输入端多加了一颗 100µF 电解电容把振铃幅度压低了 2V 左右。问题消失。5.2 继电器线圈断开时把 5V 侧都打到了 6V有一次测试 24V 继电器控制输出线圈断开瞬间示波器捕捉到 12V 母线上有近 -40V 的尖峰。这个尖峰直接耦合到 TPS259483 的输出侧因为输出端虽然有 330µF 电容但电容 ESL 在高频尖峰面前几乎不起作用。结果后级 5V 稳压器的输入端被短暂顶到了 6V 多虽然没烧但已经踩到芯片绝度最大额定值边缘。排查思路这个尖峰的源头是继电器线圈不是输入电源所以在继电器两端并联了续流二极管并且在靠近连接器的位置补了一颗 47nF 的高压陶瓷电容。后续再测尖峰幅度降到 -1V 以内。记住一个原则负载侧产生的瞬态应该尽量在负载侧消灭而不是指望输入端的保护器件去挡。5.3 短路测试之后 TPS259483 不恢复了闭锁和损坏是两件事我们做过一次输出端直接短接测试TPS259483 迅速限流保护FLT 拉低系统进入 LATCHED 状态。但随后发现即使 MCU 把 EN 拉低再拉高器件依然不工作。我第一次遇到时以为芯片烧了换了新片再试才确认是闭锁条件没有完全解除——有些保护模式要求 EN 低电平保持时间足够长或者需要先断电再上电才能解锁。处理方法是查手册确认具体器件的退出闭锁条件然后在固件里把自动恢复流程调整成拉低 EN 至少 300ms同时确认 VIN 已经恢复到正常范围再拉高 EN。如果还是不行只能断电重上。另外我检测了器件的表面温度发现短路瞬间非常烫。后来我把短路测试的时间缩短到 1 秒以内并且用热像仪盯着避免反复测试把芯片真的损坏。5.4 示波器比万用表重要一百倍排查上面这些问题时万用表只能告诉我输入电压 12V输出 12V看起来正常。但系统的瞬态行为完全看不见。我强烈建议做电源路径调试时示波器至少要同时抓四路VIN、VOUT、FLT、负载电流用电流探头或串采样电阻。很多灵异现象只要你把时间轴拉到毫秒甚至微秒级别一眼就能看出原因。电源路径的问题从来不是平均状态的问题而是瞬间状态的问题。6. 工业现场的 PCB 布局与 EMC 细节重做一次我会重点注意这块板子从原型到量产改了三次其中一半改动是性能问题另一半则是 PCB 布局和 EMC 导致。总结下来有四个地方最值得投入注意力。6.1 输入 TVS 一定要靠近连接器而不是靠近电源管理芯片TVS 的作用是在浪涌进入板内之前就钳位掉如果把它放在 TPS259483 附近浪涌路径会穿过整块 PCB参考平面会被污染。我第一版就是把 TVS 放在芯片旁边结果浪涌测试时 FLT 误触发不说还有一路传感器 ADC 读数跳动。改成连接器入口处就近摆放之后板内噪声明显下降。6.2 OVP 分压电阻要远离开关节点工业板卡上通常有 DC-DC 和继电器这些地方都有快速跳变的电压。OVP 分压网络是高阻抗节点哪怕只有几个 pF 的寄生耦合都能把开关尖峰耦合进去导致过压误触发。我在布局时把 OVP 电阻和电容放在紧靠 TPS259483 的一侧并且用 GND 铜皮把它们和开关节点隔开。走线上也尽量短、尽量直不绕路。如果 PCB 空间允许在 OVP 引脚加一个 1nF 的滤波电容到地可以有效滤除高频噪声。注意这个电容不能太大否则会影响 OVP 阈值的响应速度调制效果需要实测确认。6.3 散热焊盘和过孔是这类电源器件长期可靠性的关键TPS259483 正常工作时有约 1.4A 电流通过导通电阻即使只有几十毫欧也会有几十毫瓦到一百多毫瓦的功耗。看起来不多但工业现场环境温度可能到 60℃以上如果散热不好芯片会热关断。我一开始只在底面放了一个简单的焊盘负载电流稍大就摸到芯片烫手。后来按手册要求在芯片下方打了一组过孔阵列连接到底层的大面积铜箔温度立刻降了 15℃ 左右。散热过孔的标准做法孔径 0.3mm 左右间距 0.8mm 左右焊盘正下方均匀排列注意不要让锡膏从过孔漏走。实在没条件打满过孔至少四角要有主过孔。6.4 量产测试清单每一项都不可省电源路径保护这一块量产阶段不能只测通电能不能亮。我总结了一份测试清单输入反接测试确认防反接和 TPS259483 在反压下不会损坏。输入电压扫描测试从 8V 到 18V 缓慢扫描确认 UVLO/OVP 动作点和回差值符合设计。输出短路测试在满载条件下短接输出确认限流动作、FLT 电平、恢复策略全部正确。浪涌测试按 IEC 61000-4-5 的级别打浪涌确认 TVS 和输入滤波能够吸收TPS259483 不误关断。高温老化测试在 60℃ 环境下连续运行 8 小时确认热关断不会触发。其中浪涌测试最容易发现布局问题也最容易反复修改。建议第一次做 PCB 时就把 TVS 位置、输入滤波电容位置、地平面完整度都按量产标准来设计而不是先临时调通再慢慢改。重做这块板子的话我还会做一件事在设计阶段先画一张完整的电源路径时序图标明上电顺序、每个保护动作后的恢复时间、允许的最大恢复次数。很多问题其实在动手画图的时候就能暴露出来根本不用等硬件回来之后拿示波器慢慢排查。
返回列表