3、SVPWM调制技术:空间矢量合成原理、扇区判断与作用时间计算、死区时间插入与补偿
各位同学,今天我们来聊聊SVPWM。说实话,在电机控制里,SVPWM绝对是个绕不开的核心技术。我当年刚入行时,总觉得这东西玄乎,不就是个调制方式嘛,能有多大区别?直到我在一个伺服项目里,用SPWM死活调不出高速性能,换成SVPWM后,母线电压利用率直接提升了15%,电机跑起来那叫一个顺滑。嗯,从那以后,我再也不敢小看它了。
3.1 空间矢量合成原理
咱们先搞清楚一个问题:为什么要搞空间矢量合成?
你想想看,三相逆变器有6个开关管,一共8种开关状态。其中6个是非零矢量,2个是零矢量。这6个非零矢量在空间上把360°分成了6个扇区,每个扇区60°。我们的目标,就是用这6个固定的矢量,去合成任意角度、任意大小的目标电压矢量。
说白了,就是“用已知拼未知”。
具体怎么拼?靠的是伏秒平衡原理。假设我们想要一个目标矢量 Vref,它落在某个扇区里。我们就用这个扇区边界的两个非零矢量 Vx 和 Vy,再加上零矢量 V0 或 V7,通过分配它们的作用时间,让合成效果等于目标矢量。
核心公式(伏秒平衡):
Vref × Ts = Vx × Tx + Vy × Ty + V0 × T0
其中 Ts 是PWM周期,Tx + Ty + T0 = Ts。
这里有个细节我提醒一下:零矢量不产生旋转磁场,它只是用来“填满”剩下的时间。但零矢量的选择会影响开关损耗和电流纹波,这个后面会讲到。
3.2 扇区判断与作用时间计算
好,现在我们知道要合成矢量了。第一步,得先判断目标矢量落在哪个扇区。
怎么判断?我习惯用 Clark变换 后的 α-β 分量来判断。具体做法是:
- 先算出三个中间变量:
B1 = Vβ
B2 = (√3/2) × Vα - (1/2) × Vβ
B3 = -(√3/2) × Vα - (1/2) × Vβ - 然后根据这三个值的符号,查表得到扇区号 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信号的下降沿插入死区:让上管先关断,等死区时间过后,下管再导通。
但死区时间会带来一个问题:电压误差。因为死区期间,电流会通过续流二极管续流,导致实际输出电压与理想值有偏差。这个偏差在电流过零时尤其明显,会造成电流波形畸变和转矩脉动。
怎么补偿?我常用的方法是 死区时间补偿:
- 检测电流方向(正还是负)。
- 根据电流方向,在PWM占空比上加上或减去一个补偿量。
- 补偿量的大小等于死区时间对应的占空比。
注意: 死区补偿的关键在于电流方向检测的准确性。如果电流过零检测不准,补偿反而会引入更大的误差。我建议在电流过零附近加一个滞回区,或者使用更精确的电流采样方法。
下面我画了一张SVPWM的整体流程图,方便大家理解整个调制过程:
最后,关于死区补偿,我再多说一句。我曾经在一个项目中,死区时间设了3μs,结果电机在低速运行时噪声特别大。后来我把死区时间优化到1.5μs,同时加上了电流方向滞回判断,噪声问题就解决了。所以,死区时间不是越大越好,够用就行。
好了,SVPWM的核心内容就这些。记住:扇区判断是基础,时间计算是核心,死区补偿是关键。把这三点吃透了,SVPWM这块就算拿下了。