Thomas Burgers / Mbed 2 deprecated ZZ-TheChenneRobot

Dependencies:   Encoder HIDScope MODSERIAL QEI biquadFilter mbed

Revision:
38:17a1622a27f7
Parent:
36:da07b5c2984d
Child:
39:104a038f7b92
--- a/main.cpp	Tue Oct 13 21:37:23 2015 +0000
+++ b/main.cpp	Wed Oct 14 06:10:48 2015 +0000
@@ -61,17 +61,17 @@
 double integrate_error_turn=0;          // integration error turn motor
 double previous_error_turn=0;           // previous error turn motor
 
-const double Gain_P_turn=10; //0.0067; 
+double P_gain_turn=10; //0.0067; 
                     // stel setpoint tussen (0 en 360) en position tussen (0 en 360)
                     // max verschil: 360 -> dan pwm_to_motor 1 tot aan een verschil van 15 graden-> bij 15 moet pwm_to_motor ong 0.1 zijn 
                     // dus     0.1=15*gain      gain=0.0067
                     // Als 3 graden verschil 0.1 dan 0.1/3=gain=0.33
                                                         
-double Gain_I_turn=0.1; //0.025;  //(1/2000) //0.00000134
+double I_gain_turn=0.1; //0.025;  //(1/2000) //0.00000134
         // pwm_motor_I=(integrate_error_turn + sample_time*error)*gain;  pwm = (4*0.01 + 4)* Gain => 0.1 pwm gewenst (na 1 seconde een verschil van 4 graden)  
                         // 0.1 / (4.01) = Gain = 0.025
         
-double Gain_D_turn=50; //0.01;                    
+double D_gain_turn=50; //0.01;                    
         // error_derivative_turn=(error - previous_error_turn)/sample_time
         // 
 
@@ -91,8 +91,22 @@
 void keep_in_range(double * in, double min, double max);
 void setlooptimerflag(void);
 double get_reference(double input);
+//// Deactivate PID Controller strike
 
+void deactivate_PID_Controller_strike(double& P_gain, double& I_gain, double& D_gain)
+{
+    P_gain=0; 
+    I_gain=0; 
+    D_gain=0;
+}
 
+//// Activate PID Controller strike
+void activate_PID_Controller_strike(double& P_gain, double& I_gain, double& D_gain)
+{
+    P_gain=10;  // hier waardes P,I,D veranderen (waardes bovenaan doen (tijdelijk) niks meer
+    I_gain=0.1; 
+    D_gain=10;
+}
 
                                                      ///////////////////////////////
                                                      //                           //
@@ -112,6 +126,11 @@
     double pwm_motor_turn_D;
     double reference_turn=0;                  // Set constant to store reference value of the Turn motor
     
+    deactivate_PID_Controller_strike(P_gain_turn,I_gain_turn,D_gain_turn);
+    pc.printf("P = %d I = %d D = %d \n\r");
+    activate_PID_Controller_strike(P_gain_turn,I_gain_turn,D_gain_turn);
+    pc.printf("P = %d I = %d D = %d \n\r");
+    
     //START OF CODE 
     pc.printf("Start of code \n\r");
     
@@ -211,11 +230,11 @@
         previous_error_turn=error;                                // current error is saved to memory constant to be used in 
                                                                   // the next loop for calculating the derivative error 
 
-        pwm_to_motor_turn = error*Gain_P_turn;                     // output P controller to pwm   
+        pwm_to_motor_turn = error*P_gain_turn;                     // output P controller to pwm   
 
-        pwm_motor_turn_P = error*Gain_P_turn;                     // output P controller to pwm        
-        pwm_motor_turn_I = integrate_error_turn*Gain_I_turn;      // output I controller to pwm
-        pwm_motor_turn_D = error_derivative_turn*Gain_D_turn;     // output D controller to pwm
+        pwm_motor_turn_P = error*P_gain_turn;                     // output P controller to pwm        
+        pwm_motor_turn_I = integrate_error_turn*I_gain_turn;      // output I controller to pwm
+        pwm_motor_turn_D = error_derivative_turn*D_gain_turn;     // output D controller to pwm
 
         pwm_to_motor_turn = pwm_motor_turn_P + pwm_motor_turn_I + pwm_motor_turn_D;