1. SVPWM 基础回顾:空间矢量调制原理、扇区判断与作用时间计算、七段式与五段式 SVPWM 对比
各位工程师朋友,咱们这门课叫《SVPWM 导致速度震荡的排查》,但一上来就讲排查,那是不现实的。你得先搞清楚 SVPWM 到底是怎么工作的,才能知道它哪里会出问题。
我见过不少同事,代码调了好几天,速度就是抖,最后发现是扇区判断写错了。嗯,这种坑,咱们先填上。
1.1 空间矢量调制原理
SVPWM 的全称是 Space Vector Pulse Width Modulation,中文叫空间矢量脉宽调制。说白了,它不是像 SPWM 那样单纯调正弦波,而是从电机定子磁链的角度去控制电压。
你想想看,电机要转得顺,定子磁链得是个圆。SVPWM 就是通过六个功率管开关,合成一个旋转的电压矢量,让磁链轨迹尽量逼近圆形。
核心思想:用 8 个基本电压矢量(6 个非零矢量 + 2 个零矢量)去合成任意方向、任意大小的目标电压矢量。
这 8 个矢量在 α-β 坐标系里画出来,就是一个正六边形,分成 6 个扇区。每个扇区 60 度。
1.2 扇区判断与作用时间计算
有了目标电压矢量 Uref,第一步就是判断它在哪个扇区。怎么判断?看 Uα 和 Uβ 的符号和比例关系。
我习惯用下面这个公式,简单粗暴:
// 扇区判断辅助变量
B1 = Uβ
B2 = √3 * Uα - Uβ
B3 = -√3 * Uα - Uβ
// 扇区号计算
N = 4*sign(B3) + 2*sign(B2) + sign(B1)
// 查表得到扇区号
switch(N) {
case 1: sector = II; break;
case 2: sector = VI; break;
case 3: sector = I; break;
case 4: sector = IV; break;
case 5: sector = III; break;
case 6: sector = V; break;
}
我的经验:扇区判断最容易出错的地方是符号函数 sign() 的实现。记得处理零值,否则在扇区边界附近会出现跳变,导致速度抖动。
扇区确定后,就该算两个相邻矢量的作用时间了。以扇区 I 为例:
| 参数 | 公式 | 说明 |
|---|---|---|
| X | √3 * Uβ * Ts / Udc | 中间变量 |
| Y | (3/2 * Uα + √3/2 * Uβ) * Ts / Udc | 中间变量 |
| Z | (-3/2 * Uα + √3/2 * Uβ) * Ts / Udc | 中间变量 |
| T1 | Z(扇区 I) | 第一个矢量作用时间 |
| T2 | Y(扇区 I) | 第二个矢量作用时间 |
| T0 | Ts - T1 - T2 | 零矢量作用时间 |
注意:如果 T1 + T2 > Ts,说明发生了过调制。这时候需要等比例缩小 T1 和 T2,否则电流波形会畸变,电机噪音变大,速度也会震荡。
1.3 七段式与五段式 SVPWM 对比
作用时间算完了,怎么安排开关顺序?这里有两种主流方式:七段式和五段式。
七段式,顾名思义,一个 PWM 周期里开关状态切换 7 次。它的特点是:每次切换只改变一相开关状态,谐波小,但开关损耗大。
五段式呢?一个周期只切换 5 次。它把某个零矢量去掉,或者把某个非零矢量合并,开关损耗能降低 1/3 左右,但谐波会大一些。
我给大家列个对比表:
| 对比项 | 七段式 SVPWM | 五段式 SVPWM |
|---|---|---|
| 开关次数/周期 | 7 次 | 5 次 |
| 开关损耗 | 较高 | 降低约 33% |
| 谐波含量 | 较低(THD 小) | 较高(THD 大) |
| 电流纹波 | 小 | 大 |
| 零矢量分配 | U₀ 和 U₇ 各占一半 | 只用一个零矢量 |
| 适用场景 | 对电流质量要求高的场合 | 对效率要求高、散热受限的场合 |
七段式的开关序列长这样(以扇区 I 为例):
// 七段式:U₀(000) → U₁(100) → U₂(110) → U₇(111) → U₂(110) → U₁(100) → U₀(000)
// 时间分配:T0/4 | T1/2 | T2/2 | T0/2 | T2/2 | T1/2 | T0/4
五段式呢?我直接去掉 U₇,只用 U₀ 做零矢量:
// 五段式:U₀(000) → U₁(100) → U₂(110) → U₂(110) → U₁(100) → U₀(000)
// 时间分配:T0/2 | T1/2 | T2 | T2 | T1/2 | T0/2
选型建议:如果你做的是伺服驱动器,对速度平稳性要求高,我建议用七段式。如果你做的是风机、水泵这类对成本敏感、散热条件差的设备,五段式更合适。
我曾经在一个项目中,为了省成本用了五段式,结果电机在低速时速度波动明显。后来换成七段式,问题就解决了。嗯,这就是个典型的「SVPWM 导致速度震荡」案例,后面我们会详细讲。
好了,这一章的基础知识就到这里。记住:扇区判断别写错,作用时间别溢出,七段五段选对型。后面咱们就开始排查实战了。