二、三相逆变器基础:半桥拓扑、开关状态与电压矢量
好,咱们正式开始聊SVPWM。在深入算法之前,得先把它的“物理基础”搞清楚——也就是三相逆变器。你想想看,没有这个硬件平台,再好的算法也只是纸上谈兵。
我个人习惯把三相逆变器看成是三个“半桥”的组合。搞懂了半桥,整个逆变器就通了。
2.1 半桥拓扑:最基本的功率单元
一个半桥,说白了就是两个开关管(比如MOSFET或IGBT)串联起来,中间拉出一个输出端。上管导通时,输出端接直流母线正极;下管导通时,输出端接地。
这里有个关键点:上下管绝对不能同时导通。我在项目中遇到过新手写代码,死区时间没加够,结果上管还没完全关断,下管就开了——瞬间直通短路,管子直接冒烟。嗯,那味道,记忆犹新。
半桥的输出电压只有两种状态:
- 上管导通、下管关断 → 输出为 VDC(高电平)
- 上管关断、下管导通 → 输出为 0V(低电平)
你可能会问:那能不能两个都关断?可以,这叫“高阻态”,但正常PWM调制时我们不用这个状态。
2.2 三相逆变器:三个半桥的组合
把三个半桥拼在一起,共用直流母线,就构成了三相逆变器。三个输出端分别接电机的U、V、W三相绕组。
每个半桥独立控制,所以三相逆变器一共有 2³ = 8 种开关状态。这8个状态,就是SVPWM的“原材料”。
| 状态编号 | U相 (A相) | V相 (B相) | W相 (C相) | 二进制编码 |
|---|---|---|---|---|
| 0 | 0 (下管通) | 0 | 0 | 000 |
| 1 | 1 (上管通) | 0 | 0 | 100 |
| 2 | 1 | 1 | 0 | 110 |
| 3 | 0 | 1 | 0 | 010 |
| 4 | 0 | 1 | 1 | 011 |
| 5 | 0 | 0 | 1 | 001 |
| 6 | 1 | 0 | 1 | 101 |
| 7 | 1 | 1 | 1 | 111 |
注意看,状态0(000)和状态7(111)比较特殊——它们三个桥臂要么全低,要么全高。这时候电机三相绕组被短接,没有电压差,所以叫“零矢量”。
2.3 电压矢量:从开关状态到空间向量
好了,现在我们有8个开关状态。但怎么把它们变成电机能用的电压呢?
这里要用到Clark变换的思想。把三相电压(U、V、W)投影到α-β两相静止坐标系上。每个开关状态对应一个固定的电压矢量。
我直接给你结果:6个非零矢量把360°空间均匀分成6个扇区,每个扇区60°。两个零矢量在原点。
你想想看,这6个矢量就像6个“路标”,把整个电压平面划分成6个三角形区域。我们要合成的任意电压矢量,一定落在某个三角形里。
举个例子:假设我们要合成一个指向30°方向的电压矢量。它落在扇区I(0°~60°)里。那我们就用扇区I边上的两个矢量(100和110)来“拼凑”它。
怎么拼?这就是SVPWM的核心——伏秒平衡原理。说白了就是:
目标矢量 × 开关周期 = 矢量A × 作用时间A + 矢量B × 作用时间B + 零矢量 × 剩余时间
嗯,这里要注意:零矢量(000或111)的作用时间就是周期减去两个非零矢量的时间。零矢量不产生有效电压,但用来调节占空比。
2.4 实战中的小细节
我在调试第一版SVPWM程序时,发现电机转起来噪声特别大。查了半天,原来是扇区判断的边界条件写错了——角度刚好在0°和360°交界处时,程序跳到了错误的扇区。
另外,零矢量的选择也有讲究。我个人习惯在扇区切换时交替使用000和111,这样可以减少开关次数,降低开关损耗。你想想看,如果一直用000,那每次切换非零矢量时,三个桥臂可能都要动作,损耗就上去了。
好了,这一章的内容就这些。三相逆变器的8个开关状态和6个电压矢量,是SVPWM的基石。下一章我们正式进入SVPWM的实现细节——扇区判断和时间计算。