2. 三相逆变器拓扑:两电平三相逆变器结构,开关状态与电压矢量的对应关系
好,咱们正式开始聊SVPWM的硬件基础。你想想看,不管算法写得多花哨,最终都得靠逆变器把直流电变成交流电。两电平三相逆变器,就是最经典的“执行机构”。
我刚开始接触电机控制时,总觉得逆变器就是个黑盒子,给PWM波就能转。后来在调试一个30kW的伺服驱动器时,炸过一次IGBT模块……嗯,从那以后,我对这个拓扑结构就特别上心。今天咱们把它的“骨架”和“血脉”彻底理清楚。
2.1 两电平三相逆变器长什么样?
说白了,两电平三相逆变器就是三个“半桥”拼在一起。每个半桥有两个开关管,上管和下管。直流母线电压是 Vdc,中间点叫中性点 N。
我习惯把它的结构拆成三部分来看:
- 直流侧:一个大电容(或者电容组),稳住母线电压,吸收纹波电流。
- 开关网络:6个IGBT或MOSFET,带反并联二极管。这就是咱们的“手”,负责斩波。
- 交流输出:三个输出端
A、B、C,接电机绕组。
每个半桥的输出电压,要么是 +Vdc/2(上管导通),要么是 -Vdc/2(下管导通)。所以叫“两电平”——每个输出端只有两个电位。
关键点:同一半桥的上下管绝对不能同时导通!否则就是直通短路,瞬间炸管。我在项目中见过新手写代码忘了加死区,上电瞬间IGBT直接冒烟。所以,死区插入是每个PWM驱动器的必修课。
下面这张图,是我自己画的两电平三相逆变器结构,你看一眼就明白了:
2.2 开关状态怎么定义?
每个半桥只有两种状态:上管通(记作 1)或下管通(记作 0)。三个半桥组合起来,一共 2³ = 8 种状态。
我习惯用 [Sa, Sb, Sc] 来表示,比如 [1, 0, 0] 就是A相上管通,B、C相下管通。
这8种状态里,有6种是“非零矢量”,2种是“零矢量”。咱们先看表格:
| 状态编号 | Sa | Sb | Sc | 矢量名称 | 说明 |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | V0 (零矢量) | 三个下管全通 |
| 1 | 1 | 0 | 0 | V1 | A相上管通 |
| 2 | 1 | 1 | 0 | V2 | A、B相上管通 |
| 3 | 0 | 1 | 0 | V3 | B相上管通 |
| 4 | 0 | 1 | 1 | V4 | B、C相上管通 |
| 5 | 0 | 0 | 1 | V5 | C相上管通 |
| 6 | 1 | 0 | 1 | V6 | A、C相上管通 |
| 7 | 1 | 1 | 1 | V7 (零矢量) | 三个上管全通 |
我的小习惯:在C2000的代码里,我通常把开关状态直接映射成PWM比较器的值。比如 [1,0,0] 对应A相CMPA=TBPRD,B、C相CMPA=0。这样写代码时逻辑特别清晰,不容易出错。
2.3 从开关状态到电压矢量
为什么要关心这8种状态?因为每种状态都会在电机端产生一个特定的电压矢量。咱们用Clark变换(αβ坐标系)把三相电压投影到复平面上。
公式其实不复杂:
Vα = Vdc * (Sa - 0.5*Sb - 0.5*Sc) * 2/3
Vβ = Vdc * (0.866*Sb - 0.866*Sc) * 2/3
把8种状态代进去,你会得到6个非零矢量,幅值都是 2/3 * Vdc,方向互差60°。两个零矢量在原点。
我当年第一次推导这个时,觉得挺神奇的——明明只有6个离散的开关状态,但通过PWM调制,居然能合成任意方向的电压矢量。这就是SVPWM的核心思想。
下面这张SVG图,把8个矢量在αβ平面上的位置画清楚了:
2.4 扇区划分与合成原理
你看,6个非零矢量把平面分成了6个扇区,每个扇区60°。SVPWM的思路就是:
- 先判断目标电压矢量落在哪个扇区。
- 用该扇区相邻的两个基本矢量,加上零矢量,通过时间加权合成目标矢量。
- 调整零矢量的插入位置,优化开关损耗和THD。
举个例子,如果目标矢量在扇区Ⅰ(0°~60°),就用V1和V2来合成。假设V1作用时间 T1,V2作用时间 T2,零矢量作用时间 T0,那么:
T1 + T2 + T0 = Ts (PWM周期)
Vref = (T1/Ts)*V1 + (T2/Ts)*V2
解这个方程,就能算出 T1 和 T2。这就是SVPWM的数学基础。
注意:当目标矢量幅值超过六边形内切圆时,就进入了过调制区。这时候 T1 + T2 > Ts,必须做等比例缩小处理。我在调试一个高速主轴电机时,就遇到过调制比超过1.0导致电流畸变的问题。后来加了过调制处理,波形才恢复正常。
2.5 零矢量的选择策略
两个零矢量V0和V7,效果一样吗?其实不一样。区别在于开关动作次数:
- 只用V0:每次切换只动一个开关管,开关损耗小,但电流纹波稍大。
- 只用V7:同理,但纹波特性不同。
- 交替使用V0和V7:对称PWM,谐波特性更好,但开关次数翻倍。
我个人习惯在C2000里用七段式SVPWM,也就是V0和V7交替插入。虽然开关损耗略高一点,但电流波形更干净,电机噪音也小。在TI的例程里,默认也是七段式。