Fork and fix for mwork

Dependencies:   mbed-dev-f303 FastPWM3 millis

Revision:
59:568e7be5232f
Parent:
51:6cd89bd6fcaa
--- a/FOC/foc.cpp	Mon Jun 29 03:34:16 2020 +0000
+++ b/FOC/foc.cpp	Mon Jun 29 09:36:26 2020 +0000
@@ -132,7 +132,7 @@
         observer->temperature2 = (double)(25.0f + ((observer->resistance*6.0606f)-1.0f)*275.5f);
         double e = observer->temperature - observer->temperature2;
         observer->temperature -= .001*e;
-        //printf("%.3f\n\r", e);
+        
         
 
        /// Commutation Loop ///
@@ -167,6 +167,7 @@
        controller->fw_int += .001f*(0.5f*OVERMODULATION*controller->v_bus - controller->v_ref);
        controller->fw_int = fmaxf(fminf(controller->fw_int, 0.0f), -I_FW_MAX);
        controller->i_d_ref = controller->fw_int;
+       
        //float i_cmd_mag_sq = controller->i_d_ref*controller->i_d_ref + controller->i_q_ref*controller->i_q_ref;
        limit_norm(&controller->i_d_ref, &controller->i_q_ref, I_MAX);
        
@@ -192,7 +193,7 @@
        controller->v_q = controller->k_q*i_q_error + controller->q_int ;//+ v_q_ff; 
        
        controller->v_ref = sqrt(controller->v_d*controller->v_d + controller->v_q*controller->v_q);
-       
+     //  printf("%.3f - %.3f - %.3f \n\r", controller->i_q_filt,controller->i_d_filt,0);
        limit_norm(&controller->v_d, &controller->v_q, OVERMODULATION*controller->v_bus);       // Normalize voltage vector to lie within curcle of radius v_bus
        float dtc_d = controller->v_d/controller->v_bus;
        float dtc_q = controller->v_q/controller->v_bus;
@@ -202,7 +203,7 @@
        controller->v_q = dtc_q*controller->v_bus;
        abc(controller->theta_elec + 0.0f*DT*controller->dtheta_elec, controller->v_d, controller->v_q, &controller->v_u, &controller->v_v, &controller->v_w); //inverse dq0 transform on voltages
        svm(controller->v_bus, controller->v_u, controller->v_v, controller->v_w, &controller->dtc_u, &controller->dtc_v, &controller->dtc_w); //space vector modulation
-
+        
        if(PHASE_ORDER){                                                         // Check which phase order to use, 
             TIM1->CCR3 = (PWM_ARR)*(1.0f-controller->dtc_u);                        // Write duty cycles
             TIM1->CCR2 = (PWM_ARR)*(1.0f-controller->dtc_v);
@@ -213,7 +214,7 @@
             TIM1->CCR1 = (PWM_ARR)*(1.0f-controller->dtc_v);
             TIM1->CCR2 =  (PWM_ARR)*(1.0f-controller->dtc_w);
         }
-
+        
        controller->theta_elec = theta;                                          
        
     }
@@ -222,6 +223,7 @@
 void torque_control(ControllerStruct *controller){
     float torque_ref = controller->kp*(controller->p_des - controller->theta_mech) + controller->t_ff + controller->kd*(controller->v_des - controller->dtheta_mech);
     //float torque_ref = -.1*(controller->p_des - controller->theta_mech);
+    
     controller->i_q_ref = torque_ref/KT_OUT;    
     controller->i_d_ref = 0.0f;
     }