(北京航空航天大學可靠性與系統工程學院 北京 100000)
各種PWM控制策略,特別是正弦脈寬調制SPWM控制已在逆變技術中得到廣泛應用。該技術是基于沖量等效原理,用一系列等幅而不等寬的窄脈沖序列代替同樣數量且彼此相連的正弦波脈沖,而這一序列的產生,是用正弦波與高頻三角波比較得到的。隨著數字信號處理技術的發展及高速DSP芯片的不斷推出,越來越多的設計圍繞DSP展開,這也使得SPWM波的產生無論從硬件還是軟件上都大為簡化,并且能獲得高穩定性、高可靠性的控制效果。
本文就要介紹一種基于TI公司專門為工業應用而設計的新一代DSP處理器TMS320F2812來實現SPWM信號產生的方法。TMS320F2812是美國德州儀器公司TI最新研制的一代32位定點數字信號處理器(DSP)芯片,有工作頻率達150MHz的32位DSP內核處理器,TMS320F2812片內擁有高達128K X 16位的FLASH程序存儲器,在大多數情況下,可以滿足序存儲的需要。控制生成SPWM主要利用的是片上的事件管理器模塊(EVA和EVB),此法產生的SPWM波,已經廣泛使用于逆變電路等開關器件的通斷。
用軟件實現SPWM波,需要一定的數學模型。建立數學模型的方法有很多,常用的有諧波消去法、等面積法、采樣型SPWM法等,本文研究的是采樣型SPWM法。其中自然采樣法雖能真實反映脈沖產生與結束的時刻,卻不適于微機實時控制。相比較而言,對稱規則采樣法計算簡單,產生的SPWM波形,具有速度快、變頻方便等優點。精度也往往能得到保證,因此在實際應用當中,用得最多的還是此種方法。
產生SPWM波的原理是:用一組等腰三角波與一個正弦波進行比較,其相交的時刻(即交點)作為開關管“開”或“關”的時刻,這組等腰三角形波稱為載波,而正弦波稱為調制波,如圖1所示。正弦波的頻率和幅值是可控制的,改變正弦波的頻率,就可以改變電源輸出電壓的頻率,改變正弦波的幅值,也就改變了正弦波與載波的交點,使輸出脈沖系列的寬度發生變化,從而改變電源輸出電壓的大小。

圖1 SPWM的實現方法
由于DSP的定時器產生的三角波都是從0往上計數到周期,然后往下計數到0,中間沒有負半波,所以從簡化編程考慮,把坐標原點定在三角波的波谷處。以便得到等效雙極性SPWM波。實際的模型如圖2所示,此時三角波的幅值變化范圍為0一Ur,而正弦波為:

圖2 采樣法
式中:M是調制比
對稱規則采樣法是從自然采樣法演變而來的,因為工程上的實際應用要求計算方法簡單,誤差不是很大。
其基本思想是:在等腰三角載波的波谷時刻對正弦調制波進行采樣而得一點,過此點作一水平直線和三角波分別交于兩點,在此兩點控制功率器件的通斷。也就是說,該法是用一段水平線段代替一段正弦曲線,從而將正弦波簡化為階梯波。
根據相似三角形關系,可得:


所以


B、c兩相的開通時刻計算公式與A相一致,只是比較寄存器采樣時刻不同,分別為:
TMS320F2812事件管理器A(EVA)的脈沖寬度調制電路共有3個全比較單元,每個單元都能輸出兩個帶有可編程死區和極性相反的PWM信號(如圖3),正好滿足三相逆變器的需要。在控制領域中,PWM電路極大地減小了產生PWM波形的CPU開銷,也簡化了用于產生同步脈寬調制波形的控制軟件和外部硬件。

圖3 EVA的PWM電路模塊圖
設置通用定時器I(GPTl)為連續增/減計數模式,以此作為時基來模擬前面所述的三角載波,載波周期為2*T1PR(定時器1周期寄存器值)個定標輸入時鐘周期。在定時器1計數的過程中,其值不斷與比較寄存器CMPRx(x=1。2,3)的值進行比較,當計數值與比較寄存器的值相等時,則發生比較匹配,對應的PWM輸出引腳發生電平翻轉。在連續增/減計數模式下,一個周期將發生兩次電平翻轉,從而輸出一對稱PWM脈沖。比較寄存器的值代表脈沖寬度計數值,實時在線改變該值,就可以改變兩次電平翻轉的時刻,從而可以改變每個PWM脈沖的寬度。此外再通過配置死區發生單元和輸出邏輯,就可以很方便的從通用輸入/輸出(GPIO)多路復用端口輸出所需的SPWM波形。
TMS320F2812的波形發生器,屬于DSP芯片的外部事件管理模塊,占用CPU的時間很少,可以方便地產生三相六路帶有可編程死區和輸出極性的SPWM波形。
本文調制波頻率為50HZ,置N=255,則載波頻率就為12750HZ,以此產生與電網同頻率的正弦波。
void InitSysCtrl(void)
{
Uint16 i;
EALLOW;
// 禁止開門狗
SysCtrlRegs.WDCR=0x0068;
// 初始化 PLL模塊
SysCtrlRegs.PLLCR=0xA;///系統時鐘30*10/2=150M
//延時,使得PLL初始化成功
for(i=0;i< 5000;i++){}
SysCtrlRegs.HISPCP.all=0x0001;//HSPCLK=150M/2=75M
SysCtrlRegs.LOSPCP.all=0x0002;//LSPCLK=150M/4=37.5M
SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;//使能EVA的時鐘
EDIS;
}
在程序中設置
EvaRegs.T1CON.all=0x094e;
即T1CON寄存器的值為0000 1001 0100 1110

圖4 通用定時器控制寄存器功能框圖
對比框圖,第12、11位為01,即采用的是連續增/減模式 。10、9、8為001即輸入時鐘預定標參數為x/2,也就是說,T1CNT每計數一次,所需要的時間是(1/37.5)us。由于T1現在是連續增/減模式, 那么1個PWM周期需要的是(2T1PR)個時鐘周期,因此有:

EvaRegs.COMCONA.all=0xa600;// 使能比較,下溢或周期中斷重載
EvaRegs.ACTR.all=0x0666;//1、3、5輸出高有效,2、4、6輸出低有效。
EvaRegs.DBTCONA.bit.DBT=6;//死區定時器周期為6
EvaRegs.DBTCONA.bit.EDBT1=1;//死區定時器1使能
EvaRegs.DBTCONA.bit.DBTPS=5;//死區定時器預定標因子,死區時鐘為HSPCLK/32
DSP控制系統程序主要有主程序和中斷服務程序。中斷服務程序用來產生正弦脈寬SPWM信號。在主程序初始化完畢后,設置T1CON,啟動定時器1開始工作,并重新開啟中短。
主程序:
void main(void){
k0 = 0;
h1 = 0;
h2 = 0;
InitSysCtrl();
DINT; //禁止全局中斷
IER=0;
IFR=0;
EALLOW;
// Enable PWM pins
GpioMuxRegs.GPAMUX.all = 0x00FF; // EVA PWM 1-6 pins
EDIS;
InitPieCtrl();
InitPieVectTable();
EALLOW;
PieVectTable.T1UFINT=&eva_T1UFINT_ISR;
EDIS;
IER|=M_INT2;
PieCtrl.PIEIER2.bit.INTx6=1;
InitEv();
zkb();
EvaRegs.T1CON.all=EvaRegs.T1CON.all|0x0040; //啟動定時器1
EINT;
while(1)
{
asm("NOP");
}
}
按照以上思路編寫出的軟件經過調試編譯,運行良好,SPWM波形正常,如圖5。脫離仿真環境后和逆變電路連接在一起,驅動IGBT工作,逆變出的三相正弦波波形良好。

圖5 實驗波形圖
(1)利用TMS320F2812自帶的EVA,極大的方便了PWM波形的生成,為后續實驗開發提供有利保障。
(2)用TMS320F2812芯片產生的PWM信號具有精度高,波形可靠等優點,有很高的實際使用價值。