![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
CCW CW Control BLDC
Diff: vector.h
- Revision:
- 0:faa58403944a
diff -r 000000000000 -r faa58403944a vector.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vector.h Sun Feb 17 02:58:08 2019 +0000 @@ -0,0 +1,106 @@ +/***************Current Filter ************************/ +void filterCurrent(){ + float Itau=0.1,Idt=0.1; // Itau=1.0E-6,Idt=1.0E-6; + /****Filter Iu********/ + float Iu1,Iu2,Iu3,Iu4;//0.01 + Iu1=Idt*(Curr_ui-Curr_u)/Itau; + Iu2=Idt*(Curr_ui-(Curr_u+Iu1/2.0))/Itau; + Iu3=Idt*(Curr_ui-(Curr_u+Iu2/2.0))/Itau; + Iu4=Idt*(Curr_ui-(Curr_u+Iu3/2.0))/Itau; + Curr_u=Curr_u+(Iu1+2.0*Iu2+2.0*Iu3+Iu4)/6.0; + Curr_uf +=(Curr_u-Curr_uf)*0.2; + /****Filter Iv********/ + float Iv1,Iv2,Iv3,Iv4;//0.01 + Iv1=Idt*(Curr_vi-Curr_v)/Itau; + Iv2=Idt*(Curr_vi-(Curr_v+Iv1/2.0))/Itau; + Iv3=Idt*(Curr_vi-(Curr_v+Iv2/2.0))/Itau; + Iv4=Idt*(Curr_vi-(Curr_v+Iv3/2.0))/Itau; + Curr_v=Curr_v+(Iv1+2.0*Iv2+2.0*Iv3+Iv4)/6.0; + Curr_vf +=(Curr_v-Curr_vf)*0.2; + /****Filter Iw********/ + float Iw1,Iw2,Iw3,Iw4;//0.01 + Iw1=Idt*(Curr_wi-Curr_w)/Itau; + Iw2=Idt*(Curr_wi-(Curr_w+Iw1/2.0))/Itau; + Iw3=Idt*(Curr_wi-(Curr_w+Iw2/2.0))/Itau; + Iw4=Idt*(Curr_wi-(Curr_w+Iw3/2.0))/Itau; + Curr_w=Curr_w+(Iw1+2.0*Iw2+2.0*Iw3+Iw4)/6.0; + Curr_wf +=(Curr_w-Curr_wf)*0.2; + /*************************************/ + iu = -(Curr_uf - 0.5)/0.1 - 0.5; + iv = -(Curr_vf - 0.5)/0.1 - 0.5; + iw = -(Curr_wf - 0.5)/0.1 - 0.5; + + } +/***********************************************************************/ + + +/************Space Vector PWM***************/ +void SVPWM(){ + aVa=abs(Va); + a3Vb=abs(sq3*Vb); + if((Va>=0)&&(Vb>=0)&&(aVa>=a3Vb)){ //sect 0 + + d1=sq32*(Va-sq3*Vb)*Vdlink; + d2=sq32*(sq23*Vb)*Vdlink; + d07=(z-(d1+d2))*0.5; + // d07=0; + du=d1+d2+d07; + dv=d2+d07; + dw=d07; + + } + if((aVa<=sq3*Vb)){ //sect 1 + + d3=sq32*(-Va+sq3*Vb)*Vdlink; + d2=sq32*(Va+sq3*Vb)*Vdlink; + d07=(z-(d2+d3))*0.5; + //d07=0; + du=d2+d07; + dv=d2+d3+d07; + dw=d07; + } + + if((Va<=0)&&(Vb>=0)&&(aVa>=a3Vb)){ //sect 2 + + d3=sq32*sq23*Vb*Vdlink; + d4=sq32*(-Va-sq3*Vb)*Vdlink; + d07=(z-(d3+d4))*0.5; + // d07=0; + du=d07; + dv=d3+d4+d07; + dw=d4+d07; + } + + if((Va<=0)&&(Vb<=0)&&(aVa>=a3Vb)){ //sect 3 + + d5=-sq32*sq23*Vb*Vdlink; + d4=sq32*(-Va+sq3*Vb)*Vdlink; + d07=(z-(d4+d5))*0.5; + //d07=0; + du=d07; + dv=d4+d07; + dw=d4+d5+d07; + } + + if((aVa<=-sq3*Vb)){ //sect 4 + + d5=sq32*(-Va-sq3*Vb)*Vdlink;; + d6=sq32*(Va-sq3*Vb)*Vdlink; + d07=(z-(d5+d6))*0.5; + //d07=0; + du=d6+d07; + dv=d07; + dw=d5+d6+d07; + } + + if((Va>=0)&&(Vb<=0)&&(aVa>=a3Vb)){ //sect 5 + + d1=sq32*(Va+sq3*Vb)*Vdlink;; + d6=-sq32*sq23*Vb*Vdlink;; + d07=(z-(d1+d6))*0.5; + //d07=0; + du=d1+d6+d07; + dv=d07; + dw=d6+d07; + } + }