3、三相逆变器的开关状态:8种开关组合,6个非零矢量与2个零矢量

好,咱们接着聊。上一章我们把三相逆变器的拓扑结构理清了,六个开关管,上下互补,这个基础大家应该都熟了。那这一章,我们就来聊聊这些开关管到底能摆出多少种“姿势”。

说白了,逆变器的工作,就是不停地切换这六个开关的通断状态。你想想看,三个桥臂,每个桥臂要么上管通、要么下管通,这不就是二进制的组合吗?2的3次方,一共8种状态。没错,就是这8种状态,构成了SVPWM的基石。

3.1 开关状态的二进制表示

我个人习惯,用三个二进制位来表示一个开关状态。比如 [100],意思就是A相上管通、B相下管通、C相下管通。这里有个约定俗成的规矩:1代表上管导通,0代表下管导通。

你可能会问,那上管和下管会不会同时导通?千万别!我在项目中就见过新手调试时,死区时间设置不当,导致上下管直通,那“啪”的一声,IGBT模块就报废了。所以,互补导通是铁律,死区时间必须留够。

这8种状态,我列个表,大家一目了然:

开关状态 (Sa Sb Sc) 导通的上管 导通的下管 矢量类型
000 无 Q2, Q4, Q6 零矢量
100 Q1 Q4, Q6 非零矢量
110 Q1, Q3 Q6 非零矢量
010 Q3 Q2, Q6 非零矢量
011 Q3, Q5 Q2 非零矢量
001 Q5 Q2, Q4 非零矢量
101 Q1, Q5 Q4 非零矢量
111 Q1, Q3, Q5 无 零矢量

嗯,这里要注意,[000] 和 [111] 这两个状态,要么三个下管全通,要么三个上管全通。这时候电机端电压是多少?三相短路,电压为零。所以叫“零矢量”。

3.2 从开关状态到电压矢量

光有开关状态还不够,我们得把它映射到电机定子绕组上产生的电压矢量。这个映射关系,是通过Clark变换推导出来的。我不在这里推公式,直接给结论:

对于任意一个开关状态 [Sa, Sb, Sc],它在αβ坐标系下对应的电压矢量 V(Sa, Sb, Sc) 可以表示为:

V(Sa, Sb, Sc) = (2/3) * Vdc * (Sa + Sb * e^(j*2π/3) + Sc * e^(j*4π/3))

其中 Vdc 是直流母线电压。你把这个公式套进去算一下,就会发现一个很有意思的现象:6个非零矢量,幅值都是 (2/3)*Vdc,而且它们在空间上互差60度,正好把一个圆分成了6个扇区。

这6个矢量,我习惯叫它们 V1(100), V2(110), V3(010), V4(011), V5(001), V6(101)。它们就像六把尺子,我们想要的任意方向、任意大小的电压矢量,都得靠它们“拼”出来。

核心要点: 6个非零矢量幅值相等,相位互差60°,构成了一个正六边形。两个零矢量位于原点。这就是SVPWM的“调色盘”。

3.3 矢量空间与扇区划分

为了让大家更直观地理解,我画了一张SVG图,把这8个矢量的空间位置标出来。你看,是不是很清晰?

三相逆变器开关状态矢量图 α β V1(100) V2(110) V3(010) V4(011) V5(001) V6(101) V0(000) / V7(111) 扇区Ⅰ 扇区Ⅱ 扇区Ⅲ 扇区Ⅳ 扇区Ⅴ 扇区Ⅵ 说明:6个非零矢量将平面均分为6个扇区(Ⅰ~Ⅵ)。 零矢量位于原点,不产生有效电压。

从图上可以清楚地看到,6个非零矢量把整个平面分成了6个扇区,每个扇区60度。我们想要合成的目标电压矢量 Vref,落在哪个扇区,就用这个扇区边界上的两个非零矢量,再加上零矢量,通过“伏秒平衡”的原理来合成它。

我的小技巧: 判断扇区其实很简单。把 Vref 的αβ分量算出来,然后看它的角度。比如角度在0°~60°之间,那肯定就在扇区Ⅰ,用V1和V2来合成。我在代码里一般用查表法,比实时计算角度快得多。

3.4 零矢量的妙用

说到零矢量,很多人觉得它“没用”,反正输出电压是零。其实不然。零矢量在SVPWM里扮演着至关重要的角色——调节调制比。

你想想看,如果只用两个非零矢量来合成,那合成出来的矢量幅值最大就是正六边形的内切圆半径,也就是 (√3/3)*Vdc。但如果我们插入零矢量,就可以“稀释”非零矢量的作用时间,从而得到幅值更小的矢量。这就是线性调制区的原理。

我曾经在一个项目中,电机在低速运行时噪音特别大。后来发现是零矢量分配不合理,导致电流谐波过大。我把零矢量从集中插入改成平均分配到开关周期的两端和中间,也就是所谓的“七段式SVPWM”,噪音问题立马就解决了。

避坑指南: 零矢量有两种:V0(000) 和 V7(111)。它们虽然效果一样,但开关切换次数不同。为了减少开关损耗,一般原则是:每次切换只改变一个桥臂的状态。比如从 V1(100) 切换到 V0(000),只需要关断Q1,而切换到 V7(111) 则需要同时开通Q3和Q5,损耗大得多。所以,在扇区Ⅰ,我习惯用 V0 作为零矢量。