
前阵子给一块低噪声电源板做调试板子上的LDO输出级用的是一颗10µF的MLCC。静态工作一切正常一带脉冲负载输出端就开始出现高频振铃示波器上那串毛刺怎么看怎么像环路在临界振荡。查了一圈问题居然出在电容的ESR上——MLCC的ESR低到毫欧级LDO的环路补偿根本压不住。从那以后我养成了个习惯新设计先用LTspice把LDO稳定性仿真跑一遍特别是把输出电容的ESR当作变量扫一遍看看哪个阻值区间会让相位裕度崩掉。这篇文章就用一个可调LDOLT1117-ADJ当例子带你在LTspice里从搭建电路、设置脉冲负载、参数扫描ESR到最后从波形判断环路稳定性完整走一遍。看完你就明白为什么ESR太小会让LDO振荡以及怎么用仿真数据说服自己换掉那颗已经选好的电容。1. 先搞懂LDO为什么会振荡相位裕度与ESR零点的前世今生1.1 LDO也是一个反馈放大器稳定与否看相位余量很多硬件工程师会把LDO当成“一个有三只脚的电压源”用起来很顺手但一到振荡问题就抓瞎。本质上看LDO就是一个带功率输出级的负反馈放大器它内部有误差放大器把输出电压的分压采样和基准比较然后驱动调整管去维持输出稳定。既然是负反馈环路就绕不开稳定性的两个核心判据环路增益降到10dB穿越频率时环路总相移必须小于180度最好留下来45度以上的相位裕度相位裕度低于30度负载阶跃时输出就会出现明显的振铃或者干脆持续振荡用开车来类比你打方向盘修正方向从动作发生到车头反应中间如果有延迟或者过度修正车就会左右画龙。LDO负反馈也一样误差放大器、调整管、输出电容这些环节都会贡献相位延迟延迟太大输出就不是收敛而是发散。工程上对LDO的稳定性要求通常分三个档次相位裕度范围实际表现工程评价60°以上阶跃恢复快、仅有轻微过冲稳健设计量产无忧45°~60°有过冲但阻尼良好可见1~2个振铃可以接受边界设计30°~45°明显振铃恢复时间长不推荐需要复查30°以下持续振荡或近乎等幅振铃不可用必须改设计1.2 输出电容ESR零点是怎么“救场”和“拆台”的LDO输出端通常需要一颗较大容值的电容这颗电容会和负载一起在主极点处给环路贡献一个低频极点缓解误差放大器内部极点带来的相位问题。但光有输出电容还不够——理想电容在这个位置引入的是90度相位滞后会让相位裕度非常紧张。真正被用来做补偿的其实是输出电容的ESR等效串联电阻。电容的ESR和电容本身会形成一个零点零点频率为fz 1 / (2π × ESR × Cout)零点的作用是在对应频率点“推高”相位把因极点损失掉的部分相位补回来。问题是这个零点必须落在环路0dB穿越频率以内、并且位置合适它才能起到补偿作用。如果ESR太小零点频率就会跑到穿越频率外面去。举个例子Cout 22µF时ESR取值零点频率fz0.05Ω约144kHz0.1Ω约72kHz0.3Ω约24kHz1Ω约7.2kHz3Ω约2.4kHz10Ω约724Hz假设环路的0dB穿越频率在30kHz左右那么ESR0.1Ω时零点位于72kHz在穿越点之后才发挥作用等于补偿失效可ESR1Ω时零点位于7.2kHz处在穿越频率之前能有效拉起相位。这就是为什么老式LDO数据手册总爱写那句“output capacitor ESR must be between 0.1Ω and 10Ω”。换句话讲ESR不是越小越好也不是越大越好。太小零点太远相位裕度不足太大零点虽然拉低了但ESR在负载阶跃时带来的电压跳变也会大得吓人等于拿瞬态性能换稳定性。1.3 经典1117类LDO对ESR的要求一个电感和电阻引发的血案我用LM1117/LT1117这类经典可调LDO来做演示有三个原因。第一这类芯片的环路补偿非常简单输出电容ESR是外部稳定性的主要因素仿真结果非常“敏感”很适合观察ESR变化对稳定性的影响。第二LTspice自带的LT1117-ADJ模型可以免费使用免去下载第三方模型的麻烦。第三这类芯片现在仍有大量设计在用很多工程师手里还有旧的样板“ESR敏感”这个特性是真实打过交道的不是纸上谈兵。LT1117-ADJ的参考电压是1.25V外接电阻分压网络把输出电压抬到需要的值。经典1117系列的应用笔记里输出电容ESR的推荐范围大概是0.1Ω到10Ω输出电容容值从10µF到100µF都常见。低于这个范围时尤其在轻载情况下环路就容易出现振铃甚至自激。需要说明的是LTspice不同版本的模型细节可能略有差异你跑出来的临界ESR值也许和我文章里不完全一致这不重要重要的是你掌握了观察“相位裕度变化趋势”的方法。仿真不是要复现一个精确到小数点后几位的临界值而是要让你在改电路之前心里就有数。2. 仿真前的准备工作在LTspice里搭一个可调LDO最小系统2.1 选用LT1117-ADJ作为实验对象打开LTspice XVII按F2打开Component库在搜索框里输入“LT1117”会看到LT1117-ADJ、LT1117-3.3、LT1117-5这些型号。我们选LT1117-ADJ因为它的反馈网络外置方便调整输出电压也方便观察反馈分压点的信号。放好芯片后连接关系是IN引脚接输入电源OUT引脚接输出节点ADJ引脚接反馈电阻分压点需要注意LT1117-ADJ的符号引脚顺序在不同版本的LTspice里可能长得不一样放置后先确认一下引脚名字再连线。输入电压取8V目标输出5V。输出电压计算公式是Vout Vref × (1 R1 / R2) Iadj × R1其中Vref 1.25VIadj约几十µA。粗略计算时先忽略IadjR1取3kΩR2取1kΩ输出就是5V左右。忽略几十微安的调整电流带来的误差对于稳定性仿真没有实质影响。2.2 输出电容的ESR建模电容模型里的Rser不是摆设这是整篇的关键操作。很多人在LTspice里放电容直接双击器件然后填“22u”就完事完全忽略了一个功能LTspice的电容模型支持设置寄生参数。在电容符号上点右键弹窗里除了容值Capacitance还有几项寄生态设置Series Resistance串联电阻也就是ESRSeries Inductance串联电感ESLParallel Resistance并联电阻通常取无限大把容值填22µF然后在Series Resistance那一栏填“{Rser}”。这里的花括号表示“这个值由参数Rser决定”也就是说我们后续通过.step命令扫描Rser这个电容的ESR就会跟着变。如果你的版本无法在弹窗里直接填表达式也可以用更直白的办法在电路上摆一颗独立电阻和电容串联。比如Cout用一颗理想电容22µF再串一颗参数为{Rser}的电阻电阻一端连输出节点另一端连电容电容另一脚接地。这样物理概念也更清楚适合给没多少仿真经验的人看。两种方法结果一致看你习惯哪一种。我建议直接在电容属性里写Rser因为输出节点更干净波形图上少一个中间节点。2.3 负载阶跃脉冲怎么设才有效瞬态稳定性仿真最关键的是给LDO一个足够“刺激”的负载变化。很多人在LTspice里加负载电流源时直接给个恒定值然后发现输出波形平平无奇什么都看不出来。原因很简单没有扰动闭环系统的动态特性就体现不出来。我用的是一个电流源Component里选current方向从输出节点流向地参数设置为PULSE(50m 300m 1m 1u 1u 5m 10m)解释一下这组数初始电流50mA1ms时刻开始阶跃上升时间1µs下降时间1µs高电平电流300mA持续5ms周期10ms上升时间必须够快至少要小于环路响应速度一个数量级这样才能把环路的动态过程“激”出来。如果上升时间拉长到几百微秒很多LDO的环路增益慢慢跟着调整波形上看不到明显振铃那就白白浪费了一次仿真。加入仿真指令.step param Rser list 0.05 0.1 0.3 1 3 10 .tran 0 10m 0 2u .options maxstep2u.maxstep的作用是限制仿真步长上限为2µs防止LTspice在某些突变处自动把步长拉得太大大、把振铃细节抹平。对于这种10ms的瞬态仿真2µs步长完全够用仿真时间也就在十几秒到几十秒之间。2.4 完整网表结构参考如果你偏好直接写网表而不是画原理图下面这份可以用作参考* LDO ESR stability simulation Vin in 0 8 Cin in 0 10u XU1 in out fb LT1117-ADJ R1 out fb 3k R2 fb 0 1k Cout out 0 22u Rser{Rser} Iload out 0 PULSE(50m 300m 1m 1u 1u 5m 10m) .step param Rser list 0.05 0.1 0.3 1 3 10 .tran 0 10m 0 2u .options maxstep2u .backanno .end这个网表里XU1调用的是LTspice库中的LT1117-ADJ子电路引脚顺序对应IN、OUT、ADJ。如果你的模型引脚顺序不同需要按实际顺序调整。3. 手把手跑仿真用ESR参数扫描揪出“捣乱分子”3.1 先跑一遍理想小ESR0.05Ω下输出振给你看仿真跑完先单独看ESR0.05Ω的那组波形。在波形窗口里右键选择想要显示的那条曲线或者直接在V(out)节点上左键点一下就能把输出电压波形显示出来。此时你能看到什么1ms之前负载电流从0开始建立到50mALDO的输出电压逐渐稳定在5V附近。到1ms时刻负载电流突然从50mA跳到300mA输出电压瞬间会往下掉一个台阶——这是必然的因为电容ESR上叠加的压降突变了同时电容放电也带来变化。紧接着输出电压开始回升。但如果环路相位裕度不足回升的过程不是平滑收敛而是出现一串明显的振铃。振铃幅度可能从几十毫伏到几百毫伏频率通常在几十kHz到几百kHz周期几乎相等。如果相位裕度非常低振铃甚至会一直不衰减形成等幅振荡。我当年第一次看到这个波形的时候第一反应是“是不是哪个参数设置错了”后来才反应过来这就是环路的真实动态响应。LTspice没有撒谎是电容的ESR真的不适合这颗LDO。3.2 参数化扫描ESR看振铃如何收敛现在把整个扫描结果一次性显示出来。在波形图窗口V(out)上会显示出6条不同颜色/线型的曲线对应.step列表里6个ESR值每条曲线的颜色可以在窗口底部的图例里分清。按ESR从低到高的顺序输出波形的“脾气”会发生明显变化ESR0.05Ω阶跃后振铃剧烈幅度大衰减慢几乎看不到收敛迹象。输出端呈现明显的欠阻尼状态ESR0.1Ω振铃幅度变小但衰减仍然较慢可能要经过5~6个周期才能基本恢复ESR0.3Ω振铃数量减少到2~3个阻尼明显改善这在工程上属于“勉强接受”的区间ESR1Ω过冲小、恢复快基本一到两个阻尼振荡后重启平稳ESR3Ω稳定是稳定的但注意看阶跃瞬间的电压跳变比ESR0.05Ω时大得多这就是ESR过大付出的代价ESR10Ω过冲/跌落进一步拉大已经可能超出很多负载的允许电压范围我把这组趋势整理成一张表ESR取值阶跃后表现稳定性评估0.05Ω持续高频振铃振幅大不稳定0.1Ω多次振铃衰减慢边界不稳定0.3Ω2~3个振铃可接受偏低裕度1Ω平滑恢复阻尼良好良好3Ω稳定但瞬态跳变大需求权衡10Ω稳定但阶跃压降明显偏大慎用这个趋势和前面算的零点频率是对应的ESR越大零点频率越低补偿作用越早介入环路的相位裕度就越高。ESR0.05Ω时零点在144kHz远远跑到穿越频率外面去了所以相位裕度崩掉。3.3 从波形判断稳定裕度超调量、恢复时间、阻尼比你会问“振铃几个周期算稳定衰减到多少算良好”这里给一个工程上常用的量化方法。方法一是看超调量。在阶跃后输出电压会先反向跳变再回升回升过程中超过稳态值的部分就是超调。超调量MP的定义是MP (Vpeak - Vfinal) / (Vfinal - Vinitial_before_step) × 100%对二阶系统而言阻尼比ζ和超调量之间存在关系MP exp(-πζ / sqrt(1 - ζ²))而相位裕度PM和阻尼比之间有一个粗略但非常实用的估算关系PM ≈ 100 × ζ于是我们可以用超调量大致反推相位裕度。下面是我整理的经验表观察到的超调量对应阻尼比ζ估算相位裕度5%约0.69约69°10%约0.59约59°20%约0.46约46°30%约0.36约36°40%约0.28约28°这个估算的前提是闭环系统近似为二阶主导极点对于LDO这种包含功率级和输出滤波器的环路来说虽然存在高阶项但作为初步判断完全够用。我实测过几次用波形估算的PM和用网络分析仪/AC仿真测出来的PM误差通常在10度以内。还有一个更省事的判断方法数振铃周期数。经验上如果阶跃后振铃超过4个完整周期还在可见的幅度范围说明相位裕度大概率低于45度这个设计有风险如果只有1~2个轻微振铃就说明裕度还可以。4. 进阶想测相位裕度用瞬态波形估算就够了4.1 为什么很多人死磕AC断环反而走不通讲到这里你可能会问“按照教材上说的稳定性不都要跑AC分析测相位裕度吗你怎么光让我看瞬态波形”回答这个问题之前先想想LTspice里那些封装级LDO宏模型到底能不能做传统AC断环分析。LTspice的LDO模型通常以子电路形式存在内部的误差放大器节点暴露出来的很少。反馈断点只有ADJ引脚但这个引脚同时承载了参考电压和反馈信号很难在不破坏直流工作点的情况下把环路干净地断开。强行在外部断环你会遇到一堆问题偏置点不对、波形无法收敛、算出来的增益和相位完全不可信。所以在实践中我看到很多工程师做LDO稳定性要么是直接用瞬态阶跃波形来判断要么就是用更复杂的Middlebrook双注入法搭配可见内部节点的模型。后者需要自己搭控制环路或用特殊的宏模型不适合大多数人快速评估。用瞬态波形做稳定性评估优点是它直接反映闭环系统的真实动态不用理会环路内部结构也不怕模型封装得太严实。缺点是你看到的是“结果”而不是“裕度数值”但对绝大多数板级设计来说结果比数值更能说明问题。4.2 阻尼比法从过冲反推相位裕度结合上一小节我建议你在每个ESR值对应的V(out)波形图里用游标量出以下参数稳态值Vfinal阶跃前输出电压Vbefore第一个峰值Vpeak注意LDO负载阶跃时输出是先跌落而不是先过冲所以要找的是跌落后的反弹过冲然后按MP公式算出超调量再拿超调量反查阻尼比最后用PM ≈ 100ζ估计相位裕度。实际操作中整个过程也就两分钟。你不需要写复杂的.meas语句直接在波形窗口拖动游标读数即可。如果ESR0.05Ω那组波形是等幅振荡说明MP远超40%相位裕度大概率低于25度这就是“必改项”。4.3 附加技巧FFT看振荡频率有时候振铃频率能额外透露信息。在LTspice波形窗口View菜单里选FFT或者在波形窗里右键选View → FFT选择信号V(out)就能得到输出电压的频谱。把振铃频率标出来代入零点公式可以帮助你判断振荡是“输出极点主导”还是“内部误差放大器极点主导”。如果振铃频率接近输出极点频率f 1/(2π × Cout × Rload)说明输出端的极点和你选择的电容组合直接决定了稳定性如果振铃频率接近几百kHz甚至更高那多半是内部第二极点在做怪此时单纯调输出电容ESR可能还救不回来需要重新审视整个环路补偿策略。这个判断做多了你会发现“ESR影响稳定性”不是一句空话而是有清晰频率逻辑的。零点在哪个位置相位就在哪里受影响最终在时域里表现为不同的振铃节奏。5. 避坑指南落地时ESR那些“仿真看不到”的坑5.1 MLCC的ESR远比你想象的低还会随DC偏压变化仿真里你输入的ESR是理想设置的固定值但真实世界里的MLCC有一个几乎所有工程师都踩过的坑ESR与测试频率有关而且随温度、直流偏置电压变化很大。一颗容值22µF、封装0805的X5R陶瓷电容在100kHz下等效ESR可能只有几毫欧到十几毫欧如果工作在0V到几伏偏压下容值还会因为直流偏压效应掉到标称值的60%甚至更低。容值下降意味着同样的ESR对零点频率的影响会偏移稳定性边界自然也会跟着飘。所以我建议你选电容时做两手准备看规格书里ESR的典型曲线取“最坏情况”的ESR值去仿真而不是拿室温下的典型值自欺欺人如果条件允许用阻抗分析仪实测一下你准备选的电容在目标偏压、目标频率下的ESR电容类型典型ESR范围100kHz附近稳定性风险MLCCX5R/X7R几mΩ~几十mΩESR偏低需确认LDO是否支持钽聚合物电容几十mΩ适中兼容性好铝电解电容数十mΩ~数百mΩESR偏高瞬态跳变大钽电解老式数百mΩ~几Ω与老LDO兼容但体积大5.2 别把输入电源当成理想源LDO的稳定性仿真里输入电压源往往用理想的8V直流源代替。真实系统里如果LDO前面是一颗Buck开关电源那么输入端的电源阻抗、输出纹波、走线电感都会参与进来可能造成LDO在特定输入条件下振荡。我遇到过一种情况纯LDO仿真怎么扫都稳定模块调出来却低频哼。后来排查发现输入走线过长引入的电感和LDO的输入电容形成了谐振低频纹波耦合到了反馈回路导致实际系统在某个负载点反复振。仿真里加一个小电阻比如1Ω代表输入源阻抗或者再串一个nH级的输入电感重新跑一遍问题就复现了。建议你在建立LDO仿真时不要只把Vin当成理想源给它留一个“杂质旋钮”。哪怕是几十毫欧的输入源电阻也能让你提前发现反馈环路在低输入阻抗条件下被掩藏的不稳定。5.3 反馈分压电阻、走线寄生与layout的交互LT1117这类可调LDOADJ引脚是高阻抗输入端。它的反馈电阻分压点如果离输出电容太远PCB走线寄生电容会悄悄和反馈电阻并联形成一个额外的极点在环路带宽边缘作祟。误差放大器的输入电容和走线电容叠加后可能在高频处多贡献十几度甚至几十度的相移把本就不多的相位裕度吃掉。Layout上要注意的几件事ADJ引脚到分压电阻的走线尽量短远离开关节点和电感输出电容要尽量靠近LDO的OUT引脚并且电容的地脚直接回到LDO的GND不要绕远路共享功率地反馈电阻分压点的取样点应该接在输出电容之后而不是直接从芯片引脚取否则会把走线电感上的尖峰引回反馈到底这些经验在仿真里很难体现你只能在实际打板时多留一个心眼。尤其是用ESR极低的MLCC配合现代低纹波LDO时layout要求的严格程度会明显上一个台阶。5.4 一个快速自查清单项目定稿前把下面这张表过一遍能省掉不少Debug时间检查项判断方法合格标准输出电容容值对比LDO规格书要求在允许范围内输出电容ESR最小值用最坏ESR值跑仿真相位裕度≥45°输出电容ESR最大值带脉冲负载跑瞬态峰值电压不超负载规格负载阶跃边沿用1µs或更快的上升沿振铃≤2个周期输入电源阻抗串1Ω电阻重跑扫描系统临界点无明显恶化反馈走线布局目检layoutADJ引脚走线短且远离干扰结尾这套方法如何用到现在和以后的设计里跑了这么一圈我对ESR这个参数的警惕性比刚入行时高了很多。以前选LDO输出电容脑子里只看容值、耐压、封装尺寸这老三样现在多问一句ESR范围是多少跟LDO的环路带宽配不配这颗电容在偏压下ESR漂了之后还稳不稳我建议你下一步把同样的方法用到手头真实项目里把你正在用的LDO型号、真实输出电容、甚至是真实的负载特性搬进LTspice跑一遍ESR扫描。看到振铃的那条曲线远比从datasheet上一行行对比参数更让你印象深刻。还可以尝试扩展场景比如输出短路恢复、启动过冲、不同温度下ESR漂移带来的稳定性变化这些都是LTspice里十分钟能解决的问题换来的却是打板回来少熬夜的确定感。