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

电子保险丝与MCU协同的工业电源保护方案设计

电子保险丝与MCU协同的工业电源保护方案设计 ★ FEATURED ARTICLE
最近在给一块工业控制板做电源保护升级核心器件选的是TPS259483AYWPR这颗电子保险丝和PIC18F47K42单片机。整套系统调完之后最大的感受是以前生怕负载短路烧板子现在反而希望它短路一次看看保护动作有多利落。这个方案并不是简单把保险丝换成芯片而是把模拟快速保护跟数字监控结合在一起既能挡住过压、过流、浪涌又能实时记录故障原因适合做PLC数字量扩展模块、传感器采集节点、以及各种嵌入式控制板的入口电源保护。如果你正在设计类似电路或者项目里电源部分总被现场莫名故障打掉这篇文章会告诉你整个方案怎么搭、参数怎么算、代码怎么写以及调试时最容易踩的坑。1. 项目概述与方案背景1.1 为什么电源路径需要专门保护做过工控的人都知道工业现场电源很少是干干净净的。24V开关电源本身就有纹波走线一长还会被电机启停、继电器吸合干扰甚至直接收到雷击感应过压。以前用自恢复保险丝反应慢不说过流精度完全看运气。普通保险丝更麻烦烧断后必须人工更换故障期间设备停机损失就得自己扛。还有一类问题是上电浪涌。板子上电容一大插电瞬间充电电流可能冲到几十安培接头打火花是小事后级DC-DC输入电容被击穿、IC被烧才是真问题。传统方案靠TVS加保险丝但TVS只能泄压不能限流保险丝只能断路不能防止过压。要同时解决过压、过流、浪涌、短路还得能通知上位机就不是一颗保险丝能做到的。所以我当时把目光放到电子保险丝上也就是带功率FET的保护芯片。它能在微秒级别切断电源路径还能设定电流阈值。配合一颗8位MCU做监控和策略控制整个电源入口就能做到又快又聪明。1.2 器件选型为什么选TPS259483AYWPR与PIC18F47K42先说TPS259483AYWPR。这颗芯片是TI的电子保险丝产品内部集成了功率MOSFET和控制逻辑相当于把“可恢复保险丝 限流器 过压保护器 热关断”塞进一颗小封装里。它支持2.7V到24V左右的输入范围电流限制可以通过外部电阻设定响应时间微秒级还有启动时的dV/dT控制能有效抑制浪涌。最吸引我的是它的故障输出脚一旦触发保护MCU立刻就能感知到。PIC18F47K42则是Microchip 8位单片机里外设比较丰富的一颗带12位ADC、DAC、比较器、CIPCore Independent Peripherals和多种通信接口。选它不是为了算力而是看中它的ADC模块能连续采样、自动计算平均值这对监控电源电压电流非常合适。再加上MCCMicrochip Code Configurator图形化配置工具初始化代码可以快速生成留给业务逻辑的时间更多。这两个器件一个负责“快速切断电源”一个负责“大脑监控和恢复策略”分工明确。纯模拟保护方案虽然响应快但无法区分瞬时过流和持续短路也无法记录故障原因纯MCU方案又来不及在微秒级切断大电流。把两者结合才是工业应用里比较稳妥的做法。1.3 应用场景与需求拆解这个方案最初是为一块多通道工业数字量输入板设计的。整板由24V供电板上有光耦隔离、MCU、几个传感器通道还有一路给外部变送器供电的辅助输出。现场发生过好几次电源入口被瞬时高压打坏检查发现是接线端子误碰、短路和雷击感应混在一起。拆解下来需求主要有四点输入过压保护超过28V要切断防止后级烧毁过流限制整板电流超过设定值就限流或断开避免PCB走线过熔浪涌抑制上电时不要让大电容电流冲坏接插件故障上报MCU要把“电压异常、过流、过热”这些状态记录下来方便远程诊断。围绕这四点我把整个电源路径设计成输入TVS防浪涌 → TPS259483控制电源通断 → LC滤波送后级DC-DC同时PIC18F47K42通过ADC采集前级电压和芯片电流采样输出通过GPIO读取FAULT状态、控制EN引脚。这套结构在测试中效果很好。2. TPS259483AYWPR 硬件特性深入解析2.1 内部结构与工作原理TPS259483内部的核心是一个N沟道功率MOSFET串联在电源通路上。正常工作时MOSFET完全导通导通电阻很小压降约几十毫伏。当检测到输出电流超过设定阈值时芯片会先把MOSFET转入线性区把电流限制在设定值附近而不是立刻断开。这个很关键因为很多负载启动瞬间需要一点额外电流如果直接断开会导致误操作。持续一段时间后仍过流芯片才会彻底关断。过压保护原理也不复杂芯片内部有一个分压器追踪输入电压超过OVP阈值时就关断内部FET。UVLO欠压锁定则是防止输入电压太低时后级工作异常。热关断部分会监测芯片表面温度超过145°C左右就会把FET关掉等冷却后恢复相当于内置一道安全绳。有一个容易被忽略的点电子保险丝并不是“关断后隔离一切”。当FET关断时输入电压仍会通过内部体二极管漏到输出端。如果输出端有大电容切断后电压不会瞬间降为0而是缓慢放电。设计时必须考虑负载是否允许这种滞后必要时可以在输出端并联泄放电阻。2.2 关键引脚与外围配置这颗芯片的引脚不多但每个都值得好好看。以常见的QFN封装为例核心引脚包括引脚功能说明外围设计要点IN电源输入靠近引脚放1uF 0.1uF陶瓷电容OUT电源输出输出电容至少10uF影响启动和环路稳定EN/UVLO使能与欠压设置可以接电阻分压设定开启电压也可由MCU控制ILIM电流限制设置接电阻到GND阻值决定限流点dV/dT启动斜率控制接电容设定输出电压爬升速度FLT故障输出开源输出MCU通过上拉读取低电平为故障PG电源正常良好状态下输出有效可接MCU或LEDILIM电阻的计算是设计重点。根据数据手册限流值 ( I_{LIM} ) 与电阻 ( R_{ILIM} ) 之间通常有对应关系比如 ( R_{ILIM} K / I_{LIM} ) 这种形式。我当时按整板最大工作电流0.8A来设留出20%余量把限流点定在1A。选电阻时要注意精度和温漂最好用1%精度金属膜电阻否则限流点偏差可能超过10%。dV/dT电容的取值直接影响启动时的浪涌电流。电容值越大输出电压爬升越慢启动冲击越小。我试过用10nF、47nF、100nF三档在输出电容470uF的前提下10nF时冲击电流接近限流点100nF时基本无感。但启动速度也不能太慢对需要快速上电的逻辑电路会有影响所以最终取47nF兼顾安全和速度。2.3 与PIC18F47K42的接口设计PIC18F47K42和TPS259483的接口很简单逻辑上就三根线FLT → MCU的外部中断脚下降沿触发用于快速感知故障EN/UVLO → MCU的GPIO控制芯片使能或复位闩锁电流采样输出芯片的IMON或外部采样电阻分压 → MCU的ADC通道。这里有个取舍TPS259483有些封装没有IMON输出只能靠外部采样电阻来获取电流信号。但电子保险丝内部已经有限流外部采样电阻只是用于“看电流”精度要求不高可以用低值电阻加运放差分放大到MCU。我在板上用一个0.1Ω采样电阻再经过INA240高边电流放大器放大20倍后送PIC的ADC。FLT脚是开漏输出需要加一个10kΩ上拉电阻到MCU电源。注意FLT的电压域最好和MCU一致如果PIC是3.3V供电而TPS输入是24V上拉电阻应该接到3.3V不能直接接24V否则会烧GPIO。PG脚可以用来做上电自检MCU先读PG是否为正常再决定是否让后级工作。我在程序里把PG和FLT都纳入了开机自检项比单纯依赖LED判断靠谱得多。3. 基于PIC18F47K42的软件设计与实现3.1 系统软件架构PIC18F47K42虽然是一个8位MCU但它的外设设计足够现代。我把软件分成了三层驱动层、策略层、应用层。驱动层就是MCC生成的外设初始化代码包括ADC、定时器、外部中断和GPIO策略层是电源状态机处理正常、过流、过压、恢复这几种状态应用层则负责和上位机通信或指示。电源状态机是整个软件的核心一定要设计好。状态包括POWER_IDLE上电初始等待PG有效POWER_ON正常供电持续监控电压电流POWER_FAULT检测到FLT或ADC超限执行关断逻辑POWER_RETRY延时尝试重新使能如果连续失败则锁定。这里要注意TPS259483在FLT后可能处于闩锁模式需要EN脚拉低再拉高才能复位。MCU在进入FAULT状态后要做一次“重启EN”的操作但不能无限重试否则故障状态下反复硬上电会损坏外部负载。我一般设定最多重试3次然后彻底锁住并上报错误。3.2 关键代码实现先看ADC采集部分。PIC18F47K42的ADC支持自动累加和平均值计算不用占用CPU就能得到稳定的采样结果。我配置成每500us触发一次连续采16次取平均对应电压电流更新率约125Hz对电源监控够用。// 使用MCC生成的ADC读取函数返回值是12位原始值 uint16_t adc_raw_v, adc_raw_i; float v_in, i_load; void sample_power(void) { adc_raw_v power_ADC_Read(VIN_CH); adc_raw_i power_ADC_Read(ILOAD_CH); v_in (float)adc_raw_v * 3.3f / 4096.0f * V_DIVIDER_RATIO; i_load (float)adc_raw_i * 3.3f / 4096.0f / GAIN / SHUNT_RESIST; }FLT中断处理我放在外部中断回调里置一个全局标志位不在中断里做复杂处理只把事件交给主循环状态机。这是老经验了中断里省得越多系统越稳。volatile uint8_t flt_flag 0; void power_FLT_ISR(void) { flt_flag 1; } void main(void) { while (1) { if (flt_flag) { flt_flag 0; power_state POWER_FAULT; } power_state_machine(); } }使能控制的代码很简单就是操作GPIO和短延时。注意EN脚在MCU复位期间可能会处于高阻态需要在硬件上加上下拉电阻避免TPS在MCU初始化前被意外使能。我通常会加一个10kΩ下拉电阻到地默认关闭输出。3.3 启动时序与软启动处理上电时序我调试了很久才理顺。现在TPS的dV/dT已经限制了输出电压爬升速率但MCU侧还是需要注意PIC本身由另一路3.3V电源供电那么TPS的24V输出要稍晚于3.3V稳定才能保证MCU一上电就能监控。做法是在MCU初始化完成后再拉高EN引脚让后级24V上电。如果系统只有一个输入电源可以先把输入接到TPS的前级由TPS输出再分出一路给板载DC-DC供3.3V。这种情况下软件在3.3V起来之前没法控制EN只能靠TPS默认使能配置。为此我特意把UVLO电阻分压设计成输入电压超过20V时EN引脚才会拉高相当于一种硬件延时上电MCU上电后读到的已经是稳定输出。软件里还有一个“启动监测窗口”的概念。EN拉高后我启动一个500ms定时器如果在窗口内FLT触发说明输出电容太大或负载有硬故障MCU立刻复位EN并标记启动失败。这样能快速识别不会傻等。4. 实操过程原理图设计到调试4.1 原理图设计与参数计算先梳理清楚输入电压范围。我的板子输入名义24V实际波动范围是20V~28V瞬时可能到30V。TPS的OVP阈值我设定在29V超过就断开。用分压电阻设定OVP时要根据数据手册的阈值电压反推分压比。电流限制设计要留足余量。整板最大功耗约12W在24V下就是0.5A我按1A限流。ILIM电阻的公式我查了手册最终算出来是68kΩ实测限流点约0.96A和设计值接近。如果后续负载扩展只需要换这颗电阻就行比换保险丝方便太多。输出电容放在OUT和GND之间我用了两枚220uF电解电容和一枚10uF陶瓷电容。电解电容主要用于稳定环路和提供瞬态电荷陶瓷电容用于高频去耦。这里有个计算点输出电容和dV/dT电容共同决定启动电流。经验公式里启动电流峰值约等于 ( C_{OUT} \times ) dV/dt。我输出电容总470uFdV/dT电容47nF时爬升时间约20ms峰值电流约24V/20ms * 470uF ≈ 0.56A低于1A限流所以启动很从容。MCU侧供电我单独用了一颗低压差LDO从24V降到3.3V前面又加了一级RC滤波。因为LDO输入如果直接接在TPS输出端负载突变会导致3.3V有毛刺但LDO对输入变化有抑制能力整体问题不大。TI这颗芯片的FLT和EN引脚都放在靠近MCU的一侧走线尽量短避免受到功率走线干扰。4.2 PCB布局要点电源保护的板子布局比走线重要得多。TPS259483的IN和OUT都是功率引脚要走粗线至少2mm宽最好铺铜。电流采样电阻要靠近芯片输出端而且采样走线必须采用开尔文接法从电阻两端单独拉线到运放不要直接串联在功率通路上否则采样电压里会包含走线电阻上的压降。散热也要考虑。内部FET在正常导通时有压降电流0.5A时功耗约0.5A * 0.05V ≈ 25mW其实很小。但在限流期间FET两端电压可能非常大。比如输入24V、输出被短到地限流1A那么FET承受约24W功耗即使只能坚持几毫秒芯片也会快速升温。因此系统真正工作区应该远离限流状态散热焊盘一定要接大面积铜箔增加热容。FLT信号走线要远离功率回路不要和电感、开关节点并行走得长否则故障状态可能被误触发。我在FLT线上串联了一个1kΩ电阻相当于加了一道保护即使异常过压也不至于打坏MCU。地面分割上输入地、输出地、模拟地最终单点相连避免地环路噪声影响ADC采样。4.3 调试流程与波形验证第一次通电前强烈建议先把负载断开只接空载。用可调电源限流供电逐步升压同时看TPS的输出电压和FLT状态。如果一切正常输出电压会跟随输入芯片不保护。然后再接上假负载用电子负载从轻载慢慢加到过流点观察限流波形。我用示波器同时抓了输入电压、输出电压、负载电流和FLT信号。正常工作时输出几乎没有波动。当我短时加载到1.5A输出电压会跌落几百毫伏FLT信号立刻变低EN被MCU收到后主动拉低。整个保护动作时间大约在100us级肉眼完全看不出过程只能靠示波器抓。最值得测的是短路瞬态。我拿一根短粗线直接短接输出端抓到的波形显示短路瞬间输出电容放电FLT拉低FET在几个微秒内关断。因为电感很小没有明显电压尖峰后级设备毫发无损。这个测试做完我对方案信心大增。5. 常见问题与排查技巧实录5.1 故障表症状-原因-对策症状可能原因排查与解决上电就FLT无法开机输出电容太大启动电流超过限流点增大dV/dT电容或先关闭输出再软启动正常工作几分钟后FLT热关断保护触发检查散热铜箔面积减小限流点测量芯片温升MCU读取FLT一直低上下拉电阻配置错误或FLT引脚电压域不对确认上拉到3.3V且电阻值10kΩ~100kΩ输出电流偏低就限流ILIM电阻温度漂移或取值偏差换1%精度电阻重新计算并联电阻容差电压正常但FLT偶尔跳PCB布局引入干扰FLT走线远离功率回路再串联1kΩ电阻短路后不能恢复芯片处于闩锁模式MCU将EN拉低保持100ms再拉高检查重试逻辑5.2 独家避坑心得第一小看启动浪涌是最大的坑。很多人算静态工作电流却不看启动瞬间的电容充电电流。电子保险丝限流点在1A启动电容470uF如果dV/dT电容选太小上电几分钟就会触发保护。我一开始按手册默认值来结果空板上电都直接FLT排查了半天才发现是启动电流超限。第二不要迷信“电子保险丝一定能保护一切”。它对短路的保护确实灵敏但对慢过压、高频纹波、长时间过载更多还是要靠前级TVS、后级DC-DC和软件策略配合。TPS259483负责“硬保护”PIC18F47K42则负责“软监测”两者缺一不可。第三MCU的ADC参考地一定要和TPS的地充分连接。PIC在开发板上工作时万事大吉一旦接到工业板上ADC读数就会跳动几十LSB。后来我在ADC参考电压引脚旁边加了一个100nF陶瓷电容模拟地和功率地在下层单点汇合读数才稳定下来。不要省这几颗电容。第四重试恢复逻辑必须有限制和延时。我最早写的代码是FLT后立刻拉高EN理论上芯片应该解锁但现场总是反复重启。后来才明白热关断需要时间冷却芯片自身还有一个重启延迟MCU需要等FLT恢复变成高电平再去拉EN。更稳妥的做法是检测到FLT后至少等200ms再操作EN。最后再分享一个小技巧可以在PIC里记录每次故障的类型和时间戳通过UART或CAN上传给上位机。这样即使设备在现场死机、重启过调试人员也能知道是保护动作了还是真的坏了。我的这个项目里这套记录功能帮我们找到了现场两台设备频繁掉线的真正原因——不是电源保护失效而是后级一个DC-DC负载瞬间过流引发了TPS限流MCU记录下故障持续时间后我们很快定位到了那一路传感器的供电问题。顺着这个思路你还可以把PIC的DAC用起来动态调整TPS的限流阈值或者根据温度降额。这套架构做出来后往其他产品迁移只需要改几个参数就行通用性比想象中高很多。
阅读完成 · 觉得有帮助?
咨询建站