1/5基于DSP的三相逆变器控制程序设计摘要:三相逆变是光伏并网逆变器的主要组成部分。本文介绍了基于DSP的三相逆变器的控制程序的设计原理和参数计算,并给出了部分实验调试的结果。关键字:光伏并网逆变器,嵌入式微处理器1引言TMS320F2812DSP是在光伏并网逆变器中广泛应用的嵌入式微处理器控制芯片。限于篇幅,本文只对基于DSP的三相逆变控制程序的设计进行了讨论。第2节介绍了三相逆变控制程序的总体设计原理。第3节讨论了参数计算方法和程序设计原理。最后第4节给出了部分实验调试结果。2基本原理控制程序的总体设计示意图见图1。使用异步调制的方法产生SPWM波形。将正弦调制波对应的正弦表的数值,按一定时间间隔t1依次读出并放入缓冲寄存器中。比较寄存器则由三角载波的周期t2同步装载,并不断地与等腰三角载波比较,以产生SPWM波形。时间间隔t1决定了正弦波的周期,时间间隔t2决定了三角载波的采样周期,t1和t2不相关,亦即正弦调制波的产生和PWM波形发生器两部分相互独立。使用TMS320F2812的EV模块产生PWM波形。EVA的通用定时器1按连续增/减模式计数,产生等腰三角载波。三个全比较单元中的值分别与通用定时器1计数器T1CNT比较,当两者相等时即产生比较匹配事件,对应的引脚(PWMx,x=1,2,3,4,5,6)电平就会跳变,从而输出一系列PWM波形。因为PWM波形的脉冲宽度与比较寄存器中的值一一对应,所以,只要使比较寄存器中的值按正弦规律变化,就可以得到SPWM波形。考虑到DSP的资源有限,使用查表法产生正弦调制波。将一个正弦波的周期按照一定的精度依次存于表中;使用时按照一定的定时间隔依次读取,便得到正弦波。显然,精度要求越高,所需的表格越大,存储量也越大。2/5一个周期的正弦表的相位是,对应表的长度的1/3。为了产生三相对称正弦波,将正弦表长度取为3n,n为整数。当A相从第0个数开始取值时,则B相从第n个数处开始取值,C相从第2n个数处开始取值。事实上,因为使用了异步调制,所以只要正弦表的长度足够大,不是3的整数倍也不会对输出波形产生太大影响。程序由主程序和中断程序两部分构成,主程序见图2。中断程序用来根据逆变输出正弦波的频率计算依次读取正弦表的时间间隔t1。3参数计算与程序设计3.1正弦调制波的参数计算通用定时器T1的计数器T1CNT按连续增/减计数模式产生三角载波,从0增计数到T1PR=M,再减计数到0,循环不止;其时钟取事件管理器的最大时钟频率为75MHz,载波频率取fc=15kHz,可算得,M=2500。3/5考虑到由双极性调制法产生SPWM波形,且调制比小于1。三角载波的幅值M和正弦调制信号的峰值Um需满足UmM’=M/2正弦调制波的频率由读取正弦表的速度决定,可以选择CPU定时器T0给正弦波的周期定时。设正弦波的周期用T表示,则T0的定时时间应该是T0=T/N=T/600,即按照节拍T0依次读取正弦表,读取600个点正好一个正弦波周期T。CPU定时器T0是32位的定时器,其计数时钟为150MHz,则CPU定时器T0的最大定时长度为232/150MHz=28.6s,对应正弦波的最大周期Tmax为28.6N=17560s,以及最低频率为fmin=1/Tmax=1/1756010-4Hz。可见其频率分辨率已足够高。对应于工频50Hz时,T0=20ms/600=33.33us。CPU定时器T0在主程序中使用时只需调用一句ConfigCpuTimer(&CpuTimer0,150,T0)。3.2死区时间:逆变器主电路采用MOSFET,据此,可选择死区时间为500ns。为了避免SPWM波形的窄脉冲被死区吃掉,可以先计算与死区时间对应的计数次数,3.3PWM波形发生器的参数计算与程序设计使用DSP的事件管理器EVA模块的全比较单元产生SPWM波形,需要对事件管理器的寄存器进行配置,步骤如下:1)设置和装载比较行为控制寄存器ACTRA;4/52)使能死区功能,设置和装载死区定时器控制寄存器DBTCONA;3)初始化比较寄存器CMPR1、CMPR2、CMPR3;4)设置和装载比较控制寄存器COMCONA;5)设置和装载定时器控制寄存器T1CON,并启动操作;6)用计算的新值更新比较寄存器CMPR1、CMPR2、CMPR3。在EVA中产生PWM波形,其全比较单元的时钟是由通用定时器T1提供的。采用外部晶振30MHz,经内部倍频后的系统时钟SYSCLKOUT为150MHz,再经过高速预定标寄存器分频和T1控制寄存器预定标分频,最后的T1定时器时钟T1CLK为75MHz。比较方式控制寄存器ACTRA控制6个比较输出引脚PWMx(x=1~6)的输出方式。设置EvaRegs.ACTRA.all=0x0666,比较器输出引脚1、3、5高电平有效,2、4、6低电平有效。死区控制寄存器DBTCONA用于设置PWM电路的死区。死区定时器的周期值用m表示,死区定时器的预定标参数用p表示,死区的值为(p×m)个高速外设时钟HSPCLK的周期。本文HSPCLK=75MHz,取p=23=8,m=5,则死区时间为已知正弦波的峰值Um为1225时,经计算可容许667ns以内的死区时间。又按照硬件电路要求死区时间为500ns,因此p=8,m=5是合理的。设置EvaRegs.DBTCONA.all=0x05ec,死区时间是533ns。比较控制寄存器COMCONA决定比较单元的操作模式。第15位CENABLE是比较使能位;第14~13位CLD1~CLD0设置比较寄存器的重新装载条件,其中的值为00时表示下溢重装载,为01时表示下溢或周期重装载,为10时表示立即重载;第11~10位ACTRLD1~ACTRLD0设置方式控制寄存器ACTRA的重新装载条件,装载条件同第14~13位。第9位FCMPOE是全比较器使能输出位。因此写EvaRegs.COMCONA.all=0xA600,表示下溢出时重装载。定时器控制寄存器T1CON控制通用定时器的操作模式。第12~11位TMODE1~TMODE0是计数模式选择位,选择01表示连续递增/递减模式,以产生等腰三角波和对称PWM波形;第10~8位TPS2~TPS0用来设定输入时钟的预定标系数,选为000,使得TCLK=HSPCLK=75MHz;第6位是定时器使能位;第5~4位TCLKS1~TCLKS0选择时钟源,00表示选择内部时钟;TECMPR是定时器比较使能位。在程序中写EvaRegs.T1CON.all=0x0842,表示使用内部75MHz时钟产生对称等腰三角载波。4实验调试结果图3(下)是由DSP输出的一路SPWM波形,经RC滤波后的50Hz正弦波如图3(上)所示。其中,R=10kΩ,C=100nF。图4(上)与图3(下)相同,图4(下)是图4(上)的局部放大,可见其三角载波频率正好是15kHz。5/55总结使用TMS320F2812DSP,设计了三相光伏并网逆变器中的三相逆变控制程序,得到了一组合理的设计参数,实验调试结果较为满意。