ARTICLE DETAIL

资讯详情

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

eFuse+MCU构建智能电源路径保护:TPS259483与STM32L162ZE实战

eFuse+MCU构建智能电源路径保护:TPS259483与STM32L162ZE实战 前一阵我在做一套工业传感器节点的电源管理工位上摆了一堆样片其中两颗让我盯着看了很久一颗是 TI 的 TPS259483AYWPR 电子保险丝另一颗是 ST 的低功耗 MCU STM32L162ZE。最初只是想把 12V 输入到负载之间的电源路径保护做得靠谱一点别再用一次性的玻璃保险丝去赌售后结果这两颗芯片组合下来不仅把硬件保护做完整了还顺带把故障日志、自动恢复这类智能化功能都接上了。这篇东西我就照着我们实际踩过的坑和验证过的参数来写适合正在做嵌入式电源设计、工业控制板或者想要优化现有保护电路的同行参考。1. 为什么我突然盯上了电源路径保护1.1 嵌入式系统里被低估的电源路径问题嵌入式开发有个奇怪的现象大家花大量时间调代码、调通信、调传感器却很少认真审视 PCB 上从电源端子到负载之间的那一段铜皮和器件。直到某天客户现场报故障说是设备工作一段时间后整机断电返修回来发现板子上的电流采样电阻烧黑了MOSFET 的封装都鼓包了你才会意识到电源路径保护并不是加个保险丝就行这么简单。工业环境里的输入电源质量比实验室里那个稳压电源要恶劣得多。电机启停、继电器吸合、感性负载关断都会在电源线上叠加各种尖峰和跌落。热插拔设备更是重灾区带电接插瞬间会产生很大的浪涌电流直接把板子上的钽电容和 DC-DC 模块打穿。更常见的是“缓慢的过流”比如线束绝缘层破损、局部短路这类故障电流往往不到硬短路的百分之一普通保险丝可能几个小时都不会断但铜皮和连接器已经悄悄升温。1.2 传统保护方案的槽点保险丝、PTC 和分立 MOS 管我最早用的方案很简单输入端串一个玻璃保险丝。它确实能防硬短路但缺点太明显动作值不准、响应速度慢、烧断之后必须派人去现场换。温度保险丝和自恢复保险丝 PTC 又存在保持电流随温度漂移的问题同一个 PTC 在夏天可能 1A 就断开在冬天 2A 还稳定工作。后来想用分立 MOSFET 加比较器做一个电子开关。电路图画出来倒是好看一个采样电阻、一个比较器、一个 MOSFET、几个电阻电容感觉都能控制。但真正调试才发现过流检测的响应时间、电流限制的稳定性、浪涌控制和热关断都要自己做任何一个细节没处理好缩短短路的瞬间 MOSFET 就先牺牲了。给工业产品用这种方案风险太高。1.3 这次选型的组合思路eFuse 负责硬件兜底MCU 负责管理所以我把目光放到了集成电子保险丝 eFuse 上。TPS259483AYWPR 这颗芯片把功率 MOSFET、电流采样、限流比较器、过压比较器、软启动控制、热关断全部封装在一起输入端给电输出端就是一条受保护的电源路径。硬件层面的响应时间可以做到微秒级这是软件怎么做都追不上的。但光有硬件保护还不够我想知道设备在什么时候因为什么原因掉了电故障发生后是直接锁死还是自动恢复恢复前要不要给系统发送一个告警。这就轮到 STM32L162ZE 上场了。它是一颗超低功耗的 Cortex-M3 MCU用来监控 eFuse 的状态引脚、控制使能引脚、采样输出电压再结合 RTC 记录故障时间整体功耗还很低非常适合需要长期在线监控的工业节点。2. TPS259483 到底在保护什么2.1 它不是普通保险丝而是一颗可恢复的智能开关如果你第一次用 eFuse可以把它想象成一个带保护逻辑的固态开关。平时它是导通的相当于一个很小的电阻让电流正常流到负载。一旦输出端出现过流、短路、过压或者芯片自身过热它会在极短的时间内把内部的 MOSFET 关断切断电源路径。关键是这个“断开”是可恢复的只要 MCU 或者其他逻辑把它重新使能它就能再次导通。这就解决了玻璃保险丝“坏了必须换”的痛点。在 TPS259483 内部核心是一个导通阻抗很低的功率 MOSFET旁边还有电流采样网络和比较器。输出电流经过内部采样后与设定的限流值比较一旦超过门限就会限制栅极驱动把电流钳在设定值附近而不是像保险丝那样完全靠熔断断开。这种“先限流、再关断”的行为模式给后级电路留出了缓冲时间很多瞬时过流并不需要真的断电。2.2 过压、过流和浪涌控制的原理TPS259483 的输入电压范围覆盖 2.7V 到 18V我这次把它用在 12V 的供电路径上。它有专门的过压检测引脚 OVP通过外部分压电阻设置过压门限。当输入电压超过设定值时内部比较器会主动关断输出防止把后级的 5V 降压器和 MCU 烧坏。电流限制通过 ILIM 引脚配置外接一个对地电阻根据数据手册里的曲线或者公式选定阻值。我实际选的是目标 3A 限流因为后面带的负载包括几个传感器、一个微型电机驱动和一个给 STM32 供电的 3.3V LDO正常工作电流不到 1.5A留 2 倍余量比较合适。浪涌控制是个容易被忽略的点。热插拔和上电瞬间输出电容会呈现接近短路的特性如果不做软启动巨大的充电电流会触发过流保护造成启动失败。TPS259483 通过外部电容设置 dV/dt也就是输出电压上升的斜率让后级电容慢慢充电这样就避免了启动瞬间的“误伤”。2.3 后缀 AYWPR 到底是啥有些朋友看到 TPS259483AYWPR 这么一长串容易懵。AYWPR 其实主要是封装和包装信息芯片本身的核心型号是 TPS259483。A 后缀通常代表特定的档位或版本YWPR 对应具体的封装形式与卷带规格。选型时不需要被尾缀吓到只要确定工作电压、限流范围和封装符合 PCB 布局要求再按采购渠道的物料号核对就行。我这次用的是小尺寸 QFN 封装散热性能不错适合板子空间紧张的工业控制模块。3. STM32L162ZE 在系统里扮演的角色3.1 一颗低功耗 MCU 为什么适合干工业监控STM32L162ZE 属于 STM32L1 系列最大的特点是低功耗同时外设配置也不含糊。它内部有 512KB Flash 和 80KB SRAM跑一个精简的 RTOS 或者前后端状态机都绰绰有余。自带 12 位 ADC、多路定时器、USART、SPI、I2C还有一个段式 LCD 控制器虽然我这次没用 LCD但后续如果要做本地显示不用额外加驱动芯片。在工业应用里这类节点设备往往 7x24 小时在线但大部分时间处于待机状态。我的方案里MCU 并不需要一直高速跑着平时进入低功耗睡眠模式只保留 RTC 和几个 GPIO 的中断唤醒等 eFuse 拉低故障引脚或者采样周期到了再醒来处理。3.2 MCU 与 eFuse 的接口使能、故障、采样我实际用到的接口很简单但有三个点必须说清楚。第一是使能引脚 ENMCU 的 GPIO 输出控制。正常上电后MCU 初始化完成再拉高 EN让 eFuse 导通。这样可以防止程序还没跑起来负载就提前上电。第二是故障引脚 FLT它是开漏输出正常工作时是高阻故障时拉低。MCU 把它配置成带上拉的输入并且开启外部中断。故障发生时MCU 能被立刻唤醒然后通过 I2C 或者串口把告警信息传出去。第三是输出反馈采样。我在 eFuse 输出端加了一个电阻分压连接到 MCU 的 ADC 通道用 DMA 定时采集输出电压。这个电压可以反映 eFuse 是否真的导通、输出电压是否正常也能间接判断负载状态。3.3 事件记录与告警设计的思路有了 STM32L162ZE电源保护不只是硬件动作还可以变成一整套管理逻辑。我把故障事件记录在 Flash 的一个专用区域里每条记录包含故障类型、故障发生时的时间戳、重试次数以及故障前后的输出电压。这样做对现场问题定位非常有用。举一个实际例子某台设备频繁在凌晨出现“瞬间断电”如果只靠客户描述几乎无法定位。但通过 MCU 里记录的 RTC 时间我发现故障集中在每天凌晨 3 点附近再结合现场环境一查原来是那个时间附近有一台大功率设备启动造成了电压瞬时跌落触发了 eFuse 的欠压保护。这个信息在没有记录功能的系统里是永远查不出来的。4. 完整硬件设计实操从选型到布局4.1 电源路径架构整个系统分成三级。第一级是外部 12V 输入经过 TPS259483AYWPR 形成受保护的 12V 电源路径。第二级是输出端的 DC-DC 降压器把 12V 降到 5V给传感器、电机驱动等负载使用。第三级是一个 3.3V LDO给 STM32L162ZE 和他的外设供电。这样分级的目的是即使受保护的 12V 路径因为负载短路而关断只要 5V 和 3.3V 的输出电容还存有余电MCU 依然有短暂的“生存时间”来处理故障和记录日志。如果 MCU 和负载共用同一条路径短路瞬间会连 MCU 一起断电那故障记录就无从谈起了。4.2 过压阈值和限流值的计算过压阈值我用 15V 作为动作点因为 12V 系统的瞬态尖峰一般不超过 14.5V留出 0.5V 的余量。TPS259483 的 OVP 引脚内部有一个比较器基准这里我按典型参考 1.2V 来设计分压电阻。如果采用下电阻 10kΩ、上电阻 115kΩ那么动作阈值就是 1.2V × (115 10) / 10 ≈ 15V。实际焊接时我用的是 1% 精度电阻你可以用 0.1% 的精密电阻让门限更准但成本会高不少。限流电阻我直接查了数据手册的曲线。ILIM 引脚的电阻值越小限流值越大。我需要的 3A 限流对应手册里推荐的一个阻值范围这个不能拍脑袋必须在电路板出来之前把最终阻值定下来。还有一点要注意ILIM 电阻到芯片引脚的走线要短并且尽量避开开关节点否则限流值会因为寄生电感产生毛刺。4.3 MCU 侧电路与软件要点先看初始化代码我基于 STM32 HAL 库写了一个简单的 eFuse 管理模块。重点是把 GPIO 模式配置正确FLT 必须配置为带上拉输入EN 配置为推挽输出。void eFuse_config(void) { GPIO_InitTypeDef GPIO_InitStruct {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); // EN 引脚推挽输出初始为低 GPIO_InitStruct.Pin EFUSE_EN_PIN; GPIO_InitStruct.Mode GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull GPIO_NOPULL; GPIO_InitStruct.Speed GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(EFUSE_EN_PORT, GPIO_InitStruct); HAL_GPIO_WritePin(EFUSE_EN_PORT, EFUSE_EN_PIN, GPIO_PIN_RESET); // FLT 引脚外部中断输入内部上拉 GPIO_InitStruct.Pin EFUSE_FLT_PIN; GPIO_InitStruct.Mode GPIO_MODE_IT_FALLING; GPIO_InitStruct.Pull GPIO_PULLUP; HAL_GPIO_Init(EFUSE_FLT_PORT, GPIO_InitStruct); HAL_NVIC_SetPriority(EXTI0_IRQn, 2, 0); HAL_NVIC_EnableIRQ(EXTI0_IRQn); }软件逻辑上我用一个简单的状态机。等待上电后MCU 延时 200ms等电源稳定然后拉高 EN。如果 FLT 脚没有拉低就认为电源路径正常。一旦 FLT 触发中断MCU 先关闭 EN记录故障时间再延时一段时间尝试重新使能。如果连续 3 次都在很短时间内再次触发故障就判定为硬性短路进入锁存状态不再自动重试只保留告警输出。4.4 布局和热设计别忽略那一点点导通电阻TPS259483 内部 MOSFET 的导通电阻非常小但在 3A 满载时瞬时发热依然不能忽略。我实测过满负荷下的压降大约在 30mV 左右换算成功率不到 0.1W看起来不大但如果你把焊盘铜皮设计得太细局部温升会很明显。PCB 上必须保证输入输出铜皮宽度至少能承受 3A 以上持续电流一般建议 2 盎司铜厚、走线宽度不低于 1.5mm。散热焊盘不要只留一个过孔要打数组过孔到内层地铜并且过孔直径不能太小不然热阻会很大。输出电容尽量靠近芯片的输出引脚输入电容靠近 Vin 引脚这是所有电源芯片布局的通用规则。eFuse 的 FLT 引脚要接一个 10kΩ 上拉电阻到 MCU 的电源轨注意如果 MCU 先掉电这个上拉不能通过其他路径灌电流进 MCU 引脚。5. 常见问题与排查技巧实录5.1 故障持续性导致反复重启变成“打嗝”状态我第一次调试的时候就碰到了这个问题。短路故障触发后MCU 立刻重新使能eFuse 又瞬间检测到过流再次关断整个过程像打嗝一样负载端的电容一直处于反复充放电状态不仅会产生很大的噪声还容易让 eFuse 温度持续上升。解决办法是引入一个固定时间的重试间隔比如故障后先延时 100ms等能量泄放完再尝试重新上电。对于真正的瞬时故障比如负载启动瞬间的电流尖峰手动重试一次往往就成功了。如果连续重试多次仍然失败就必须锁存。这个逻辑看起来简单但在状态机设计里很容易忽略“故障恢复后的延时”值得检查。5.2 带大电容负载时上电瞬间被误判为过流某些负载板上并联了多个大电容总容量可能到几千微法。上电瞬间输出电容相当于短路充电电流非常大。如果没有配置软启动电容eFuse 会直接认为发生了过流故障导致系统永远无法正常启动。我第一次用 TPS259483 时把软启动电容留了空焊结果一上电 FLT 就拉低百思不得其解。查了手册才明白dV/dt 控制引脚必须接一个电容它的充电电流决定了输出电压上升斜率。电容值越小上升越快但过流风险越大电容值越大上升越平缓启动越柔和。我最后选了能满足 10ms 软启动时间的一个电容值这个时间足够让后级 DC-DC 平稳启动。5.3 输出电压采样 ADC 波动明显MCU 的 ADC 采集 eFuse 输出电压时发现数据跳变比较严重。原因是电源路径上有高频噪声尤其是 DC-DC 开关节点辐射出来的干扰直接耦合到了采样线上。我的处理方法是先加一个简单的 RC 低通滤波截止频率放在 10kHz 左右把高频毛刺滤掉。然后 ADC 采样用 DMA 模式连续采 16 次取平均效果非常明显。另外还要注意采样点不要靠近电感或者开关管尽量从 eFuse 输出端的电容正极直接拉线不要经过其他功率回路。5.4 短路响应很快但瞬态电压跌落也会误触发eFuse 对过压、过流的响应是微秒级的这是优点但也带来一个麻烦如果输入电源本身有瞬间跌落比如大电机启动时把 12V 拉低到 10VMCU 的欠压检测或者稳压器的复位电路可能会先动作产生误告警。我后来在 MCU 侧加了一个判断窗口只有当输出电压低于阈值持续超过 50ms才判定为真正的电源故障。如果只是几十毫秒的瞬态跌落就只记录一条预警事件不采取断电操作。eFuse 的硬件保护依然实时在线但软件告警不能跟着硬件一样过于敏感。5.5 常见问题速查表现象可能原因排查要点上电无法启动FLT 一直拉低软启动电容缺失或过小检查 dV/dt 引脚电容增大容值短路后反复重启重试逻辑没有延时状态机中增加固定延时过流阈值与设计值偏差大ILIM 电阻精度或布局问题使用 1% 电阻走线远离开关节点ADC 采样电压跳变高频干扰或采样点太远加 RC 滤波DMA 多次采样取平均满载时芯片发烫铜皮过窄散热过孔不足加宽铜皮增加过孔阵列过压保护不动作OVP 分压电阻精度差用 0.1% 电阻重新计算门限6. 一些我想留在这里的实操经验这套 TPS259483AYWPR 与 STM32L162ZE 的组合我在验证板上跑了将近两个月的连续通电测试中间故意制造了多次短路过流场景硬是把负载端的铜皮都打黑了eFuse 本身依然稳定。最大的收获是保护电路不能只看“能不能断开”还要看“断开之后怎么恢复、怎么上报、怎么记录”。没有 MCU 参与它只是一颗比较聪明的开关有了 STM32L162ZE 参与它就变成了整个设备健康管理的一部分。如果让我给正要抄作业的人一个建议我会说把 ILIM 和 OVP 的电阻阻值当成关键参数来管不要随手从料盒里抓PCB 布局时给 eFuse 周围的铜皮多一点余量软件上一定要把“故障重试”和“故障锁存”分开处理。最后再分享一个小技巧量产前用电子负载做一次完整的短路测试并记录 10ms 级别的输出电压波形用来确认 eFuse 的动作时间是否满足你的系统复位要求。这个测试在开发阶段可能觉得多余但等到现场出了问题才知道它有多重要。
返回列表