3. 电压空间矢量合成:基本电压矢量、扇区划分、矢量合成原理
好,咱们进入SVPWM最核心的部分——电压空间矢量的合成。说实话,很多初学者看到那一堆矢量图和公式就头大。我当年也一样,觉得这东西玄乎得很。但等你真正搞懂了,就会发现它其实很直观。
说白了,SVPWM就是想让电机得到一个圆形的旋转磁场。但逆变器只能输出几个固定的电压方向,怎么办?那就用这几个固定方向去拼凑出任意方向和大小的电压矢量。这就是“合成”的由来。
3.1 基本电压矢量:逆变器的“家底”
先看看我们手头有什么牌。一个典型的三相两电平逆变器,有6个开关管。上下桥臂不能同时导通,所以每一相只有两种状态:上管导通(输出正母线电压)或下管导通(输出负母线电压)。
我们把上管导通记为“1”,下管导通记为“0”。那么三相组合起来,一共有2³ = 8种状态。
| 状态编号 | a相 | b相 | c相 | 矢量符号 | 说明 |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | U₀(000) | 零矢量 |
| 1 | 1 | 0 | 0 | U₁(100) | 基本矢量 |
| 2 | 1 | 1 | 0 | U₂(110) | 基本矢量 |
| 3 | 0 | 1 | 0 | U₃(010) | 基本矢量 |
| 4 | 0 | 1 | 1 | U₄(011) | 基本矢量 |
| 5 | 0 | 0 | 1 | U₅(001) | 基本矢量 |
| 6 | 1 | 0 | 1 | U₆(101) | 基本矢量 |
| 7 | 1 | 1 | 1 | U₇(111) | 零矢量 |
这里面,U₀和U₇是零矢量,输出电压为零。剩下的U₁到U₆,就是6个非零基本电压矢量。它们把整个平面分成了6个扇区,每个矢量之间相差60度。
关键点:这6个基本矢量的幅值都是(2/3)·Vdc(Vdc是母线电压)。它们的空间位置是固定的,不能连续变化。我们要做的,就是靠它们“拼”出任意角度和幅值的电压。
3.2 扇区划分:把圆分成六块
6个基本矢量把360度空间均匀分成了6个扇区。每个扇区60度。我习惯用α-β坐标系来看这个问题。
扇区编号从I到VI,具体怎么划分?看下面这张图就清楚了:
怎么判断目标电压矢量在哪个扇区?我常用的方法是看它在α-β坐标系下的分量。具体来说,根据Uα和Uβ的比值,以及它们的正负号,就能快速定位。
我的小技巧:在代码实现里,我一般先算出三个参考量:Uref1 = Uβ, Uref2 = (√3/2)·Uα - (1/2)·Uβ, Uref3 = -(√3/2)·Uα - (1/2)·Uβ。然后根据这三个量的正负,组合成一个0~5的数字,直接对应扇区编号。这样查表就行,省去了角度计算。
3.3 矢量合成原理:用两个矢量拼出任意方向
好了,现在我们知道目标矢量落在哪个扇区了。接下来就是怎么用这个扇区边上的两个基本矢量,把目标矢量“拼”出来。
原理其实很简单——伏秒平衡。就是说,在一个PWM周期Tₛ内,让两个基本矢量分别作用一段时间,它们产生的总效果,要等于目标矢量连续作用一个周期产生的效果。
数学表达就是:
Uref · Tₛ = Uₓ · Tₓ + Uᵧ · Tᵧ + U₀ · T₀
其中:
- Uref:目标电压矢量
- Uₓ、Uᵧ:扇区边上的两个基本矢量
- U₀:零矢量
- Tₓ、Tᵧ、T₀:各自的作用时间
- Tₓ + Tᵧ + T₀ = Tₛ
举个例子,假设目标矢量Uref落在扇区I,也就是U₁(100)和U₂(110)之间。那么:
Uref · Tₛ = U₁ · T₁ + U₂ · T₂ + U₀ · T₀
把U₁和U₂的幅值(都是2/3·Vdc)和角度代进去,解这个方程,就能得到T₁和T₂:
T₁ = (√3 · Tₛ / Vdc) · [ (√3/2)·Uα - (1/2)·Uβ ]
T₂ = (√3 · Tₛ / Vdc) · Uβ
嗯,公式看着有点烦。但你在代码里写一次,后面就是复制粘贴改个符号的事。
注意:算出来的T₁和T₂加起来不能超过Tₛ。如果超过了,说明发生了过调制。这时候需要等比例缩小T₁和T₂,让T₁+T₂ = Tₛ,T₀=0。我在做伺服驱动器时就遇到过这种情况,电机高速运行时母线电压不够,波形就开始失真了。
3.4 零矢量的作用:别小看它
你可能要问:零矢量不就是什么都不输出吗?为什么还要专门留时间给它?
其实零矢量有两个重要作用:
- 调节输出电压幅值:通过调整零矢量的时间T₀,可以改变等效输出电压的大小。T₀越大,等效电压越小。
- 降低开关损耗和谐波:合理分配U₀(000)和U₇(111)的时间,可以让开关动作次数减少。我习惯让两个零矢量各占一半时间,这样谐波特性最好。
我曾经在一个项目里,为了省成本用了小功率MOSFET,开关损耗压不住。后来通过优化零矢量分配,把开关频率降下来一些,才勉强过了温升测试。所以说,零矢量不是“废物时间”,它是调制的调节手段。
3.5 合成流程总结
整个矢量合成的步骤,我总结成下面这个流程:
你看,整个流程其实就四步。我在写代码时,通常把这四步写成一个函数,输入Uα和Uβ,输出三个比较值,直接喂给定时器。干净利落。
好了,这一节的内容就到这儿。矢量合成的核心思想就是“用有限的资源拼出无限的可能”。你把这个想通了,后面看七段式发波、五段式发波那些东西,就会觉得顺理成章。