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