ARTICLE DETAIL

资讯详情

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

电子保险丝与MCU组合:嵌入式电源路径保护及远程运维方案

电子保险丝与MCU组合:嵌入式电源路径保护及远程运维方案 上个月在客户现场排查一台嵌入式控制设备的启动故障反复拆机换了不少器件最后发现问题的根源不是单一负载短路而是整条电源路径在上电瞬间缺少保护策略。当时我把 TI 的 TPS259483AYWPR 电子保险丝和 TM4C129LNCZAD 控制器搭在一起做电源路径保护顺手把故障日志也接到了工业以太网上效果比预想中好很多。这篇文章就复盘这次选型、电路设计、固件状态机和实验室实测给做嵌入式电源、工业网关、储能控制器或者车载控制板的朋友一个可参考的方案。我把这套组合的价值讲清楚TPS259483AYWPR 负责“硬件级”的电源路径保护响应速度是微秒级短路时能快速把通路断开TM4C129LNCZAD 则是系统里的“电源管家”负责启停时序、电流电压监控、故障记录以及远程上报。硬件保护交给专用芯片管理策略交给 MCU两者各干各的比单纯靠单片机轮询 GPIO 判故障靠谱得多。1. 现场炸掉的电源轨为什么我最终选了电子保险丝方案1.1 传统分立保护方案在工业现场到底缺了什么以前很多嵌入式板卡喜欢用玻璃管保险丝或者自恢复保险丝 PTC 做电源入口保护这套做法在消费类产品里问题不大放到工业现场就有点不够看了。玻璃管保险丝的缺陷很明显动作后是一次性的现场要换备件熔断电流和时间受环境温度影响大很难做到精准而且它只对持续过流有效对微秒级电流脉冲基本是无感的。自恢复保险丝虽然能复位但动作温度曲线很粗糙长时间工作在临界状态时漏电流会变大对低功耗设备很不友好。之前我还用过“P-MOS 采样电阻 运放比较器”做的电子开关限流点可以自己调也能用 GPIO 控制通断看起来灵活。但实际调试才发现分立方案的比较器响应延迟、运放失调、PCB 布局寄生电感都在跟你作对限流精度能做到 ±30% 已经算不错更别说还要自己做短路保护逻辑和过温保护。一旦电路板被短路MOS 管往往比比较器反应更快先烧的是功率管。1.2 TPS259483AYWPR 解决的关键问题电子保险丝这几年在工业板卡上越来越普及本质是把功率 FET、电流采样、比较器、驱动逻辑和状态输出集成到一颗芯片里。以 TPS259483AYWPR 这类器件为例它看着像电源管理芯片实际干的是“断路器 限流电路 状态监测”的活。我从客户现场回来后新项目里直接选了它做主通路保护原因有几个限流精度高。厂商标定的限流精度比我自己搭的运放方案高很多这对设定保护裕量非常重要响应速度快。短路时不靠 MCU 发现再处理芯片自己就能在极短时间内进入限流或关断状态软启动可控。通过一个电容就能调整输出电压爬升斜率解决大电容负载上电瞬间的冲击电流问题有故障状态输出。FLT 或者电源正常指示引脚可以直接接到 MCU 中断省掉了外部比较器可锁定、可恢复。可以配成故障后锁存需要 MCU 重新使能才能恢复这在设备远程运维场景下非常实用。如果你把电源路径想象成一条水管传统保险丝像是“直接炸掉的破管子”电子保险丝则是一个带压力表和电动阀门的自动闸阀。平时全开水压异常时先限流真的爆管了再切断同时把阀门状态送给中控室。2. TPS259483AYWPR 的门道限流、软启动与故障输出怎么用2.1 软启动电容不是随便选个值就完事芯片上控制输出电压上升斜率的引脚一般通过一颗电容设定内部电流源对电容充电的速度由此决定 dV/dT。很多工程师觉得这颗电容选 1nF 还是 100nF 无所谓实际上它直接决定了系统能不能正常开机。我的样板输出端电容总容值大约是 220µF 左右最开始照参考设计选了个偏小的值上电瞬间输出电容充电电流直接冲到 4.6A把限流顶到了保护点系统被判定为过流故障。后来把斜率放慢启动电流峰值降到 1.8A 左右整个开机过程就平顺了。选这颗电容的经验是先按数据手册里的启动时间典型值来选第一版 BOM然后带着实际负载电容去调。如果你的板子输出侧有很多 MLCC一定要把电容总容值算出来不要只看负载稳态电流。启动过程本质上就是给这些电容充电充电电流等于负载电容乘上电压变化率斜率越陡、电流越大。提示做软启动测试时别只挂电子负载电子负载和真实板载电容的情况完全不同。最接近实际的方法就是直接把你的功能板接在 eFuse 输出端用示波器电流探头测启动波形。2.2 ILIM 限流电阻的选型思路与功耗校验数据手册里通常会给 ILIM 引脚外接电阻和限流电流的对应关系可能是一张表或者一条公式。我的做法是先根据负载最大工作电流留出 20% 到 30% 的裕量再反查最接近的电阻值。比如我这个项目负载稳态电流大约 2A外设启动时还会多出 0.5A 左右我就把限流点设在 2.8A 附近再按手册选电阻。这里有个容易忽略的问题限流点设太高短路电流太大功率管瞬间功耗会很高设太低正常启动时就会误动作。过流瞬间的功耗可以做一次最简单的估算。按 24V 输入、限流 2.8A 计算如果输出端被彻底短路输出电压被拉到接近 0V芯片上的压降几乎就是整个输入电压瞬时功耗在 60W 以上。好在限流和关断动作是微秒级完成的持续时间极短不会把芯片烧掉。但如果你把限流点设得很高或者输出电容非常大关断前储存的能量会全部消耗在芯片上那就比较危险了。所以我建议在确定限流点后同步做一次热计算和短路实验别只看静态参数。2.3 EN 引脚、FLT 输出与 MCU 的正确连接方式EN/UVLO 引脚一方面可以用于设定开启电压阈值另一方面也承担外部使能功能。在 MCU 控制方案里我把它接到了 TM4C129LNCZAD 的一个 GPIO 上。需要注意如果 EN 引脚内部有上拉电流源那么 MCU 复位期间 GPIO 是高阻态eFuse 可能被意外开启。解决方法是外部加一个 100kΩ 下拉电阻让未初始化状态下 EN 保持低电平。FLT 故障输出通常是开漏结构需要外部上拉到 MCU 的 3.3V 电源。这里有个容易踩的坑不要把这个上拉电阻上拉到 eFuse 的输出端。因为输出端可能被短路拉低如果上拉到输出端故障时 FLT 也就读不到高电平了MCU 会一直以为状态正常。我把上拉电阻接到了 MCU 的 3.3V故障时能可靠识别低电平。3. TM4C129LNCZAD 在这里到底干什么活3.1 为什么不用一片 8 位单片机管电源有人可能会问一个电源保护方案用 8 位单片机轮询 ADC 和 GPIO 就够了为什么要上 TM4C129LNCZAD 这种带以太网的 ARM Cortex-M4F原因在于项目需求里有一条硬要求设备分散在户外工业柜里售后人员不可能每次都到现场。我需要把每路电源的过流事件、启动时间、当前电压电流、复位原因都记录下来并且通过网络上报到办公室的监控终端。8 位单片机做把这些也能做但以太网协议栈、日志存储、多路 ADC 采样和后续扩展升级这些需求堆在一起8 位机就有点吃力了。TM4C129LNCZAD 这颗芯片的优势是120MHz 的 Cortex-M4F 核心带浮点单元集成 10/100M 以太网 MAC 和 PHY板子上不用再外挂一颗 PHY 芯片ADC 通道数量多可以同时监测输入电压、输出电压和负载电流工业级温度范围也能适应户外柜体环境。3.2 电源域设计MCU 必须和 eFuse 输出“解耦”这是整套方案里我最看重的一点。如果你把 MCU 的供电也放在 eFuse 输出侧一旦负载短路导致 eFuse 关断MCU 也跟着掉电故障现场就彻底失联了——没电的监控设备什么都干不了。所以我在系统架构上做了电源域隔离24V 输入先接宽压输入的 DC-DC单独给 TM4C129LNCZAD 和信号电路供电eFuse 的输出给负载和其他功能模块供电MCU 控制 eFuse 的 EN读取 FLT用 ADC 采集各路电压电流。这样即使 eFuse 因为过流关断MCU 依然活着可以记录事件、发送告警、等待远程指令重新开启电源路径。这套分层设计很关键硬件短路保护由 eFuse 自己完成速度是微秒级MCU 只负责策略层比如判断故障类型、决定是否重新上电、记录事件时间。不要试图让 MCU 去直接处理短路MCU 的 GPIO 中断和 ADC 轮询根本来不及而且故障瞬间系统状态极不稳定。3.3 ADC 采样链路需要注意的共模和量程问题TM4C129 的 ADC 输入范围通常不超过 3.3V而系统是 24V 轨直接采样肯定不行。我采用高边电流检测放大器加电阻分压的方式负载电流采样在 eFuse 输出回路上串一颗低阻值采样电阻电流信号经过高共模电流检测放大器转换成对地的电压再送 MCU ADC电压采样输入电压和输出电压分别用分压电阻降到 3.3V 以内并联一个小电容滤波再接 ADC 输入。这里有个注意点采样电阻的布局必须用开尔文接法从电阻两端单独走两根细线到放大器的输入端不能在功率汇流条上随意取信号。否则功率电流在铜皮上的压降会被当成采样信号电流读数偏差很大。4. 原理图设计与固件状态机的联合调试4.1 关键接口信号连接清单我最终定下来的接口关系大致是这样的信号eFuse 侧MCU 侧说明使能控制ENGPIO 输出默认低软件启动后拉高故障输入FLTGPIO 输入下降沿中断开漏输出外部上拉到 3.3V负载电流采样电阻ADC 输入经电流检测放大器调理输出电压输出分压ADC 输入直接电阻分压输入电压输入分压ADC 输入用于启动前检查电源正常指示PG 可选GPIO 输入用于状态确认另外我在 EN 和 MCU GPIO 之间串联了一个 1kΩ 电阻主要是为了把两个电源域之间的干扰隔开如果 MCU 端出现异常电平翻转也不会对 EN 引脚造成太大冲击。布局时 100kΩ 下拉电阻必须靠近 eFuse 的 EN 引脚放不要放在 MCU 旁边。4.2 电源状态机不能只靠中断标志固件逻辑我建议用状态机来管理不要写成一坨顺序执行的代码。状态至少分成这几档OFFEN 置低eFuse 关闭STARTINGEN 拉高等待启动完成允许短时间的限流状态RUNNING正常工作周期性采集 ADC 数据ALARM电流超过设定阈值或者 FLT 抖动进入告警观察FAULT_LATCH故障锁存记录日志等待远程或本地指令恢复。核心原则是启动阶段的电流波动和运行阶段的过流不是一回事。很多误报都来自用同一个阈值判断所有阶段开机瞬间的正常浪涌被当成故障处理。我把启动阶段单独拆出来只要 FLT 没有持续拉低就认为是软启动的正常表现。下面是我简化后的状态机代码骨架typedef enum { PWR_OFF 0, PWR_STARTING, PWR_RUNNING, PWR_ALARM, PWR_FAULT_LATCH } pwr_state_t; static pwr_state_t pwr_state PWR_OFF; static uint32_t fault_tick_start 0; static float vout_mv, iout_ma; void pwr_off(void) { GPIO_EN_LOW(); pwr_state PWR_OFF; } void pwr_start(void) { if (pwr_state ! PWR_OFF) { return; } GPIO_EN_HIGH(); pwr_state PWR_STARTING; startup_time get_tick(); } void pwr_main_task(void) { vout_mv read_adc_avg(VOUT_CH); iout_ma read_adc_avg(IOUT_CH); switch (pwr_state) { case PWR_STARTING: if (get_tick() - startup_time SOFTSTART_DURATION_TICKS) { pwr_state PWR_RUNNING; log_event(power path running, vout%d mv, (int)vout_mv); } break; case PWR_RUNNING: if (iout_ma OVERLOAD_THRESHOLD_MA) { pwr_state PWR_ALARM; log_event(overload detected, iout%d ma, (int)iout_ma); } break; case PWR_ALARM: if (iout_ma OVERLOAD_RECOVER_MA) { pwr_state PWR_RUNNING; log_event(overload cleared); } else if (get_tick() - alarm_start_time ALARM_TO_FAULT_TICKS) { GPIO_EN_LOW(); pwr_state PWR_FAULT_LATCH; log_event(fault latch, disable eFuse); } break; default: break; } }FLT 引脚用硬件下降沿中断触发但在中断服务函数里只做一件事记录时间戳并置标志位不要在中断里操作日志 Flash 或者发网络包。真正的事件处理放在主循环任务里等故障状态稳定后再写日志。4.3 事件日志的存储和上报我习惯在代码里维护一个环形缓冲区故障事件的记录内容是当前状态、FLT 拉低之前最后一次 ADC 采样值、MCU 复位原因和时间戳。掉电前要把事件写入片上 Flash重新上电后能读出来分析现场。上报协议不用搞复杂对于工业现场一个只有几十字节的 UDP 报文字段就够用了比如设备编号、电源状态、输入电压、输出电压、负载电流、事件代码、时间戳。如果现场有网关再单独做一个 MQTT 转换把状态传到云平台。重点是先把数据拿到办公室再考虑用什么样的协议。5. 从布局布线到实测几个必须当心的细节5.1 电流路径和采样走线功率电流从输入连接器进入 eFuse再从 eFuse 输出到负载这段走线是整板最重要的电流回路。我要求自己做到以下几点功率走线短而宽过 2.8A 至少留出 60mil 以上线宽并配合大面积铺铜输入电容和输出电容就近放置输入电容尽量靠近 IN 引脚输出电容靠近 OUT 引脚采样电阻的取信号线单独引出不在功率铜皮上搭线ILIM 电阻和软启动电容必须贴近对应引脚并加包地处理。布局不好会产生一个很隐蔽的问题寄生电感会导致过流时电流无法及时转移故障波形出现高频振铃久而久之芯片会受到额外应力。我用示波器对比过改板前后的短路波形优化布局后关断过程干净了很多。5.2 散热设计不能只看导通损耗正常工作时 eFuse 的导通电阻很低负载 2A 的情况下压降可能只有几十毫伏芯片本身发热不明显。但在限流和反复短路场景下发热集中在功率管上PCB 是唯一的散热通道。我做了两种验证板对比一种只在芯片正下方放了几颗过孔另一种做了大面积上下铜皮连接、过孔阵列加得很满。同样负载条件下后者的表面温度降低了 12℃ 左右。所以画板时不要吝啬过孔把芯片底部焊盘和背面 GND 铜皮连通长期可靠性会好很多。实测时我用热成像仪扫了一遍整板发现除了芯片本体ILIM 电阻和电流采样电阻也会发热。采样电阻的功率虽然不大但温漂会直接影响 ADC 读数精度如果采样电阻温漂系数大满载和空载的电流读数会差好几个百分点。我最后选的是低温度系数的合金电阻。5.3 实测数据用示波器和电子负载说话我在实验室搭了一套完整的测试环境24V 直流电源输入示波器用电流探头测输入电流电子负载模拟负载电流另外准备了一个继电器开关用来做瞬间短路测试。典型实测结果如下正常软启动输入 24.2V输出从 0 爬升到设定值启动时间大约 6ms输入电流峰值 1.9A稳态运行负载 2A输出稳定芯片表面温度约 52℃短路测试用继电器把输出端直接短接示波器显示约 40µs 内电流被限制并关断FLT 拉低MCU 收到下降沿中断并记录事件恢复操作MCU 将 EN 拉低 200ms再重新拉高电源路径能正常重新启动。短路测试是最考验方案的环节。注意不能用普通万用表串在回路里测瞬态过程万用表只能看稳态值必须用电流探头和示波器。另外短路继电器本身的触点抖动也会产生假波形重复测试至少五次取一致结论。6. 工业环境里最容易踩到的四个坑6.1 坑一软启动电容照抄参考设计这不是第一次在调试群里看到有人求助板子一上电就过流保护查了半天发现是软启动电容太小。不同板卡的输出电容容量千差万别照抄别人的取值基本等于碰运气。我的建议是准备一个 4.7nF、10nF、47nF、100nF 的电容套装上电实测启动电流波形找到电流峰值和启动时间的平衡点。优先保证启动阶段不触发限流如果启动时间拖得太长比如超过几百毫秒再逐步减小电容。6.2 坑二输入端 TVS 放错了位置工业现场的长线缆最容易引入浪涌我在输入端放了一颗 TVS一开始图方便直接放在了 eFuse 的 IN 引脚附近。后来做浪涌测试发现防护效果不理想因为浪涌能量是从连接器经线缆进来能量需要沿着 PCB 走线流过很长的路径才能被 TVS 吸收路径上的电感会让残压变得很高。正确做法是TVS 放在连接器入口处紧跟其后放输入电解电容然后再接入 eFuse。让浪涌能量在板子最边缘就被吸收掉而不是穿过整块板子才释放。6.3 坑三EN 引脚在 MCU 复位期间被意外拉高有的 MCU 在上电复位时钟建立之前GPIO 会出现短暂的高电平或者高阻态。如果 eFuse 的 EN 引脚内部有上拉设备一上电就会直接开启电源输出此时 MCU 还没有初始化负载就处于不受控状态。我当前项目的做法EN 外部加 100kΩ 下拉电阻MCU 上电后第一件事就是配置 GPIO 为输出低电平之后才执行正常初始化流程。这个习惯每次画板都保留成本只有一颗电阻却能避免很多诡异故障。6.4 坑四把 FLT 当成普通 GPIO 去轮询FLT 是开漏输出故障时拉低。如果你用主循环每隔几十毫秒读一次很可能错过一次很短的过流事件因为 eFuse 保护之后会自动恢复或保持锁定故障引脚状态变化很快。我用的是 GPIO 下降沿中断进入中断后记录 tick 并置一个标志主循环再读标志做后续处理。同时要做小时间滤波因为开关电源上电瞬间也可能产生毛刺我一般用 500µs 到 1ms 的去抖窗口只有持续时间超过窗口的拉低才认定为真实故障。7. 验收清单与扩展思路7.1 完整测试项新项目量产前我会整理一份电源路径保护验收清单内容至少包含下面这些测试项目测试条件通过标准软启动满载容性负载上电启动电流峰值不触发限流保护稳态工作额定负载 2A 连续运行 1 小时芯片温度在规格范围内过流保护负载电流缓慢升高到 3AeFuse 限流或关断FLT 输出有效短路保护输出端继电器直接短接40µs 级别关断MCU 正确记录事件恢复功能故障后 MCU 拉低 EN 再拉高电源路径恢复无闩锁异常高低温运行-40℃ 到 85℃ 温度箱测试启动正常限流点偏差在允许范围内浪涌抗扰连接器端口施加工业浪涌系统不损坏eFuse 不误动作温度箱测试特别值得提一下。限流点、软启动时间这类参数都受温度影响常温下测出来合适不代表低温下也能顺利开机。我遇到过低温时启动变慢导致看门狗复位的案例所以高低温测试一定不能省。7.2 方案扩展多路电源域和远程电源管理这套“eFuse MCU”的组合可以做很多扩展。工业设备内部往往有多个电压域比如 MCU 域、通信模块域、外设执行器域每个域单独放一颗 eFuseMCU 统一管理使能和故障状态。某个域短路时只影响自己其他域继续工作这对整机可靠性提升很大。配合 TM4C129LNCZAD 的以太网能力我在下一版固件里增加了远程电源重启功能。现场设备有时会出现通信模块死机传统办法是派人断电重启现在可以通过网络下发指令控制对应电源域重新上电售后响应效率提升明显。另外如果是电池供电的系统eFuse 的反向电流阻断能力还可以用来替代一部分防反接电路。设计时只需要把输入和输出的位置关系确认好再用 MCU 做一次通路自检就能把防反、限流、短路保护合并到一个器件里。最后分享一个小习惯每次调电源保护电路我都会在板子上留一个测试点把 eFuse 的 IN、OUT、FLT、EN 都引出来做成 2.54mm 排针。调试时直接夹示波器探头比在芯片引脚上飞线要稳得多也避免短路风险。这套 TPS259483AYWPR 和 TM4C129LNCZAD 的组合我已经在两个项目里跑过下一步准备把多路 eFuse 的动态限流配置做成带网络接口的管理功能到时候再整理成文章分享。
返回列表