CCW CW Control BLDC

Dependencies:   mbed mbed-rtos

Revision:
0:faa58403944a
--- /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;
+     }   
+   }