CCW CW Control BLDC

Dependencies:   mbed mbed-rtos

vector.h

Committer:
oguro
Date:
2019-02-17
Revision:
0:faa58403944a

File content as of revision 0:faa58403944a:

/***************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;
     }   
   }