关键词:正弦脉冲宽度调制(SPWM);查表法;三相桥式逆变电路; 组合式三相逆变电路。
1.引言
在三相逆变器中,SPWM(正弦脉冲宽度调制)技术得到了广泛应用。SPWM波常用于控制逆变器功率开关器件的开关时刻,该波形的产生就是利用一系列连续的三角波和正弦波相交,从而得到一系列宽度和正弦波幅值成正比的方波信号[1]。本文结合三相中频大功率静变电源开发的过程, 介绍了采用TI公司最新推出的DSP芯片—TMS320LF2407用于SPWM波发生模块的使用方法,给出了针对不同结构的三相逆变电路的两种通过查表法产生三相SPWM波的算法和部分程序源代码。
2.三相逆变电路系统结构及DSP产生SPWM波的原理
图1 三相桥式电路结构示意图

图2 组合式三相电路结构示意图
2.1三相桥式逆变电路
三相桥式电路结构示意图如图1所示。三相桥式逆变器电路结构简单,采用的器件少,功率管承受母线电压。在输出端增加变压器得到三相四线制的输出电压,提高逆变器带不平衡负载的能力。其中,DSP控制电路输出双极性的三相SPWM控制波。
2.2组合式三相逆变电路
组合式三相电路示意图如图2所示。组合式三相逆变器由三个单相逆变器组合而成,每相逆变器相互独立。只要控制三相基准正弦波互差120°,将三台输出的地连在一起作为中线即可实现三相四线制的输出,提高对不平衡负载的适应能力。其中DSP控制电路输出12路单极性的SPWM波实现三相SPWM控制波。
2.3TMS320LF2407A控制产生SPWM波
TMS320LF2407的波形发生器属于DSP芯片的外部事件管理模块,占用CPU的时间很少,可以方便地产生6路带有可编程死区和输出极性的PWM波[2]。通过对比较单元的寄存器进行适当的设置可以很方便的发出所需的SPWM波。比较单元的功能结构如图3所示。

图3 比较单元的功能结构图
由图3知,若设置计数寄存器连续不断地进行增减计数,就可以模拟连续三角波的发生。比较寄存器中存放正弦幅度值,与计数寄存器中的值不断进行比较,再送入DSP的PWM电路,通过全比较有效控制寄存器的设置就可以得到所需的SPWM波了。对这些寄存器的设置语句如下:
*TxPR=1250; 设置计数器周期//*TxCNT=0X0000; 设置计数初始值//
*ACTRx=0X0666; 设置全比较有效控制寄存器//*COMCONB=0XAE00;设置控制寄存器。
3. 查表法产生三相SPWM波
根据TMS320LF2407波形发生器的特点,设计中采用对称规则采样法[3]来实现SPWM波,并且载波频率足够高。对称规则采样法是从自然采样法演变而来的,它由经过采样的正弦波(实际上是阶梯波)与三角波相交,由交点得出脉冲宽度。这种方法只在三角波的顶点或底点位置对正弦波采样而形成阶梯波。
3.1基于三相桥式逆变电路的双极性三相SPWM波产生
3.1.1算法及关键参数设定
由于DSP的GP定时器产生的三角波都是从0往上计数到周期,然后往下计数到0,中间没有负半波,所以从简化编程考虑,把坐标原点定在三角波的波谷处,以便得到等效双极性SPWM波。如图4所示,此时三角波的幅值变化范围为0~Ur,而正弦波为:


3.1.2制作正弦函数表
由
于采用查表法时,需要有一个与该频率相对应的正弦函数表格,以便快速更新CMPRx的值。其正弦函数表的制作方法如下:由于正弦函数和三角波各自的对称性,使两者在对称规则采样下产生的SPWM波的脉宽值在正弦函数的正负半周期中相互关联,因此可依据(2)、(3)两式,只计算出0-π半周期的采样值,另半周期只需做加减运算即可求出采样值。这样便得到了一相输出所需的采样值表格,记为表a。另外,从(6)、(7)两式可看出其余两相只是采样点即采样的位置不同,而所有采样值均包含在表a中。也即在给另两相的CMPRx赋值时,只需在表a中选择不同的值即可。由此看出,虽为三相SPWM波输出,但所需表格大小却与单相相同。用C编写正弦函数表程序如如表5中程序段(1)。
|
程序段(1) |
程序段(2) |
程序段(3) |
程序段(4) |
|
void zkb() { double PI=3.1415925; n=0; h1=0; while (n<=32) { q=(n+3/4)*2*PI/33; j=sin(q); l=188*(1+M*j);//M为调制比。 if(l>=21&l<=353) a[n]=l; else { if(l>353) a[n]=375; else a[n]=26; } n=n+1; } }
|
void interrupt cmprz() { int flag,h2; asm(" clrc SXM"); flag=*EVAIFRA&0X0200; if(flag!=0X0200) { enable(); return; } if(k1<=32) { h1=(k1+11)%33; h2=(k1+22)%33; *CMPR1=a[k1]; *CMPR2=a[h1]; *CMPR3=a[h2]; k1=k1+1; } else k1=0; *IMR=0x0002; *IFR=0xFFFF; enable(); return; }
|
void zkb() { int j,q,l; doublePI=3.1415925; n=0; h1=0; while (n<=29) { q=(2*n+1)*PI/30; j=sin(q); l=625*(1+M*j); a[n]=l; n=n+1; } while (h1<=29) { if(h1<=14) { c[h1]=0; } else { c[h1]=1251; } h1=h1+1; } } |
voidinterrupt cmprz() { int flag; asm("clrc SXM"); flag=*EVAIFRA&0X0200; if(flag!=0X0200) { enable(); return; } if (k1<=29) { h2=(k1+20)%30; h3=(k1+10)%30; *CMPR1=a[k1]; *CMPR2=a[h3]; *CMPR3=a[h2]; *CMPR4=c[k1]; *CMPR5=c[h3]; *CMPR6=c[h2]; k1=k1+1; } else { k1=0; } } |
表格5 源程序列表
3.1.3 查表更新比较寄存器的值
有了以上的准备工作,就可以用查表法发脉宽随外界变化的三相SPWM波了。因三相间互差120°即1/3正弦周期,因此查表时各相的起始位置互差1/3,即可得到三相输出。采用事件管理器模块B通用定时器3下溢中断时查表更新比较寄存器的值程序如如表5中程序段(2)。
3.2基于组合式三相逆变电路的单极性三相SPWM波产生
3.2.1算法及关键参数设定
组合式三相逆变电路中的各相由相互独立单相桥式逆变电路组成,就每一相而言设计中采用单极性三相SPWM波控制。为实现三相输出,必须是各相的单极性SPWM波控制信号相位互差120°。下面以一相为例说明算法。
图6为一相所需的单极性SPWM波控制信号的一个周期波形,其周期为2π。图中SPWM信号仍以正弦波周期为周期变化,且采用规则采样法得到,所以此处SPWM信号的算法及参数设定方法与前述等效双极性SPWM信号的算法及参数设定相同,在此只给出设计时所采用的具体值:载波频率为12KHz,载波比为30,计数周期为1250。另外,图中固定电平每半个正弦周期变化一次,可通过SPWM输出极性设置及赋给比较寄存器两个
图6单相单极性SPWM波 不同的极限值(0和TxPR值)获得。
3.2.2制作待查函数表
由图6可知,此时的控制信号波形包括两种即SPWM波和方波,设计中均由pwm通道输出,因此需设置两个不同表格与之对应。其中正弦函数表的制作方法同3.1.2所述。另一表格的制作方法是:(1)长度与正弦函数表相同;(2)根据设置的pwm输出极性,使表的前、后半部分各取0或TxPR值在的唯一值。制表程序如表5中程序段(3)。
3.2.3 查表更新比较寄存器的值
组合式三相逆变电路由三个单相全桥逆变电路构成,所需开关器件增加,因此需要输出12路SPWM波控制信号。按控制信号波形的不同即对应待查表的不同,使事件管理器模块A产生SPWM波信号,事件管理器模块B产生方波信号,并且通过寄存器设置使两者同步。依据已建成的表格,仍然可以将三相间互差120°的相位关系转化为查表时各相的起始位置互差1/3的取数关系,从而实现三相单极性SPWM控制波输出。采用事件管理器模块A通用定时器1下溢中断时查表更新比较寄存器的值程序如表5中程序段(4)。
5 结束语
通过搭接三相逆变电源主电路,示波器观察发现由表5中的程序得到的SPWM波经过滤波得到的正弦波波形较好,并且通过改变调制比M的值,可得到不同脉宽的SPWM波,具有一定的实用价值。本文的创新点在于以DSP为基础,编程时巧妙地处理将三相相位差关系转化为查表读数时起始位置的差别,省去了基准正弦波的发生设计,使相位控制精确化,并且该程序稍加改动即可实现调幅调频电源的要求,具有可移植性。
参考文献:
[1] 叶国平 吴耿锋 严伟。空间电压矢量PWM的实现《微计算机信息》2004年第7期61页。
[2] 江思敏。TMS320LF240XDSP硬件开发教程[M]。北京:机械工业出版社,2003。
[3] 吴守箴,臧英杰。电气传动的脉宽调制控制技术[M]。北京:机械工业出版社,1995。

