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