第二节 逆变器拓扑结构:单相全桥逆变器、三相逆变器、SPWM调制原理

好,咱们今天聊聊逆变器的拓扑结构。说实话,搞电机控制这么多年,我见过不少新手一上来就盯着控制算法猛学,结果连逆变器怎么工作的都没搞明白。这不行。你想想看,逆变器就是驱动器的“心脏”,它要是跳不好,再牛的控制算法也是白搭。

这一节,我带你把单相全桥、三相逆变器,还有SPWM调制原理彻底吃透。嗯,都是实战中天天要用的东西。

一、单相全桥逆变器

先看最简单的。单相全桥,说白了就是四个开关管搭成的“H”形电路。我习惯叫它H桥,因为长得像字母H。

拓扑结构长这样:

  • 四个开关管:Q1、Q2(上桥臂),Q3、Q4(下桥臂)
  • 负载接在桥臂中点:A点和B点之间
  • 直流母线电压:Vdc

怎么工作的呢?很简单,两种状态:

  • 状态1:Q1和Q4导通,Q2和Q3关断。电流从Vdc正极→Q1→负载→Q4→Vdc负极。负载上电压为+Vdc。
  • 状态2:Q2和Q3导通,Q1和Q4关断。电流从Vdc正极→Q2→负载→Q3→Vdc负极。负载上电压为-Vdc。

你看,通过交替切换这两种状态,负载上就得到了一个交流方波电压。但方波谐波太大,电机根本受不了。所以实际中我们用的是SPWM,这个后面细说。

关键点:单相全桥的输出电压幅值就是Vdc。如果你想要更高的电压,就得用三电平或者多电平拓扑了。我在做小功率伺服驱动器时,经常用单相全桥,成本低、控制简单。

我的小技巧:调试单相全桥时,先别上高压。用12V低压先验证逻辑对不对。我曾经有一次直接把母线干到310V,结果程序写反了,上下桥臂直通,砰的一声,管子炸了。嗯,从那以后我再也不敢偷懒了。

二、三相逆变器

三相逆变器,这才是工业界的绝对主力。你想想看,绝大多数交流电机都是三相的,所以三相逆变器是标配。

拓扑结构:

  • 六个开关管:Q1~Q6,分成三个桥臂
  • 每个桥臂有两个管子:上管和下管
  • 三个桥臂中点:U、V、W,分别接电机三相绕组
  • 直流母线电压:Vdc

三相逆变器怎么工作的?说白了就是三个单相半桥拼在一起。每个桥臂独立控制,输出相对于直流母线中点的电压。

基本控制逻辑:

  • 每个桥臂的上管和下管互补导通,不能同时导通(否则直通短路)
  • 上管导通时,该相输出为+Vdc/2(相对于母线中点)
  • 下管导通时,该相输出为-Vdc/2

三相逆变器能输出8种基本电压矢量(6个非零矢量+2个零矢量)。这就是后面要讲的空间矢量调制(SVPWM)的基础。不过今天咱们先不展开,先把SPWM搞明白。

警告:三相逆变器的死区时间设置非常关键。死区时间太短,容易直通炸管子;死区时间太长,输出电压畸变严重,电机电流会抖。我一般设1~3微秒,具体看开关管的开关速度。记住,死区时间要留余量,但别太大。

三、SPWM调制原理

好,重头戏来了。SPWM,全称正弦脉宽调制。为什么要用SPWM?因为我们要让逆变器输出正弦波电压,而不是方波。

核心思想:用一系列宽度按正弦规律变化的脉冲,来等效一个正弦波。你想想看,一个正弦波可以看成是无数个窄脉冲的叠加。只要脉冲足够窄、数量足够多,滤波后就能得到光滑的正弦波。

具体怎么实现?

  1. 生成一个高频的三角载波(比如10kHz)
  2. 生成一个低频的正弦调制波(比如50Hz)
  3. 比较两者:调制波 > 载波时,输出高电平;调制波 < 载波时,输出低电平
  4. 这样比较出来的脉冲序列,就是SPWM波

你看,原理其实不复杂。但实际做起来,有几个坑要注意。

调制度(Modulation Index):定义为调制波幅值与载波幅值的比值。调制度最大为1。超过1就进入过调制区,输出电压会失真。我一般把调制度控制在0.9以内,留点余量。

单相SPWM的代码示例(伪代码):

// 单相SPWM生成
// 载波频率: 10kHz, 调制波频率: 50Hz
// 三角载波幅值: 1.0, 正弦调制波幅值: 0.8

float carrier = 0.0;      // 载波值
float step = 0.002;       // 载波步长 (根据频率计算)
float sin_ref = 0.0;      // 正弦参考值
float angle = 0.0;        // 角度

while(1) {
    // 生成三角载波
    carrier += step;
    if(carrier > 1.0) {
        carrier = 2.0 - carrier;  // 下降沿
        step = -step;
    }
    if(carrier < 0.0) {
        carrier = -carrier;       // 上升沿
        step = -step;
    }
    
    // 生成正弦调制波
    sin_ref = 0.8 * sin(angle);
    angle += 0.0001;  // 50Hz对应的角度增量
    
    // 比较输出
    if(sin_ref > carrier) {
        Q1_ON; Q4_ON;   // 输出正电压
        Q2_OFF; Q3_OFF;
    } else {
        Q1_OFF; Q4_OFF; // 输出负电压
        Q2_ON; Q3_ON;
    }
}

避坑指南:我曾经在项目里直接用浮点数做SPWM计算,结果发现CPU负载太高,载波频率上不去。后来改用查表法,把正弦值预先算好存到数组里,运行时就查表加插值,速度快多了。嗯,嵌入式开发里,能查表就别实时算。

三相SPWM:三相SPWM其实就是三个单相SPWM拼在一起。三个调制波相位互差120°,共用同一个三角载波。这样每个桥臂独立生成SPWM波,三相输出就平衡了。

但三相SPWM有个问题:直流母线电压利用率不高。理论上最大输出相电压幅值只有Vdc/2。所以后来才有了SVPWM,能把电压利用率提升到Vdc/√3。这个咱们后面章节再细聊。

总结一下:

  • 单相全桥:四个管子,输出±Vdc,适合小功率
  • 三相逆变器:六个管子,输出三相交流,工业主流
  • SPWM:三角载波+正弦调制波,简单可靠,但电压利用率低

好了,这一节就到这里。下一节咱们聊聊SVPWM,那个更有意思。记住,理论要懂,但动手调才是真本事。回去找个开发板,写个SPWM程序,看看示波器上的波形,比看十遍书都管用。