首页 / 资讯中心 / 文章详情

基于TPS259483与PIC18F4680的嵌入式电源路径保护方案

基于TPS259483与PIC18F4680的嵌入式电源路径保护方案 ★ FEATURED ARTICLE
1. 电源路径保护到底在保护什么搞嵌入式硬件的人多半有过这种经历板子跑得好好的插拔一次外部电源或者现场电网抖了一下回来发现后级负载芯片烧了或者系统反复重启根本起不来。排查半天最后发现是电源路径上缺少一套靠谱的保护逻辑。这次要聊的就是围绕TPS259483AYWPR这颗电源路径保护器件配合PIC18F4680这颗经典 8 位 MCU搭一套能在嵌入式和工业场景里扛得住折腾的电源路径保护方案。先把定位说清楚。这套方案解决的核心问题是当系统存在多路供电比如主电源加备用电池、或者适配器加 USB 供电或者负载对过流、过压、浪涌、反向电流敏感时如何让电源路径在异常情况下自动切断、限流、恢复而不是把后级电路一起带走。它适合谁看做工业控制板、数据采集终端、嵌入式网关、车载后装设备这类对供电可靠性有要求的硬件工程师和固件工程师。哪怕你之前没接触过电源路径保护只要懂基本的电路和 C 语言这篇内容你都能跟着走下来。TPS259483AYWPR 是 TI 的一颗集成式电源路径保护芯片属于 eFuse 类器件内部集成了导通 MOSFET、电流检测、过压钳位、反向电流阻断等模块。PIC18F4680 则是 Microchip 的一款 8 位单片机带 CAN 控制器、多路 ADC、丰富的外设工业现场用得非常多。把这两者放一起逻辑很自然TPS259483 负责“硬件级”的快速保护动作PIC18F4680 负责“系统级”的状态监控、故障记录、恢复策略和上报。硬件做快保护软件做慢管理和决策这是工业电源设计里非常经典的分工。我先把这套组合的价值讲透。纯硬件保护的问题是“哑保护”——它切了就切了系统不知道为什么切、切了几次、当前负载电流多大运维和调试基本靠猜。纯软件保护的问题是“慢半拍”——MCU 采样、判断、再控制中间有延迟遇到短路这种微秒级事件根本来不及。TPS259483 加 PIC18F4680 的组合恰好把两者的短板补上硬件在微秒级完成限流和切断软件在毫秒级读取故障寄存器、记录事件、决定是否重试。这个思路在工业应用里特别值钱因为工业现场最怕的不是故障本身而是故障之后系统“死给你看”还不告诉你原因。2. 为什么选这两颗器件而不是别的方案2.1 TPS259483AYWPR 的核心能力拆解选型这件事不能只看参数表得看它在你的场景里到底承担什么角色。TPS259483AYWPR 的几个关键特性决定了它适合工业电源路径保护宽输入电压范围这类 eFuse 器件通常支持几伏到二十几伏的输入覆盖了工业常见的 12V、24V 母线场景也兼容 5V 系统。可编程限流通过外部检流电阻设定限流阈值负载短路时把电流钳在设定值而不是让电流无限飙升。过压保护与钳位输入电压异常升高时内部电路会把输出钳在安全范围保护后级。反向电流阻断当输出端电压高于输入端比如备用电源倒灌器件阻止电流反向流动避免损坏上游。故障指示输出提供故障状态引脚MCU 可以直接读取判断是过流、过压还是过温。这里要重点说“可编程限流”为什么重要。很多新手设计电源路径时直接串一个保险丝或者 PTC觉得“过流就断”就行了。但保险丝的问题是反应慢、不可恢复、精度差而且它断的时候电流已经冲到很高了。eFuse 的限流是主动的、可恢复的、精度高的它把电流限制在一个你设定的值让系统有机会在故障解除后自动恢复。工业设备经常无人值守能自恢复这一点直接决定了运维成本。2.2 PIC18F4680 在电源管理里的角色PIC18F4680 不是那种跑 Linux 的高性能芯片它就是一颗老老实实的 8 位 MCU但恰恰是这种“老实”让它在电源管理里很合适。原因有几个第一它有足够多的 ADC 通道可以同时监控输入电压、输出电压、负载电流对应的采样点不需要额外加 ADC 芯片。第二它带 CAN 控制器工业现场设备之间用 CAN 通信非常普遍故障状态可以直接通过 CAN 上报给主控或上位机。第三它的功耗和成本都低放在电源管理这种“常驻但不需要高性能”的位置上刚好。第四8 位 MCU 的开发门槛低代码量小出问题的概率也低工业产品最怕的就是复杂代码带来的不确定性。我个人的经验是电源管理这块的 MCU宁可性能过剩一点也别选太弱的但也没必要上 32 位。PIC18F4680 这种带 CAN 的 8 位机处理电源状态机、故障记录、通信上报绰绰有余。你要是用一颗没有 CAN 的 MCU还得外挂一个 CAN 控制器成本和板面积都上去了不划算。2.3 硬件快保护加软件慢管理的分工逻辑这套方案的精髓在于分工。我把它总结成一句话硬件负责“不死”软件负责“明白”。硬件层面TPS259483 在检测到过流或过压时会在极短时间内动作把负载和电源隔开或者限流。这个动作不依赖 MCUMCU 就算死机了保护依然有效。这是安全底线。软件层面PIC18F4680 周期性读取 TPS259483 的状态引脚和自身的 ADC 采样值判断当前是正常、警告还是故障。如果是故障它记录故障类型、发生时间、当时的电压电流值然后根据预设策略决定是等待自动恢复还是锁定故障等待人工干预还是尝试有限次数的重试。这些决策逻辑纯硬件做不了纯软件又来不及必须配合。注意硬件保护和软件管理之间要有明确的优先级。任何时候硬件保护动作都不应该被软件“覆盖”或“屏蔽”。软件只能读取硬件状态并做后续处理不能干预硬件的即时保护动作。3. 硬件电路设计与关键参数计算3.1 典型应用电路搭建思路先给一个典型的连接框架方便你理解信号流向。输入电源先经过输入滤波电容加磁珠然后进入 TPS259483 的 VIN 引脚。TPS259483 的 OUT 引脚接负载同时接 PIC18F4680 的供电和 ADC 采样点。TPS259483 的故障指示引脚接 PIC18F4680 的一个外部中断引脚或普通 IO。PIC18F4680 通过 ADC 监控输入电压分压点、输出电压分压点、以及限流电阻两端的电压差用来换算实际电流。这里有个细节很多人会忽略输入滤波电容的位置。电容要尽量靠近 TPS259483 的 VIN 引脚而且要用低 ESR 的陶瓷电容并联一个较大的电解或钽电容。原因是 eFuse 在限流动作时输入端的电流会突变如果输入电容离得远走线电感会导致 VIN 引脚出现电压尖峰可能误触发欠压保护。我实测过输入电容离芯片超过 2 厘米限流动作时的 VIN 跌落能多出几百毫伏这个在低压系统里足以导致误动作。3.2 限流阈值怎么算限流阈值由外部检流电阻决定公式一般是I_limit V_sense_th / R_sense其中 V_sense_th 是芯片内部的检流比较阈值具体数值查数据手册。假设手册给出阈值是 50mV你希望限流在 2A那么 R_sense 50mV / 2A 25mΩ。选这个电阻的时候有几个坑功率要够2A 流过 25mΩ功耗是 I²R 4 × 0.025 0.1W。看起来不大但你要考虑故障时电流会持续在限流值附近所以至少选 0.25W 的电阻留足余量。精度要高限流精度直接取决于这个电阻的精度。用 1% 的别用 5% 的。5% 的电阻意味着你的限流值可能偏差 5%在临界场景下就是误动作或者保护不足。温漂要小工业环境温度变化大电阻温漂大会导致限流值随温度漂移。选低温漂的合金电阻别用普通的厚膜电阻。我踩过的坑是一开始用了一颗普通的 0805 厚膜电阻常温下调好的限流值到了高温环境比如夏天户外机柜里 60 度以上限流值明显下降导致正常负载启动时误触发限流。后来换成低温漂的合金电阻问题解决。这个教训值不少钱希望你直接避开。3.3 过压保护点设置过压保护点通常也是通过外部电阻分压网络设定的。设计时要考虑两点一是保护点要高于系统正常工作的最高电压留出余量二是保护点要低于后级器件能承受的绝对最大电压。举个例子系统正常输入是 12V允许波动范围是 10.8V 到 13.2V。后级器件的绝对最大输入电压是 18V。那么过压保护点可以设在 15V 左右。这样正常波动不会触发而一旦输入异常升到 15V 以上保护立即动作后级安全。提示过压保护点不要设得太贴近正常工作电压上限。工业现场电源波动大设太紧会导致频繁误保护。一般建议保护点比正常上限高 10% 到 20%。3.4 反向电流阻断的配置反向电流阻断这个功能在多电源系统中特别关键。比如系统同时接了主电源和备用电池当主电源掉电时备用电池会通过电源路径倒灌。如果没有反向阻断电流会流向主电源输入端可能损坏主电源或者造成能量浪费。TPS259483 的反向阻断通常是内部集成的不需要额外配置但你要注意它的响应时间和阻断后的漏电流。有些器件的反向阻断不是完全断开而是有一个很小的漏电流。如果你的应用对漏电流敏感比如电池长期待机要查手册确认这个漏电流是否在可接受范围内。4. 固件设计与状态机实现4.1 PIC18F4680 的初始化配置固件这块我按实际项目里的顺序来讲。首先是初始化包括时钟配置、IO 配置、ADC 配置、中断配置、CAN 配置如果用的话。时钟方面PIC18F4680 可以用外部晶振也可以用内部振荡器。电源管理这种场景对时钟精度要求不高用内部振荡器就够了还能省两个引脚和一颗晶振。但如果你要用 CAN 通信CAN 对时钟精度有要求这时候就得用外部晶振一般用 8MHz 或 16MHz 的。ADC 配置要注意参考电压的选择。如果用 VDD 做参考那么 ADC 读数会受 VDD 波动影响。电源管理场景里 VDD 本身可能就在波动所以建议用外部基准或者内部固定基准保证采样精度。我一般会用一个 2.5V 或 4.096V 的基准芯片给 ADC 做参考这样电压采样值才准。IO 配置里TPS259483 的故障指示引脚要配成输入最好带上拉因为这类开漏输出需要上拉电阻。如果接到外部中断引脚还要配置中断触发方式一般是下降沿触发因为故障指示通常是低电平有效。4.2 故障检测与状态机设计状态机是这套固件的核心。我一般设计成四个状态正常、警告、故障、锁定。正常状态电压电流都在范围内定期采样更新状态。警告状态某一项参数接近阈值但还没超比如电流达到限流值的 80%或者电压接近过压点。这时候可以提前上报提醒运维关注。故障状态硬件保护已经动作或者软件检测到参数超限。记录故障类型和现场数据启动恢复计时。锁定状态故障反复出现超过重试次数锁定不再自动恢复等待人工干预。状态之间的转换条件要写清楚。比如从正常到警告条件是电流大于 0.8 倍限流值且持续超过 100ms。从警告到故障条件是电流达到限流值或者电压超过过压点。从故障到正常条件是故障消失且恢复计时到期。从故障到锁定条件是重试次数超过设定值。这里有个经验恢复计时不要设太短。有些工程师设 100ms 就重试结果故障还在一重试又保护反复循环系统一直在打嗝。我一般设 1 到 5 秒给负载和电源足够的恢复时间。如果是容性负载启动还要考虑软启动时间恢复计时至少要比软启动时间长。4.3 故障记录与上报机制故障记录这块PIC18F4680 的 RAM 有限不可能存太多历史数据。我的做法是在 EEPROM 里存最近 N 次故障的摘要信息包括故障类型、发生时的电压电流、时间戳可以用一个简单的计数器代替真实时间。N 一般取 10 到 20 就够了再多也没人看。上报机制分两种一种是实时上报故障发生时立即通过 CAN 发一帧另一种是查询上报上位机主动来问的时候把历史记录发过去。实时上报保证及时性查询上报保证完整性两者结合。CAN 报文的设计要紧凑。我一般用一帧标准帧8 字节来传故障信息1 字节故障类型2 字节电压2 字节电流1 字节重试次数2 字节时间戳。这样一帧就能把关键信息带全效率高。注意故障记录写入 EEPROM 要注意寿命。EEPROM 有擦写次数限制一般 10 万次到 100 万次。如果故障频繁每次都写 EEPROM很快就会写坏。我的做法是只在故障状态从故障转为锁定或者系统即将断电时才把记录写入 EEPROM。平时故障记录先放 RAM 里减少 EEPROM 擦写。4.4 软启动与浪涌抑制容性负载启动时瞬间充电电流很大容易触发限流保护。这时候需要软启动。TPS259483 本身可能带软启动功能通过外部电容设定启动斜率。如果没有就要靠 MCU 控制。MCU 控制软启动的思路是启动时先不直接给负载供电而是通过一个预充电阻给小电容充电等电压升到一定程度再切换到主路径。或者用 PWM 控制一个 MOSFET 的栅极慢慢打开。这两种方法各有优劣预充电阻简单但效率低PWM 控制复杂但效率高。我一般优先用 TPS259483 自带的软启动功能省事。如果自带的不够用再考虑 MCU 介入。软启动时间要根据负载电容大小算I C × dV/dt已知限流值和负载电容反推 dV/dt再确定软启动时间。比如负载电容 1000uF限流 2A希望充电到 12V那么 dV/dt I/C 2/0.001 2000V/s充电到 12V 需要 6ms。软启动时间至少设 6ms 以上留点余量设 10ms。5. 实测调试与常见问题排查5.1 上电调试的步骤板子回来之后别急着上电。先做静态检查万用表测各路电源对地阻抗确认没有短路。然后单独给 TPS259483 的输入供电不接负载测输出电压是否正常。正常之后再接负载从小负载开始逐步加大。调试顺序我一般是这样不焊 MCU只焊 TPS259483 和外围测保护功能是否正常。用可调电源模拟过压看输出是否被钳位。用电子负载模拟过流看是否限流。焊上 MCU烧录一个最简单的测试程序只读故障引脚和 ADC通过串口或 CAN 输出。联调模拟各种故障场景验证状态机转换和上报是否正确。做高低温测试验证参数漂移是否在可接受范围。这个顺序的好处是每一步只验证一个部分出了问题容易定位。我见过有人一上来就全焊好结果保护不动作查了半天不知道是芯片问题、外围问题还是 MCU 干扰效率极低。5.2 常见问题速查表现象可能原因排查方法解决措施上电即保护限流阈值设太低测检流电阻值核对计算调整检流电阻或重新计算正常负载误保护浪涌电流超限流值示波器抓启动电流波形增加软启动时间或提高限流值故障引脚不动作引脚配置错误或上拉缺失测引脚电平查配置修正 IO 配置加上拉电阻反向阻断失效器件不支持或配置错误查手册确认功能换支持反向阻断的型号高温下限流值漂移检流电阻温漂大高低温对比测试换低温漂电阻MCU 读不到故障中断配置错误或优先级问题查中断标志位修正中断配置CAN 上报丢帧总线负载高或波特率不匹配抓总线波形调整波特率或降低发送频率5.3 几个我踩过的坑第一个坑检流电阻的布局。检流电阻要尽量靠近 TPS259483 的检流引脚走线要对称否则引入的寄生电感会导致电流采样不准。我一开始把检流电阻放在离芯片 3 厘米的地方结果大电流时采样值明显偏低限流点比设定值高了不少。后来把电阻挪到芯片旁边问题解决。第二个坑故障引脚的上拉电阻。TPS259483 的故障引脚是开漏输出必须加上拉。我一开始忘了加MCU 读到的电平一直是浮空的时高时低误判了好几次。加上 10k 上拉之后稳定了。第三个坑ADC 采样时机。eFuse 限流动作时输出电压会快速下降如果 ADC 采样正好在这个瞬间读到的值会很低可能误判为欠压。我的做法是在 ADC 采样前先判断故障引脚状态如果故障引脚有效就跳过这次电压采样避免误判。第四个坑CAN 终端电阻。CAN 总线两端要各接一个 120 欧姆终端电阻我一开始只在一端接了通信时好时坏。补上另一端的电阻之后通信稳定了。这个坑很基础但现场调试时容易忘。5.4 提高可靠性的几个实操技巧故障引脚加 RC 滤波故障引脚上并一个小电容比如 100nF到地可以滤掉毛刺避免误触发中断。但电容不能太大否则会延迟故障响应。ADC 采样加多次平均单次采样容易受噪声影响我一般连续采 8 次或 16 次去掉最大最小值再平均这样得到的值稳定得多。状态机加超时保护任何状态停留时间超过预设值就强制转到安全状态。比如故障状态停留超过 30 秒还没恢复直接锁定避免系统卡在某个状态里出不来。看门狗一定要开PIC18F4680 自带看门狗电源管理这种常驻系统看门狗必须开。万一程序跑飞看门狗复位后重新初始化保护功能不受影响。6. 这套方案还能怎么扩展这套 TPS259483AYWPR 加 PIC18F4680 的组合基础功能是电源路径保护但它的扩展空间不小。我分享几个我实际做过或者考虑过的方向。第一个方向是多路电源路径管理。如果系统有多路输入比如主电源、备用电池、太阳能可以用多颗 TPS259483 分别管理每一路PIC18F4680 统一调度。哪一路优先、什么时候切换、切换时的无缝衔接这些逻辑都可以在 MCU 里实现。工业网关和户外设备经常需要这种多路管理。第二个方向是能耗统计。PIC18F4680 的 ADC 持续采样电压和电流乘起来就是瞬时功率对时间积分就是能耗。虽然 8 位 MCU 做浮点运算吃力但用定点数或者查表法也能实现。有了能耗数据就能做负载画像、异常检测、节能优化。第三个方向是预测性维护。通过长期记录电流和温度数据可以发现负载的劣化趋势。比如某个负载的电流逐渐增大可能意味着器件老化或者接触电阻变大。提前发现提前维护避免突然故障。这个在工业场景里价值很高。第四个方向是与上位机联动。PIC18F4680 通过 CAN 或串口把数据传给上位机上位机做大数据分析和可视化。MCU 负责实时保护上位机负责长期分析分工明确。最后分享一个小技巧调试电源保护电路时一定要用示波器抓波形不要只看万用表。万用表的采样率太低根本看不到限流动作的瞬间过程。示波器配上电流探头能清楚看到限流时电流被钳在设定值、电压如何变化、恢复时如何爬升。这些波形是你判断保护逻辑是否正确的最直接依据。我每次调试电源保护示波器都是全程开着的很多问题看一眼波形就明白了比盲猜快得多。
阅读完成 · 觉得有帮助?
咨询建站