資源描述:
《spwm數(shù)字控制》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、spwm的數(shù)字控制#include#include"pwm.h"#include"ADC.H"_FOSC(CSW_FSCM_OFF&XT_PLL4);//4倍頻晶振,F(xiàn)ailsafe時鐘關(guān)閉_FWDT(WDT_OFF);//關(guān)閉看門狗定時器_FBORPOR(PBOR_OFF&MCLR_EN);//掉電復(fù)位禁止,MCLR復(fù)位使能。_FGS(CODE_PROT_OFF);//代碼保護(hù)禁止#defineOffset_1200x5555//120度偏移值intflag_pwm;intAmplitude;intFrequency;voidDelay();constintPWM_
2、Scaling=230;//pwm周期值constintsinetable[]=//這是一個含有64個值的正弦波表,覆蓋了正弦函數(shù)的360度。{0,3212,6393,9512,12539,15446,18204,20787,23170,25329,27245,28898,30273,31356,32137,32609,32767,32609,32137,31356,30273,28898,27245,25329,23170,20787,18204,15446,12539,9512,6393,3212,0,-3212,-6393,-9512,-12539,-15446,-18204,-2078
3、7,-23170,-25329,-27245,-28898,-30273,-31356,-32137,-32609,-32767,-32609,-32137,-31356,-30273,-28898,-27245,-25329,-23170,-20787,-18204,-15446,-12539,-9512,-6393,-3212,};intmain(void){intTemp1,Temp2,Temp3,Phase;PORTD=0;PORTE=0;TRISD=0xF7FF;//設(shè)置RD11輸出驅(qū)動PWM緩沖器TRISE=0xFDFF;//設(shè)置RE9輸出復(fù)位電源模塊PORTE=0X0200;//
4、電機(jī)復(fù)位Delay(10);PORTE=0;init_ADC();init_pwm();while(1){if(flag_pwm==1){flag_pwm=0;Phase=Phase+Frequency;//查表值Temp1=Phase;//a相查表值Temp2=Temp1+Offset_120;//a+120得到b相查表值Temp3=Temp2+Offset_120;//b+120得到c相查表值Temp1=Temp1>>10;//將a相右移得到6位查表值Temp1=Temp1<<1;//左移一位得到a相字節(jié)查表值Temp2=Temp2>>10;Temp2=Temp2<<1;//bTemp3=
5、Temp3>>10;Temp3=Temp3<<1;//c/*********************************************************///計(jì)算第一相占空比Temp1=sinetable[Temp1];Temp1=Temp1*Amplitude;Temp1=Temp1*PWM_Scaling;Temp1=Temp1+PWM_Scaling;PDC1=Temp1;//計(jì)算第二相占空比Temp2=sinetable[Temp2];Temp2=Temp2*Amplitude;Temp2=Temp2*PWM_Scaling;Temp2=Temp2+PWM_Scal
6、ing;PDC2=Temp2;//計(jì)算第三相占空比Temp3=sinetable[Temp3];Temp3=Temp3*Amplitude;Temp3=Temp3*PWM_Scaling;Temp3=Temp3+PWM_Scaling;PDC3=Temp3;}//else//{//;//}}}voidDelay(unsignedintcount){unsignedintj;for(j=0;j7、nclude#include"spwm.h"http://intFrequency;//intAmplitude;voidinit_ADC(void){//ADinitializationADPCFG=0xef7f;//模擬輸入ADCON1=0X0066;//AD為pwm觸發(fā)轉(zhuǎn)換ADCON3=0X0003;//采樣時間為系統(tǒng)時間;Tad=Tcy*2ADCON2=0X0404;//完