2. 三相逆变器拓扑:电压源型逆变器结构、开关状态与电压矢量
好,咱们正式开始啃SVPWM的第一块硬骨头——三相逆变器拓扑。你可能会想,不就是个逆变器嘛,有什么好讲的?
嗯,别急。SVPWM的所有秘密,都藏在这六个开关管和八个开关状态里。我当年刚接触这个领域时,总觉得SVPWM是个玄学,直到我把这八个矢量画在纸上,才恍然大悟——原来电机控制的核心,就是让逆变器“演”出我们想要的电压。
2.1 电压源型逆变器的基本结构
先看硬件。三相电压源型逆变器,说白了就是三个半桥并联在直流母线上。每个半桥有两个开关管,上管和下管互补导通。
核心结构:直流母线电压 Vdc + 三个半桥(A、B、C相) + 6个IGBT/MOSFET + 6个续流二极管
我习惯把逆变器想象成一个“电压分配器”。直流母线是水源,三个半桥是三个水龙头,电机绕组就是三个水桶。我们要做的,就是精确控制每个水龙头的开合,让三个水桶里的水位(电压)按正弦规律变化。
这里有个关键点:同一相的上、下管绝对不能同时导通。为什么?因为一旦同时导通,直流母线就直接短路了——这在工程上叫“直通”,是逆变器的头号杀手。我在调试第一版硬件时,就因为死区时间设置不当,炸过一块驱动板,那味道…嗯,你懂的。
2.2 开关状态与电压矢量的定义
每个半桥只有两种状态:上管导通(记为1)或下管导通(记为0)。三个半桥组合起来,一共2³ = 8种状态。
我们用(Sa, Sb, Sc)来表示开关状态。比如(1,0,0)表示A相上管通,B相下管通,C相下管通。
| 开关状态 (Sa, Sb, Sc) | 矢量编号 | 类型 | 相电压 (Va, Vb, Vc) |
|---|---|---|---|
| (0,0,0) | V0 | 零矢量 | (0, 0, 0) |
| (1,0,0) | V1 | 非零矢量 | (2/3Vdc, -1/3Vdc, -1/3Vdc) |
| (1,1,0) | V2 | 非零矢量 | (1/3Vdc, 1/3Vdc, -2/3Vdc) |
| (0,1,0) | V3 | 非零矢量 | (-1/3Vdc, 2/3Vdc, -1/3Vdc) |
| (0,1,1) | V4 | 非零矢量 | (-2/3Vdc, 1/3Vdc, 1/3Vdc) |
| (0,0,1) | V5 | 非零矢量 | (-1/3Vdc, -1/3Vdc, 2/3Vdc) |
| (1,0,1) | V6 | 非零矢量 | (1/3Vdc, -2/3Vdc, 1/3Vdc) |
| (1,1,1) | V7 | 零矢量 | (0, 0, 0) |
你可能会问:为什么(1,0,0)对应的相电压不是(Vdc, 0, 0)?
因为电机绕组是星形连接,中性点电压会浮动。实际计算时,相电压是相对于中性点的电压,所以需要做一下换算。具体公式我就不推了,你记住结论就行:非零矢量的幅值都是2/3 Vdc,方向相差60°。
2.3 六个非零矢量与两个零矢量
这八个矢量里,V0和V7是零矢量,它们把电机三相绕组短路到同一电位,电机两端没有电压差。剩下的V1~V6,每个矢量对应一个空间方向,相邻矢量间隔60°。
我把这六个非零矢量画在复平面上,就得到了一个正六边形。每个矢量顶点都在半径为2/3 Vdc的圆上。
我的经验:刚开始学SVPWM时,我总记不住哪个矢量对应哪个开关状态。后来我发明了一个记忆法:把(1,0,0)想象成“A相拉到正,B、C相拉到负”,电流从A相流入,从B、C相流出。这样一想,矢量方向就清楚了。
零矢量V0和V7虽然不产生电压,但它们的作用非常大。在SVPWM调制中,我们通过插入零矢量来调节每个PWM周期内的有效电压时间,从而控制输出电压的幅值。说白了,零矢量就是“填充时间”用的。
2.4 电压矢量在复平面上的分布
下面这张SVG图,把六个非零矢量和两个零矢量的空间关系画清楚了。你可以看到,整个复平面被分成了六个扇区,每个扇区60°。
从图上你能看到,V1在0°方向,V2在60°,V3在120°,V4在180°,V5在240°,V6在300°。每个矢量都指向一个扇区的边界。
为什么要这样分布?因为SVPWM的核心思想就是:用相邻的两个非零矢量,加上零矢量,来合成任意方向、任意大小的目标电压矢量。你想想看,只要目标矢量落在某个扇区内,我们就可以用这个扇区的两个边界矢量来“拼”出它。
注意:非零矢量的最大幅值是2/3 Vdc,所以SVPWM能合成的最大不失真电压幅值也是2/3 Vdc。这比传统的SPWM(最大1/2 Vdc)高了约15%。换句话说,同样的直流母线电压,SVPWM能让电机跑得更快。这就是SVPWM的一大优势。
2.5 从开关状态到相电压的换算
最后,我带你走一遍从开关状态到相电压的计算过程。假设直流母线电压Vdc = 300V,开关状态为(1,0,0)。
// 相电压计算示例
// 开关状态: Sa=1, Sb=0, Sc=0
// 直流母线电压: Vdc = 300V
// 第一步:计算各相相对于直流母线负极的电压
Va0 = Sa * Vdc = 1 * 300 = 300V
Vb0 = Sb * Vdc = 0 * 300 = 0V
Vc0 = Sc * Vdc = 0 * 300 = 0V
// 第二步:计算中性点电压
Vn = (Va0 + Vb0 + Vc0) / 3 = (300 + 0 + 0) / 3 = 100V
// 第三步:计算相电压(相对于中性点)
Va = Va0 - Vn = 300 - 100 = 200V
Vb = Vb0 - Vn = 0 - 100 = -100V
Vc = Vc0 - Vn = 0 - 100 = -100V
// 结果:Va = 200V, Vb = -100V, Vc = -100V
// 对应表格中的 (2/3Vdc, -1/3Vdc, -1/3Vdc)
你看,计算过程并不复杂。关键是理解:相电压是相对于中性点的电压,不是相对于直流母线负极的电压。这个坑我踩过,当时在仿真里直接用了Va0、Vb0、Vc0去算电流,结果波形完全不对,查了半天才发现是中性点电压没考虑。