☰
PWM与SPWM实测对比:示波器揭示的7个关键差异
2026/9/28 1:08:00 网站建设 项目流程

做电机驱动和逆变器这几年,我养成了一个雷打不动的习惯:新方案上板之后,先不急着看电流波形和效率曲线,第一件事一定是拿示波器探头去戳PWM输出引脚。PWM这东西,理论上说起来特别简单——高低电平、调占空比嘛,但实际波形里藏着的门道,只有示波器才愿意告诉你。最近调试一套SPWM逆变电路,顺便把手头同时生成的普通PWM和SPWM信号做了一次系统的实测对比,有些结论和教科书上说的一致,有些则是只有探头真正贴上去才能体会到的细节。

这篇文章适合正在玩STM32、做电机控制、折腾逆变器或者单纯想把PWM用明白的朋友。我会把两种信号在示波器上呈现出来的差异,归纳成7个关键点,每个点都配上实测的思路和观察方法。争取让你看完之后,不需要照抄我的实验,也能自己动手复现一遍,并且知道每一种波形“为什么长这样”。

1. 动手之前的准备:示波器、探头与被测对象

1.1 设备要求与测量方案

先说设备。我用的是一台入门级四通道数字示波器,带宽100MHz,采样率1GSa/s。其实测PWM和SPWM,这个配置完全够用,甚至感觉有点多余。PWM的开关频率通常在几kHz到几十kHz之间,SPWM的载波频率也不会超过几十kHz,真正需要关注的谐波分量大多在几百kHz到几MHz,100MHz带宽的示波器可以轻松覆盖。如果你手里只有一台几十MHz带宽的模拟示波器,或者像DSO138这种入门型号,也一样能完成大部分观察,只是在后面讲到的FFT频谱分析环节会比较吃力。

探头是这次测试的重点。我建议尽量使用标配的无源探头,切换到10X档位,千万不要用1X档。10X档输入阻抗高,对被测电路的负载效应小,测出来的波形更接近真实信号。测量之前先做探头补偿:把探头钩在示波器自带的1kHz方波校准输出上,调探头上的微调电容,直到方波的边角变得方正圆润、没有过冲和圆顶为止。这一步看起来基础,但在看SPWM这种占空比连续变化的信号时,探头补偿不准会造成幅度细节失真,后面分析波形包络时会被误导。

接线方式上有个细节容易被忽略:探头的接地夹要尽量短。PWM信号本身是快速翻转的数字电平,如果地线过长形成环路,示波器会捕捉到不必要的振铃和噪声,尤其是测量MOS管栅极驱动信号时,长接地夹会带来一串高频振荡,让你误以为是电路设计有问题。我习惯用探头自带的接地弹簧,直接套在探头尖端附近的地环上,测量效果会比鳄鱼夹干净得多。

1.2 从哪几个测试点接探头

测量点选择会直接影响你能看到什么。我这次分别测了三个位置:

第一个是MCU的PWM输出引脚。这里看到的是纯数字信号,电平干净、边沿陡峭,主要用来确认占空比、频率和引脚配置是否正确。第二个是驱动芯片输出到MOS管栅极的位置。这里可以看到死区时间、栅极充放电的振铃,以及驱动能力是否足够。第三个是功率输出的末端,也就是滤波电感之后的负载端。这个位置能看到SPWM经过滤波后恢复出来的正弦波形,也是验证算法效果最直观的地方。

对于普通PWM,我也是在这三个位置分别测量。不同位置看到的现象不同,但差异点的核心其实都体现在同一套逻辑上。我建议你也按这个顺序排查,先确认逻辑层没问题,再看驱动层,最后看功率层。很多人一上来就测MOS管栅极,发现波形乱成一团,回头检查才发现是MCU配置就有问题,走了不少弯路。

1.3 生成被测信号:普通PWM和SPWM怎么来

这次测试我用的是一块STM32F103开发板。普通PWM直接使用定时器的PWM输出模式,配置一个固定频率和固定占空比。比如我设置了10kHz、占空比50%,用来模拟最常见的PWM调压场景。

SPWM的生成方式稍微复杂一点。我用的是查表法:预先计算一个正弦波周期内对应载波周期数量的占空比序列,每个载波周期更新一次定时器的比较寄存器。载波频率同样设为10kHz,调制波频率设为50Hz,这样一个正弦周期内有200个载波周期,查表点数是200点。实际生成的SPWM信号本质上还是10kHz的PWM,只不过每个周期的占空比在按照正弦规律变化。

如果你手头没有STM32,用Arduino、ESP32或者纯硬件电路(比较器加三角波发生器)都能得到类似信号。重点是确保两种信号的载波频率一致、幅度一致,这样对比才有意义。

2. 先弄清楚一个前提:普通PWM和SPWM的本质区别

2.1 一个“占空比视角”看本质

很多刚接触的同学会把PWM和SPWM当成两种完全不同的东西,其实它们的内核完全一样,都是高频开关信号,区别只在于“占空比的变化规律”。

普通PWM的占空比是一个固定值。比如10kHz、50%占空比的方波,它的每个周期都是高电平10微秒、低电平10微秒,一直不变。它的作用是输出一个平均值固定的电压,通过调整占空比来改变这个平均电压。这类PWM广泛用于LED调光、直流电机调速、加热器功率控制等场景。

SPWM的占空比则是在动态变化的。它仍然是一个高频方波,但每个载波周期的高电平时间宽窄不同:正弦波峰值附近,占空比接近100%,输出脉冲特别宽;正弦波过零附近,占空比接近0%,输出脉冲特别窄。它的平均值电压在一个低频周期内呈现正弦形状,所以经过低通滤波后,就能还原出正弦波。这个“宽度按正弦规律调制的高频脉冲”就是SPWM。

用一句话概括:PWM是“把固定的占空比转换成固定的平均电压”,SPWM是“把不断变化的占空比转换成正弦变化的平均电压”。两者在示波器上的表现,也就从这里开始分道扬镳。

2.2 载波、调制波和采样方式的关系

SPWM里有两个频率概念,经常有人搞混:载波频率和调制波频率。载波频率就是PWM本身的开关频率,在STM32里对应定时器的计数频率;调制波频率是期望输出的正弦波频率,比如50Hz工频。两者之比叫载波比,载波比越高,输出的正弦波质量越好,但开关损耗也越大。

我在测试中用的载波比是200,也就是一个正弦周期内有200个PWM脉冲。这个载波比对于示波器观察来说非常友好:在10毫秒的时间窗口内,你能看到200个宽度不同的脉冲;在0.1毫秒的时间窗口内,你能看到单个脉冲的形状;在微秒级时间窗口内,你能看到单个脉冲的上升沿和下降沿细节。示波器的时间尺度切换,相当于让你在“宏观”和“微观”两个层面分别检查SPWM的质量。

理解了这一层,后面的7个差异点就有了共同的坐标系:同样的载波频率,一个占空比恒定,一个占空比周期性变化。

3. 示波器实测:7个关键差异点逐项对比

3.1 差异一:占空比静态与动态的区别

这是最基础、也最直观的一个差异。把示波器探头接到MCU的PWM输出引脚,使用单次触发或者余晖模式,观察脉冲宽度的变化。

普通PWM的脉冲宽度是恒定的。把时基设置在载波周期的10倍左右,你会看到屏幕上的方波看起来完全一致,不管扫描多少次,波形都叠在同一个位置。这时用示波器的自动测量功能读取占空比,会得到一个稳定的数值,比如50.01%或者49.98%,长时间观察基本不变。

SPWM就不一样了。同样是10kHz的载波,如果你用余晖模式观察10毫秒左右的时间窗口,会看到脉冲的左右边沿并不完全重叠,而是像一把打开的扇子,脉冲宽度在连续变化。把时间轴拉长,你甚至能看到脉冲宽度呈现出疏密有致的正弦节奏。用示波器的占空比测量功能去读,数值会一直跳动,这是正常现象,因为它本身就是动态变化的。

实操中要注意的是,测量SPWM的占空比时,示波器的自动测量功能会给出一个平均值或者当前值,这个数值本身没有太大意义,别被它迷惑。真正有意义的观察是把余晖模式打开,看脉冲宽度是否按照正弦趋势平滑过渡。如果看到占空比跳变不均匀,或者卡在任何位置,说明查表数据或者比较寄存器更新时机存在问题。

3.2 差异二:长时基下包络形态完全不同

这个差异点是我觉得最“出片”的。把示波器时基切换到几十毫秒甚至100毫秒档位,通道选择直流耦合,观察整个波形的大致轮廓。

普通PWM在整个时间窗口里就是一个等宽的矩形脉冲串。因为占空比恒定,脉冲宽度不变,远看就是一条中间凹进去的矩形带。它的平均电压是一条直线,哪一段都没有起伏。

SPWM的波形轮廓则呈现出明显的正弦包络。脉冲宽度从窄变宽、再从宽变窄,逐个载波周期地变化,视觉上一个正弦周期内的脉冲群就像是被一个正弦波形状的包络包裹着。调低一些亮度、打开余晖显示,这个包络会更加清楚。这也是SPWM“正弦脉宽调制”这个名字的由来。

这个差异虽然不是直接的量化指标,但对判断系统工作是否正常非常有用。我每次调试SPWM都先看包络,如果包络不是光滑的正弦,而是有断裂、毛刺或者不对称,基本可以判断是查表点数不够、正弦波表精度不足,或者调制比设置超出了线性范围。包络一旦看起来正常,整个系统的正确性就完成了一大半。

3.3 差异三:FFT频谱分布规则完全不同

使用示波器的FFT功能,是观察PWM和SPWM内在差异的最好方式。这里需要用到带FFT功能的数字示波器,如果是DSO138这种简易示波器,可以刷带FFT的固件或者在电脑上用采集到的数据进行后处理。

普通PWM的频谱特征是离散线谱。以10kHz、50%占空比为例,FFT频谱图上会在DC、10kHz、30kHz、50kHz等频点出现明显的谱线,也就是开关频率的整数倍处集中了主要能量,能量随频率升高大致按1/n规律递减。各谱线之间的区域几乎是干净的,没有明显的连续噪声基底。这种频谱特性决定了普通PWM产生的电磁干扰主要集中在一系列明确的频点上,滤波器设计可以针对这些频点做陷波或者低通处理。

SPWM的频谱则完全换了一种形态。FFT图中最显著的不再是载波频率处的单根谱线,而是以载波频率为中心、向两侧展开的一簇边带。边带的位置出现在载波频率加减调制波频率的整数倍处,比如10kHz±50Hz、10kHz±100Hz、20kHz±50Hz等等。整个频谱的能量从低频到高频都有分布,但主要能量集中在载波频率附近的边带簇里。

用FFT功能时有几个操作要点。第一,采样时间要足够长,否则频谱分辨率太低,边带会糊成一片。第二,选择合适的窗函数,我一般用汉宁窗或者平顶窗,矩形窗对频点定位不友好。第三,把垂直刻度切换到对数坐标,这样既能看大谱线,也能看到隐藏在噪声里的低幅边带。

普通PWM的频谱干净但局限于离散频点,SPWM的频谱更弥散但带宽被搬移到载波附近。这个差异直接决定了两种方案在EMC处理上的难度:SPWM的滤波器设计通常比普通PWM更复杂,因为干扰能量分布在更宽的频带内。

3.4 差异四:滤波之后的波形“正弦度”差异

把功率输出端的LC滤波电路接上,再来对比两种波形,这个差异对你理解SPWM的实际用途帮助最大。

普通PWM通过低通滤波器之后,输出是一个平滑的直流电平。保持10kHz、50%占空比不变,LC滤波器的输出稳定在接近母线电压一半的直流电平上,几乎没有任何波动。调到30%占空比,直流电平降下来;调到80%,直流电平升上去。它本质上是一个“可控直流电源”的实现方式,滤波器只需要把开关频率的纹波滤掉即可。

SPWM通过同样的低通滤波器之后,输出是一条近似正弦的曲线。我在测试中加了简单的LC滤波,输出端明显看到50Hz正弦波,谐波失真肉眼几乎看不出明显畸变。用示波器测量通道的均值或者有效值,能读到稳定的正弦有效值。如果用带FFT功能或者数学运算通道看一下THD,会发现输出波形的主要频率分量在50Hz,开关频率及其边带分量已经被滤波器大幅衰减。

这个差异也解释了为什么SPWM多见于逆变器、UPS、电机驱动器这些需要输出正弦电压的场合,而普通PWM则更适用于LED、直流电机这类只需要调节平均功率的负载。有一点需要提醒:滤波器的截止频率要远低于载波频率、又要高于调制波频率,否则要么正弦波出不来,要么正弦波被衰减太多。

3.5 差异五:线电压利用率上限,86.6%怎么来的

这是最容易被忽视、也最值得掰扯的一个差异。注意,这里说的是“线电压利用率”,而不是占空比利用率。

先说普通PWM。因为占空比可以调整到0%到100%的任意值,输出平均电压可以从0连续调到母线电压,占空比利用率是100%。

SPWM的情况不同。它要输出正弦波形,正弦波的瞬时值有正有负,不能简单把一个几十kHz的脉冲串用于调压。在单极性SPWM中,调制比M表示正弦调制波幅值与三角载波幅值的比值,M最高只能到1。M等于1时,输出相电压基波幅值最大是母线电压的一半。对于三相系统,线电压基波幅值等于相电压基波幅值的√3倍,也就是√3乘以母线电压的一半,约等于0.866倍的母线电压。

这就是“SPWM的线电压利用率最高只有86.6%”这句话的由来。它指的是三相SPWM逆变器在理想调制比M=1的情况下,输出线电压基波峰值只能达到直流母线电压的86.6%,剩下的电压“用不出来”。打个比方,母线电压是100V,SPWM理论上最多只能输出86.6V峰值的线电压正弦波;想要输出有效值更高的交流电,就需要母线电压更高的直流源。

如果用有效值来算,SPWM线电压基波有效值是0.866Udc除以√2,约等于0.612Udc。这个数值在逆变器设计里面经常用到,选母线电压时如果忽略它,会导致输出交流电压达不到标称值。我见过不少初学者,设计逆变器要求输出220V交流,直接选了一个311V的直流母线,结果实测只有大约190V,其实就是栽在这个86.6%上面。

实测中如何验证这个差异?可以在示波器上分别测量普通PWM和SPWM的输出电压平均值。普通PWM在占空比100%时,滤波后输出等于母线电压,利用率100%。SPWM在M=1时,滤波后正弦波的峰值只能到母线电压的一半左右(单相情况下),三相线电压峰值到0.866倍。用示波器的峰峰值测量功能,对比母线电压和正弦输出电压,能直观看到中间被“吃掉”的电压差。

3.6 差异六:死区时间对波形的影响程度不同

死区时间是逆变器、H桥驱动中必须考虑的问题。普通PWM如果只是驱动单管或者单臂,比如LED调光、风扇调速,不存在上下管直通的问题,自然不需要死区,完全用不到这个概念。一旦PWM用于H桥、半桥或者三相全桥驱动,同一桥臂的上下两个管子就需要互补导通,这时必须在两个驱动信号之间插入一个“同时为低”的间隔,否则上下管会瞬间导通造成短路炸管。

死区对普通PWM的影响是固定的。以50%占空比为例,加入1微秒死区后,每个开关周期内有效导通时间固定减少1微秒,输出电压平均值降低一个固定的小量。这个误差是恒定的,占空比不变,误差也不会变,对控制精度的影响不大,通过简单的补偿就能修正。

死区对SPWM的影响就完全不同了。SPWM每个载波周期的占空比都在变化,死区造成的电压误差在调制波峰值和过零处的影响不一样。在正弦波峰值附近,占空比接近最大,死区导致的有效占空比损失相对较小;在正弦波过零附近,占空比接近0%,死区的存在可能会让本该有小幅输出电压的周期直接变成零电压输出,产生所谓的“死区钳位效应”。这会造成输出电压的基波损失和低次谐波增加,在电流过零时表现尤其明显,工程上叫“过零畸变”。

用示波器观察这个差异,把探头同时接到H桥上下管的驱动信号上,打开延迟时间测量或者双通道叠加显示。普通PWM下,你会看到两个互补信号的死区时间固定,每个周期都相等。SPWM下,死区时间虽然还是固定值,但因为脉冲宽度在变化,死区占整个周期的比例一直在变,你可以清晰看到窄脉冲位置(正弦波过零点附近)死区对脉冲形状的“侵蚀”更加明显。

我在实际项目中常用的手段是死区补偿:在SPWM调制波中添加一个与输出电流方向相关的补偿量,抵消死区造成的电压误差。这个做法的细节比较复杂,但你要相信,观察示波器上过零处的波形畸变,是判断是否需要死区补偿的最直接依据。

3.7 差异七:应用场景和系统设计的取舍逻辑

最后一个差异其实是设计层面的总结。示波器看到的波形差异,归根结底要映射回工程决策。

普通PWM适合那些把开关信号当成“电压平均值发生器”来用的场景。占空比固定、频谱离散、滤波简单、控制算法不费脑子,MCU的一个定时器就能跑得很稳。LED调光、直流风机调速、加热丝功率控制、开关电源的闭环调节,全部都在这个阵营里。它的缺点很明显:输出量只有平均电压,无法生成真正的交流波形,电动机驱动时容易产生转矩脉动和噪音。

SPWM适合那些需要输出正弦电压或者正弦电流的场景。逆变器并网、电机变频驱动、UPS、有源滤波等,这类系统的负载往往对电源品质有要求,必须让输出电压逼近正弦波。SPWM的代价是控制复杂、开关损耗高、死区问题敏感、直流母线电压利用率受限,而且对MCU的实时计算能力和定时器精度要求更高。用STM32F103做SPWM查表可以跑,但载波比不敢提得太高;换到更高主频的MCU,才能在不牺牲正弦波质量的前提下把开关频率做上去。

如果你问我怎么决定用哪种,我的回答特别简单:看你需要的到底是“一个可调的直流电平”还是“一个纯净的正弦波”。前者用普通PWM,省心省力;后者用SPWM,踏踏实实把母线电压选高20%,把死区补偿做好。示波器直接看滤波后的波形,如果畸变在可接受范围内,方案就成立。

4. 实测过程中的常见坑与排查技巧

4.1 为什么测出来的占空比在不停跳动

这个问题在测量SPWM时几乎必遇到,原因是示波器的自动测量算法默认波形是周期重复的,而SPWM的周期是“采样子周期”乘以查表点数,一个完整调制周期内有200个载波周期,自动测量窗口内显示的占空比是实时窗口内的数值,所以会在0%到50%附近跳动,取决于当前落在正弦波的哪个位置。

应对办法有两个。第一,把测量窗口锁定到单个载波周期,用Zoom功能放大到某个具体脉冲,这时占空比稳定在某个值。第二,如果想要看整周期的占空比变化趋势,建议不要依赖自动测量,直接看余晖包络或者用波形数学功能做平均值曲线。如果用的是带FFT的入门示波器,还可以从FFT边带分布来间接判断调制是否正常。

如果普通PWM的占空比读数也在跳,那就不是SPWM特性问题,而多半是触发电平设置不当,或者信号本身带上了不必要的直流偏置与噪声。先检查探头补偿和接地,再调整触发电平,通常都能解决。

4.2 触发设置和余晖显示的技巧

观察PWM和SPWM时,触发设置影响非常大。只看单个载波周期时,把触发源设置为被测通道,边沿选择上升沿,触发电平设置在信号幅度的中间位置,这样波形稳定不抖动。

观察SPWM包络时,如果还用上升沿触发,你会发现波形整体在横向跑来跑去。因为占空比在变化,上升沿的位置并不固定,示波器会不断重新触发。这种情况建议关掉普通触发,使用自动触发模式,配合余晖显示,把时基拉长到数十毫秒,让示波器自由扫描,余晖会把不同时刻的脉冲叠加出完整的包络。

很多人不知道,示波器的“Single”单次触发按钮在观察PWM初始上电行为时特别有用。上电瞬间的占空比跳变、频率建立过程,用Single能够一次性捕获。热词里有人搜“示波器single键”,这里顺便提一句:按下Single后,示波器只会采集一次触发后的波形并定格,非常适合排查上电时序和瞬时异常。

4.3 FFT测量中的分辨率、窗函数与平均处理

做FFT对比时,最先踩的坑是频谱分辨率不够。示波器的FFT基于时域采样点计算,采样时间越长,频率分辨率越高(分辨率约等于1/采样时长)。如果只看一个10kHz信号,采样时长只取100微秒,那么频率分辨率为10kHz,你根本分不清载波频率附近的边带。实测SPWM时,我把采样时长放到至少20毫秒,这样分辨率能到50Hz级别,50Hz调制波边带才清晰可见。

窗函数的选择也要讲究。观察普通PWM离散谱线,用矩形窗可以保持谱线尖锐;观察SPWM边带包络,用汉宁窗更合适,它能把边带的形状还原得更平滑,同时抑制频谱泄漏。示波器的FFT功能通常有几种窗函数选项,建议都试一遍,感受差异,不要一直用默认设置。

最后,如果示波器的FFT噪声地板太高,小幅度边带被淹没,可以把采集平均打开,比如64次平均。平均能有效抑制随机噪声,但不影响周期信号的频谱结构。这个技巧在观察高载波比、低幅边带时特别管用。

4.4 测量习惯与安全提示

最后说几个我踩过坑之后养成的习惯。第一,测量低压电路(比如12V、24V直流)时,也必须养成单手操作的习惯,避免身体形成回路。测量220V以上的功率电路时,务必使用隔离探头,或者使用隔离变压器隔离示波器供电,普通探头直接测量会产生严重的安全风险。这个问题不是小题大做,每一年都能看到因为示波器地线夹乱接导致炸机的案例。

第二,测SPWM功率输出时,示波器的地线夹只能夹在电路参考地上,绝不能夹在浮地的功率输出端上。功率输出端相对地线有高频开关电压,直接夹地线等于给示波器输入端加了一个巨大的共模电压,轻则测量失真,重则烧毁探头。

第三,记得打开示波器的带宽限制功能。测量PWM这种快沿信号时,20MHz带宽限制可以有效滤除环境高频噪声和探头振铃,让波形看起来更接近真实。只有在需要观察高端谐波或者边沿过冲时,才关闭带宽限制。我见过不少初学者被一堆高频毛刺吓到,其实打开带宽限制之后波形马上就干净了。

把7个差异点全部看完之后,你会发现PWM和SPWM并不神秘,它们只是同一个工具在不同需求下呈现出来的两种形态。普通PWM是“开关”思维,SPWM是“调制”思维,示波器则是看清这两种思维最直白的窗口。我个人这几年养成的习惯是:任何PWM相关的方案,无论听起来多简单,都要先花五分钟用示波器确认一下波形和频谱。原因很简单,信芯片手册不如信探头底下的真实波形。希望这篇文章能让你从今天开始,也多按几次“Auto Set”之外的按键,把示波器用成自己的眼睛。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询