王 衡 李 縱 李文彬 譚 巍
(中國船舶重工集團(tuán)公司第七二二研究所 武漢 430079)
正弦脈寬調(diào)制(SPWM)技術(shù)就是通過不斷改變波形的占空比,使脈沖的寬度按照正弦波規(guī)律變化的一種控制算法[1],廣泛應(yīng)用于變頻器、逆變器及電機(jī)調(diào)速系統(tǒng)中[2]。
目前實(shí)現(xiàn)SPWM波形的方法主要有三種:1)使用DSP(如TI公司的TMS320F240、TMS320F2812等),該方法只能產(chǎn)生6路或12路SPWM波形,由于運(yùn)用的是規(guī)則采樣法來產(chǎn)生SPWM波形,波形精度不如自然采樣法,不適合用于諧波要求較高的領(lǐng)域[3~4];2)使用專用芯片,該方法利用專用DDS芯片產(chǎn)生SPWM波形,成本和復(fù)雜度較高[5~6];3)使用可編程邏輯器件(如FPGA),該方法原理與模擬電路類似,只不過采用的是數(shù)字電路的方式,在FPGA中實(shí)現(xiàn)SPWM控制算法[7~8]。該方法可實(shí)現(xiàn)多路波形輸出,靈活性和精度比DSP方式高,缺點(diǎn)是占用FPGA資源較多。
本文在上述第三種方法的基礎(chǔ)上進(jìn)行了改進(jìn),將SPWM控制算法的運(yùn)算過程轉(zhuǎn)移到Matlab中完成,F(xiàn)PGA只負(fù)責(zé)將Matlab的運(yùn)算結(jié)果輸出,極大地簡化了FPGA的設(shè)計工作,節(jié)省了邏輯資源。
SPWM的基本原理如圖1所示,由正弦波和三角波比較得出,當(dāng)正弦波幅值大于三角波幅值時,SPWM波形為高電平,反之為低電平[9]。定義正弦波與三角波的幅值之比為調(diào)制度,三角波與正弦波的頻率之比為載波比,當(dāng)載波比為整數(shù)時,SPWM 波 形 將滿足周期性,周期與正弦波周期相同。本文所討論的實(shí)現(xiàn)方法僅限于周期性的SPWM波形,即載波比為整數(shù)的情況。
本文實(shí)現(xiàn)SPWM波形的基本思路是先由Matlab產(chǎn)生一個周期的SPWM離散數(shù)據(jù),再由FPGA進(jìn)行周期循環(huán)計數(shù)輸出結(jié)果。以產(chǎn)生一組單相互補(bǔ)對稱帶死區(qū)的SPWM波形為例,實(shí)現(xiàn)過程如圖2所示,分兩個步驟進(jìn)行設(shè)計:1)Matlab建模。先建立連續(xù)時間信號的正弦波和三角波模型,持續(xù)時間設(shè)為一個正弦波周期(假設(shè)載波比為N,則該時間段內(nèi)三角波的個數(shù)為N),然后分別對信號采樣,將其轉(zhuǎn)換成離散信號,經(jīng)過比較器后,變成邏輯電平信號,將其中一路反相,再分別送入死區(qū)發(fā)生器,輸出即為一個周期的SPWM離散數(shù)據(jù)。2)FPGA實(shí)現(xiàn)。FPGA根據(jù)Matlab生成的數(shù)據(jù),以循環(huán)計數(shù)的方式周期性地輸出這些數(shù)據(jù)即可生成SPWM波形。需要指出的是,Matlab中的采樣頻率fs與FPGA中的計數(shù)觸發(fā)時鐘頻率fs必須一致。
圖1 SPWM基本原理
圖2 SPWM波形實(shí)現(xiàn)方法
根據(jù)圖2搭建SPWM波形的SIMULINK模型,其中三角波由Repeating Sequence模塊產(chǎn)生,死區(qū)發(fā)生器由Discrete On/Off Delay模塊完成,將兩路SPWM信號輸出到Matlab工作空間,結(jié)果如圖3所示。設(shè)置正弦波的頻率為50Hz,三角波的頻率為1kHz,調(diào)制度為0.9,死區(qū)時間為5μs,仿真模式設(shè)置為FixedStepDiscrete方式,采樣率設(shè)置為1MHz,仿真時間設(shè)置為一個正弦波周期,即0.02s,則一個周期有20000個數(shù)據(jù)點(diǎn)。
圖3 SPWM波形的SIMULINK模型
SPWM波形的Matlab仿真結(jié)果如圖4所示。
對輸出到Matlab工作空間的SPWM1和SPWM2兩路信號進(jìn)行整理,可得一個周期內(nèi)的SPWM波形的開關(guān)點(diǎn)數(shù)據(jù)表,兩路SPWM波形的開關(guān)點(diǎn)數(shù)據(jù)分別如表1和表2所示。
圖4 SPWM波形仿真結(jié)果
表1 SPWM1開關(guān)點(diǎn)數(shù)據(jù)
表2 SPWM2開關(guān)點(diǎn)數(shù)據(jù)
通過Matlab的設(shè)計獲得了一個周期內(nèi)的SPWM波形數(shù)據(jù),因此FPGA只需要周期性地輸出這些結(jié)果即可實(shí)現(xiàn)SPWM波形。按照循環(huán)計數(shù)的方式,計數(shù)周期為20000,從0計數(shù)到19999,然后再從0重新計數(shù),周期性地輸出20000個邏輯電平值。根據(jù)表1和表2的結(jié)果,在相應(yīng)開關(guān)點(diǎn)處進(jìn)行電平翻轉(zhuǎn)。由于計數(shù)器的觸發(fā)時鐘必須與Matlab仿真的采樣率相同,因此需要將晶振時鐘分頻到1MHz。
下面給出SPWM1波形輸出的部分程序:
if clk’event and clk=’1’then
if n=19999then
n:=0;
else
n:=n+1;
end if;
if n>=0and n<=474then
qout<=’0’;
elsif n>474and n<=1075then
qout<=’1’;
………………
elsif n>19539and n<=19999then
qout<=’1’;
end if;
end if;
同理可以實(shí)現(xiàn)SPWM2波形輸出。FPGA仿真結(jié)果如圖5所示,結(jié)果與圖4所示的Matlab仿真結(jié)果相一致。
圖5 FPGA仿真結(jié)果
本文提出了一種聯(lián)合Matlab和FPGA產(chǎn)生SPWM波形的方案,并以單相SPWM為例給出了具體的實(shí)現(xiàn)方法。該方案的創(chuàng)新點(diǎn)在于將原本由FPGA完成的算法運(yùn)算過程轉(zhuǎn)移到Matlab中完成,F(xiàn)PGA只是作為輔助設(shè)計工具將結(jié)果輸出,這樣可以極大地降低FPGA的設(shè)計難度,簡化了實(shí)現(xiàn)過程。本文的設(shè)計方法很容易擴(kuò)展到三相SPWM及載波水平移相的SPWM系統(tǒng)中,只需要在Matlab中修改相應(yīng)的SIMULINK模型即可,具有較高的實(shí)用價值。
[1]陳道煉.DC-AC逆變技術(shù)及其應(yīng)用[M].北京:科學(xué)出版社,2003:45-46.
[2]張燕賓.SPWM變頻調(diào)速應(yīng)用技術(shù)[M].第四版.北京:科學(xué)出版社,2012:80-84.
[3]姜彬,張浩然,郭啟軍.基于DSP的SPWM不對稱規(guī)則采樣算法的分析與實(shí)現(xiàn)[J].微計算機(jī)信息,2009,25(4):211-214.
[4]欒天,高立潁,金志輝.基于DSP的三相SPWM波形設(shè)計及實(shí)現(xiàn)[J].通信電源技術(shù),2010,27(5):38-41.
[5]甘敬松,范蟠果.一種基于DDS的SPWM波形產(chǎn)生新算法研究[J].電力電子技術(shù),2008,42(1):72-74.
[6]周根榮,姜平,李俊紅.基于DDS的SPWM自然采樣法硬件實(shí)現(xiàn)[J].電力電子技術(shù),2007,41(6):80-82.
[7]丁衛(wèi)東,郭前崗,周西峰.一種基于FPGA的SPWM波的實(shí)時生成方法[J].計算機(jī)技術(shù)與發(fā)展,2011,41(2):211-214.
[8]黃永慶,甘金明.基于CPLD/FPGA的三相SPWM波形發(fā)生器的設(shè)計與實(shí)現(xiàn)[J].梧州學(xué)院學(xué)報,2008,18(3):36-41.
[9]劉鳳君.正弦波逆變器[M].北京:科學(xué)出版社,2002:101-103.
[10]劉鳳君.環(huán)保節(jié)能型H橋及SPWM直流電源式逆變器[M].北京:電子工業(yè)出版社,2010:21-26.