akiyoshi oguro
/
Nucleo_Hall_rect_sin
CCW CW Control BLDC
vector.h
- Committer:
- oguro
- Date:
- 2020-11-17
- Revision:
- 2:f23351f7af0b
- Parent:
- 0:faa58403944a
File content as of revision 2:f23351f7af0b:
/***************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; } }