3、SVPWM调制技术:空间矢量合成原理、扇区判断与作用时间计算、死区时间插入与补偿

各位同学,今天我们来聊聊SVPWM。说实话,在电机控制里,SVPWM绝对是个绕不开的核心技术。我当年刚入行时,总觉得这东西玄乎,不就是个调制方式嘛,能有多大区别?直到我在一个伺服项目里,用SPWM死活调不出高速性能,换成SVPWM后,母线电压利用率直接提升了15%,电机跑起来那叫一个顺滑。嗯,从那以后,我再也不敢小看它了。

3.1 空间矢量合成原理

咱们先搞清楚一个问题:为什么要搞空间矢量合成?

你想想看,三相逆变器有6个开关管,一共8种开关状态。其中6个是非零矢量,2个是零矢量。这6个非零矢量在空间上把360°分成了6个扇区,每个扇区60°。我们的目标,就是用这6个固定的矢量,去合成任意角度、任意大小的目标电压矢量。

说白了,就是“用已知拼未知”。

具体怎么拼?靠的是伏秒平衡原理。假设我们想要一个目标矢量 Vref,它落在某个扇区里。我们就用这个扇区边界的两个非零矢量 VxVy,再加上零矢量 V0V7,通过分配它们的作用时间,让合成效果等于目标矢量。

核心公式(伏秒平衡):

Vref × Ts = Vx × Tx + Vy × Ty + V0 × T0

其中 Ts 是PWM周期,Tx + Ty + T0 = Ts

这里有个细节我提醒一下:零矢量不产生旋转磁场,它只是用来“填满”剩下的时间。但零矢量的选择会影响开关损耗和电流纹波,这个后面会讲到。

3.2 扇区判断与作用时间计算

好,现在我们知道要合成矢量了。第一步,得先判断目标矢量落在哪个扇区。

怎么判断?我习惯用 Clark变换 后的 α-β 分量来判断。具体做法是:

  1. 先算出三个中间变量:
    B1 = Vβ
    B2 = (√3/2) × Vα - (1/2) × Vβ
    B3 = -(√3/2) × Vα - (1/2) × Vβ
  2. 然后根据这三个值的符号,查表得到扇区号 N:
    N = sign(B1) + 2 × sign(B2) + 4 × sign(B3)

嗯,这里要注意,sign() 函数返回1表示正数,返回0表示负数。算出来的N值在1到6之间,对应6个扇区。

我在项目中遇到过一个问题:当目标矢量刚好落在扇区边界上时,判断结果会抖动。后来我加了一个小滞回区,问题就解决了。这个经验分享给大家。

扇区判断完了,接下来算作用时间。以扇区I为例,两个非零矢量是 V1(100)和 V2(110),它们的作用时间分别为:

// 扇区I的作用时间计算
T1 = (√3 × Ts / Vdc) × (Vα × sin(60°) - Vβ × cos(60°))
T2 = (√3 × Ts / Vdc) × (-Vα × sin(0°) + Vβ × cos(0°))

// 简化后
T1 = (√3 × Ts / Vdc) × ( (√3/2) × Vα - (1/2) × Vβ )
T2 = (√3 × Ts / Vdc) × Vβ

其他扇区的公式类似,只是角度偏移了60°。实际工程中,我们一般会提前算好一个查找表,或者用统一的公式加上扇区偏移量来处理,这样代码更简洁。

我的小技巧: 在计算作用时间时,如果发现 T1 + T2 > Ts,说明目标矢量已经超出了线性调制区。这时候需要做“过调制处理”,把 T1 和 T2 按比例缩小。我曾经在一个项目中忘了做这个处理,结果电机在高速时电流波形严重畸变,找了半天才找到原因。

3.3 死区时间插入与补偿

死区时间,说白了就是防止上下桥臂直通而插入的一段“等待时间”。

为什么需要死区?因为开关管不是理想器件,关断需要时间。如果上管还没完全关断,下管就导通了,那就直通了,轻则烧保险,重则炸管子。我亲眼见过一次IGBT模块炸裂的场景,那声音,嗯,终身难忘。

死区时间怎么插?通常的做法是:

  • 在PWM信号的上升沿插入死区:让下管先关断,等死区时间过后,上管再导通。
  • 在PWM信号的下降沿插入死区:让上管先关断,等死区时间过后,下管再导通。

但死区时间会带来一个问题:电压误差。因为死区期间,电流会通过续流二极管续流,导致实际输出电压与理想值有偏差。这个偏差在电流过零时尤其明显,会造成电流波形畸变和转矩脉动。

怎么补偿?我常用的方法是 死区时间补偿

  1. 检测电流方向(正还是负)。
  2. 根据电流方向,在PWM占空比上加上或减去一个补偿量。
  3. 补偿量的大小等于死区时间对应的占空比。

注意: 死区补偿的关键在于电流方向检测的准确性。如果电流过零检测不准,补偿反而会引入更大的误差。我建议在电流过零附近加一个滞回区,或者使用更精确的电流采样方法。

下面我画了一张SVPWM的整体流程图,方便大家理解整个调制过程:

SVPWM调制技术核心流程 Vα, Vβ 输入 扇区判断 (N = 1~6) 作用时间计算 (T1, T2, T0) 过调制判断 死区时间插入与补偿 输入:Clark变换后的α-β分量 输出:三相PWM占空比 关键:扇区判断准确、时间计算精确 难点:死区补偿与过调制处理

最后,关于死区补偿,我再多说一句。我曾经在一个项目中,死区时间设了3μs,结果电机在低速运行时噪声特别大。后来我把死区时间优化到1.5μs,同时加上了电流方向滞回判断,噪声问题就解决了。所以,死区时间不是越大越好,够用就行。

好了,SVPWM的核心内容就这些。记住:扇区判断是基础,时间计算是核心,死区补偿是关键。把这三点吃透了,SVPWM这块就算拿下了。


专注资料整理