孔康,曲波
(蘇州大學(xué) 電子信息學(xué)院,蘇州215006)
SVPWM與SPWM相比,是一種比較新穎的控制方法,能夠使輸出電流波形盡可能接近于理想的正弦波形,使直流母線電壓的利用率有了很大提高[1]。SVPWM主要應(yīng)用在變頻器領(lǐng)域,控制過(guò)程中需要對(duì)坐標(biāo)進(jìn)行變換及計(jì)算輸出時(shí)間,所以整個(gè)過(guò)程有一定的計(jì)算量,使得51單片機(jī)力不從心。人們只能采用價(jià)格昂貴、內(nèi)部資源偏少的DSP作為控制芯片。隨著STM32系列芯片的出現(xiàn),其豐富的片內(nèi)資源、較高的處理能力、極低的價(jià)格,使其得到開(kāi)發(fā)人員的青睞。
在傳統(tǒng)的三相橋式驅(qū)動(dòng)電路中,MOS管的開(kāi)關(guān)狀態(tài)一共有8種組合。如果將這幾種開(kāi)關(guān)方式加到三個(gè)相差120°的繞組上,則會(huì)產(chǎn)生8個(gè)電壓矢量。這8個(gè)電壓矢量被稱(chēng)為基本空間電壓矢量,如圖1所示。為了能夠得到一個(gè)圓形旋轉(zhuǎn)磁場(chǎng),SVPWM可以通過(guò)控制8個(gè)基本空間電壓矢量的作用時(shí)間,來(lái)合成每個(gè)扇區(qū)內(nèi)的任意電壓矢量。
圖1 空間矢量原理
采用STMicroelectronics公司的STM32F103VET6作為其控制芯片,其內(nèi)核為ARM公司Cortex-M3,最高時(shí)鐘頻率可達(dá)72MHz,包括512K片內(nèi)FLASH、64K片內(nèi)RAM、ADC、SPI、CAN、FSMC等豐富的內(nèi)部資源。STM32F103VET6內(nèi)部包含8個(gè)定時(shí)器,其中有2個(gè)高級(jí)定時(shí)器,所有的定時(shí)器都包含一個(gè)16位自動(dòng)裝載寄存器。高級(jí)定時(shí)器支持嵌入死區(qū)時(shí)間的互補(bǔ)PWM,而且支持剎車(chē)信號(hào)的輸入[2],所以非常適合應(yīng)用在變頻器、電機(jī)控制器等場(chǎng)合。
根據(jù)SVPWM的快速算法[3]可以得到各個(gè)基本空間電壓矢量的作用時(shí)間和輸出順序。知道輸出順序后,就可以確定高級(jí)定時(shí)器的工作模式。由于SVPWM的輸出波形是很對(duì)稱(chēng)的,所以選用TIM1的中央對(duì)齊模式:
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_CenterAligned1;
此模式下,計(jì)數(shù)器從0開(kāi)始計(jì)數(shù)到自動(dòng)加載值減1,同時(shí)產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件。然后向下計(jì)數(shù)到1,并且產(chǎn)生一個(gè)計(jì)數(shù)器下溢事件,再?gòu)?開(kāi)始重新計(jì)數(shù)。
為了提高定時(shí)器的分辨率,直接將72MHz作為定時(shí)器的計(jì)數(shù)時(shí)鐘,沒(méi)有任何預(yù)分頻。假設(shè)SVPWM的調(diào)制頻率為frq,則可以計(jì)算時(shí)間基的計(jì)數(shù)值tpwm:
TIM_CLOCK是定時(shí)器的計(jì)數(shù)頻率,本系統(tǒng)為72MHz。如果調(diào)制頻率設(shè)為20kHz,則計(jì)數(shù)器的值則為3 600。
TIM1的 CH1、CH1N、CH2、CH2N、CH3、CH3N 通道對(duì)應(yīng)的GPIO引腳須設(shè)為GPIO_M(jìn)ode_AF_PP模式才能正常輸出。根據(jù)各個(gè)基本空間電壓矢量的作用時(shí)間,可以計(jì)算出TIM1上三個(gè)通道各自的OCRx值。圖2為各個(gè)通道OCRx的值對(duì)應(yīng)的輸出波形。
圖2 輸出波形
為了減少中斷的時(shí)間,在中斷程序中僅保留了輸出SVPWM所必要的運(yùn)算及對(duì)TIM1必要的操作。整個(gè)程序中的所有的電壓量全部轉(zhuǎn)化為標(biāo)幺值[4]。由于STM32是一款32位的控制器,所以需要參與計(jì)算值都采用Q15的形式,這樣可以在提高精度的同時(shí)保證乘法運(yùn)算不會(huì)溢出。中斷子程序的流程如圖3所示。
圖3 中斷子程序流程圖
由圖2可以看出,在定時(shí)器輸出波形時(shí)有兩個(gè)觸發(fā)產(chǎn)生。TIM1_CH4可以用來(lái)觸發(fā)芯片的其他功能(如ADC采樣),這樣就可以自動(dòng)完成一些工作,避免消耗CPU資源。
為了在一個(gè)周期調(diào)制完成后馬上進(jìn)行下一個(gè)周期的調(diào)制,下次調(diào)制的時(shí)間需要提前計(jì)算,此時(shí)就必須打開(kāi)定時(shí)器的預(yù)裝載功能。在發(fā)生計(jì)數(shù)器溢出中斷后,計(jì)算下一次調(diào)制時(shí)各個(gè)通道的時(shí)間。計(jì)算完成后將結(jié)果寫(xiě)入預(yù)裝載寄存器,以便在下次更新時(shí)寫(xiě)入新的比較值。可以看出,SVPWM只在中斷中耗費(fèi)了CPU的一點(diǎn)資源用來(lái)計(jì)算,其余全是定時(shí)器自動(dòng)完成,而且在兩次調(diào)制之間沒(méi)有任何延遲。
實(shí)驗(yàn)硬件電路包括主控芯片及外圍電路、MOS驅(qū)動(dòng)器和由6個(gè)MOS管組成的逆變器。其部分電路如圖4所示。ADUM3223驅(qū)動(dòng)器[5]的輸入來(lái)自STM32F103VET6中TIM1的CH1和CH1N,兩者為互補(bǔ)輸出。使能輸入端連接到芯片的PE15引腳,并且有一個(gè)4.7KΩ的上拉電阻。在輸出端的高端設(shè)計(jì)了一個(gè)泵電源,保證高端MOS管能夠可靠導(dǎo)通。R1用來(lái)保證充電速度不會(huì)過(guò)快,可根據(jù)實(shí)際需求更改大小。在MOS管的柵極有一個(gè)限流電阻,用來(lái)防止MOS管漏源極電壓dv/dt太大,導(dǎo)致?lián)p壞。
由于SVPWM的輸入為αβ坐標(biāo)系下的Uα和Uβ,在讓矢量運(yùn)行軌跡為圓形時(shí)特別困難,所以在輸入端前加入了一個(gè)Park變換算法,使其變?yōu)閁d和Uq。這樣只需要設(shè)置合成矢量的角度和大小,而角度可以人為設(shè)為一個(gè)勻速圓周運(yùn)動(dòng)的值。圖5為第一扇區(qū)下的調(diào)制輸出波形。圖6為矢量圓周運(yùn)動(dòng)時(shí),輸出相電壓濾波后的馬鞍波形。
圖4 部分驅(qū)動(dòng)電路圖
圖5 第一扇區(qū)調(diào)制波形
圖6 馬鞍波形
由實(shí)驗(yàn)結(jié)果可知,該設(shè)計(jì)方案可以方便地實(shí)現(xiàn)SVPWM輸出,計(jì)算量并不大。其功能主要是靠硬件實(shí)現(xiàn),所以占用CPU資源很少,完全可以當(dāng)作一個(gè)模塊應(yīng)用到其他場(chǎng)合中。
[1]周衛(wèi)平,吳正國(guó),唐勁松,等.SVPWM的等效算法及SVPWM與SPWM的本質(zhì)聯(lián)系[J].中國(guó)電機(jī)工程學(xué)報(bào),2006,26(2):133-137.
[2]STMicroelectronics.STM32F10xxx reference manual(RM0008),2010.
[3]周衛(wèi)平,吳正國(guó).電壓空間矢量脈寬調(diào)制的簡(jiǎn)單快速算法[J].電工電能新技術(shù),2005,24(2):28-30.
[4]孫立華.標(biāo)幺值表示方法探討[J].編輯學(xué)報(bào),2010,22(3):220.
[5]Analog Devices.ADuM3223/ADuM4223Data Sheet,2012.