简介:面向电力电子课程设计学习者的一份技术文档,聚焦升压、降压直流斩波电路及其MATLAB仿真实现,适合需要完成DC/DC变换器设计、建模与验证的本科或高职学生参考。文档从降压斩波原理与输出电压关系入手,延伸到Boost与Buck-Boost拓扑选择、连续与断续工作模式、储能电感参数设计,并说明PWM闭环控制中占空比调节与反馈稳压的实现思路。压缩包共1个doc文档,约823KB,目录涵盖绪论、降压斩波电路、直流斩波电路工作原理及输入输出关系、DC/DC变换器设计、测试结果、直流斩波电路建模与仿真、课设体会与总结及参考文献,结构完整。读者可据此梳理课程设计报告框架,理解斩波电路波形分析与参数计算,并借助MATLAB仿真观察不同条件下的动态响应,结合输出电压精度、纹波、效率与瞬态响应等测试指标核对设计。已有3251人学习下载。
1. 占空比不是"开关快慢",而是能量记账的比例
斩波电路最容易被误解的一点,是把占空比当成一只调压旋钮:占空比大一点,输出电压高一点。真跑过仿真的人会发现事情没这么线性——同一套参数,把负载电阻换小一半,输出电压就往下掉一截;把电感从 5 mH 砍到 1 mH,原本平直的波形立刻变成一串尖峰。斩波电路的本质不是"分压",而是在一个开关周期内把电源送来的能量分成两份:一份当场交给负载,一份先存进电感,等开关断开再放出来。占空比决定的正是这两份的比例,而不是电压本身。把这条记账逻辑理顺之后,Buck、Boost、Buck-Boost 三个公式就不再需要硬背,串联式升降压拓扑里那个"多出来的辅助开关管"也不会显得莫名其妙。下面按"一个周期里发生了什么 → 公式怎么来的 → 仿真里为什么对不上"的顺序拆。
2. 降压斩波:电感为什么是那个不让电流跳变的蓄水池
2.1 通态与断态的分段线性,两个方程拼出一个 α
Buck 电路的工作过程只有两个状态,分析它的标准手法叫"分段线性":把开关周期切成通态和断态两段,每段当成一个线性电路去解,再把两段的结果在边界上接起来。
t=0 时刻驱动 V 导通,电源 E 直接加到负载上,负载电压 uo = E,负载电流 io 沿指数曲线上升,上升的时间常数是 L/R。到 t=t1 时刻关断 V,电感电流不能突变,它必须找一条回路继续流,这时候续流二极管 VD 正向导通,把负载两端近似短接,uo ≈ 0,io 沿指数曲线下降。这里有一个隐含前提:串接的电感 L 要足够大,负载电流才不会在断态结束前掉到零,也就是所谓的电流连续。L 一小,电流断续,两段线性方程就接不上了,整个解析要重写。
更省事的推导走能量路线。设电感无穷大、负载电流恒为 Io:电源只在通态期间供能,一个周期给出去的能量是 E·Io·ton;负载在整个周期都在耗能,消耗量是 Io²R·T 加上反电动势那部分 E·Io·T。忽略损耗让两边相等,化简完就是 Uo = (ton/T)·E = αE。α 就是占空比,也叫导通比。
我更愿意用第三种口径理解这件事——电感伏秒平衡。通态时电感两端承受的电压是 E − Uo,持续 ton;断态时是 −Uo,持续 toff。稳态下一个周期里电感两端电压对时间的积分必须为零,否则电感电流会周期性净增、不可能稳定:
(E − Uo)·ton = Uo·toff两边一整理,Uo = E·ton/(ton+toff) = αE。这个式子比能量法更本质,它不依赖"电感无穷大"这种理想化假设,只要电流连续就成立,而且直接给出了后面所有拓扑的统一解法:找出电感在通态和断态各承受什么电压,让伏秒积相等。Boost 和 Buck-Boost 的公式都是这么来的,一个都不用背。原文里那句"可将降压斩波器看作直流降压变压器",说的就是这层意思——它是个按比例搬运能量的装置,只不过"变比"可以连续调。
2.2 临界电感与导通模式:仿真前先估一遍 L
电感电流的纹波是可以算出来的。通态期间电感电压为 E − Uo,纹波峰峰值就是
ΔI = (E − Uo)·ton / L = Uo·(1−α)·Ts / L这个式子里 L 在分母上,说明电感越大纹波越小,也就越容易维持连续。临界点在 ΔI/2 恰好等于负载平均电流 Io 的位置,把它代进去解出临界电感:
L_crit = (1−α)·R / (2f)注意这里出现了 f。开关频率越高,需要的电感越小,这是开关电源拼命往高频走的直接原因——磁芯和绕组体积跟着降。但也别高兴太早,频率上去,开关损耗和驱动损耗同步上涨,这是个典型的取舍点,不是免费的。
这套估算在点"运行"之前就该跑一遍。仿真软件不会告诉你参数选在了断续区,它只会老老实实给你一条和理论值对不上的曲线,然后你在那儿怀疑是不是求解器的问题。用一段几行的脚本先把模式和纹波算清楚,能省掉大量无谓的排查时间:
% Buck 降压斩波:仿真前的电感与纹波估算 Us = 200; % 直流输入电压 (V) D = 0.5; % 占空比 Ts = 1e-3; % 开关周期 (s),对应 1 kHz f = 1/Ts; R = 10; % 负载电阻 (Ω) L = 5e-3; % 储能电感 (H),对应原文仿真取值 Uo = D*Us; % 连续导通模式下的理想输出 dI = Uo*(1-D)*Ts/L; % 电感电流峰峰值 ΔI Io = Uo/R; % 负载平均电流 Lcrit = (1-D)*R/(2*f); % 临界电感,ΔI/2 == Io 的分界 ccm = (dI/2 < Io); % true 表示电流连续逐行看几个关键量。Uo = D*Us是连续模式下的理论输出,只要电路进了断续区,这个值就不再成立,实测会明显偏高,这是后面排查章节要重点处理的现象。dI是纹波峰峰值,它和Io的比值直接决定模式。Lcrit的意义是:实际电感只有大于它,dI/2 < Io才可能成立。这段代码里 R 和 L 都是可替换的参数,改动任意一个,ccm的取值就会翻转——把 R 调大(负载变轻)或者把 L 调小,都会把电路推入断续。反电动势负载的情况更微妙:当反电动势逼近输出电压时,有效压差变小、平均电流变小,同样一组 L 和 f 也更容易断续。
2.3 三种调制方式与器件选择,为什么全控管成了默认答案
按对输出电压平均值的调制手段来分,斩波电路有三种控制方式,这个分类在教科书里经常一笔带过,但它决定了滤波器和 EMI 的设计难度:
| 调制方式 | 固定量 | 变化量 | 特点 |
|---|---|---|---|
| PWM(脉宽调制) | 开关周期 T | 导通时间 ton | 谐波频谱固定可预测,滤波器好设计,最常用 |
| 频率调制 | 导通时间 ton | 开关周期 T | 轻载时可降频减损耗,但谐波随占空比漂移,滤波困难 |
| 混合型 | 都不固定 | ton 与 T 同时变 | 适应宽输入范围,控制逻辑最复杂 |
做仿真和做样机基本都选第一种,原因很实在:频率固定意味着骚扰频谱集中在已知的谐波簇上,输入滤波器按这一个频点设计就行;调频方案里占空比一变,主谐波就跟着跑,滤波器得按最坏情况留余量,体积和成本都上去了。原文仿真里把控制脉冲周期固定成 0.001 s(1 kHz)、占空比 50%,就是为了在示波器窗口里看到整数个稳定周期,波形不会被截断得七零八落。
器件那一侧的选择更值得说一句。Buck 电路里的主开关 V 必须是全控型器件,IGBT、MOSFET 这类通断都能由门极控制的才行。晶闸管虽然便宜耐压高,但它一旦导通,门极就失去控制能力,只能等主回路电流自然过零才关断。直流输入没有自然过零点,用晶闸管就必须额外配一套强迫关断的辅助电路——电容、辅助晶闸管、电感一堆东西,体积和可靠性都吃亏。这就是为什么原文的电路图里主开关画的是 IGBT,以及为什么整个技术路线从晶闸管时代转向 GTO、GTR、P-MOSFET、IGBT 之后,斩波电路才真正铺开。IGBT 本身也是个折中产物:它用 MOSFET 的栅极结构拿到了高输入阻抗和简单驱动,又用双极型的电导调制把那句"高压下导通电阻太大"的毛病压了下去,导通压降 VCE(sat) 比同等级功率 MOSFET 的 RDS(on) 折算值低不少。
3. 升压与升降压:电压是"抬"出来的,不是"变"出来的
3.1 Boost 的 1/(1−α):断开开关那一刻,电感把电位顶上去
Boost 电路初看很反直觉:输入和输出之间只隔了一个二极管和一个开关,输出电压凭什么比输入还高?关键在断开开关的那一瞬间。
通态时,V 导通,电源 E 直接加在电感 L 两端,电感电流线性上升、储能增加;同时电容 C 单独向负载 R 供电,维持输出电压。断态时 V 关断,电感电流不能突变,它必须继续流动,唯一的通路是经过二极管流向负载和电容。为了让电流通过这条通路,电感两端必须产生一个方向相反的感应电动势,把自身"左端"的电位抬高到输入电压之上,二极管才可能正向导通。所以输出端看到的是电源电压与电感感应电动势的串联和:
E·ton = (Uo − E)·toff伏秒平衡两边一解,Uo = E·(ton+toff)/toff = E·T/toff = E/(1−α)。令 β = toff/T 称作升压比,则 α + β = 1,输出电压也可以写成 E/β。这个推导和 Buck 完全同构,都是伏秒平衡,只是电感承受的电压表达式不一样,这就是前面说的统一解法。
实测会明显低于理论值,α 越大差距越明显。原因是公式假设了理想器件:电感的直流电阻、开关的导通压降、二极管的正向压降、电容的 ESR 都在实打实地吃掉一部分电压,而 α→1 时理论增益趋于无穷,分母趋近于零,任何一点损耗都会被放大成巨大的偏差。工程上一般把占空比限制在 0.85 以下,想要更高增益就换拓扑或者加隔离变压器,而不是硬推占空比。
3.2 Buck-Boost 的负号从哪来
升降压斩波电路输出的是负电压,这个极性反转经常被当成一个需要记住的结论,其实它完全是电路接法决定的。
V 导通时,电源 E 经 V 向电感 L 供电储能,电流从电感上端流向下端;同时电容 C 维持输出电压并向负载供电。V 关断时,电感要释放能量,电流方向不能变,还是从上端流向下端,但此时回路被改接了——电感下端接到负载的一端,上端经二极管接到负载的另一端,于是负载上得到的电压极性是上负下正,与电源相反。同一个电感电流方向,换了个释放回路,输出极性就翻了过来。
电压关系同样走伏秒平衡,只是要注意符号:通态时电感两端电压为 E,断态时为 Uo(因为输出为负,电感放电时两端电压与定义方向一致),一个周期积分为零给出
E·ton + Uo·toff = 0 → Uo = −(ton/toff)·E = −α/(1−α)·E负号就是从这里来的。它的实际含义不是"电压变成负的所以不能用了",而是"这个拓扑的输出参考点和输入不共地",用的时候要么把负载浮起来,要么在后面再加一级反相或隔离。这也是后面那个串联式拓扑想绕开的问题。
3.3 串联式拓扑:一个电感、正极性输出怎么同时拿到
把 Buck 和 Boost 的优缺点摆在一起,需求就很清楚了:既要能升能降,又要正极性输出,还要尽量少的储能元件。Buck-Boost 和 Cuk 能满足前两条但输出是负的;Sepic 和 Zeta 输出是正的,但都需要两个储能电感——两个电感意味着两份磁芯、两份铜损、两份体积,效率和功率密度都要打折。
串联式方案把 Buck 级和 Boost 级前后串起来:前级由 T1、T3、D1、D2、电感 L、电容 C 和负载构成降压变换电路,后级由 T2、D2、L、C 构成升压变换电路。注意 D2、L、C 是被两级共用的,整机只有一个储能电感。两种工作模式的切换靠两个开关管的配合:
- 降压模式:T3 截止,T1 以 PWM 方式工作,此时后级那个全导通的开关和二极管对 Boost 结构不产生任何影响,整机等效于一个 Buck,Uo = D1·Ui。
- 升压模式:T1 全导通,T2 以 PWM 方式工作,此时前级多出来的开关处于静态导通状态,整机等效于一个 Boost,Uo = Ui/(1−D2)。
"多出来的器件不影响工作"这句话成立的前提,是它们处在静态的通或断状态,不参与开关过程,只贡献一个固定的导通压降。这就是串联结构的聪明之处:它没有发明新电路,而是让两个已知电路在不同时段各自接管。
麻烦在于那个共用的电感。它必须同时满足两种模式的储能需求,参数得按最苛刻的工况来定。思路是把输入电压范围的两个端点各算一次:输入电压最高时,降压模式需要输出 28 V,占空比最小;输入电压最低时,升压模式需要输出 28 V,占空比最大。这两个极端状态分别对应电感在两种模式下的最坏储能条件,各算出一个电感量,取其中较大的那个作为设计值——只有这样才能保证无论切到哪个模式,电感都存得够、放得出。
% 串联式升降压:两种模式下的占空比极端值 Ui_min = 10; Ui_max = 40; Uo = 28; % 输入范围与目标输出 (V) D_buck_min = Uo / Ui_max; % 降压模式的最小占空比 D_boost_max = 1 - Ui_min / Uo; % 升压模式的最大占空比 % 分别代入各自的电感计算公式,取两者中的较大值作为 L 的设计值D_buck_min出现在输入最高、仍需降压的时候,此时占空比被压到最小,电感在通态积累能量的时间最短;D_boost_max出现在输入最低、仍需升压的时候,占空比被推到最大,电感断态放电时间最短。这两处是电感最"吃力"的位置,用它俩算出来的较大值做设计,中间所有工况都被覆盖住了。这种"取极端工况包络"的做法在电源设计里很常见,代价是常态下电感偏大、动态响应稍慢,但换来的是全工况不翻车。
4. 共地、限幅与三角波偏移:控制器怎么把两种模式缝在一起
4.1 辅助开关管与管型替换:控制端不共地怎么破
串联式拓扑有个绕不开的硬件麻烦:两个主开关管的控制端(栅极或基极)不在同一电位上。降压主开关的高端挂在输入电源正极附近,升压主开关的参考点却在另一处,两者的驱动信号没法直接共地。这个不共地问题在工程上有两条路:一路用隔离驱动,脉冲变压器或者光耦,成本、延时、共模抑制都要额外操心;另一路是把电路结构改一改,让需要被驱动的管子共地。
原文选的是第二条路,做法是加一个辅助开关管,并把原本的 NPN 型主开关换成 PNP 型。换了管型之后,辅助管与升压主开关的发射极落在同一个参考点上,共地条件成立;辅助管与另一个开关管保持同步开关关系。于是控制逻辑绕了一层:不再直接去驱动那两个悬空的管子,而是通过这对共地的管子间接控制它们的状态。代价是多了一个管子和一路驱动,收益是驱动电路可以退回到最普通的推挽输出,不需要隔离器件,调试时示波器探头也好接。这种"用结构换驱动简单性"的思路,在低压中小功率场合往往比加隔离电源更划算。
4.2 双闭环串级:两级 PI 的限幅值各自锁住了什么
控制部分采用电压外环、电流内环的串级结构,两级都是带限幅输出的 PI 调节器。信号流向是这样的:电压给定 Ug 与电压反馈 Uf 比较得到误差,经电压调节器输出,作为电流环的给定 Ir;Ir 与电流反馈 If 比较得到误差,经电流调节器输出,这个输出直接对应 PWM 的脉冲宽度;再经 PWM 分配逻辑决定送给哪个开关管。
为什么不用单电压环?因为电感电流是电路的状态量,把它纳入内环之后,扰动一出现电流环就能立刻反应,不用等输出电压掉下来才动作,动态响应快一个量级。更要紧的是限流能力:外环的输出本身就是内环的给定,所以电压调节器的限幅值直接定义了电流环的最大给定电流,也就限定了整机的最大输出电流,过流保护变成了一项设计参数而不是事后补的保护电路。
内环的限幅值管的是另一件事。电流调节器的输出对应占空比,占空比太大输出电压就会失控冲高,所以这一级的限幅实际上封住了最大占空比,防止输出电压进入非正常的高值区间。两级限幅一个管电流上限、一个管电压上限,构成了双重边界。这个设计我在别的地方也见过类似的思路:与其在故障发生后再去切断,不如把边界做进控制器的饱和特性里,让它物理上就达不到危险区。
PI 本身的参数没什么玄学,比例项决定对误差的反应强度,积分项负责把稳态误差磨到零。串级结构下有个经验顺序:先调内环(电流环)把带宽做上去,再调外环(电压环),因为外环的稳定性依赖内环已经足够快。
4.3 三角波加偏移:两路 PWM 的平滑切换是算出来的
两种工作模式需要两套不同的 PWM 开关方案,怎么让控制器自动判断该用哪一套,而且切换时不产生跳变?原文的办法很巧:不用数字逻辑判断,直接在模拟比较器上做文章。
电流调节器的输出同时送到两个比较器的同相端,一个三角波发生器产生的载波送到反相端,但两个比较器反相端加的三角波带着不同的直流偏移电压。于是同一个控制电压,在两个比较器上比较出来的结果不一样:
- 控制电压低于 5 V 时,它只与第一路三角波有交点,第一路比较器输出 PWM 波去驱动降压主开关;第二路因为偏移量把它顶高了,控制电压够不着,输出恒低,升压主开关截止。
- 控制电压高于 5 V 时,第一路比较器的控制电压已经高过三角波峰顶,输出恒高,降压主开关全导通;第二路开始与三角波相交,输出 PWM 波去驱动升压主开关。
5 V 这个交界点是关键。控制电压从下方逼近它时,第一路的占空比逐渐涨到 100%;从上方越过它时,第二路的占空比从 0 开始慢慢涨起来。两路在交界处严格衔接,中间没有空档也没有重叠,所以模式切换是平滑过渡的,输出电压不会因为切换而抖一下。偏移电压的取值不是随便定的,它由三角波的幅值和两路需要覆盖的占空比范围共同决定,本质上是在做"区间拼接"——把两个比较器的有效输入区间首尾相接,拼成一条连续的传输特性。
模拟方案做这件事的代价是偏移电压受温度漂移和器件离散性影响,批量生产要调;好处是响应快、不需要采样和运算。同样的事交给数字控制器就是一行判断加一个状态机,灵活但引入了采样延时和一个必须处理好的切换抖动问题。
5. 仿真排查:波形对不上理论值时先看这几处
5.1 求解器与步长:开关瞬间被"跳过"的成因
Matlab 里搭斩波电路仿真,第一件要定的事是求解器。开关电源是个典型的刚性系统:电感电流和电容电压的时间常数在毫秒到微秒量级,开关跳变又是纳秒级的陡沿,两者差了七八个数量级。变步长求解器在这种情况下会自动把步长压得很小,仿真跑得慢;而一旦它判断"这段变化不大",又会把步长放大,正好跨过开关跳变的那一瞬间。
原文用的 ode23tb 就是变步长算法,相对误差设到 1e-3,仿真时长 0.01 s、开关周期 1 ms,正好十个周期。这套设置在观察稳态包络时够用,但如果要看开关沿上的细节或者尖峰,就必须额外限制最大步长,把 Max step size 设成开关周期的百分之一量级,或者干脆换固定步长的 ode4。另一个容易忽略的点是 IGBT 模块自带的缓冲支路:把 Rs 设成 5 Ω、Cs 设成 0,相当于取消了这条 RC 吸收支路,器件变成理想开关,波形干净但也会丢掉真实的关断过冲——仿真里看到的"完美方波"和实测的带振铃波形差的就是这一块。
5.2 四条踩坑记录:现象、原因、解决
第一条:输出电压平均值明显高于理论值 D·Us。现象是仿真实测的输出比计算值高出一截,占空比越小偏差越大。原因基本可以锁定为电流断续——电感储的能量不够在整个断态期间维持负载电流,输出端实际上被电容顶在了较高的电位上,这时候 Uo = D·Us 这个式子已经失效。解决方式是回到 2.2 节的临界电感公式,把 L 加大、频率提高或者减小负载电流,让电路回到连续区;如果设计上确实要求断续工作,那就得换用断续模式下的增益公式,不能拿 CCM 的结论套。
第二条:波形顶部有一层高频毛刺,占空比看着在乱跳。现象是每个开关周期的波形上叠加了不规则的振荡。原因有两层:变步长求解器在开关跳变处跨步导致数值振荡,以及二极管反向恢复、器件结电容与线路电感形成的寄生振荡。解决是先限制最大步长排除数值因素,若毛刺仍在,就给二极管并联一个小 RC 吸收支路,或者手动在开关管两端加缓冲网络。
第三条:示波器窗口里的波形一直在横向"跑",抓不住稳定周期。现象是波形无法稳定显示,每次刷新相位都不同。原因是仿真停止时间不是开关周期的整数倍,或者变步长求解器输出的采样点不等间隔,绘图时被强行连线。解决办法是把仿真时长设成 Ts 的整数倍,并在输出设置里指定固定采样步长,让绘图数据点落在等间隔网格上。
第四条:Boost 占空比推到 0.9,输出连输入的三倍都不到。这时候别急着怀疑模型搭错了。先算一遍理论增益 1/(1−0.9) = 10,再看看实际器件参数:电感的直流电阻、开关的导通压降、二极管的正向压降全都在这个高增益点上被放大,加上占空比极大时断态时间极短、电感放电来不及完成,实际早就进了断续区。解决思路是把占空比压回 0.85 以下,或者改用带变压器的拓扑去要更高的增益,硬推占空比是最容易踩的坑。
6. 取舍:为什么"拓扑做减法、控制做加法"在小功率段更划算
把样机的测试数据摆出来,能更清楚地看到这套设计的选择落在了哪里:
| 指标 | 实测结果 |
|---|---|
| 输入电压范围 | 10~40 V 内输出保持稳定 |
| 输出电压 | 50% 负载下平均 28.01 V |
| 电压调整率 | ≤ 0.18% |
| 负载调整率 | ≤ 0.14% |
| 输出纹波峰峰值 | 负载电流 3.6 A 时 ≤ 250 mV |
| 负载能力 | 7.5 A 输出下电压仍稳定,功率 ≥ 200 W |
| 效率 | 电阻负载下 87% |
输入 10~40 V、输出恒定 28 V,意味着电路必须在降压和升压两种模式之间来回切换,而且输入最低时升压比接近 3 倍。要覆盖这个范围,常规做法是选 Sepic 或 Zeta 拿正极性输出,代价是两个电感;或者选 Buck-Boost 拿单电感,代价是负极性输出再加一级反相。串联式方案两个代价都避开了,付出的代价是多一个开关管、多一路驱动、控制逻辑复杂一档。
这笔账在小功率段是划算的:200 W 级别,多一个管子增加的成本和损耗有限,而省下一个储能电感省下的是磁芯、绕组、体积和一份铜损,效率反而更容易做上去。功率往上走,多一个开关管的通态损耗开始变得不可忽视,这个优势就会慢慢被吃掉——原文把适用范围划在 500 W 以下,划得是有依据的。控制侧做加法则体现在双闭环加模拟分配逻辑上:用两级 PI 的限幅值把电流和电压的边界做进硬件特性里,用三角波偏移把模式切换做成连续传输特性,这些都是拿电路的复杂度换取"不会出错"的确定性。
也可以反过来想:如果当初选了数字控制,模式切换就是一个 if 判断,偏移电压那套调校全省了,但采样延时、ADC 分辨率、切换抖动这些新问题会一起冒出来。模拟方案在响应速度上占优,数字方案在灵活性和可复现性上占优,没有绝对正确的答案,只有跟应用场景匹配的答案。
我做这类仿真有个血泪教训:最早总是一上来就拖模块、连线、点运行,波形不对就反复调求解器参数,折腾半天才发现是电感值根本没进连续区。从那以后我每次搭斩波电路,都强制先把临界电感和纹波估算跑一遍,确认工作模式,再去动仿真。这一步花不了五分钟,省下的是几个小时的黑匣子式排查。希望帮到你。
本文还有配套的精品资源,点击获取