2. 三相逆变器拓扑:三相全桥逆变器结构、开关状态定义、基本电压矢量
好,我们正式开始 SVPWM 的第一块基石——三相逆变器拓扑。说白了,SVPWM 最终要控制的,就是下面这个电路。你把它搞明白了,后面所有矢量、扇区、作用时间的计算,都会变得非常自然。
2.1 三相全桥逆变器结构
先看电路结构。三相全桥逆变器,由三个半桥组成。每个半桥有两个开关管,上管和下管。直流母线电压是 Vdc,中间三个桥臂中点,就是我们的三相输出——U、V、W。
核心要点:同一桥臂的上下两个开关管,绝对不能同时导通。否则就是直通短路,瞬间炸管。我在项目里见过一次,MOSFET 直接冒烟,板子都烧黑了。从那以后,我写代码都会加死区保护,硬件上也加互锁逻辑。
每个桥臂的输出电压,要么是 +Vdc/2(上管导通),要么是 -Vdc/2(下管导通)。所以三相输出一共 2³ = 8 种组合。这就是我们后面要说的开关状态。
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 都在原点。
2.4 避坑指南:开关顺序与死区
嗯,这里要特别说一下。实际开关管不是理想的,开通和关断都有延迟。如果你在代码里让上管关断的同时立刻让下管导通,大概率会直通。
我曾经踩过的坑:有一次调试,我忘了加死区时间,结果一上电,母线电流直接飙升到 30A,保险丝都烧断了。后来我老老实实加了 2μs 的死区,问题解决。死区时间具体多少,要看你的开关管 datasheet,一般 IGBT 需要 2~5μs,MOSFET 可以短一些,1~2μs。
死区的实现方式很简单:在切换开关状态时,先关断当前导通的管子,等待死区时间,再开通目标管子。代码里可以用定时器或者软件延时来做。
2.5 小结
这一章我们搞清楚了三个东西:
- 三相全桥逆变器的电路结构,每个桥臂上下管互补
- 8 种开关状态,用 (Sa,Sb,Sc) 二进制表示
- 6 个非零矢量和 2 个零矢量在 α-β 平面上的分布