2. 三相逆变器拓扑:三相全桥逆变器结构、开关状态定义、基本电压矢量

好,我们正式开始 SVPWM 的第一块基石——三相逆变器拓扑。说白了,SVPWM 最终要控制的,就是下面这个电路。你把它搞明白了,后面所有矢量、扇区、作用时间的计算,都会变得非常自然。

2.1 三相全桥逆变器结构

先看电路结构。三相全桥逆变器,由三个半桥组成。每个半桥有两个开关管,上管和下管。直流母线电压是 Vdc,中间三个桥臂中点,就是我们的三相输出——U、V、W。

核心要点:同一桥臂的上下两个开关管,绝对不能同时导通。否则就是直通短路,瞬间炸管。我在项目里见过一次,MOSFET 直接冒烟,板子都烧黑了。从那以后,我写代码都会加死区保护,硬件上也加互锁逻辑。

每个桥臂的输出电压,要么是 +Vdc/2(上管导通),要么是 -Vdc/2(下管导通)。所以三相输出一共 2³ = 8 种组合。这就是我们后面要说的开关状态。

三相全桥逆变器拓扑结构 +Vdc/2 -Vdc/2 S1 S4 U S3 S6 V S5 S2 W 三相负载(电机绕组) 每个桥臂上下管互补导通,禁止同时导通

2.2 开关状态定义

我们用 Sx 表示每个桥臂的开关状态。x 可以是 a、b、c,对应 U、V、W 三相。

  • Sx = 1:上管导通,下管关断。该相输出连接到正母线,电压为 +Vdc/2。
  • Sx = 0:上管关断,下管导通。该相输出连接到负母线,电压为 -Vdc/2。

所以三相状态可以写成一个三位二进制数 (Sa, Sb, Sc)。比如 (1,0,0) 表示 U 相上管通,V 相和 W 相下管通。

我的习惯:在代码里,我通常用一个 8 位的变量来存开关状态,低三位分别对应 U、V、W。这样查表非常快,直接索引 0~7 就行。但要注意,状态 0 (000) 和状态 7 (111) 是零矢量,后面会详细讲。

2.3 基本电压矢量

现在我们把开关状态映射到空间电压矢量。为什么要做这个映射?因为电机控制最终要的是旋转磁场,而旋转磁场由空间电压矢量决定。

三相输出电压 (Uu, Uv, Uw) 通过 Clarke 变换,可以投影到 α-β 静止坐标系上。变换公式如下:

Uα = (2/3) * (Uu - 0.5*Uv - 0.5*Uw)
Uβ = (2/3) * ( (√3/2)*Uv - (√3/2)*Uw )

把 8 种开关状态分别代入,得到 8 个空间矢量。其中 6 个是非零矢量,2 个是零矢量。

开关状态 (Sa,Sb,Sc) 矢量编号 Uα Uβ 幅值 角度
000 V0 0 0 0 -
100 V1 2/3 Vdc 0 2/3 Vdc 0°
110 V2 1/3 Vdc √3/3 Vdc 2/3 Vdc 60°
010 V3 -1/3 Vdc √3/3 Vdc 2/3 Vdc 120°
011 V4 -2/3 Vdc 0 2/3 Vdc 180°
001 V5 -1/3 Vdc -√3/3 Vdc 2/3 Vdc 240°
101 V6 1/3 Vdc -√3/3 Vdc 2/3 Vdc 300°
111 V7 0 0 0 -

注意:非零矢量的幅值都是 2/3 Vdc,不是 Vdc。这个系数来自 Clarke 变换的等幅值约束。如果你用等功率变换,系数会不一样。我建议初学者统一用等幅值变换,后面算调制比时更直观。

这 6 个非零矢量在 α-β 平面上均匀分布,每 60° 一个,正好把平面分成 6 个扇区。零矢量 V0 和 V7 都在原点。

基本电压矢量空间分布 α β V1(100) V2(110) V3(010) V4(011) V5(001) V6(101) V0/V7 扇区Ⅰ 扇区Ⅱ 扇区Ⅲ 扇区Ⅳ 扇区Ⅴ 扇区Ⅵ

2.4 避坑指南:开关顺序与死区

嗯,这里要特别说一下。实际开关管不是理想的,开通和关断都有延迟。如果你在代码里让上管关断的同时立刻让下管导通,大概率会直通。

我曾经踩过的坑:有一次调试,我忘了加死区时间,结果一上电,母线电流直接飙升到 30A,保险丝都烧断了。后来我老老实实加了 2μs 的死区,问题解决。死区时间具体多少,要看你的开关管 datasheet,一般 IGBT 需要 2~5μs,MOSFET 可以短一些,1~2μs。

死区的实现方式很简单:在切换开关状态时,先关断当前导通的管子,等待死区时间,再开通目标管子。代码里可以用定时器或者软件延时来做。

2.5 小结

这一章我们搞清楚了三个东西:

  • 三相全桥逆变器的电路结构,每个桥臂上下管互补
  • 8 种开关状态,用 (Sa,Sb,Sc) 二进制表示
  • 6 个非零矢量和 2 个零矢量在 α-β 平面上的分布