TI中文支持网
TI专业的中文技术问题搜集分享网站

2812闭环控制程序中PWM重叠区时间变长

大家好,我在编写逆变器控制的闭环程序是遇到这样一个问题。

首先逆变器是一个电流型逆变器,它要求电感不能开路运行,因此在PWM驱动需要增加重叠区。我在2812的EV模块中设定好了1us的重叠时间,如图1所示,正常情况下应该是这样。

但是写出来的程序存在这样的问题,发现工频驱动的两路信号的重叠时间变长至20多us,这严重影响了输出。

我经过多次实验发现,在中断周期单独使用锁相环程序而不做闭环是没问题的,或者加入锁相环的时候,是双环程序中的内环程序影响了重叠的时间,  例如以下这句 

/****** 内环P ******/
    PR_output[0] = _IQmpy(_IQ(Kp2),PR_input[0]);

当Kp2这个变量是float32类型时就会出现pwm信号不正常的情况,而直接写0.06或者利用#define Kp2 0.06时pwm信号都不会出现问题,这是什么原因呢?内环应用其他调节器(PI,PR)这样写也会出现同样问题,而外环却没问题。因为以前我都是定义float32类型,再进行IQ的。

pwm信号的附图和工程见下面附件。

希望得到各位专家的回复,谢谢。

  ZYY-Carrier modulation PLL double loop.rar

user5137566:忘了说程序在中断周期(开关频率20k,50us)内是可以执行完毕的,我通过通过数字IO口的电平翻转观察过

大家好,我在编写逆变器控制的闭环程序是遇到这样一个问题。

首先逆变器是一个电流型逆变器,它要求电感不能开路运行,因此在PWM驱动需要增加重叠区。我在2812的EV模块中设定好了1us的重叠时间,如图1所示,正常情况下应该是这样。

但是写出来的程序存在这样的问题,发现工频驱动的两路信号的重叠时间变长至20多us,这严重影响了输出。

我经过多次实验发现,在中断周期单独使用锁相环程序而不做闭环是没问题的,或者加入锁相环的时候,是双环程序中的内环程序影响了重叠的时间,  例如以下这句 

/****** 内环P ******/
    PR_output[0] = _IQmpy(_IQ(Kp2),PR_input[0]);

当Kp2这个变量是float32类型时就会出现pwm信号不正常的情况,而直接写0.06或者利用#define Kp2 0.06时pwm信号都不会出现问题,这是什么原因呢?内环应用其他调节器(PI,PR)这样写也会出现同样问题,而外环却没问题。因为以前我都是定义float32类型,再进行IQ的。

pwm信号的附图和工程见下面附件。

希望得到各位专家的回复,谢谢。

  ZYY-Carrier modulation PLL double loop.rar

Annie Liu:

您的问题在E2E英文论坛将有工程师跟进,请继续关注。https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/859649/3179530

赞(0)
未经允许不得转载:TI中文支持网 » 2812闭环控制程序中PWM重叠区时间变长
分享到: 更多 (0)