简介:《Buck 变换器的建模与仿真》是一份电力电子技术方向的 Word 文档资料,面向电气工程、自动控制等专业学生及电源设计入门者,系统梳理了单电压环 Buck 变换器的建模与仿真流程。资源包内共 1 个 docx 文件,压缩后大小约 708KB,内容包含主电路数学建模、小信号传递函数推导、控制电路分析与 PI 调节器设计等核心部分,并基于 LTspice 开展了仿真验证。文档以状态空间平均法和开关元件平均法为基础,给出了占空比对输出电压、音频敏感及输出阻抗等传递函数,同时设计了 Type-3 型 PI 控制器,利用伯德图校核系统稳定裕度;在仿真环节还加入了软启动、限流、钳位等辅助电路,并模拟了负载切入切出场景,以检验闭环输出稳定性。目前已有 147 人浏览学习,对于需要理解 DC/DC 变换器建模原理并快速上手仿真验证的读者,是一份兼具理论推导与工程实践参考价值的资料。
1. 单电压环Buck变换器建模与仿真:LTspice里从传递函数到PI参数落地
Buck变换器是DC/DC变换器里最常见的降压拓扑,很多工程师都能随手搭出功率级电路,但真正到了环路补偿这一步,就开始凭感觉调PI参数,运气好能稳住,运气不好就出现低频振荡甚至炸管。问题的根源不是拓扑本身,而是没有建立主电路的小信号模型,不知道功率级给控制环路提供了什么样的传递函数,自然也就不知道PI该给多少增益、零点极点该放哪里。
这篇文档出自一篇完整的电力电子建模论文,给出了一条非常完整的链路:从状态空间平均法建立Buck主电路小信号模型,到推导占空比对输出电压的传递函数Gvd(s),再到设计Type-3型PI控制器把穿越频率从5kHz校正到2kHz、相位裕度做到65°,最后在LTspice里做AC扫描验证和负载切入切出瞬态仿真。它的价值在于把「建模—补偿—验证」三个环节串成了一个闭环,适合正在做Buck环路设计、准备参加电力电子相关竞赛,或者想系统补齐小信号建模能力的硬件工程师。
2. 主电路小信号建模:状态空间平均法与受控源等效电路的LTspice搭法
2.1 为什么不能直接用PWM开关模型做AC分析
很多人在LTspice里搭Buck电路时,习惯直接用PWM比较器加逻辑门来控制开关管,这种模型做瞬态仿真没问题,但做AC分析完全不行。因为AC分析要求电路在某个静态工作点附近是线性时不变的,而PWM开关电路本质上是强非线性的,LTspice的.ac语句遇到这种电路要么报错,要么扫出一条毫无意义的结果。
正确的做法是用状态空间平均法。Buck变换器在连续导通模式(CCM)下只有两个开关状态:开关管导通和开关管关断。在开关周期T内对电压和电流求平均,把开关管和二极管这一对非线性器件替换成受控源,就能得到一个时不变的等效电路。再在这个大信号平均模型上叠加小信号扰动,最后得到线性化的小信号等效电路。这就是论文里说的「开关元件平均法」,也是后续求Gvd(s)的前提。
2.2 占空比对输出电压的传递函数推导过程
Buck变换器CCM模式下,两个开关状态的状态方程分别列写。开关管导通时,电感电压为Vin减去输出电压,电容向负载放电;开关管关断时,电感续流二极管导通,电感电压为负的输出电压。对这两个状态按占空比D加权平均,得到大信号平均方程。然后令每个变量等于直流分量加小信号扰动量,忽略二阶小项,就能得到从占空比扰动d̂(s)到输出电压扰动v̂(s)的传递函数:
Gvd(s) = v̂(s) / d̂(s) = Vin · [(1 + s·rc·C) / (s²·L·C·(1+rc/R) + s·(L/R + rc·C + rl·C·(1+rc/R)) + 1)]
从这个表达式能读出几个关键信息:第一,直流增益就是输入电压Vin;第二,输出电容的ESR(rc)在传递函数分子上引入了一个零点;第三,如果电感寄生电阻rl和电容ESR都很小,分母就是一个典型的二阶系统,谐振频率近似为1/(2π√(LC))。这决定了后续补偿器零点极点的放置位置。
2.3 在LTspice中用受控源搭小信号等效电路
有了传递函数还不够,工程上更直观的方式是在LTspice里把平均模型搭出来,然后用AC扫描直接看伯德图。CCM模式下的开关网络可以用一对受控源等效:输入侧用电流源模拟开关管平均电流i1 = d·iL,输出侧用电压源模拟开关节点平均电压v_sw = d·Vin。我一般用LTspice的B源(行为源)来实现,比E源F源组合更直接:
* Buck CCM平均模型 - LTspice 小信号AC分析 * 参数示例:Vin=28V, L=100uH, C=470uF, R=4Ω, rc=5mΩ, rl=10mΩ VIN in 0 28 L1 sw out 100u Rser={rl} C1 out 0 470u Rser={rc} R1 out 0 4 * 开关网络平均模型:受控源替代开关管+二极管 B1 in sw V=V(d)*V(in) * 开关节点平均电压 = d * Vin B2 0 in I=(-1)*I(L1)*V(d) * 输入侧平均电流 = d * IL * 占空比小信号扰动源(AC分析信号源) Vd d 0 DC 0.5 AC 1说明一下每个受控源的作用。B1是一个电压行为源,它把节点in的电压乘以占空比信号V(d),输出到开关节点sw,等效于开关管导通时把输入电压传递到LC网络前端。B2是电流行为源,模拟输入侧从电源抽取的电流等于电感电流乘以占空比,因为开关管导通期间才有输入电流流过。这里用I(L1)直接引用电感电流,是平均模型里比较关键的一步,它把输出电感电流的变化反馈到了输入端。
Vd这个电压源在小信号模型里承担两个任务:DC值是0.5,用来设定静态工作点;AC值是1,表示施加一个幅度为1的小信号占空比扰动。这样AC扫描时,输出节点out的电压幅频特性就是Gvd(s)的幅频曲线,相频特性就是相位曲线,不需要额外写公式。
2.4 参数设置与AC扫描操作细节
打开LTspice后,搭完上面这个原理图,添加一个AC扫描指令。我在实际仿真时习惯扫描范围从100Hz到1MHz,覆盖Buck变换器LC谐振频率和开关频率附近的范围:
.ac dec 200 100 1Meg扫描点数选200足够画出平滑曲线,如果只看谐振峰附近的细节,可以改成dec 500。运行仿真后,在波形窗口添加节点out的电压,就能看到Gvd(s)的伯德图。需要重点观察三个特征:低频段增益是否接近20·log10(Vin)dB,谐振峰出现在哪个频率,高频段是否以-40dB/dec的斜率下降。这个谐振频率就是后续放置PI零点的位置依据。
有个容易忽略的设置:电感必须加Rser,电容必须加Rser,也就是考虑寄生电阻rsl和rc,否则分子上没有ESR零点,分母阻尼为零,伯德图在谐振频率处会出现一个无穷大的尖峰,和实际电路偏差很大。论文表1里电感寄生电阻rl和电容寄生电阻rc都给了具体值,仿真时务必按表填。
3. 控制环路设计:Type-3型PI参数怎么定,穿越频率怎么压回2kHz
3.1 未补偿时伯德图为什么会不满足控制要求
小信号模型建立后,下一步就是把控制器加进来。论文中的做法是取控制对输出的传递函数Gvd(s)进行校正,补偿前系统的伯德图显示穿越频率约为5kHz。为什么5kHz不满足要求?在电力电子环路设计中,穿越频率一般取开关频率的1/10到1/5,穿越频率过高会导致两个问题:一是对高频噪声的抑制能力变差,输出纹波更容易耦合到控制环路里;二是相位裕度往往不足,负载突变时容易产生振荡。按这个标准,穿越频率压到2kHz是合理的工程选择。
另外还需要看相位裕度。如果5kHz穿越频率处的相位裕度远低于45°,即使系统能稳住,瞬态响应也会出现明显的振铃和过冲。这就是论文里明确以「相位裕度65°、穿越频率2kHz」作为补偿目标的原因。
3.2 Type-3型PI补偿器的零极点配置思路
Type-3型补偿器(也叫三型误差放大器)是电压控制Buck环路最常用的补偿结构,它提供了两个零点、两个极点和原点处一个积分极点。经典配置如下:第一和第二个零点放在LC谐振频率附近,用来抵消功率级双极点造成的-40dB/dec斜率;第一个极点放在电容ESR零点附近,用来抵消ESR零点的影响;第二个极点放在开关频率附近或者更高频段,用来衰减高频开关噪声;原点极点提供低频高增益,保证输出电压稳态精度。
Type-3补偿器的传递函数一般形式为:
Gc(s) = (1/s) · (1+s/ωz1) · (1+s/ωz2) / ((1+s/ωp1) · (1+s/ωp2))
配置原则我一般这么掌握:零点频率设为LC谐振频率的0.5到0.8倍,第二个零点取谐振频率的1.2到1.5倍,第一个极点取ESR零点的1.5倍以上,第二个极点放在开关频率的0.5倍附近。这样设计的好处是,在穿越频率附近补偿器提供一个上升的增益斜率,把开环增益曲线以-20dB/dec的斜率穿越0dB线,相位裕度自然就能落在目标范围内。
3.3 PI参数计算与LTspice中的实现
论文里给出的补偿目标是穿越频率2kHz、相位裕度65°。实际操作时,先从未补偿的Gvd(s)伯德图上读出2kHz处的增益和相位,然后计算补偿器在这点的增益和相位提升量。先用未补偿开环增益确定中频增益,再按前面说的零极点位置摆好两个零点和两个极点,最后在LTspice里用B源直接表达式实现:
* Type-3 补偿器示例(参数需根据实际Gvd形状调整) * 零点: fz1=6kHz, fz2=12kHz; 极点: fp1=30kHz, fp2=75kHz * 中频增益补偿: 用 Gc 统一缩放 Ecomp comp 0 value={ Gc * (1+s/{2*pi*6k}) * (1+s/{2*pi*12k}) + / (s*(1+s/{2*pi*30k})*(1+s/{2*pi*75k})) * V(err)}这里把误差信号V(err)作为输入,输出就是调制波信号。Ecomp是个电压行为源,直接在value表达式里写传递函数的好处是参数改动方便,想调整零点极点频率只需要改数字,不用改电路结构。补偿器的输出电压再送给PWM比较器就能生成驱动信号。
参数怎么确定不用完全靠手算。我一般的做法是先把零点极点按估算值填进去,跑AC扫描看补偿后开环伯德图,如果穿越频率偏高就降低中频增益Gc,偏低就增大Gc;如果相位裕度不够,就把两个零点往高频方向推一点。迭代两三次就能精确落在2kHz和65°上。
3.4 补偿后系统的开环伯德图如何检查
补偿器加进去后,AC分析要重新设置断点。工程上最常用的是在误差放大器输出处断开反馈环路,注入一个AC扰动源,然后测量环路增益T(s)。这里有一个细节:断开的地方必须选在单向传输的节点,不能在输出电压采样点处断开,因为采样网络对输出有负载效应,断开位置选错了测出来的环路增益会偏。
断开后从主电路输出电压节点到PWM比较器输入端的传递函数,乘上补偿器传递函数,就是开环增益T(s)。查看伯德图时确认三件事:穿越频率是否在2kHz左右;穿越频率处的相位减去-180°是否大于65°;低频增益是否足够高。论文图6的仿真结果显示校正后系统满足这两个指标,在做自己的电路时也要按这个标准核对。
4. 建模仿真避坑:参数对不上、波形发散的四个常见问题
4.1 AC扫描结果和手算传递函数对不上
现象:LTspice里AC扫描得到的谐振频率和手算1/(2π√(LC))差很多,或者低频增益不是预期的20·log10(Vin)dB。
原因:最常见的是模型里寄生参数没有设置,电感L1和电容C1的Rser默认是0。没有rl和rc时,二阶系统品质因数趋近无穷,谐振频率处增益异常升高;另外B1/B2受控源的表达式里如果用了绝对电压V(in)而不是相对节点的压差,也会引入额外偏差。
解决:按实际器件值给L1加Rser=10m,C1加Rser=5m。同时检查B1表达式,如果写成了V=V(d)*28这种绝对数值,改成V=V(d)*V(in),让直流工作点自己计算,这样扫描结果才会和传递函数公式完全吻合。
4.2 受控源报错循环引用,仿真不收敛
现象:运行仿真时LTspice提示Analysis: Time step too small或者singular matrix,定位到B2电流源那一行。
原因:B2用了直接引用I(L1)的形式,当电感电流发生突变时,行为源里对电流的依赖可能形成代数环,导致矩阵求解不收敛。这在B源搭配非线性负载时尤其常见。
解决:把B2改成用辅助电压源检测电流。在电感支路串联一个0V电压源VSENSE(0V不影响电路),B2表达式改为I=I(VSENSE)*V(d)。LTspice对这种电流引用的收敛性更好,排查问题也方便,随时能看到电感电流的实际值。
4.3 负载切换瞬间波形发散,输出电压拉不回来
现象:仿真运行到20ms负载从100%切换到50%时,输出电压出现大幅度跌落或尖峰,之后要么恢复不到14V,要么直接振荡发散。
原因:负载切换的瞬态响应能力由环路带宽决定。如果前面AC分析没做,直接凭经验给PI参数,带宽可能只有几百赫兹,负载突变后环路响应太慢,输出电压跌落幅度超过控制能力边界;如果补偿器相位裕度不足45°,负载突变激发出来的振荡就无法衰减。
解决:回到第3章的环路设计流程,先把穿越频率按2kHz校正好,再回头跑负载切换瞬态。另外检查负载切换的实现方式,用switch模型时要注意电阻不能直接接到0到无穷,切换目标电阻要设一个合理的导通电阻,避免瞬间断流击穿仿真器数值极限。
4.4 软启动时间常数设置不当导致启动冲击
现象:启动瞬间输出电压过冲超过设定值10%以上,甚至触发限流保护。
原因:论文里明确说参考电压从0V缓慢启动到给定值,时间常数RC设置为4ms。如果RC设得太小,参考电压上升太快,PI调节器积分项跟不上,输出电压就会过冲;如果MR设得太大,启动时间过长,系统长时间处于低压大占空比状态,电感电流平均值很高。
解决:把软启动的RC时间常数设在3ms到5ms之间,和环路穿越频率匹配。穿越频率2kHz对应响应时间约0.5ms,RC取4ms大约是响应时间的8倍,这个比例留出了足够的裕量。实际调的时候用param变量声明RC值,方便批量扫描。
5. 闭环验证与进阶:用伯德图和负载瞬态双向确认PI设计
闭环仿真验证不能只看稳态波形,真正有效的验证是「频域指标」和「时域行为」的交叉确认。我做完AC分析后,一定会补两组瞬态仿真:一组是启动过程的波形,看输出从0V上升到14V的过程中有没有过冲,软启动是否按设计时间完成;另一组是重复论文里的负载切换场景,前20ms满载运行,20ms切换为50%负载,40ms再切回100%负载,观察输出电压跌落幅度、恢复时间以及是否出现振荡。
判断标准我习惯量化来看:负载切换时的输出电压跌落不超过2%,即14V输出时压降小于280mV;恢复时间在1ms以内;切换过程中波形没有明显的二次振荡。如果跌了1V以上,说明环路带宽不够,回去加大中频增益;如果有振铃,说明相位裕度偏低,把零点往高频推。
进阶操作是在LTspice里一次性做参数扫描。把PI的零点极点参数声明成变量,用.step指令同时扫描几组参数,把瞬态波形叠加对比:
.step param fz1 list 4k 6k 8k这样一次仿真就能看到三组参数下负载瞬态恢复的差别,比一组一组试快得多。扫描完你会发现带宽和相位裕度是矛盾的,带宽拉高瞬态恢复快,但相位裕度下降,这就是补偿器设计的核心权衡。
这个环节做完,整套Buck变换器的建模与仿真流程才算真正闭环。回头想,我最开始做Buck环路时也习惯跳过传递函数直接调PI,结果就是仿真一个样、焊板实测一个样,低压大电流场景经常出问题。从那以后我每次搭Buck闭环仿真都强制走一遍「小信号建模→AC校穿越频率和相位裕度→负载瞬态验证」的完整流程,连仿真波形和计算值对不上都会倒查模型参数。现在这份建模仿真文档我还会定期翻出来对照自己的电路参数重算,每次都能排查出一些设计隐患。希望帮到你。
本文还有配套的精品资源,点击获取