搞电机控制的兄弟,十个里有八个第一眼看到SVPWM实测波形都会犯嘀咕。明明仿真里相电压、线电压画得清清楚楚,一到示波器上就全乱套了,端电压当相电压、线电压测出来是方波、相电压理论上是正弦怎么实测全是PWM脉冲?我最早做永磁同步电机FOC的时候,就干过把端电压当成相电压的蠢事,对着0到300V的方波看了半天,还跟同事争论这到底算不算马鞍波。后来翻了TI和ST的官方应用笔记,再结合示波器一点点把概念捋清楚,才算真正把这几个电压搞明白。今天就把这些东西一次讲清楚,顺便把TI和ST官方笔记里跟波形相关的工程要点一并解读掉,希望能帮你少走几个月的弯路。
1. 先搞懂三个电压:端电压、相电压、线电压到底差在哪
很多人在这一步就卡住了,不是数学不行,而是对逆变器电路的结构没有建立起直观的空间感。先别急着拿示波器探头到处乱戳,我们把三相两电平逆变器的电路结构盘一遍,搞清楚每个电压到底是从哪个节点量到哪个节点的。
1.1 从三相全桥拓扑看电压节点
三相全桥逆变器一共六个开关管,上桥臂三个、下桥臂三个,输出端就是U、V、W三个端子。直流母线正端叫DC+,负端叫DC-。这是做电机控制的人每天都要面对的电路,但很多人对这个拓扑里的“地”没有概念。
电机这端通常是星形连接,三个绕组的一端分别接U、V、W,另一端在中性点N汇在一起。于是就有了这么几个经常被混用的电压:
- 端电压:逆变器输出端(比如U点)相对于直流母线负端DC-的电压,也常叫对地电压、桥臂输出电压。这个电压的参考点是DC-,不是电机的中性点。
- 相电压:电机某相绕组两端的电压,也就是U点相对于绕组中性点N的电压,或者说是电机端口到中性点之间的电压。严格意义上是电机真正承受的电压。
- 线电压:两个输出端之间的电压,比如U-V、V-W、W-U之间的电压差,是电机外部可以直接测量的相间电压。
问题的根源就在于很多示波器探头的地线夹默认夹在DC-上,测出来的是U对DC-的波形,也就是端电压,但心里想着的却是相电压。这一字之差,波形和数值全都对不上号。
更具体一点说,端电压是带斩波的开关波形,相电压在PWM斩波的占空比变化里,线电压是两个端电压的差值,本质上是双极性脉冲。这三个电压在数学上可以画等号转换,但在物理上测量的位置完全不同,必须在电路图上有明确的指向感。
1.2 三种波形的理论长相
先剧透一下结论,让你在示波器上看到波形的时候心里有底。
端电压的标准长相是:0V和Vdc之间来回跳变的PWM脉冲序列。上桥臂导通时输出接近Vdc,下桥臂导通时输出接近0V,中间会有死区时间,之后才能切换。不同扇区里脉宽按正弦规律变化,整个包络呈马鞍形。换句话说,端电压并不是一路稳定的直流,也不是正弦波,而是一串占空比在变化的矩形波。
线电压的长相是:在+Vdc、0、-Vdc之间跳变的双极性脉冲序列。用两路探头分别测U、V对DC-的端电压,再做差得到的就是线电压。这个波形看起来跟端电压很不一样,负半周会跑到负压去,脉冲宽度和极性都在变。
相电压的长相要分两种情况看。如果直接看PWM原始波形,它也是0到Vdc之间的单极性脉冲,只是脉冲宽度按照马鞍波的方式变化;如果你用示波器的低通滤波或数学平均去看它的平均分量,得到的是一条马鞍形曲线,近似正弦波但顶部被压平了,这就是SVPWM里常说的注入零序分量之后的效果。
这里要特别强调,SVPWM的相电压波形不是纯正弦。纯正弦波的相电压是SPWM的典型特征,但SPWM的母线利用率只有1.0。SVPWM通过把三次谐波、零序分量叠加到三相调制波里,把正弦波峰值往下压了约13.4%,从而在同样的母线电压下输出更大的基波电压,母线利用率提高到1.1547,也就是2除以根号3。这个15.47%的提升,就是SVPWM相比SPWM最大的工程价值。
2. 示波器实测:三种波形应该怎么接、怎么测
理论讲完了,实操才是大头。你以为拿一个探头就能把三种波形全测清楚?天真了。
2.1 工具准备与接线方案
先说测试环境的几个关键条件。
第一,探头选择。端电压测量用普通无源探头可以胜任,但前提是示波器和逆变器没有共地问题。线电压、相电压如果不想冒风险,强烈建议用差分探头。差分探头的本质是同时测量两个点的电位差,而不是依赖示波器内部的参考地,这样能大幅减少地环路干扰,尤其适合测浮地信号。
第二,示波器通道和数学功能。测线电压时可以用两路通道分别接U和V,然后通过数学通道做CH1减CH2,这跟用差分探头测出来的结果在理想情况下是一样的,但前提是两路探头增益一致、延时一致,否则高频下会出现明显的振铃误差。低频PWM测量时问题不大,高频切换时建议还是用差分探头。
第三,触发设置。SVPWM的PWM周期内信号变化很快,但三个扇区切换时波形会有明显差异。实测包络时建议把时基调到几十毫秒甚至几百毫秒,用PWM的同步信号或者某一相桥臂的上升沿作为触发源,再打开余辉显示,这样PWM脉冲包络才会稳定地叠加显示出来。
第四,安全第一。直流母线带电时,严禁用普通探头的地线夹去夹DC-再拿探头乱测。原因是示波器探头地线夹和大地之间是直通的,如果直流母线负极没有可靠隔离或者你的系统接了其他地,一个不留神就是母线直接对地短路,轻则烧探头,重则炸模块。
2.2 实测操作步骤与波形记录
我以常见的10kHz开关频率、300V直流母线、Y接电机为例,走一遍完整的实测流程。
第一步,测端电压。示波器用1x或10x档位,探头地线夹接DC-,探头表笔接U点。此时示波器屏幕上会出现0V到300V之间的方波脉冲序列,频率就是10kHz,周期100微秒。重点观察脉冲宽度的变化趋势,不同时刻脉冲宽度不同,这就是SVPWM的调制在起作用。
第二步,测线电压。调出第二路通道,探头接V点,同样以DC-为参考。用数学通道CH1-CH2得到U相对V相的电压。这时候屏幕上的波形变成正负交替的双极性脉冲:当U上桥臂导通且V下桥臂导通时,U-V接近+Vdc;当U下桥臂导通且V上桥臂导通时,U-V接近-Vdc;当同组桥臂都处于相同开关状态时,U-V接近0。你还会看到在死区时间内出现短暂的高阻态或钳位情况,这是正常的。
第三步,测相电压。这是最容易翻车的一步。要测U相绕组上的真实电压,探头接U点,另一个探头或者差分探头接到电机的中性点N,测量U和N之间的电位差。如果电机引出中性点,直接接;如果电机没引出,可以用三个等值电阻做一个人工中性点,将三个电阻的一端分别接U、V、W,另一端并在一起作为虚拟N点。注意人工中性点在高频下有阻抗误差,测出来的波形只能近似看趋势,不能当作精确值。
最后把时基拉长到几十毫秒,打开余辉模式,观察整个基波周期内PWM脉宽的变化。你会看到端电压的平均包络呈马鞍形,相电压也是马鞍形。这就验证了前面的理论。
2.3 为什么相电压是马鞍波:零序分量注入的直观解释
马鞍波这个长相,用示波器看完以后,很多人会问一个问题:为什么相电压不是正弦波?电机不是需要正弦电压驱动吗?
这里要纠正一个理解误区。电机需要的是正弦电流,而不是正弦电压。三相绕组对称,电流是正弦的时候,反电动势也是正弦,电压里自然包含谐波分量。SVPWM注入的零序分量在三相之间是一个共同的偏移量,它不会在绕组之间产生电流,所以电机的线电压和电流依然是正弦的。
用一个生活化的类比来说,三个人并排跑步,速度都是正弦变化的,但地面上有一条共同的起伏跑道,三个人同时上下颠。你只看两个人之间的相对位置,跑步速度还是正弦的;但你去看其中一个人相对于绝对地面的绝对位置,波形就不是正弦了,而是叠加了共同颠簸的分量。零序分量就是那个共同颠簸,相电压就是那个绝对位置。
所以用示波器测相电压看到马鞍波,完全不必惊慌,这是SVPWM的正常输出形态。如果用示波器测相电压得到的是规规矩矩的正弦波,反而要怀疑你到底测的是不是SVPWM控制下的相电压,或者是不是被低通滤波器滤掉了太多信息。
3. SVPWM核心计算环节拆解:扇区判断、作用时间与公共量推导
前面讲的都是电压波形的表层现象,要真正理解为什么脉冲宽度那样变化,还是得回到SVPWM的计算核心上来。很多人在网上搜到的资料只给结论不给推导,尤其是“两个非零电压矢量的作用时间所需的中间变量(公共量)”这一步,几乎没有人把来龙去脉讲清楚。
3.1 扇区判断到底在做什么
SVPWM的思想是把三相系统放到静止坐标系里看。三个桥臂的开关状态组合成6个有效电压矢量和2个零矢量,6个有效矢量把平面分成6个扇区,每个扇区60度。控制器的目标就是按照参考电压矢量的方向,选择当前扇区相邻的两个有效矢量,用它们的组合去等效合成这个参考矢量。
扇区判断其实可以不用三角函数。最常用的是基于三相电压分量或者两相静止坐标分量的符号和比例关系来判断。比如定义三个中间判断量,取它们的正负号和特定组合,就能得到扇区序号。这个判断本质上是把参考矢量投影到三个轴上去看它落在哪个60度区间,跟数学上判断象限是一个思路,只是被优化成了适合控制器硬件的整数运算。
很多新手一上来就纠结要不要用atan2函数去算角度,其实完全没有必要。SVPWM的工程实现里,绝大多数代码都不用反正切,而是用电压分量的大小关系做比较判断,效率和精度都更高。
3.2 两个非零电压矢量的作用时间与中间变量推导
一旦确定了参考矢量在哪个扇区,接下来就要计算这个扇区相邻两个有效矢量各自要作用多长时间,才能在一个开关周期内平均出指定的参考电压。
以扇区I为例,参考矢量落在V1(100)和V2(110)之间。假设开关周期为Ts,V1作用时间为T1,V2作用时间为T2,零矢量作用时间为T0,那么有:
T1 + T2 + T0 = Ts
根据伏秒平衡,参考电压矢量乘以开关周期,等于两个有效矢量分别乘以各自作用时间之后的矢量和。把V1和V2在静止坐标系里的分量写出来,可以得到两个方程,一个对应轴,一个对应轴方程。两个未知数、两个方程,解出来就是:
T2 = √3 × Vβ × Ts / Vdc
T1 = (1.5 × Vα - √3/2 × Vβ) × Ts / Vdc
其中Vα、Vβ是参考矢量在静止两相坐标系下的分量,Vdc是母线电压。这个推导过程其实就是解一个二元一次方程组,不复杂,但这一步的物理意义极其重要,它揭示了SVPWM的本质:在一个开关周期内用矢量叠加去逼近目标电压。
在实际工程代码里,并不需要每一个扇区都重新推导一遍公式。更常见的做法是预先定义三个中间变量X、Y、Z,它们的表达式与扇区无关,然后在每个扇区通过查表映射出对应的T1和T2。这就是热搜词里反复出现的“公共量推导”的来源。
这三个公共量本质上就是不同方向上相邻矢量的伏秒折算值。虽然不同厂商代码里的命名不同,TI管它们叫X、Y、Z,ST的底层库可能直接用T1、T2暂存器,但思想是一模一样的:先把公共计算量算出来,再用查表的方式省掉重复的浮点运算。对实时性要求高的电机控制来说,这种优化非常关键。
我举个具体数字帮助大家理解。假设Vdc=300V,Ts=100微秒,参考矢量落在扇区I,测量得到Vα=80V、Vβ=60V。代入上面的公式:
T2 = 1.732 × 60 × 100 / 300 = 34.6微秒
T1 = (1.5 × 80 - 0.866 × 60) × 100 / 300 = 22.7微秒
T0 = 100 - 34.6 - 22.7 = 42.7微秒
这个例子说明,在一个PWM周期里,接近一半时间都在输出零矢量,另外一半时间用于两个有效矢量,最终合出来的参考矢量方向和大小跟目标一致。如果你在示波器上看到脉冲宽度大体按照这个比例在变化,就说明SVPWM计算是正常的。
3.3 七段式发波与死区设置
算出了T1、T2、T0之后,还有一个关键的排列问题:零矢量到底插在哪、怎么插。工程上最常用的是七段式SVPWM,一个开关周期被切分成七段,发波顺序是000-100-110-111-110-100-000。这样排列的好处是每次只有一相开关状态发生变化,开关损耗小,谐波也相对集中,这是TI和ST官方笔记都推荐的做法。
七段式的名称来自一个周期内开关模式的数目。首尾是零矢量000,中间是零矢量111,两个有效矢量V1和V2在过渡段各出现两次。用示波器观察端电压波形时,如果看到的脉冲串在一个周期内有明显的对称性,那基本就是中心对齐的七段式发波。
发波顺序确定之后,死区时间才是影响实测波形的隐藏因素。IGBT和MOSFET的关断时间不是瞬时的,如果上桥臂还没完全关断就打开下桥臂,母线相当于短路,瞬间就是几十安培以上的大电流。所以必须插入死区时间,典型值是1到3微秒。死区时间在示波器上会表现为PWM边沿的短暂平台或毛刺,你看着像异常,其实是正常工作状态。
4. TI/ST官方笔记解读:从理论波形到工程实现
TI和ST在电机控制领域都积累了海量的官方资料,但资料多不等于好啃。很多人下载了一堆PDF,打开一看满页公式和寄存器配置,头都大了。这里我把跟波形和SVPWM实现直接相关的关键点拎出来讲。
4.1 TI的SVPWM实现要点
TI的电机控制库和FOC应用报告里,对SVPWM的讨论非常细致。TI把SVPWM模块封装成SVGEN宏,内部实现的基本思路就是前面讲的扇区判断、中间变量计算、T1/T2查表和七段式发波顺序生成。在TI的代码库里,SVPWM的输入是两相静止坐标系下的电压分量Vα、Vβ,输出是三路比较值,直接接到PWM比较寄存器。
TI的应用报告里有一个很容易被忽略但很重要的点:标幺化。在TI的库中,电压、电流、速度这些物理量通常都被归一化到1.0以内,这样定点DSP计算时不会溢出。这个标幺化在做波形观察时的直接表现是,你往代码里看到的是0到1之间的数值,而不是实际电压值。用示波器测的时候,要把这些标幺值换算回实际电压,不然对不上。
另外TI专门提到了过调制区。当调制比超过1.0之后,线性调制区内的T1加T2就会超过开关周期,这时候必须做限幅处理。一种处理方式是强制把超出部分截断,另一种是保持矢量的方向不变但缩小模长。过调制会让端电压波形出现明显的时段内全高或者全低的阻塞现象,用示波器看就是PWM脉冲在某个区间突然变成持续高电平或持续低电平,这个现象是过调制判断的直观依据。
4.2 ST的STM32高级定时器实现
ST在STM32的电机控制库(比如X-CUBE-SPN系列和FOC SDK)里,SVPWM通常通过高级定时器TIM1或TIM8实现。STM32的高级定时器优势在于能直接输出三相互补PWM,并且自带硬件死区插入功能,不需要软件额外干预,这在实时性要求高的场景下非常有价值。
中心对齐模式是SVPWM的常用配置。定时器计数器先向上计数再向下计数,输出PWM的中点在一个周期内对称,特别适合七段式发波。此时PWM频率由定时器时钟分频、自动重装载值和计数模式共同决定,配置的时候要注意倍频和死区时间寄存器的含义,搞错了波形会看起来对称但频率完全不对。
ST的官方笔记里,关于波形部分最实用的一点是同时使用定时器的三个比较通道输出三路PWM,而这三路PWM的占空比分别对应SVPWM计算出来的三个比较值。用示波器同时观察三路PWM时,你会发现任意时刻最多只有一相桥臂在切换,另外两相中至少有一相保持在固定电平,这是七段式发波顺序的直接体现。
4.3 官方笔记和实测波形对照
把TI/ST的官方笔记和实测波形放在一起看,能得出几个重要结论。
第一,理论波形和实测波形之间的差异,主要来自死区时间和器件非理想特性。TI和ST都承认,死区会导致实际输出电压波形相对参考电压出现畸变,特别是在零电流穿越附近。如果示波器上看到脉冲边沿有毛刺,而且脉冲宽度特别窄,大概率就是死区或者窄脉宽控制造成的。
第二,两家官方资料在SVPWM限幅和最小脉宽处理上达成了共识。当调制比较低时,SVPWM计算出的比较值可能小于死区时间,导致脉冲宽度不足以安全开关。工程上一般通过钳位、最小占空比限制或者周期延伸来处理。这个在实测时表现为PWM在某些相位处少量丢失脉冲,属于正常现象。
第三,官方笔记都强调了一点:SVPWM的输出能力受母线电压制约。母线电压越低,能合成的参考矢量范围越小,调制比越受限。用示波器测波形时,如果你发现某个扇区附近脉冲明显变宽甚至进入持续导通状态,而母线电压同时跌得厉害,那说明已经进入了过调制甚至弱磁边界了。
5. 实测中的常见问题与排查技巧
最后这部分,全部是实战中踩过坑之后总结出来的干货。我按照问题现象、原因、排查思路的顺序整理出来,每次调试遇到波形不对,先对照这张表找方向,比盲猜高效得多。
5.1 测量安全与探头接地的坑
第一个要强调的就是安全。测SVPWM波形的时候,变频器或者电机控制板的地和市电地之间并不总是隔离的。如果直流母线负极直接接到了大地,普通探头的地线夹夹到DC-问题不大;但如果系统是浮地设计,地线夹一夹上去,就相当于把直流母线负极直接短路到大地,瞬间大电流可能烧掉探头或驱动板。
有一个典型场景是:你用普通探头地线夹夹在DC-上测U相端电压,测得挺好,然后想换到V相,直接把地线夹从DC-拿下来去夹U点,这就等于把母线负极通过示波器地线接到了U点,造成桥臂直通。正确做法是地线夹始终接同一个参考点,探针去换测量点,绝不能反过来。
第二个大坑是两路探头做差测线电压时,两路探头的地线夹都接在DC-上,这在物理上没有错,但两路探头的共模抑制比在高频下会变差。如果你发现测出来的线电压在PWM边沿处有剧烈振铃,先看看是不是探头地线太长。把地线夹换成接地弹簧,缩短地回路,能显著减少振铃。
5.2 波形异常的典型原因
实测中最常见的波形异常,一个是包络不对,一个是毛刺多,还有一个是幅值不对。
包络不对,比如理论马鞍波测出来变成了明显的尖峰波或者削底波,大概率是扇区判断或者T1/T2计算方向反了。这时候不要先怀疑示波器,回到代码里查一下扇区方向、坐标变换的符号习惯跟电机线序是否一致。U相接错顺序,波形看起来也会有规律,但包络形状会错位。
毛刺多,常见原因有这么几类:PWM开关边沿的寄生振荡、探头地线过长、示波器带宽设置过高导致高频噪声放大、死区时间不足上下管共通。排查顺序是先看毛刺出现的位置是否与PWM边沿对齐,如果是,那就是开关振铃;如果杂乱出现,那可能是外部干扰串入。
幅值不对,比如实测端电压低电平不是0V而是几伏甚至几十伏,先检查功率器件的饱和压降和续流二极管压降,再看是不是在死区时间内示波器采到了上下桥臂都关断时通过感性负载续流的钳位电压。这个不是故障,是正常现象。
5.3 快速排查速查表
为了方便现场调试,我把常见现象和对应思路整理成速查表。
| 现象 | 可能原因 | 排查动作 |
|---|---|---|
| 端电压全是0V或高电平 | PWM没触发、驱动芯片故障、使能信号异常 | 用示波器查PWM输出引脚和驱动芯片输入 |
| 六路PWM缺一路 | 定时器通道配置或引脚复用错误 | 先看定时器寄存器,再查引脚功能表 |
| 相电压包络不像马鞍波 | 扇区判断错误、坐标变换符号错、电机线序接反 | 用电流传感器和编码器反馈对照电角度 |
| 波形边沿振铃严重 | 探头地线过长、寄生电感、驱动电阻偏大 | 换接地弹簧,缩小回路,适当调小栅极电阻 |
| 低电平在死区瞬间抬高 | 上下桥臂同时关断的续流时期 | 属正常现象,重点看死区时间是否合理 |
| 部分扇区区间的PWM持续拉满 | 进入过调制或弱磁区 | 降低调制深度,或检查母线电压是否偏低 |
| 两路做差测线电压直流偏置大 | 两路探头增益不一致、零漂未校准 | 做一次相同电压的偏置校准再测 |
排查的顺序建议是先确认测量无误,再怀疑SVPWM计算,最后检查功率硬件。很多看起来像是SVPWM算法问题的情况,最后发现是示波器测量方式不对,白白浪费半天时间。
最后再分享一个我自己习惯的做法:调试SVPWM时,不要只盯着一相波形看,最好是三路端电压同时显示,然后对照逻辑分析仪抓的六路PWM开关信号。三路端电压的相位关系、脉宽变化一旦同时出现在屏幕上,SVPWM的扇区切换、发波顺序哪里有问题基本一眼就能看出来。现在很多示波器支持解码功能,把PWM当数字信号解出来看切换序列,比单纯看模拟波形更直观。这个习惯帮我排查过好几次似是非是的奇怪问题,建议你也试试。