CCW CW Control BLDC

Dependencies:   mbed mbed-rtos

Committer:
oguro
Date:
Tue Nov 17 01:31:35 2020 +0000
Revision:
2:f23351f7af0b
Parent:
0:faa58403944a
New forward Revers sine Wave 2020 11 17

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oguro 0:faa58403944a 1 /***************Current Filter ************************/
oguro 0:faa58403944a 2 void filterCurrent(){
oguro 0:faa58403944a 3 float Itau=0.1,Idt=0.1; // Itau=1.0E-6,Idt=1.0E-6;
oguro 0:faa58403944a 4 /****Filter Iu********/
oguro 0:faa58403944a 5 float Iu1,Iu2,Iu3,Iu4;//0.01
oguro 0:faa58403944a 6 Iu1=Idt*(Curr_ui-Curr_u)/Itau;
oguro 0:faa58403944a 7 Iu2=Idt*(Curr_ui-(Curr_u+Iu1/2.0))/Itau;
oguro 0:faa58403944a 8 Iu3=Idt*(Curr_ui-(Curr_u+Iu2/2.0))/Itau;
oguro 0:faa58403944a 9 Iu4=Idt*(Curr_ui-(Curr_u+Iu3/2.0))/Itau;
oguro 0:faa58403944a 10 Curr_u=Curr_u+(Iu1+2.0*Iu2+2.0*Iu3+Iu4)/6.0;
oguro 0:faa58403944a 11 Curr_uf +=(Curr_u-Curr_uf)*0.2;
oguro 0:faa58403944a 12 /****Filter Iv********/
oguro 0:faa58403944a 13 float Iv1,Iv2,Iv3,Iv4;//0.01
oguro 0:faa58403944a 14 Iv1=Idt*(Curr_vi-Curr_v)/Itau;
oguro 0:faa58403944a 15 Iv2=Idt*(Curr_vi-(Curr_v+Iv1/2.0))/Itau;
oguro 0:faa58403944a 16 Iv3=Idt*(Curr_vi-(Curr_v+Iv2/2.0))/Itau;
oguro 0:faa58403944a 17 Iv4=Idt*(Curr_vi-(Curr_v+Iv3/2.0))/Itau;
oguro 0:faa58403944a 18 Curr_v=Curr_v+(Iv1+2.0*Iv2+2.0*Iv3+Iv4)/6.0;
oguro 0:faa58403944a 19 Curr_vf +=(Curr_v-Curr_vf)*0.2;
oguro 0:faa58403944a 20 /****Filter Iw********/
oguro 0:faa58403944a 21 float Iw1,Iw2,Iw3,Iw4;//0.01
oguro 0:faa58403944a 22 Iw1=Idt*(Curr_wi-Curr_w)/Itau;
oguro 0:faa58403944a 23 Iw2=Idt*(Curr_wi-(Curr_w+Iw1/2.0))/Itau;
oguro 0:faa58403944a 24 Iw3=Idt*(Curr_wi-(Curr_w+Iw2/2.0))/Itau;
oguro 0:faa58403944a 25 Iw4=Idt*(Curr_wi-(Curr_w+Iw3/2.0))/Itau;
oguro 0:faa58403944a 26 Curr_w=Curr_w+(Iw1+2.0*Iw2+2.0*Iw3+Iw4)/6.0;
oguro 0:faa58403944a 27 Curr_wf +=(Curr_w-Curr_wf)*0.2;
oguro 0:faa58403944a 28 /*************************************/
oguro 0:faa58403944a 29 iu = -(Curr_uf - 0.5)/0.1 - 0.5;
oguro 0:faa58403944a 30 iv = -(Curr_vf - 0.5)/0.1 - 0.5;
oguro 0:faa58403944a 31 iw = -(Curr_wf - 0.5)/0.1 - 0.5;
oguro 0:faa58403944a 32
oguro 0:faa58403944a 33 }
oguro 0:faa58403944a 34 /***********************************************************************/
oguro 0:faa58403944a 35
oguro 0:faa58403944a 36
oguro 0:faa58403944a 37 /************Space Vector PWM***************/
oguro 0:faa58403944a 38 void SVPWM(){
oguro 0:faa58403944a 39 aVa=abs(Va);
oguro 0:faa58403944a 40 a3Vb=abs(sq3*Vb);
oguro 0:faa58403944a 41 if((Va>=0)&&(Vb>=0)&&(aVa>=a3Vb)){ //sect 0
oguro 0:faa58403944a 42
oguro 0:faa58403944a 43 d1=sq32*(Va-sq3*Vb)*Vdlink;
oguro 0:faa58403944a 44 d2=sq32*(sq23*Vb)*Vdlink;
oguro 0:faa58403944a 45 d07=(z-(d1+d2))*0.5;
oguro 0:faa58403944a 46 // d07=0;
oguro 0:faa58403944a 47 du=d1+d2+d07;
oguro 0:faa58403944a 48 dv=d2+d07;
oguro 0:faa58403944a 49 dw=d07;
oguro 0:faa58403944a 50
oguro 0:faa58403944a 51 }
oguro 0:faa58403944a 52 if((aVa<=sq3*Vb)){ //sect 1
oguro 0:faa58403944a 53
oguro 0:faa58403944a 54 d3=sq32*(-Va+sq3*Vb)*Vdlink;
oguro 0:faa58403944a 55 d2=sq32*(Va+sq3*Vb)*Vdlink;
oguro 0:faa58403944a 56 d07=(z-(d2+d3))*0.5;
oguro 0:faa58403944a 57 //d07=0;
oguro 0:faa58403944a 58 du=d2+d07;
oguro 0:faa58403944a 59 dv=d2+d3+d07;
oguro 0:faa58403944a 60 dw=d07;
oguro 0:faa58403944a 61 }
oguro 0:faa58403944a 62
oguro 0:faa58403944a 63 if((Va<=0)&&(Vb>=0)&&(aVa>=a3Vb)){ //sect 2
oguro 0:faa58403944a 64
oguro 0:faa58403944a 65 d3=sq32*sq23*Vb*Vdlink;
oguro 0:faa58403944a 66 d4=sq32*(-Va-sq3*Vb)*Vdlink;
oguro 0:faa58403944a 67 d07=(z-(d3+d4))*0.5;
oguro 0:faa58403944a 68 // d07=0;
oguro 0:faa58403944a 69 du=d07;
oguro 0:faa58403944a 70 dv=d3+d4+d07;
oguro 0:faa58403944a 71 dw=d4+d07;
oguro 0:faa58403944a 72 }
oguro 0:faa58403944a 73
oguro 0:faa58403944a 74 if((Va<=0)&&(Vb<=0)&&(aVa>=a3Vb)){ //sect 3
oguro 0:faa58403944a 75
oguro 0:faa58403944a 76 d5=-sq32*sq23*Vb*Vdlink;
oguro 0:faa58403944a 77 d4=sq32*(-Va+sq3*Vb)*Vdlink;
oguro 0:faa58403944a 78 d07=(z-(d4+d5))*0.5;
oguro 0:faa58403944a 79 //d07=0;
oguro 0:faa58403944a 80 du=d07;
oguro 0:faa58403944a 81 dv=d4+d07;
oguro 0:faa58403944a 82 dw=d4+d5+d07;
oguro 0:faa58403944a 83 }
oguro 0:faa58403944a 84
oguro 0:faa58403944a 85 if((aVa<=-sq3*Vb)){ //sect 4
oguro 0:faa58403944a 86
oguro 0:faa58403944a 87 d5=sq32*(-Va-sq3*Vb)*Vdlink;;
oguro 0:faa58403944a 88 d6=sq32*(Va-sq3*Vb)*Vdlink;
oguro 0:faa58403944a 89 d07=(z-(d5+d6))*0.5;
oguro 0:faa58403944a 90 //d07=0;
oguro 0:faa58403944a 91 du=d6+d07;
oguro 0:faa58403944a 92 dv=d07;
oguro 0:faa58403944a 93 dw=d5+d6+d07;
oguro 0:faa58403944a 94 }
oguro 0:faa58403944a 95
oguro 0:faa58403944a 96 if((Va>=0)&&(Vb<=0)&&(aVa>=a3Vb)){ //sect 5
oguro 0:faa58403944a 97
oguro 0:faa58403944a 98 d1=sq32*(Va+sq3*Vb)*Vdlink;;
oguro 0:faa58403944a 99 d6=-sq32*sq23*Vb*Vdlink;;
oguro 0:faa58403944a 100 d07=(z-(d1+d6))*0.5;
oguro 0:faa58403944a 101 //d07=0;
oguro 0:faa58403944a 102 du=d1+d6+d07;
oguro 0:faa58403944a 103 dv=d07;
oguro 0:faa58403944a 104 dw=d6+d07;
oguro 0:faa58403944a 105 }
oguro 0:faa58403944a 106 }