看到了吧,SPWM就是這樣.
笨方法就是,把你須要的頻率固定好,X軸的時間T也就定了下來,Y軸就是振幅,這個自己決定.有了這個參數(shù)后把正弘波分為360份.每度1份,先計(jì)算上面圖的面積,得出后匹配下圖的的脈沖面積。最后計(jì)算出每個脈沖的時間和占空比時間,以次作為單片機(jī)的定時器溢出時間。別小看這個土方法,但是行之有效,單片機(jī)基本上不點(diǎn)用資源,定時器中斷,付下次溢出的初始值,輸出SPWM,再等下次中斷,不像大俠們的復(fù)雜計(jì)算公試寫進(jìn)MCU中,要開幾個定時器和ADC。
軟件實(shí)現(xiàn)方法:
定義一個時間數(shù)組 time[359]={0,1,2......} //里面是剛才計(jì)算到的脈沖寬度時間和占空比時間 作用:作為定時器溢出值
定義一個Count //溢出次數(shù),溢出360次為一個半周
bit PF //定義正負(fù)半標(biāo)記 bit =0上半周,bit=1下半周
初始化TH0和TL0數(shù)值任意定
定時器中斷
TH TL=time[Count] //設(shè)定下次的溢出時間
Count++
if (Count==360) {bit != bit ,Count=0,TH TL=time[0] } //上下半周設(shè)定
if (bit==0) {PORT != PORT} //送出SPWM信號,要幾路送幾路 這個是上半周
else{ PORT != PORT} //送出SPWM信號,要幾路送幾路 這個是下半周,三相再加個延時處理
大功告成。
簡單吧,有空時我寫個軟件自己生成等數(shù)量用于定時器。只要計(jì)算一次永久使用,反正大家都在做50HZ的,大家一起計(jì)算面積然后共享就可以了。
如有不明可以992001010交流:注 電源網(wǎng),否則拒加