hoi

Dependencies:   mbed QEI biquadFilter MODSERIAL

Revision:
5:9e8847a0492c
Parent:
4:de0923cf6bcc
Child:
6:b0b15eb27de1
diff -r de0923cf6bcc -r 9e8847a0492c main.cpp
--- a/main.cpp	Thu Nov 02 12:11:41 2017 +0000
+++ b/main.cpp	Thu Nov 02 14:24:47 2017 +0000
@@ -54,7 +54,7 @@
 double M2_home; 
 double M2_error_pos = 0;
 float M2_Kp = 1.5;
-float M2_Ki = 0.5;
+float M2_Ki = 1.5;
 float M2_Kd = 0;
 double M2_e_int=0;
 double M2_e_prior=0;
@@ -63,6 +63,7 @@
 
 double M1_rel_pos;
 double M2_rel_pos;
+double M2_reference_pos;
 
 float Ts = 0.002; //500hz sample freq
 
@@ -116,7 +117,8 @@
      M2_direction.write(1);
      }
     else{M2_speed.write(0);}       
-    pc.printf("M2 integral = %f\n\r", M2_e_int);
+    //pc.printf("M2 speed = %f, M2 direction = %i, M2 pos error =  %f, M2 setpoint = %f\n\r",set_speed,M2_direction.read(),M2_error_pos,M2_reference_pos);
+    //pc.printf("M2 integral = %f position error = %f\n\r", M2_e_int,M2_error_pos);
   }
  
  void homing_system () {
@@ -124,8 +126,7 @@
     LimSW2.mode(PullDown);
     M1_speed.write(0);
     M2_speed.write(0);
-    M1_direction.write(0);
-    M2_direction.write(1);
+    
     
        while(1){
             if (HomStart.read() == 0){
@@ -136,10 +137,10 @@
             double M1_rel_pos = enc1.getPulses()/32.0/131.25*2.0*3.1416; 
             double M2_rel_pos = enc2.getPulses()/32.0/131.25*2.0*3.1416;  
             if(LimSW1.read() == 0){
-                  M1_error_pos = 1.5*setpoint - M1_rel_pos;
+                  M1_error_pos = 1.2*setpoint - M1_rel_pos;
             }
             if(LimSW2.read() == 0){
-                M2_error_pos = -(0.5*setpoint - M2_rel_pos);
+                M2_error_pos = - setpoint - M2_rel_pos;
             }
             M1_control();
             M2_control();
@@ -163,9 +164,10 @@
                 wait(0.5);
                 M1_home = enc1.getPulses()/32.0/131.25*2.0*3.1416; //in radians
                 M2_home = enc2.getPulses()/32.0/131.25*2.0*3.1416; //in radians
-                //break;
-                while(1); //stop after homing.
+                break;
+                //while(1); //stop after homing.
         }
+        pc.printf("M2 error = %f M2 reference = %f\n\r", M2_error_pos,M2_reference_pos);
         wait(0.01);
        }
 
@@ -198,18 +200,19 @@
     
     //double M1_reference_pos = 1+potmeter.read()*0.5*3.1416; //should cover the right range - radians
     double M1_reference_pos = 0.5*3.1416-potmeter.read(); //should cover the right range - radians
-    double M2_reference_pos = 0.5+potmeter2.read()*0.25*3.1416;
+    //double M2_reference_pos = 0.25*3.1416+potmeter2.read();
+    double M2_reference_pos = 0.4+potmeter2.read();
         
     
-    //M2_error_pos = M2_reference_pos - M2_actual_pos;
-    M2_error_pos = 0;
+    pc.printf("M2 home = %f, M2 reference = %f \n\r",Arm2_home,M2_reference_pos);
+    //M2_error_pos = 0;
     if(M1_reference_pos > Arm1_home){
         M1_reference_pos = Arm1_home;
     }
     else{
         M1_error_pos = M1_reference_pos - M1_actual_pos;
     }
-    if(M2_reference_pos > Arm2_home){
+    if(M2_reference_pos < Arm2_home){
         M2_reference_pos = Arm2_home;
     }
     else{
@@ -218,7 +221,7 @@
 }
  
 int main() {
-    
+button1.fall(StopMotors);      
     //initialize serial comm and set motor PWM freq
 M1_speed.period(1.0/pwm_freq);
 M2_speed.period(1.0/pwm_freq);
@@ -229,7 +232,7 @@
 pc.printf("Setting home position complete\n\r");
 //attach all interrupt
 pc.printf("attaching interrupt tickers now \n\r");
-button1.fall(StopMotors);     //stop motor interrupt
+   //stop motor interrupt
 motor_update1.attach(&M1_control,0.01);
 motor_update2.attach(&M2_control,0.01);
 error_update.attach(&geterror,0.01);