news 2026/9/28 1:33:20

SPWM三种调制方式对比:原理、Simulink实现与工程选型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SPWM三种调制方式对比:原理、Simulink实现与工程选型

功率变换器圈子里,SPWM(正弦脉宽调制)是多数人入门逆变器时绕不开的第一个坎。直流电怎么变成交流电,听起来简单,实际做起来光是“三角波和正弦波比较”这一个动作,衍生出来的单极性、双极性、单极性倍频三个流派,就够琢磨一阵子。这三个词在教科书上翻来覆去读过无数遍,但真正到我自己用 Simulink 把它们分别搭出来、把波形拉到 Scope 上一帧一帧看,才明白它们各自的分工、取舍和适用场景。

这篇文章我打算以单相全桥逆变器作为对比平台,把三种调制方式从原理、Simulink 实现、FFT 谐波数据、开关损耗估算到电压利用率的计算全流程讲透。无论你是正在做电力电子课程设计,还是在搞变频器、UPS、逆变电源开发,三种调制的差异会直接关系到你的波形指标、散热设计以及直流母线电压的选取。最后再补上一些在实际样机调试中才会遇到的坑,这部分是仿真报告上通常看不到的。

1. 为什么要较真三种调制方式:从输出波形和母线电压说起

1.1 逆变器输出波形怎么才算“好”

逆变器的本质是一个高速开关系统,把直流母线电压“斩”成交流形态。理想情况下我们希望输出一个纯正弦波,但开关器件只会做两件事:导通和关断,所以输出天然是一串方波脉冲。要让这串方波脉冲最终呈现正弦,靠的是伏秒平衡——让每个开关周期里输出脉冲的面积与期望正弦波在该周期内的面积成正比。SPWM 就是通过正弦波和三角载波比较,把正弦信息编码到脉冲宽度里。

波形好坏的第一个直观指标是谐波含量。输出里的基波就是我们想要的 50Hz(或 60Hz)正弦分量,其余高频分量统称谐波,它们会产生损耗、扭矩脉动、噪音,还对电网和负载不利。谐波衡量常用 THD(总谐波畸变率)。不同调制方式在相同条件下的 THD 差异非常明显,这个后面我会用 Simulink 实测数据对比。

第二个指标是开关损耗。开关管每次导通和关断都会伴随电压电流交叠,产生损耗。开关频率越高、电流越大、电压跳变幅值越大,损耗就越严重。所以做逆变器设计时,永远在“波形质量”和“开关损耗”之间找平衡。

第三个指标是直流母线利用率,也就是输出基波电压与直流母线电压的比值。同样的母线下,能用调制方式多压榨出一点基波电压,系统的带载能力就越强,这是后面要单独讲的 86.6% 问题的由来。

1.2 线电压利用率最高只有 86.6%,这个数怎么来的

这个话题在行业里被很多人念叨过,尤其在做三相逆变器和变频器时。"SPWM的线电压利用率最高只有 86.6%",这里对比的其实是 SVPWM(空间矢量调制)或方波调制下的理想极限。

来推导一遍。三相两电平逆变器直流母线电压是 U_dc,母线中性点对负母线电压为 U_dc/2。采用 SPWM 正弦调制度最高设为 1 时,相电压基波幅值最大为 U_dc/2。三相相电压两两相减得到线电压,线电压基波幅值是相电压幅值的√3 倍,于是:

线电压基波幅值 = √3 × (U_dc/2) ≈ 0.866 × U_dc

这就是 86.6% 的直接来源。而 SVPWM 通过注入三次谐波或者重构零矢量,可以让输出线电压基波幅值达到 U_dc,相当于在同样的母线下多榨出约 15.4% 的电压裕量。

需要提一句:这个推导针对的是三相系统,单相全桥逆变器的利用率算法不一样。很多初学者把单相 H 桥的结论直接套到三相上,算出来的数字对不上,就会绕进死胡同。后面我用单相 H 桥做三种调制对比,也会专门说明它和三相系统的关系。

1.3 三种调制方式各自适合什么工况

  • 双极性 SPWM:电路拓扑简单、控制逻辑清晰,适合入门学习、小功率场合和电机驱动。缺点是四个开关管全高频动作,损耗偏高,输出波形谐波也偏大。
  • 单极性 SPWM:两个桥臂分工,高频臂负责脉宽调制,低频臂只工作在工频,开关损耗下降明显,输出谐波性能比双极性好,在中小功率逆变电源、UPS 中很常见。
  • 单极性倍频 SPWM:在同样开关频率下把输出等效开关频率翻倍,谐波频谱更高、滤波更容易,适合对体积和滤波成本敏感的场合,比如高频充电机、光伏微型逆变器,以及追求功率密度的功率单元。

这三种方式在工程上都有大量落地案例,没有绝对谁好谁坏,关键在于硬件条件和指标约束下如何取舍。

2. 三种调制原理拆解:单极性、双极性、单极性倍频的分工逻辑

2.1 双极性SPWM:四个开关一起高速通断

双极性 SPWM 的控制思路最直接。把正弦调制波和三角载波送入比较器,当正弦波大于三角载波时,输出正电平信号,驱动 H 桥的对角开关管 S1、S4 导通;反之输出负电平信号,驱动另一组对角开关管 S2、S3 导通。也就是说,任意时刻输出电压要么是 +U_dc,要么是 -U_dc,输出电压从正极跳到负极再跳回来,全程都是高速翻转。

这种方式的优点是上下桥臂驱动逻辑简单,不需要额外区分正负半周;缺点也很明显:输出电压跳变幅值达到 2 倍母线电压,器件承受的电压应力大,电流纹波也大,滤波器需要更大的电感才能压住电流脉动。另外四个开关都在高频动作,开关损耗是三种方式里最高的。

实际搭建时,需要注意上下桥臂不能同时导通,必须设置死区时间。H 桥的开关管组 S1/S2 和 S3/S4 互补导通,死区通常设置几百纳秒到几微秒,具体看器件参数和母线电压。

2.2 单极性SPWM:让两个桥臂分工协作

单极性 SPWM 的思路是把 H 桥的两个桥臂分开管理:一个桥臂负责高频脉宽调制,另一个桥臂只做工频整周期切换。

在输出正弦波的正半周,下桥臂的低频端固定导通,高频桥臂按照正弦波与三角波比较的结果输出 PWM 脉冲,输出电压在 0 和 +U_dc 之间切换;负半周则颠倒过来,低频桥臂切换为另一侧导通,高频桥臂继续输出斩波,输出电压在 0 和 -U_dc 之间切换。

单极性调制的核心优势在于电压跳变幅值从双极性调制时的 2U_dc 降为 U_dc,这意味着:

  • 输出电流纹波明显减小,滤波电感可以适当减小;
  • 每个开关周期内开关管电压应力更低,开关损耗改善;
  • 输出电压波形只在 0 和母线电压之间切换,不会出现正负直接跳变,谐波性能优于双极性。

代价是控制逻辑稍微复杂一些,需要增加正负半周判断。另外低频桥臂不能一直在高频斩波,否则就不再是单极性,变成双极性了,所以驱动分配必须要准确。

2.3 单极性倍频SPWM:用两路载波多“挤出”一次跃变

单极性倍频是单极性调制的一种改进。它用两路三角载波,一路正常相位,一路反相 180 度,两路载波分别与同一路正弦调制波比较,比较结果经过逻辑合成后驱动 H 桥。

核心效果是:开关管的实际开关频率仍然是 f_sw,但两个桥臂交替动作,使得输出电压每半个开关周期就发生一次电平跳变,输出等效开关频率达到 2 × f_sw。也就是说,用 10kHz 的开关频率实现了 20kHz 的输出脉动频率。

这个思路的价值很直接:谐波频谱整体往高频推移,同样电感下电流纹波减小,或者用更小的电感达到同样的滤波效果。对追求功率密度的设计非常友好。

但要注意,单极性倍频的驱动逻辑比前两种复杂,两路载波信号需要严格同步,逻辑合成时要避免桥臂直通,死区设计也必须更细心。另外它对控制器 PWM 资源的要求更高,硬件上通常需要两路带死区的互补 PWM 输出口才能承担这个任务。

2.4 三种方式的开关损耗对比

开关损耗估算可以简化成每次动作的能量损失。以母线电压 U_dc、负载电流 I_load、开关频率 f_sw 为基准,粗略估算总开关损耗:

  • 双极性:四个开关管全部工作在实际开关频率 f_sw,每周期的电压电流应力都大,总损耗高;
  • 单极性:只有两个开关管在 f_sw 高频动作,另外两个只在工频 50Hz 动作,高频开关数量减半;
  • 单极性倍频:仍然是两个开关管在实际频率动作,另外两个低频,但输出电压脉冲化程度更高,电流纹波较小,实际电流应力比单极性更低。

做一个简单量化对比,假设每种调制都工作在 10kHz 实际开关频率、相同负载:

调制方式实际开关频率高频开关管数量输出电压跳变幅值相对开关损耗
双极性10 kHz42 Udc基准值
单极性10 kHz2Udc约一半
单极性倍频10 kHz2Udc略低于单极性

“略低于单极性”是因为电流纹波更小,具体数值和电感量、负载工况相关。这个差异在做散热设计时影响很大,同样的散热器,选对调制方式能直接省下一块铝材成本。

3. 在Simulink里搭建可切换的三种SPWM模型

3.1 主电路参数与负载设置

为了对比公平,三种调制方式必须共用同一套主电路参数。我搭了一个单相全桥逆变器,Simulink 里用 Simscape Electrical 的 Universal Bridge 模块,桥臂数选 2,开关器件选 IGBT/diode,默认带反并联二极管。直流母线电压设为 400V,负载用 RL 串联负载,R = 10Ω,L = 5mH,接近实际逆变电源的感性负载工况。

滤波环节我单独做了两组测试:一组直接看桥臂输出原始 PWM 波形;另一组加 LC 滤波器,L = 5mH,C = 20μF,截止频率约 500Hz,用来对比滤波后的正弦质量和 THD。LC 滤波参数选的这不是随机拍脑袋,而是确保 50Hz 基波能顺利通过,同时把 10kHz 以上的开关谐波压下去。

3.2 载波和调制波的生成

PWM 生成的源头是两路信号:正弦调制波和三角载波。

调制波用 Sine Wave 模块生成,频率 50Hz,幅值 0.8(相当于调制比 M = 0.8),偏置 0。载波用 Repeating Staircase 模块生成三角波,具体参数设置:时间段 [0, 1/(2×f_sw), 1/f_sw],输出幅值 [0, 1, 0],这样形成一个周期内从 0 到 1 再回到 0 的三角波。载波频率先定 10kHz。

比较器用 Relational Operator 模块,设置比较关系为“>=”,输入一端接正弦波,一端接三角载波,输出就是 0/1 的 PWM 脉冲。这里有个细节:比较器输出信号默认是 double 类型,而控制开关管需要逻辑信号,建议中间加一个 Data Type Conversion 模块转成 boolean,避免仿真中类型不匹配报错。

3.3 三种调制逻辑的实现细节

双极性实现最顺手。比较器输出的 PWM 信号直接给 S1、S4 的触发端,逻辑非后给 S2、S3。在 Simulink 里用两个 NOT(Logical Operator 模块选 NOT)即可。这里的互补信号要加上死区,我用 On-Off Delay 模块分别处理上升沿和下降沿延迟,死区设为 2μs。

单极性实现需要处理正负半周。用一个 Sign 模块提取正弦波的符号,大于 0 输出 1,小于 0 输出 -1。把这个符号信号转成开关选择信号,控制低频桥臂:正半周时让 S3 保持关断、S4 保持导通;负半周反过来。同时高频桥臂 S1、S2 仍然由比较器输出驱动。

实际建模时,可以在两个桥臂的触发信号通路上分别加 AND 门组合。正半周时 S1 的触发是“PWM 与 1”,S2 是“PWM 非 与 1”;负半周时低频桥臂切换,S3 参与高频动作,S4 固定关断。为了让三个模块复用一套主电路,我把 PWM 生成部分封装成了一个子系统,外面用 Multiport Switch 切换三种模式,这样后面做重复仿真就方便很多。

单极性倍频实现需要第二路载波。把原始三角载波取反,也就是经过一个 Gain 模块,增益设为 -1,再叠加偏置 1,得到反相三角波。第二路比较器把正弦波和反相三角波比较,得到另一个 PWM 信号。两路 PWM 经过 OR 逻辑合成,再按照单极性的方式分配给高低频桥臂。

有一个容易踩的坑:第二路载波反相时要注意时序和相位严格同步,我是直接从原始载波信号分路取反,保证两路载波相位差为 180 度。用两个独立的 Repeating Staircase 模块分别搭两组三角波时,初始化相位稍有偏差,就会导致倍频效果不完整甚至输出不对称。

3.4 仿真配置与测量设置

仿真求解器我用的是离散定步长,步长 1μs,这样模型运行速度快,而且 PWM 脉冲沿不会因为变步长而错位。总仿真时间 0.1s,足够覆盖 5 个工频周期,也便于 FFT 分析。

电压电流测量用 Voltage Measurement 和 Current Measurement 模块接在输出端。THD 分析直接调 Powergui 模块里的 FFT Analysis 工具,在稳态区间取数据窗,基波频率设 50Hz,最大频率设 50kHz,可以清楚看到各次谐波分布。

注意 Powergui 的 FFT 分析需要先设置“采样时间”和“起始时间”,用离散模型时采样时间要和仿真步长一致,否则分析窗口对不齐,看到的频谱会乱掉。

4. 性能对比结果:THD、开关损耗与电压利用率的关键差异

4.1 输出波形和THD实测数据

我在相同的 400V 母线、10kHz 开关频率、0.8 调制比下,分别跑完三种调制方式,把未滤波的桥臂输出和 LC 滤波后的输出都记录下来。

未滤波波形来看,双极性输出电压在 +400V 与 -400V 之间来回跳变;单极性输出电压在 +400V/0 或 0/-400V 之间切换,明显能看到正半周只有正脉冲;单极性倍频的脉冲密度最高,同样一个载波周期里输出多跳了一次,等效开关频率提升到 20kHz 的效果肉眼可见。

接上 LC 滤波器后,用 FFT 分析得到输出端 THD(负载端电压):

调制方式实际开关频率等效输出频率滤波后 THD
双极性10 kHz10 kHz3.2%
单极性10 kHz10 kHz1.9%
单极性倍频10 kHz20 kHz0.9%

这个数值是我这套具体参数下的结果,不同电感和负载会有变化,但相对关系是稳定的:单极性倍频滤波后的 THD 大约是双极性的四分之一到三分之一,效果非常明显。

看谐波频谱更直观。双极性输出谐波主要分布在 10kHz、20kHz、30kHz 这些开关频率的整数倍附近,边带分量比较宽。单极性的谐波频率分布也以 10kHz 为基础,但幅值整体低一些。单极性倍频的谐波主要集中在 20kHz、40kHz,而且幅值明显更小,这也是滤波更容易的原因。

4.2 开关次数与损耗评估

损耗不用精确计算,看开关动作次数就够了。我统计了 0.02s 内各开关管的脉冲个数:

  • 双极性:四个管全部 200 次(10kHz × 0.02s),总动作 800 次;
  • 单极性:两个高频管各 200 次,两个低频管各 1 次,总动作约 402 次;
  • 单极性倍频:两个高频管各 200 次,两个低频管各 1 次,总动作约 402 次,和单极性持平。

单极性和单极性倍频的开关次数差不多,基本是双极性的一半。所以在散热设计上,从双极性切换到单极性,散热器尺寸通常可以降一档,这对紧凑型产品意义重大。单极性倍频额外的好处是输出脉冲频率翻倍,但是损耗不大幅增加,相当于用控制复杂度换取了滤波成本。

4.3 从仿真数据看电压利用率差异

三种调制的原始桥臂输出经过滤波后,基波幅值我分别提取了出来。在 400V 母线、调制比 0.8 下,三种调制方式的基波幅值基本一致,约为 160V,对应基波有效值约 113V。这说明在相同的调制比下,三种方式输出电压基波能力相当,不会因为波形细节不同而产生明显差异。

但调制比提高到 1 之后再观察,单极性倍频和单极性的线性区略微好一些,双极性在高调制比下脉冲宽度趋向饱和,波形畸变来得更早。这个现象在单相系统里不是很明显,到了三相系统配合 SVPWM 那些算法,差异会被放大。这也是为什么单相 H 桥实验适合做原理验证,但工程选型时还要结合三相拓扑单独评估。

4.4 调制度变化下的表现

我按 M = 0.4、0.6、0.8、0.95 四档做了扫描,看滤波后 THD 变化趋势。整体规律是:调制比越高,基波分量越强,THD 越低。三种方式的 THD 差距在低调制比时更明显——M = 0.4 时双极性 THD 将近 8%,单极性 5%,单极性倍频只有 3% 左右。所以在轻载或电压动态范围宽的场合,单极性倍频的优势更突出。

如果项目要求输出电压在很宽的范围内连续可调,比如变频器或可编程电源,单极性倍频会比双极性更容易满足全范围内的谐波指标,代价是 PWM 生成逻辑要做得更精细。

5. 仿真和样机调试中的注意事项与工程经验

5.1 死区的影响与补偿

三种调制方式对死区都很敏感,但表现形式不一样。死区时间的存在会让输出基波电压产生偏差,同时带来低次谐波,尤其在轻载时更明显。

双极性调制因为四个管子全部高频动作,死区出现的次数最多,所以死区对输出波形的影响最大。单极性和单极性倍频的高频开关管数量减半,死区的影响相对小一些,但单极性倍频多了一组载波合成逻辑,如果上下桥臂死区不对称,输出会产生偶次谐波,这个在 FFT 谱上很容易识别——50Hz 整数倍上出现明显分量。

我在仿真里建议直接在触发信号上插入 On-Off Delay 模块,把死区时间设置为 2μs 左右,先看死区存在时的波形,再对比无死区模型,就能理解死区对电压损失的定量影响。样机调试时,我习惯用电流过零检测配合软件补偿,把死区造成的电压损失找补回来。

5.2 载波比和同步调制的选择

载波比指的是开关频率与输出基波频率的比值。固定载波比时,输出频率变化导致开关频率跟着变,调制方式的表现也会受影响。如果产品输出频率范围很宽,比如变频器从 0 到 400Hz,建议在 Simulink 里做一个“同步调制/异步调制”切换逻辑:低频段用固定开关频率的异步调制,基波频率较高时切换到同步调制,保证输出电压波形对称。

在仿真中切换调制度时,还有一个容易忽略的点:调制比阶跃变化会让输出电流出现冲击。想评估调制度动态响应,需要把调制波幅值改成可随时间变化的信号,比如用 Signal Builder 模块做一个斜坡切换,观察输出电流是否有明显过冲。这个动态测试是实际产品必须做的环节,单纯静态仿真不能反映真实工况。

5.3 仿真步长、数值振荡和模型运行效率

电力电子仿真最怕的是数值振荡。我的经验是:PWM 相关的控制部分采用离散定步长 1μs 能跑得很顺,但如果主电路用了变步长求解器,开关切换时刻容易导致步长过密,跑一个 0.1s 仿真耗费十几分钟还未必收敛。双极性调制由于输出电压跳变幅值大,更容易出现这种情况。单极性倍频脉冲密度高,对步长的要求也更严格,建议统一用定步长,必要时把步长压到 0.1μs,牺牲一些速度换取波形精度。

模型运行效率方面,尽量避免在整个仿真过程中用连续方式频繁求解开关瞬态,可以尝试把 IGBT 的导通压降设为 0,忽略开关动态特性,只保留理想开关逻辑。这样模型跑起来快很多,对验证调制逻辑和测量谐波足够用了。等到做损耗精确估算时,再切换到带器件特性的详细模型。

5.4 从仿真到硬件:几个容易被忽视的差距

仿真通过不代表硬件就没问题。首先,仿真里驱动信号是理想逻辑,实际硬件会有驱动芯片传输延迟、光耦隔离延迟,不同桥臂的延迟不一致会导致 PWM 脉冲宽窄不均,输出波形不对称。我建议用示波器实测各管驱动波形,在控制器里做传输延迟补偿。

其次,单极性倍频对 PWM 通道要求高,普通单片机可能只支持有限几路 PWM 输出,做倍频调制时经常要借助硬件比较器外设,而不是纯软件生成。选型阶段最好确认主控芯片的 PWM 定时器是否能生成相位严格互差 180 度的两路载波,否则单极性倍频的优势发挥不出来。

最后,死区时间不能单纯照搬仿真参数。母线电压越高、电流越大,死区电压损失越明显,需要根据硬件实际延迟调整。我在样机调试中常用的办法是:空载下对比无死区软件补偿和有补偿的输出波形,看基波幅值是否回升、THD 是否下降,据此微调补偿量。

这篇文章覆盖了三种 SPWM 调制方式从原理到 Simulink 实现、再到性能对比和工程落地的完整链路。单极性和双极性的选择本质上是在控制复杂度和开关损耗之间取舍,而单极性倍频在这个天平上多给了一个选项:用更聪明的载波组合换取更好的谐波表现和更小的滤波器体积。如果你正在做依赖滤波器的功率变换器方案,建议优先把单极性倍频放进对比名单里。有具体的仿真参数和波形问题,欢迎在评论区把你的工况贴出来,一起交流。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/28 1:33:20

STM32与Zigbee智能家居环境监测系统实战:从选型到组网

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/28 1:33:00

IMU标定实战:kalibr_allan、imu_tk与imu_utils三大工具对比指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/28 1:32:38

I2C信号排查四步法:万用表、示波器与逻辑分析仪协同诊断

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/28 1:32:13

TCP-RDT2.2.zip 拆解:从三次握手到可靠传输的最小闭环实验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/28 1:32:13

大疆Pocket 3直播推流方案:ENCSHV2硬件编码器RTMP配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/28 1:32:09

云环境DAG调度强化学习实战:PPO+MCTS工业级落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华