三电平 SVPWM

Posted on February 29, 2024

炸机了。

制作低压变频器的时候,从未出现过炸机。但是,在高压变频器上,出现了。MOS管直接炸开。pcb铜箔炸飞。

究其原因,还是因为mos关闭时候产生的尖峰电压。

在研究解决方案的时候,碰到了三电平拓扑。

三电平拓扑输出三相电需使用12个 MOS 管。

那么问题来了,12个MOS管,如何控制呢?

其实,不用修改 svpwm 算法。 svpwm 算法在最终,会输出 A B C 三相的 pwm 值。

在传统2电平拓扑里,这3个 pwm值,就直接幅值给硬件驱动,产生6路pwm 了。

在3电平拓扑里,这3个 pwm 值,要转而变成 2个 pwm 定时器的12路 pwm 。

具体做法为,使用2个定时器。这2个定时器都需要开启6路pwm互补输出模式。对x相来说,有 Qxh1, Qxh2, Qxl1, Qxl2 四个开关。 其中, Qxh1 和 Qxl1 使用1号定时器对应通道。,Qxh2 和 Qxl2 使用2号定时器对应通道。

对 X 相来说,如果传入的 pwm 值 < 50%, 则,定时器1 的通道输出上管关,下管常开,定时器2的 上下通道输出按 pwm值*2。 如果传入的 pwm 值 >= 50%, 则定时器 2 下管关。 上管常开,1号定时器上下通道输出按 (pwm-0.5)*2。

比如下面这个代码

// duty range from [0-1]
void set_pwm(float duty_A, float duty_B, float duty_C)
{
    if (mode == TWO_LEVEL_SVPWM)
    {
        driver_set_pwm(TIM1, channel1, duty_A * perid_count);
        driver_set_pwm(TIM1, channel2, duty_B * perid_count);
        driver_set_pwm(TIM1, channel3, duty_C * perid_count);
    }
    else if (mode == THREE_LEVEL_SVPWM)
    {
        if (duty_A < 0.5)
        {
            driver_set_pwm(TIM1, channel1, 0); // 下管常开
            driver_set_pwm(TIM2, channel1, duty_A* 2 * perid_count);
        }
        else
        {
            driver_set_pwm(TIM2, channel1, perid_count); // 上管常开
            driver_set_pwm(TIM1, channel1, (duty_A - 0.5)*2 * perid_count);
        }


        if (duty_B < 0.5)
        {
            driver_set_pwm(TIM1, channel2, 0); // 下管常开
            driver_set_pwm(TIM2, channel2, duty_B* 2 * perid_count);
        }
        else
        {
            driver_set_pwm(TIM2, channel2, perid_count); // 上管常开
            driver_set_pwm(TIM1, channel2, (duty_B - 0.5)*2 * perid_count);
        }


        if (duty_C < 0.5)
        {
            driver_set_pwm(TIM1, channel3, 0); // 下管常开
            driver_set_pwm(TIM2, channel3, duty_C* 2 * perid_count);
        }
        else
        {
            driver_set_pwm(TIM2, channel3, perid_count); // 上管常开
            driver_set_pwm(TIM1, channel3, (duty_C - 0.5)*2 * perid_count);
        }
    }
}

这个代码就实现了3电平 svpwm 输出。而三相duty的计算方式和之前的并无不同。

Comments