
别让电源振荡了。说实话做反激电源调试的人大概率都见过这么一幕示波器夹在电流采样电阻两端负载加到半载以上电流波形上下沿开始“抖动”不是整齐的三角波而是隔一个周期大、隔一个周期小像呼吸灯一样在打拍子。如果你再加大负载甚至能听到电源发出“吱吱”的高频噪声严重的时候MOSFET直接炸管或者在某个负载区间反复重启。这个问题的绝大多数元凶就是电流环的次谐波振荡。而UC3842这款经典的电流模式PWM控制器在CCM连续导通模式下特别容易触发这种振荡。很多工程师的第一反应是加大电流环滤波电容、减小采样电阻结果往往越弄越糟。正确的思路是在芯片的电流检测脚叠加一路斜坡信号把环路拉回稳定区域——这招就是斜坡补偿。这篇文章我就按照自己调试反激电源时的完整流程来写把UC3842为什么会在连续模式下振荡、斜坡补偿背后到底在补偿什么、怎么手算各种参数、以及在PCB上怎么落地、示波器怎么看全部一次讲清楚。文章里的计算过程我拿一个12V/4A的反激电源当例子照着算一遍你就能直接套到自己的板子上。1. 先从“病根”讲起为什么UC3842会在半载以上开始振荡1.1 次谐波振荡的物理本质要搞懂UC3842的振荡先要理解一个东西电流模式控制的基本工作逻辑。UC3842内部是一个峰值电流模式控制器它的PWM导通时间不是固定频率直接决定的而是由“逐周期峰值电流”决定的——每个开关周期MOSFET导通原边电感电流从某个初值开始线性上升当电流检测电阻上的电压达到误差放大器的输出门限时比较器翻转关断MOSFET。这套机制听起来很完美相当于每个周期都在把峰值电流“钉”在给定值上。但问题就出在“峰值”这两个字上。在CCM模式下电感电流不是从零开始上升的而是从一个倒数周期残留的底值开始爬。这就意味着你实际上控制住的只是整个波形的最高点最低点是多少你并没有直接管住。我打个比方。你每天走台阶规定自己每步踩到同一高度但台阶下面积了水水位会变。如果你每次只看自己头顶的高度不看脚下水位那么只要水位出现一点点扰动你走出来的步幅就会忽大忽小。CCM的电流波形也是一样峰值被控制住了但平均值和谷值在扰动时会发生漂移。把这个问题放到数学上看就更清楚了。假设第n个周期开始时的电流是In导通期间电流上升斜率是m1由输入电压和电感量决定关断期间下降斜率是m2由输出电压反射到原边的电压决定。如果某个周期在导通开始时出现了一个小的扰动ΔIn那么经过一个完整的导通关断周期后这个扰动会变成多少我直接给出推导结果扰动传递比大约是ΔIn1 / ΔIn -m2 / m1注意这个式子里的“负号”意味着扰动是交替翻转的——第一周期电流偏大第二周期偏小第三周期又偏大。这就是为什么你在示波器上看到的波形是“一高一矮交替”的。更关键的是传递比的绝对值|m2/m1|。如果这个值大于1扰动就会每两个周期放大一次直到波形严重畸变这就是次谐波振荡的物理本质。1.2 为什么CCM模式更容易触发这问题这里就关系到UC3842的具体应用场景了。在很多轻载或DCM断续导通模式的设计中电感电流在每个周期都能归零m2的实际影响窗口很短扰动在电流归零时就被“抹掉”了所以次谐波振荡很少出现。但反激电源一旦进入CCM电感和输出之间继续保持能量传递电流波形变成连续的斜坡m1和m2的比例关系直接决定了上面那个扰动的衰减或放大倍数。对于离线反激电源输入电压是变化的。最低输入电压时m1最小而输出反射电压Vro一般是固定的。也就是说在最不利的最低输入电压条件下m2/m1的比值最大。举个例子如果m2 2.5 × m1那么扰动每次放大2.5倍两个周期后放大6.25倍——这板子不可能稳定。为了量化稳定条件业内引入了一个概念叫“阻尼因子”Q。没有斜坡补偿时Q的表达式是Q 1 / (π × (m2/m1 - 1))你可以直接认为Q值越小系统越稳定。当Q小于1时扰动衰减Q大于1时扰动增长。而UC3842这类芯片内部并没有集成斜坡补偿发生器所以设计者必须自己想办法在外部叠加一路斜坡电压抵消m2带来的不稳定趋势。1.3 一张示波器截图看懂振荡波形我调试时最常见的现象是这样的输入固定比如220VAC整流后约310V DC此时m1远大于m2系统很稳定。但把输入调到90VAC满载Vin大概只有110V DC加电解电容储能此时m1明显变小电流波形开始出现“密疏交替”的锯齿开关频率的1/2处出现明显能量也就是有一个约32.5kHz的纹波如果你的开关频率是65kHz左右。更直观的路子是直接看IC的Isense引脚波形。正常设计下它应该是干净的三角波上升边峰值处有毛刺但整体单调。如果出现了明显的“沿着时间轴打拍子”的波形峰值时而抬高、时而压低那基本可以坐实是次谐波振荡。如果你把这个波形截图给老工程师看他们甚至会直接念出一句口诀“波形翻倍故障加倍”——意思是每两个周期才重复一次的波形就是次谐波振荡的实锤。这个时候千万别急着换MOSFET或者调环路补偿器先把斜坡补偿加上你会看到波形立马“安静”下来。2. 动手前的准备先判断是不是“真”次谐波振荡2.1 判别步骤隔离次谐波振荡和普通噪声我见过不少新手上来就改CT引脚、加电容结果把频率调乱真正的问题反而没解决。所以在你动焊台之前务必先花十分钟把现象看透。第一步把负载从轻到重慢慢拉。CCM次谐波振荡通常发生在占空比超过50%的区间但这不是绝对的实测很多电源在占空比40%左右就开始抖了原因是m2/m1已经接近1。如果你的板子在轻载时波形正常满载时出现低频呼吸感优先怀疑次谐波。第二步把示波器的时间轴拉开观察几十毫秒的窗口。如果是环路不稳定电压环增益过低你看到的是几百赫兹到几kHz的正弦波动波形不是严格按开关频率的二分频重复。而次谐波振荡是严格逐周期交替的时间轴上非常规整。第三步有条件的话用差分探头直接测量采样电阻的电压和驱动波形的关系。如果驱动波形正常而电流波形间隔交替说明问题在电流环如果驱动波形本身也在抖再考虑是不是误差放大器周围电容选错了。2.2 确认采样电阻布局和地回路这一步往往被忽略但在高频电源里特别关键。UC3842的电流检测引脚引脚3对噪声非常敏感哪怕采样电阻上只有几毫伏的噪声芯片都可能误触发。在判断是否次谐波振荡之前先确认采样电阻是否满足“四线开尔文”接法——采样电阻的两个测压点必须直接接到IC的Isense引脚和地引脚绝对不能让采样回路走大电流地回路。我自己的经验是如果地线走得乱示波器看到的波形里会混入大量的开通尖峰和振铃这种噪声在低输入电压大占空比时特别容易被误解为次谐波振荡。你先用一根短线把Isense引脚的RC滤波电容直接接到芯片GND引脚确认共地噪声消除之后再看波形这样判别会更准确。2.3 三个需要提前录存的波形建议你在动手改板前先把以下三个波形保存下来后面加完补偿做对照满载、最低输入电压下Isense引脚波形应能看到交替的大小波形满载、最低输入电压下MOSFET漏源电压波形看是否有异常的漏感尖峰叠加输出纹波波形看低频段的振幅和频率。这三个波形是判断“补偿是否到位”的基准。我之前有一次加完斜坡补偿后发现环路的电压波形反而变差了回头一看才发现是基于错误的基准判断走了弯路。提前存好原始数据能帮你避免这种“改了等于没改”的尴尬。3. 斜坡补偿的几种实现方式我为什么推荐RC耦合3.1 从RT/CT三角波引斜坡UC3842的频率由RT/CT引脚决定CT电容上是一个三角波或近似锯齿波。很多人会想到直接把CT电容上的三角波通过电阻分压引入Isense作为斜坡补偿信号。这个思路方向是对的因为你不需要额外增加振荡源斜坡和开关频率天然同步。具体接线是从CT引脚接一个电容比如几十pF到几百pF再串接一个电阻到Isense引脚Isense引脚再对地接一个电阻。这样CT上的三角波通过电容耦合到Isense形成一个高电平随占空比变化的斜坡。这种做法的好处是元件少、简单但有一个明显的坑CT引脚上的波形幅度大约在1.2V到2.8V之间直接耦合可能会给Isense引入额外的功率损耗和电压偏移需要仔细计算分压比。另外要注意CT引脚本身是和内部振荡器直接相连的如果你耦合一不小心耦合过强会干扰内部振荡器的工作甚至导致频率漂移。所以从CT引斜坡的方案我只建议在调试初期临时验证使用不建议作为量产方案直接沿用。3.2 RC吸收型补偿网络这是我在实际项目中用得最多的方案结构非常简单在电流采样信号进入UC3842的Isense引脚之前插入一个RC积分网络同时从采样电阻和某个高阶信号如开关节点各引一路信号通过电阻叠加到Isense引脚上。最简单的RC斜坡补偿是在Isense引脚上并联一个RC串联支路R和C串联后一端接Isense一端接参考地。或者更常见的做法是从MOSFET的驱动端GATE引脚通过一个小电容引到一个电阻再和采样信号在Isense引脚电阻分压相加点叠加。驱动脉冲的高电平持续时间和占空比直接相关因此它能生成正比于占空比的斜坡信号。这种方案的优点在于斜坡幅度可以通过电阻分压精确控制而且基本不影响CT振荡器缺点是需要增加两个至三个元件对PCB布局有一定要求。但只要位置选得好调整起来非常方便——改一个电阻就能微调斜坡斜率这是我最看重的特性。3.3 从驱动信号叠加斜坡第三种方式更“土”但也很实用直接从UC3842的OUTPUT引脚驱动端接一个小电容和一个电阻到Isense引脚。驱动端的信号是一个方波经过RC微分以后变成一个前沿尖峰再加上一个平顶斜坡这个斜坡可以利用开关管导通期间驱动电压的持续作用在Isense上叠加上升电压。这种方案实际上是在复用驱动信号的时序。好处是斜坡和开关管导通完全同步并且在占空比越大时斜坡越高——正好补偿CCM模式下轻载到重载过渡区间的不稳定问题。坏处是驱动端的高电压摆动一般0到12V会通过小电容干扰Isense幅度需要控制得很小心。电容选大了可能直接把电流信号淹没导致整个电流环失效选小了又起不到足够的补偿作用。我自己不太推荐这种方法用于量产因为它对PCB寄生参数太敏感不同批次电容的容差影响很明显。但如果你只是临时调试验证“加斜坡补偿是否有用”这种方法改动最小、见效最快可以接受。3.4 直接改芯片外部的“垫高”电路还有一个比较冷门但有效的思路不是往Isense上加斜坡而是把误差放大器的输出或内部比较器的反向端“垫”一个斜坡。具体做法是在UC3842的COMP引脚和Isense引脚之间加一个电阻网络引入一个随占空比变化的偏置。这种做法实际上改变了比较器的阈值让它随着占空比升高而降低等效于电流峰值门限的斜坡化。这个方案在部分老电源中被使用原因是它不需要改变采样电阻的布局只需要在两个控制引脚之间赛几个电阻电容。但问题在于COMP引脚是误差放大器的输出它的动态范围有限垫高幅度稍大就会限制最大输出功率而且调试时需要同时考虑电压环的带宽交叉影响比较复杂。除非你非常熟悉UC3842的内部控制框图否则我不建议一上来就动COMP引脚的主意。综合考虑这三四种方法我个人认为RC耦合从Isense引脚叠加斜坡是性价比最高的选择。它不影响振荡频率不干扰误差放大器调试方便安全性高。后面章节就按这个思路来展开计算和实操。4. 手把手计算给一个12V/4A反激电源加斜坡补偿4.1 第一步拿到设计的关键参数计算斜坡补偿前先整理你手上电源的基本参数。我用的例子是一个非常常见的12V/4A反激适配器设计指标如下输入范围90VAC~264VAC整流后母线电压经过计算最低约110V DC考虑电解电容纹波输出12V / 4A额定功率48W开关频率65kHzRT24kΩCT4.7nF附近实际以你板子为准变压器原边电感量Lp 680μH原副边匝比Np:Ns 6:1电流采样电阻Rs 0.33Ω反射电压Vro (Vo Vf) × (Np/Ns) (12 0.6) × 6 ≈ 75.6V取76V。这些都是我实际算过的数值你可以直接拿来练习。如果你手里的电源参数不同只需把对应的量带进公式重新算一遍方法完全一致。4.2 第二步计算电流检测电压的下降斜率m2斜坡补偿要补偿的是“关断期间电流下降斜率”造成的扰动放大。因为UC3842通过检测电阻Rs来感知电流我们需要把原边电感的电流斜率换算成电压斜率。在原边MOSFET关断期间反射电压Vro反向加在变压器原边电感上电感电流开始下降。下降斜率用原边电流表达是di/dt Vro / Lp代入例子数值di/dt 76V / 680μH ≈ 111,765 A/s换算成标准单位就是0.1118 A/μs。再乘以采样电阻Rs0.33Ω就得到电流检测电压的下降斜率m2 (Vro / Lp) × Rs (76 / 680μ) × 0.33 ≈ 0.0369 V/μs也就是大约36.9mV/μs。这个m2的数值是我们所有的计算核心后面所有斜坡补偿参数都要围绕它展开。如果你用的是别的电压模式芯片或者更大阻值的采样电阻注意乘以对应的Rs即可。例如Rs 0.5Ω时m2就变成约55.9mV/μs补偿电阻和电容的取值差异会很大这就是为什么不能照抄别人板子上元件值的原因。4.3 第三步确定需要补偿的斜坡斜率se这里直接给出工程上常用的经验判据为了让扰动要么衰减、要么至少不增长斜坡补偿的斜率至少要取m2的一半。而这个“一半”恰好对应阻尼因子Q等于1的边界。对于量产设计我习惯再加30%~50%的裕量也就是取se 0.5 × m2 × (1 30%) ≈ 0.65 × m2如果用上文的数值se 0.65 × 36.9 ≈ 24 mV/μs。需要注意斜坡补偿不是越大越好。se过大电流环的有效增益会下降峰值电流控制会退化得越来越像电压模式控制导致动态响应变差甚至出现带负载时电压下掉的现象。所以我一般建议先按0.5×m2计算实测后如果仍然轻微振荡再往上增加每次增加10%左右直到临界稳定后再留一点余量即可。还有一个技巧如果你的电源有很宽的输入电压范围一定要按最低输入电压时计算m2因为那个时候m1最小、m2/m1最大稳定性最差。如果你按最高输入电压此时m1最大来算可能算出来的se很小实际低输入电压工作时照样振荡。4.4 第四步计算RC耦合参数确定se之后还需要换算成具体的电阻电容值。这一步要根据你的具体实施方案来选。假设你采用“从GATE驱动信号通过电容C_slope和电阻R_slope叠加到Isense”的经典方法那么驱动信号在MOSFET导通期间的高电平幅度Vgate通常在10V~12V级别。R_slope和Isense引脚对地的等效电阻R_com共同构成分压网络最终在Isense上叠加上升的斜坡电压。简化分析公式为se ≈ Vgate / (R_slope × C_slope × fsw) × (R_share / (R_share R_slope))不过这个公式里变量太多实际调试时我通常采用两步走。第一步先估算R_slope数量级。UC3842的Isense引脚内部连接是一个比较器输入端输入阻抗很高但外部一般会有一个对地电容比如470pF到1nF兼滤波这个电容会与R_slope构成一阶低通。为了不把电流信号衰减得太厉害R_slope不能太大我一般取10kΩ~47kΩ。第二步用示波器实测微调。你可以先焊一个20kΩ电阻和一个100pF电容到板子上带满载看Isense波形。测量导通期间Isense引脚上的电压是否从一开始的P1上升到结束的P2计算实测se (P2 - P1) / Ton。如果se小于目标24mV/μs就减小R_slope如果se超出太多就加大R_slope。我经验值是每调整一次电阻值变化30%~50%两三轮就能收敛。如果你选择从CT三角波引斜坡的方案则更简单设CT电容上的峰值电压减去底值电压等于ΔVosc其时间正好是导通时间Ton因为3842的振荡波形上升沿对应导通你只需要让分压后的电压变化率AN等于se即可。4.5 第五步上电验证参数计算完后先把输入调低到90VAC或按照你的最低设计输入输出带满载。上电瞬间不要直接猛拉负载先用一个电子负载从1A开始慢慢加到满载全程盯着电流波形。这时候如果示波器上能看到原来“一高一矮”的交替锯齿消失了电流波形变成整齐的逐周期重复三角波说明补偿起作用了。接着从满载慢慢拉回轻载观察是否有回滞振荡——如果有说明补偿量偏大适当减小se。最后再测输出纹波。正常情况下加补偿后输出纹波会降低因为次谐波振荡本身就是一种额外的低频噪声源。如果纹波反而明显变大检查Isense引脚上的滤波电容是否过大超过1nF通常会让电流信号相位滞后导致新的环路不稳定。4.6 添加表格常见目标se和RC取值速查采样电阻Rsm2典型值反射电压75VLp680μH目标se0.65×m2R_slope初值配100pF耦合电容0.22Ω24.3 mV/μs15.8 mV/μs约39kΩ0.33Ω36.9 mV/μs24.0 mV/μs约24kΩ0.47Ω52.5 mV/μs34.1 mV/μs约16kΩ0.68Ω75.9 mV/μs49.3 mV/μs约10kΩ这个表只是给你一个粗略的初值参考真实板子因为PCB寄生电容和Isense引脚外接滤波电容不同电阻值还需要微调。记住一个原则示波器看到的事实永远比计算值权威。5. 实操记录焊接、波形与调试心得5.1 具体焊接位置和PCB改动我看过不少人在Isense引脚上飞来飞去地飞线结果噪声反而更大。正确的改法是尽量利用原板上的采样电阻和Isense引脚之间的位置。如果你的板子上原本就有一个RC滤波网络比如R约1kΩ、C约470pF那么斜坡补偿电阻R_slope的一端可以直接焊在这个滤波电阻的输入端另一端通过小电容飞到驱动端。注意三个细节R_slope和C_slope的串联支路要尽量靠近UC3842的Isense引脚不要走太长走线如果改动位置离采样电阻很远在Isense引脚的Y点加一个1nF的旁路电容到芯片GND先把高频噪声压下再叠加斜坡飞线的时候尽量用屏蔽线或者双绞线实在不行就把线剪短到2厘米以内。我遇到过一个情况斜坡补偿网络布线到采样电阻之后导致补偿信号先经过了采样电阻大电流路径地环路引入了噪声波形反而比原来更乱。后来改成直接从GATE引脚附近飞线信号瞬间干净。5.2 调RC的过程和示波器判读方法上电调板时我会准备两个探头一个夹在GATE驱动波形上做同步触发另一个接在Isense引脚注意探头地要接芯片GND不能接采样电阻的输入端否则共模噪声会欺骗你。调R_slope时从大到小试。比如先焊47kΩ看波形如果还是交替说明se不足直接换到24kΩ如果波形变成完全整齐再把电阻加大一档比如换成33kΩ看是否还有余量。这样做的目的是找到能让波形刚好稳定的最大电阻值再在此基础上减小15%作为量产留的裕量。我自己实测的体会是当se调整到合适值时不仅电流波形整齐MOSFET漏极电压波形上的低频抖动也会消失输出纹波的毛刺会有明显下降整个电源的声音如果有贴片电感或变压器磁芯松动也会安静下来。5.3 容易踩的坑第一个坑不要把斜坡补偿电容选得太大。很多人为了让补偿明显直接用了470pF甚至1nF的耦合电容结果在开关管关断瞬间产生很大的反向尖峰让Isense误触发出现周期性的窄脉冲关断输出功率反而上不去。第二个坑改板前没有保存原始波形。没有对照你很难判断到底是“变好了”还是“换了一种异常”。我后来的习惯是先录波形、拍照片再动手。第三个坑忘记检查最低输入电压。有些人只在220V输入下调好了补偿等拿到90V的低压环境一测又振荡了。原因就是前文说的m1变小、m2/m1变大需要更大的斜坡补偿。如果你在220V下把R_slope调到刚好稳定的临界值低压下必然不够。正确做法是在最低输入电压条件下微调。第四个坑只按公式算不按实测修。计算出来的se只是个起点因为3842的Isense引脚内部结构、PCB走线寄生参数、采样电阻的分布电感都会影响最终效果。尤其是用0.33Ω以上的采样电阻时采样电阻自身的寄生电感会改变高频响应斜坡补偿的实际效果可能和理论计算偏移20%以上。6. 常见问题与排查技巧实录6.1 加了补偿之后波形反而变差这种情况不多见但我确实遇到过。排查方向有两个一是C_slope振荡耦合不小心引入了过强的关断尖峰导致Isense引脚在关断瞬间电压过高、误触发比较器二是R_slope取值太小导致Isense引脚的驱动能力被拉低正常电流信号被严重分压芯片的过流保护点被抬高工作状态进入非线性区。排查方法把Isense引脚的波形时间轴缩短到几百纳秒看看开关管关断瞬间是否有大于1V的尖峰。如果有就减小C_slope容量同时可以在Isense引脚对地加一个肖特基二极管做钳位注意方向防止负压和过压尖峰。6.2 空载间歇振荡与轻载打嗝这个现象在加斜坡补偿后偶尔出现尤其是你为了抑制重载振荡而选了很大的se值。原因是轻载时系统进入DCM电感电流早已归零此时的斜坡补偿信号变得“过补偿”导致误以为电流达到峰值提前关断MOSFET让电源进入一种间歇开关的状态。解决办法很简单把se减小到原来的0.7倍左右或者只在重载时才启用更陡的斜坡补偿。很多设计会在Isense引脚并联一个仅在重载时开启的MOSFET开关来切换补偿电阻但成本较高。如果你只是做原型验证直接降低se并确认重载下还能稳定工作即可。6.3 全负载范围内仍有尖峰干扰加完斜坡补偿低频振荡解决了但如果你发现在高输入电压轻载时Isense波形上仍有一些零星尖峰很可能是MOSFET开启瞬间的米勒电容耦合噪声属于独立的EMI问题。这种情况下不需要再动斜坡补偿网络而是应该在Isense引脚对地增加一个100pF~470pF的高频滤波电容并且把这个电容放在尽可能靠近Isense引脚的地方。这个电容不能无限加大否则会拖慢电流信号的上升沿影响逐周期限流保护的速度。我之前用1nF电容时导致过流保护反应变慢炸了一只MOSFET后换回470pF。6.4 计算值和实测值的偏差来源如果你发现按照公式计算的se和实测值总是对不上大概率是因为你忽略了三个变量Isense引脚内部的输入偏置电流和电平偏移不同类型批次会有差异你实际使用的采样电阻阻值有误差便宜的贴片电阻温度系数很大热机后阻值漂移5%以上很常见示波器探头本身在几十mV级别测量时的精度误差。所以我不建议把计算值当作“必须精确达到”的目标而是当作一个起点。只要保证实测se在(0.5~1.0)×m2范围内并且示波器波形稳定无交替跳动工程上就已经合格了。如果你追求极致的动态响应可以再尝试去压低se到一个刚好稳定的阈值这个精细调节过程完全靠示波器说话公式只能帮你定位大致区间。根据我个人习惯每次改完斜坡补偿后我会在常温、高温、低输入电压、满载等几个极端工况下各跑30分钟把Isense波形、MOSFET温度、输出纹波记录一份最后再决定要不要调整参数。UC3842的斜坡补偿本身不算一个高深的理论问题但如果没有正确的计算步骤和实测方法很容易在调试环节里绕圈子。希望这篇文章能让你少走一段弯路。