ARTICLE DETAIL

资讯详情

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

基于PSoC CLB-MACO的LLC谐振变换器软启动限流设计

基于PSoC CLB-MACO的LLC谐振变换器软启动限流设计 那天上午我在调试一台300W的LLC谐振变换器满载启动啪的一声原边保险丝直接炸了。更换保险丝后再测发现主功率MOSFET的壳温比正常满载工作时还要高出将近30℃而示波器回放出来的原边谐振电流峰值已经冲到稳态值的4倍以上。LLC软启动的问题就这样被一场“炸管事故”硬生生推到了我面前。对于做LLC电源的朋友来说大家对软启动最熟悉的做法是“频率爬坡”——从远高于谐振频率的地方往下扫让输出电压慢慢建立。但实际调试中你会发现单靠频率爬坡并不能根治启动期间的电流尖峰尤其在满载启动、以及前端PFC母线电压不稳定的情况下谐振电流的包络会像失控一样向上冲。后来我把目光转向了PSoC的CLB-MACO用硬件逻辑的方式把“监测谐振电流、拦截峰值、逐步放宽限制”这一整套流程放进可编程逻辑块内部效果非常直接。这篇文章就详细记录一下整个过程中的原理分析、逻辑设计和实测数据希望能给同样在LLC软启动上踩坑的人一个可参考的路径。1. 一个炸管现场和LLC软启动被忽视的“启动过冲”1.1 为什么频率爬坡软启动没有想象中的效果在绝大多数LLC芯片的数据手册里软启动都被描述成“启动时把开关频率抬高然后逐步降低到工作频率”。这个说法逻辑上没毛病频率越高谐振阻抗越大传递到副边的能量越少输出电压建立得就越慢电流自然也温和。但问题是LLC是一个调频控制的谐振变换器它和普通的PWM变换器本质不同。PWM变换器可以把占空比从0逐步调大让输出能量从零开始往上涨而LLC在正常工作区间内占空比基本固定在约50%附近控制手段只有一个——开关频率。频率再高每个周期都会有半个桥臂导通、半个周期把母线电压直接压到谐振网络的一端。也就是说LLC只要一开机第一个开关周期就会把完整的母线电压阶跃加到谐振槽上电流已经不是“从零起步”而是相当于给一个LC网络突加阶跃激励。我当时的第一反应是把软启动时间从20ms拉到200ms总能压住了吧。结果实测下来启动时间拉长之后电流包络的衰减确实变缓但第一个高尖峰并没有消失它只是被“稀释”了。这个现象逼着我重新去翻LLC启动瞬态的物理过程。1.2 谐振槽启动过程的物理本质二阶系统冲击响应LLC谐振槽的本质是一个二阶RLC网络由谐振电感Lr、谐振电容Cr和励磁电感Lm组成。上电之前Cr两端电压为零Lr中电流为零整个谐振网络处于“零初始能量”状态。当第一个驱动脉冲到来时半桥中点电压从0跳到约Vdc/2这个电压阶跃直接加在Lr和Cr串联支路上。由于电容电压不能突变初始时刻Cr相当于短路电流上升速率近似由Vin/(2×Lr)决定。更麻烦的是这个RC网络的固有振荡会产生一个“动态过冲”如果开关周期在时间尺度上恰好与谐振周期接近那么每一拍都在给振荡包络“叠能量”几个周期之后电流就能冲到远高于稳态平均值的水平。这就是LLC启动谐振电流峰值的物理根源——它不是闭环失控而是二阶系统对阶跃输入的固有瞬态响应只要谐振网络存在这个过冲就一定会在启动瞬间出现。频率爬坡之所以能压住一部分峰值是因为高开关频率下每个半周期持续时间很短电流还没有来得及振荡到极值就切换了方向但如果你起始频率还不够高或者下降速率太快累积起来的包络照样会点火。1.3 传统方案的“视野盲区”只有频率没有逐周期峰值约束后来又比较了市面上几种常见的软启动实现L6599这类模拟芯片内部带压控振荡器本质上就是线性或分段下降的扫频源UCC25600这类数字友好型芯片由外围MCU用软件做频率步进还有一些高端方案会用突发模式先让变换器以极低占空比断续工作再逐步切入连续模式。这三种方式都有同一个盲区——它们只控制“频率曲线”没有一个独立的机制去直接盯着“当前这个周期电流是不是已经超限了”。打个比方就像是给车设定了加速曲线但车内没有任何人盯路一旦轮胎打滑曲线执行得再完美也拦不住失控。对LLC启动来说频率曲线只是理想情况下的“期望行为”而谐振电流峰值才是真正决定功率管命运的现实指标。所以我的结论很明确软启动不能只做“频率规划”还要做“逐周期电流拦截”。而要实现后者最好别指望中断响应慢半拍的CPU得把逻辑放到离PWM硬件最近的地方。2. 为什么是PSoC CLB-MACO把控制决策下沉到硬件逻辑层2.1 常用软启动实现方案的横向对比在动手之前我把能用的方案都列了一下分别评估了响应延迟、灵活性、成本三个维度方案响应延迟灵活性成本/复杂度说明模拟缓启动芯片最优纳秒级差只能调RC参数低无法做逐周期动态限流MCU纯软件扫描差中断延迟ADC采样周期好低只能在ms级做整段控制MCU外部比较器/Cpld好比较器快中中高外部逻辑布线负责成本增加数字控制器DSP中几十ns级PWM比较器可用好中高适合常规调制但灵活性受外设限制PSoC CLB-MACO最优逻辑级同频时钟单周期内完成好可配置逻辑宏单元中把比较器、PWM、自定义逻辑集成在一个芯片内我手头正好有PSoC平台它内部集成了ARM核、高速比较器和PWM外设还带一个关键东西——可配置逻辑块CLB也就是CLB-MACO所依附的硬件引擎。这个东西的价值在于它让设计师可以像画FPGA逻辑图一样把自定义的时序状态机和布尔逻辑直接做进MCU内部而且和PWM的边沿保持同步。2.2 CLB-MACO在PSoC内部扮演的角色很多人第一次听到CLB-MACO这个缩写会挠头其实可以把它理解为“MCU里嵌进去的一小块可编程逻辑阵列”。它不是软件库而是真实的数字逻辑电路由可配置逻辑宏单元MACO、查找表、触发器和进位链组成时钟可以独立配置输入输出可以接到芯片引脚也可以接到内部外设的信号路径上。在PSoC体系里CLB-MACO最大的特点是可以旁路CPU直接操作PWM。举个例子普通MCU检测到过流哪怕是靠NMI中断从事件发生到软件拉低驱动端口通常也有几百纳秒到微秒级延迟而CLB的逻辑一旦被配置好输入比较器信号拉高输出信号可以在同一个时钟周期内传到PWM的kill引脚或者直接关闭驱动器通道。这个速度对LLC启动限流来说是决定性的——因为一个开关周期只有几微秒。我当时在内部信号路由表里把它们串起来原边电流采样电阻的电压送进芯片的比较器比较器输出进CLB输入引脚CLB经过两三级组合逻辑之后输出接PWM模块的kill输入。整条链路的延迟大概是几十纳秒比做任何软件实时控制都快好几个数量级。2.3 用硬件逻辑而不是中断来兜底确定性是第一位的在写启动控制代码时我逐步发现CPU参与得越多不确定性就越大。频率爬坡用定时器中断来做一个周期内中断如果没被响应下一个周期的频率可能直接漏一步。更严重的是当CPU同时在处理通信、ADC读取和故障记录时中断响应抖动会造成频率台阶不均匀表现在波形上就是电流包络忽高忽低。CLB-MACO解决这个问题的方式很朴素不管你CPU在忙什么CLB每一个时钟周期都在同步采样输入信号按照配置好的状态机运行。它本质上是一个“永远睁着眼睛的硬件看门狗”CPU的角色只剩下在启动前设定好参数、在启动结束后撤掉限流使能。这也是我最终没有用纯软件方案的根本原因——在LLC启动这种高频、高速、需要确定性反应的场景里把关键路径放到可编程硬件逻辑里才是降风险的正确姿势。3. 抑制谐振电流峰值的关键设计监测-拦截-软恢复3.1 整体架构原边电流采样到PWM使能控制的链路整个抑制系统由四层组成电流感知层原边谐振电流通过采样电阻或电流互感器转换成电压信号送入PSoC的模拟比较器。采样位置放在谐振电容Cr的下端或者原边母线回路上原则是不能影响功率回路布局。比较判定层比较器参考电压就是电流阈值对应的电压值。为了抗干扰我给比较器设置了一点滞回防止电流在阈值附近反复穿越时产生抖动毛刺。逻辑执行层比较器输出进入CLB-MACO。CLB内部完成三个任务——产生采样窗口、判断是否超限、决定动作方式。功率动作层CLB输出接PWM模块的kill信号。kill一旦生效PWM输出立即进入无效状态半桥两个管子同时关断谐振电流在母线上通过体二极管续流衰减。链路看似简单但实际设计里最难的不是拉电线而是决定“什么时刻判别、超限之后做什么”。3.2 采样窗口与Blank区间的设计不能误伤也不能漏判电流比较器如果在每个开关周期内都连续工作很容易误触发。原因很现实MOSFET开通过程中米勒平台引起的位移电流会在采样电阻上制造一个尖刺这个尖刺持续几百纳秒幅值可能比真正的谐振电流还高。我用的办法是在CLB里做一个可编程窗口定时器。每个PWM周期开始时窗口定时器先进入一个120ns的blank区间强制比较器输出被忽略blank结束后开启监测窗口窗口宽度覆盖电流预期出现峰值的区间。窗口结束之后比较器输出不再影响逻辑直到下一周期重新开始。这个blank加窗口的组合本质是把“相位鉴别”和“幅度比较”结合起来。大多数过流保护方案只比较幅度不管相位所以在LLC这种正弦电流波形下经常误动加了相位窗口之后只有“在预期应该出峰值的相位区段出现了超限电流”才被判定为真正的过冲可靠性高了非常多。3.3 超限动作的三段式策略拦截-缩步-恢复CLB内部的逻辑宏单元被配置成一个四状态的状态机正常运行态无过流事件PWM正常输出频率按软件给定的目标扫描。拦截态单周期内电流超限CLB立即拉高kill信号封锁当前开关周期。同时一个计数器开始计时锁定时间。缩步态如果间隔数个周期后过流事件再次发生说明当前频率下降速率太快谐振槽积累能量过多。CLB此时不再只是封周期而是直接向PWM外设发出一个“暂停频率下降”的保持信号让当前频率多停留一段周期数等待电流包络自然衰减。恢复态连续若干个开关周期都没有出现过流状态机回到正常运行态频率继续下降。这个三段式逻辑和传统的“过流就关断”最大的区别是它把过流事件当成了“频率曲线走得太快”的反馈信号而不是故障信号。只要不是短路、饱和这类绝对异常CLB会以每周期为单位做自我调节让启动过程本质上变成“监测电流→微调频率曲线→再监测”的闭环过程。3.4 为什么整个逻辑要用CLB实现而不是程序实现我最初也想过用软件状态机做同样的事比较器产生中断中断里面改定时器的重载值来跳频。但是实测下来从比较器触发到PWM周期重载软件路径最快也要在中断响应之后经过十几条指令期间半桥可能已经又多跑了一个周期严重时电流又冲了一截。CLB的另一个巨大优势是它可以和PWM逐周期握手。我通过内部信号把PWM的周期起始脉冲引入CLB做同步所以状态机的每次状态转移都严格对齐在开关周期的边沿上不会出现“跳频动作发生在半周期中间”这种尴尬情况。这种确定性软件永远模仿不来。4. 参数设计实战从峰值电流目标反推阈值和启动曲线4.1 峰值电流限制目标与器件选型验证做参数设计的起点不是逻辑而是确定目标峰值电流。以我那台300W样机为例母线电压400V半桥LLC谐振频率fr≈92kHzLr33µHCr33nF满载原边电流的稳态峰值约4AMOSFET用的是500V/20A的管子。谐振槽特征阻抗Z0 sqrt(Lr/Cr)代入计算大概是31.6Ω。在启动首半个周期如果Cr初始电压为零电流理论峰值约等于半桥输出幅度200V除以Z0大约6.3A。但如果把Lm、副边二极管导通、变压器分布电容都叠进去实际包络往往会更高我在示波器上看到的15A就是这么来的。我把CLB比较器的限制阈值定在8A也就是稳态峰值的2倍但不超过MOSFET安全工作区的脉冲极限20A管子在低占空比单脉冲下的SOA余量足够。整数设定后还要反推采样电阻的电压值如果采样电阻是0.1Ω8A对应0.8V比较电压如果是电流互感器加电阻则按变比折算。建议把阈值设定在“启动最恶劣工况下最高允许电流”的1.11.2倍而不是留太多裕量。阈值设得越低启动限制越激进但启动时间会拖长变压器励磁建立也会变慢设得太高又形同虚设。这个平衡需要根据你的散热能力和启动时间指标来权衡。4.2 启动频率与谐振参数的匹配关系设置启动频率的起点通常取3倍fr左右。以92kHz的谐振频率来说启动时先把频率拉到260300kHz。这一步的目的是让谐振阻抗显著高于工作点让第一波电流冲击的幅度被压住。这里有一个常被忽略的计算启动频率越高Cr每个周期的充电量越少但桥臂的开关损耗也越高。如果启动频率过高而CLB又不做任何限制软启动反而相当于在给开关管叠加热损耗。所以我在CLB中同时设置了一个“最高启动频率钳位”不盲目往上推。频率下降的步进策略也需要匹配谐振参数。经过几轮实测我发现每步下降幅度不应超过当前频率的2%3%并且每个频率台阶至少停留35个开关周期给谐振槽一个完成瞬态衰减的时间窗。如果每步降太多电流包络会首先走高之后CLB才介入控制效果就滞后了。当然这些参数不是拍脑袋定死的。我习惯先用那一类LLC在线计算器把Z0、fr、品质因数快速算一遍再把自己选定的Lr、Cr、匝比代入做步进策略评估最后回到实测微调。计算器给的是起点真正的终点永远在示波器上。4.3 满载启动、空载启动与容性负载的差异参数不能一版走天下至少要考虑三种启动工况满载启动输出端电解电容小副边整流管一开始就出断续电流原边电流包络快速上升。这种情况下CLB的逐周期拦截在启动头10ms内几乎每个周期都在动作锁存时间要设置得短一些否则启动时间会被拖得很长。空载/轻载启动输出电压建立后很快就维持住了电流峰值相对温和但这时候容易出另一个问题——频率下降过快导致输出电压过冲。我在CLB里预留了一个输出电压比较器输入如果输出电压超过目标值逻辑会保持当前频率不再下降相当于多了一路电压环限制。大电容负载最头疼的工况。副边大电解在启动瞬间吸收巨量电荷原边电流会持续偏高远超满载。这种工况下单纯的逐周期拦截会让启动时间指数增加必须在CLB之外配合一个“启动相位充电—等待—再充电”的分段策略让大电容通过一段一段的高频脉冲逐步抬升电压。半桥LLC变压器匝比的计算在这样的背景下也很关键。匝比直接决定反射电压和谐振增益曲线的位置如果匝比选得不合适满载启动时的输出电压建立速度会出现“过慢”或者“冲刺”两个极端。我在选型时通常按最低输入电压和最大输出功率求增益上限再反推匝比范围确保在最恶劣启动条件下CLB限流动作不会与正常增益需求打架。5. 实测与踩坑记录示波器上的前后对比5.1 两种方案的启动波形对比同一块功率板同一个负载条件唯一改动的就是有无CLB-MACO限流逻辑。没有CLB的时候纯频率扫描启动后大约15ms原边电流包络冲到最高约15.2A然后缓慢收敛整体启动过程约26ms。用红外点温计测功率管启动后2秒内壳温上冲到112℃。加上CLB限流之后电流包络始终被压在8.5A以下最初的几个高尖峰整个消失启动过程约23ms比原来快了3ms原因是电流被压住后能量传递更精准输出电压建立效率反而高了。2秒内管壳最高温度降到了89℃温升幅度砍掉了一大截。这个对比其实说明了一个很重要的现象LLC启动电流峰值从15A压到8A电流降幅约45%但温升却降了约60%。功率器件的发热损失与电流平方成正比启动阶段把峰值电流压住带来的降温收益比任何散热器改版都直接。5.2 不同启动曲线下的细节差异我又把CLB内的频率步进策略换成三种模式做了对比启动曲线模式电流峰值启动时间备注线性快扫每步降3%停留2周期14.2A18ms过流拦截频繁限流几乎全程介入指数慢扫前期慢后期快8.8A25ms前期限制充分但后期过快有微超调分段自适应CLB根据过流事件调速8.1A22ms最优限制动作时段明显减少分段自适应模式正是前面说的三段式状态机实测下来不仅仅峰值最低而且CLB介入的密度最小对整体启动效率影响也最小。这说明软启动曲线别拍脑袋画线性斜坡最好让硬件反馈跟着走。5.3 排查过程中遇到的三个典型陷阱调试过程中踩过的坑比预想多记录三个最典型的第一个坑是blank区间设置过短。最初我设了60ns的blank结果每次MOSFET开通的米勒尖刺都会触发比较器CLB频繁误判过流启动时间被拉长到60ms以上。后来把blank逐步加到120ns波形立刻干净了。这里的关键是blank不能太长否则真正电流峰值正好躲过监测窗口保护就形同虚设要根据驱动芯片的开关时间和电流上升斜率确定。第二个坑是比较器阈值不加滞回。当电流在阈值附近来回穿越时CLB会进入“跳周期—正常—跳周期”的抖动模式原边电流波形出现明显的阶梯状噪声同时还有“吱吱”声。给比较器加约30mV的滞回电压之后抖动完全消失。第三个坑是跳周期后的重试相位与电流自然换流点不对齐。最初改“跳过当前周期后立即恢复”导致重新开管时谐振槽相位已经偏了电流反而以更高斜率翻转触发第二轮过流。解决办法是在CLB里增加“相位对齐等待”——封锁结束后等PWM的下一个周期起始边沿到来才重新使能输出保证每次恢复都从谐振槽的自然换流点开始。这一步改了之后限制动作的平滑度明显提升。6. 后续扩展从单相LLC到三相LLC和更多控制维度6.1 三相LLC谐振变换器下的扩展思路现在三相LLC谐振变换器的需求越来越常见特别是大功率场景。三相LLC不是单相的简单叠加三个桥臂共享一个谐振槽或各自带谐振槽都有不同控制逻辑。在三相结构里如果每一相都单独做CLB限流那么需要的是三个通道的并行监测并且要处理三相之间的错相启动顺序。PSoC的CLB架构在扩展上的优势这时就显示出来了它可以在同一块逻辑块里复制三路状态机的结构每一路对应一相再用一个公用逻辑做“三相过流事件的或逻辑”和“分相恢复时序”。我在预研中大致估算过资源消耗大概是单相方案的2.8倍仍在CLB-MACO的宏单元和查找表容量范围之内。另外一个可控维度是对二极管的同步整流时序。LLC副边同步整流的驱动如果配合原边限流动作做瞬态联动可以在启动阶段显著减少副边二极管反向恢复应力。这个联动在外部逻辑实现起来很复杂但在CLB里无非是再增加一个状态机的分支。6.2 与PFC和更高层策略的协同LLC的前端往往是PFC升压级整机启动时PFC母线电压可能还没稳定甚至有一个超调过程。如果CLB限流阈值是一个固定值母线电压偏高时同样的谐振阻抗下电流峰值也会偏高。所以我在设计里留了一个思路CLB的阈值参考电压允许由DAC实时调整启动初期把阈值压低等检测到母线电压稳定后再动态抬高到正常工作阈值。这个过程也可以做得更闭环。比如用CLB监测母线电压比较器的翻转事件把它当成状态机的另一个输入条件母线电压低且未稳定时启动曲线走保守分支母线电压建立后自动切换更积极的频率下降策略。这样既保证了启动速度又不会在PFC振荡期间撞上电流峰值。这类多条件协同控制如果用纯软件做状态判断会非常复杂代码分支一多就容易出边界问题在硬件逻辑里状态图是确定的每种输入组合都有明确的转移路径调试和验证起来反而更直观。最后分享一个我自己的习惯每次重新计算Lr、Cr和变压器匝比之后我都会先到在线计算器上把Z0、fr和品质因数重新核对一遍确认参数没有偏离原始设计点太远然后再回头更新CLB里的电流阈值和启动频率步进值。看起来只是多了一步但恰恰是这一步决定了量产样机在满载启动测试中是顺利过关还是第一天就回来返工。希望这篇记录能帮你少熬一个加班的晚上。
返回列表