
SPWM的基本原理是在進行脈寬調制時,使脈沖系列的占空比按正弦規律來安排。當正弦值為最大值時,脈沖的寬度也最大,而脈沖間的間隔則最小,反之,當正弦值較小時,脈沖的寬度也小,而脈沖間的間隔則較大,這樣的電壓脈沖系列可以使負載電流中的高次諧波成分大為減小,稱為正弦波脈寬調制。
硬件SPWM的方法就是將頻率固定好,頻率固定就意味著X軸的時間T也就固定下來,Y軸是振幅。有了這個參數后把正弘波分為360份,每度1份,先計算上面圖的面積,得出后匹配脈沖面積。最后計算出每個脈沖的時間和占空比時間,以次作為單片機的定時器溢出時間。
此方法雖然較為復雜,但卻行之有效。單片機基本上不點用資源,定時器中斷,付下次溢出的初始值,輸出SPWM,再等下次中斷,不需要復雜計算公式寫進MCU中,還要開幾個定時器和ADC。
軟件實現方法
定義一個時間數組time[359]={0,1,2......}//里面是通過計算得到的脈沖寬度時間和占空比時間。作用:作為定時器溢出值。
定義一個Count//溢出次數,溢出360次為一個半周。bitPF//定義正負半標記bit=0上半周,bit=1下半周,初始化TH0和TL0數值任意定。
定時器中斷
THTL=time[Count]//設定下次的溢出時間。
Count++
if(Count==360){bit!=bit,Count=0,THTL=time[0]}//上下半周設定。
if(bit==0){PORT!=PORT}//送出SPWM信號,上半周,要幾路送幾路。
else{PORT!=PORT}//下半周,送出SPWM信號,要幾路送幾路。三相上添加延時處理。
在設置完畢后就可以對溢出時間進行計算了。這種方式雖然有些繁瑣,但得出的結果卻非常準確。尤其是在大多數MCU開發者不愿進行開源的情況下更是非常有用。本文從硬件和軟件方面,給出了利用SPWM來進行單片機MCU溢出時間計算方式,正遇到此類問題的朋友不妨按照文中的方法試一試。
聲明:本內容為作者獨立觀點,不代表電源網。本網站原創內容,如需轉載,請注明出處;本網站轉載的內容(文章、圖片、視頻)等資料版權歸原作者所有。如我們采用了您不宜公開的文章或圖片,未能及時和您確認,避免給雙方造成不必要的經濟損失,請電郵聯系我們,以便迅速采取適當處理措施;歡迎投稿,郵箱∶editor@netbroad.com。
微信關注 | ||
![]() |
技術專題 | 更多>> | |
![]() |
技術專題之EMC |
![]() |
技術專題之PCB |