2014-10-15 Arm 1 naar thuispositie. Eerste poging, fout in keep_in_range

Dependencies:   Encoder MODSERIAL TextLCD mbed mbed-dsp

Files at this revision

API Documentation at this revision

Comitter:
JKleinRot
Date:
Wed Nov 05 18:29:00 2014 +0000
Parent:
31:36fe36657f8d
Commit message:
2014-11-05 Laatste versie PIPO 2 groep 4. Kalibratie positie en EMG compleet. Keuze maken in doel werkt. Snelheidsregelaar werkt niet, PWM gestuurd. Niet alle cases voor doelen kunnen controleren, werken niet allemaal goed. Case BBBB werkt wel.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Tue Nov 04 00:33:35 2014 +0000
+++ b/main.cpp	Wed Nov 05 18:29:00 2014 +0000
@@ -246,14 +246,14 @@
                     while(regelaar_ticker_flag != true);            //Als geen flag opgestoken, dan niks doen, wel flag, dan uit de while loop en door naar volgende regel
                     regelaar_ticker_flag = false;                   //Flag weer naar beneden, zodat deze straks weer omhoog kan
 
-                    referentie_arm1 = referentie_arm1 + 180.0/200.0;            //Referentie loopt in één seconde op tot het gewenste aantal pulsen
+                    referentie_arm1 = referentie_arm1 + 203.0/200.0;            //Referentie loopt in één seconde op tot het gewenste aantal pulsen
 
                     pc.printf("pulsmotorgetposition1 %d ", puls_motor_arm1.getPosition());          //Huidig aantal getelde pulsen van de encoder naar pc sturen
                     pc.printf("pwmmotor1 %f ", pwm_to_motor_arm1);                                  //Huidige PWM waarde naar motor naar pc sturen
                     pc.printf("referentie1 %f\n\r", referentie_arm1);                               //Huidige referentie naar pc sturen
 
-                    if (puls_motor_arm1.getPosition() >= 180) {     //Als het gewenste aantal pulsen behaald is
-                        referentie_arm1 = 180;                      //Blijft de referentie op dat aantal pulsen staan
+                    if (puls_motor_arm1.getPosition() >= 203) {     //Als het gewenste aantal pulsen behaald is
+                        referentie_arm1 = 203;                      //Blijft de referentie op dat aantal pulsen staan
                         state = KALIBRATIE_ARM2;                    //Door naar de volgende state
                     }
                 }
@@ -891,15 +891,15 @@
                     while(regelaar_ticker_flag != true);            //Als geen flag opgestoken, dan niks doen, wel flag, dan uit de while loop en door naar volgende regel
                     regelaar_ticker_flag = false;                   //Flag weer naar beneden, zodat deze straks weer omhoog kan
 
-                    while(puls_motor_arm1.getPosition() > -84) {
-                        referentie_arm1 = referentie_arm1 - 264.0/200.0;                    //Referentie arm 1 loopt af in een seconden naar de gewenste waarde
+                    while(puls_motor_arm1.getPosition() > -107) {
+                        referentie_arm1 = referentie_arm1 - 287.0/200.0;                    //Referentie arm 1 loopt af in een seconden naar de gewenste waarde
                         pc.printf("referentie arm 1 %f ", referentie_arm1);                 //Referentie naar pc sturen
                         pc.printf("get position 1 %d ", puls_motor_arm1.getPosition());     //Positie naar pc sturen
                         pc.printf("pwm motor 1 %f\n\r", pwm_to_motor_arm1);                 //PWM naar pc sturen
                     }
 
-                    if(puls_motor_arm1.getPosition() <= -84) {
-                        referentie_arm1 = -84;
+                    if(puls_motor_arm1.getPosition() <= -107) {
+                        referentie_arm1 = -107;
                     }
 
                     while(puls_motor_arm2.getPosition() < 211) {
@@ -909,10 +909,10 @@
                         pc.printf("pwm motor 2 %f\n\r", pwm_to_motor_arm2);                 //PWM naar pc sturen
                     }
                     ticker_motor_arm2_pid.detach();
-                    pwm_to_motor_arm2 = 1;
+                    pwm_to_motor_arm2 = 0.8;
                     pwm_motor_arm2.write(pwm_to_motor_arm2);
                     dir_motor_arm2.write(0);
-                    while(puls_motor_arm2.getPosition() > 36) {
+                    while(puls_motor_arm2.getPosition() > -306) {
 
                         pc.printf("referentie arm 2 %f ", referentie_arm2);                 //Referentie naar pc sturen
                         pc.printf("get position 2 %d ", puls_motor_arm2.getPosition());     //Positie naar pc sturen
@@ -964,15 +964,15 @@
                     while(regelaar_ticker_flag != true);            //Als geen flag opgestoken, dan niks doen, wel flag, dan uit de while loop en door naar volgende regel
                     regelaar_ticker_flag = false;                   //Flag weer naar beneden, zodat deze straks weer omhoog kan
 
-                    while(puls_motor_arm1.getPosition() > -84) {
-                        referentie_arm1 = referentie_arm1 - 264.0/200.0;                    //Referentie arm 1 loopt af in een seconde naar gewenste waarde
+                    while(puls_motor_arm1.getPosition() > -107) {
+                        referentie_arm1 = referentie_arm1 - 287.0/200.0;                    //Referentie arm 1 loopt af in een seconde naar gewenste waarde
                         pc.printf("referentie arm 1 %f ", referentie_arm1);                 //Referentie naar pc sturen
                         pc.printf("get position 1 %d ", puls_motor_arm1.getPosition());     //Positie naar pc sturen
                         pc.printf("pwm motor 1 %f\n\r", pwm_to_motor_arm1);                 //PWM naar pc sturen
                     }
 
-                    if(puls_motor_arm1.getPosition() <= -84) {
-                        referentie_arm1 = -84;
+                    if(puls_motor_arm1.getPosition() <= -107) {
+                        referentie_arm1 = -107;
                     }
 
                     while(puls_motor_arm2.getPosition() < 211) {
@@ -982,10 +982,10 @@
                         pc.printf("pwm motor 2 %f\n\r", pwm_to_motor_arm2);                 //PWM naar pc sturen
                     }
                     ticker_motor_arm2_pid.detach();
-                    pwm_to_motor_arm2 = 1;
+                    pwm_to_motor_arm2 = 0.9;
                     pwm_motor_arm2.write(pwm_to_motor_arm2);
                     dir_motor_arm2.write(0);
-                    while(puls_motor_arm2.getPosition() > 36) {
+                    while(puls_motor_arm2.getPosition() > -306) {
 
                         pc.printf("referentie arm 2 %f ", referentie_arm2);                 //Referentie naar pc sturen
                         pc.printf("get position 2 %d ", puls_motor_arm2.getPosition());     //Positie naar pc sturen
@@ -1018,15 +1018,15 @@
                     while(regelaar_ticker_flag != true);            //Als geen flag opgestoken, dan niks doen, wel flag, dan uit de while loop en door naar volgende regel
                     regelaar_ticker_flag = false;                   //Flag weer naar beneden, zodat deze straks weer omhoog kan
 
-                    while(puls_motor_arm1.getPosition() > -84) {
-                        referentie_arm1 = referentie_arm1 - 259.0/200.0;                    //Referentie arm 1 loopt af in een seconde naar gewenste waarde
+                    while(puls_motor_arm1.getPosition() > -107) {
+                        referentie_arm1 = referentie_arm1 - 287.0/200.0;                    //Referentie arm 1 loopt af in een seconde naar gewenste waarde
                         pc.printf("referentie arm 1 %f ", referentie_arm1);                 //Referentie naar pc sturen
                         pc.printf("get position 1 %d ", puls_motor_arm1.getPosition());     //Positie naar pc sturen
                         pc.printf("pwm motor 1 %f\n\r", pwm_to_motor_arm1);                 //PWM naar pc sturen
                     }
 
-                    if(puls_motor_arm1.getPosition() <= -84) {
-                        referentie_arm1 = -84;
+                    if(puls_motor_arm1.getPosition() <= -107) {
+                        referentie_arm1 = -107;
                     }
 
                     while(puls_motor_arm2.getPosition() < 211) {
@@ -1039,7 +1039,7 @@
                     pwm_to_motor_arm2 = 1;
                     pwm_motor_arm2.write(pwm_to_motor_arm2);
                     dir_motor_arm2.write(0);
-                    while(puls_motor_arm2.getPosition() > 36) {
+                    while(puls_motor_arm2.getPosition() > -306) {
 
                         pc.printf("referentie arm 2 %f ", referentie_arm2);                 //Referentie naar pc sturen
                         pc.printf("get position 2 %d ", puls_motor_arm2.getPosition());     //Positie naar pc sturen
@@ -1136,15 +1136,15 @@
                     while(regelaar_ticker_flag != true);            //Als geen flag opgestoken, dan niks doen, wel flag, dan uit de while loop en door naar volgende regel
                     regelaar_ticker_flag = false;                   //Flag weer naar beneden, zodat deze straks weer omhoog kan
 
-                    while(puls_motor_arm1.getPosition() > 48) {
-                        referentie_arm1 = referentie_arm1 - 132.0/200.0;                    //Referentie arm 1 loopt af in een seconde naar gewenste waarde
+                    while(puls_motor_arm1.getPosition() > 25) {
+                        referentie_arm1 = referentie_arm1 - 155.0/200.0;                    //Referentie arm 1 loopt af in een seconde naar gewenste waarde
                         pc.printf("referentie arm 1 %f ", referentie_arm1);                 //Referentie naar pc sturen
                         pc.printf("get position 1 %d ", puls_motor_arm1.getPosition());     //Positie naar pc sturen
                         pc.printf("pwm motor 1 %f\n\r", pwm_to_motor_arm1);                 //PWM naar pc sturen
                     }
 
-                    if(puls_motor_arm1.getPosition() <= 48) {
-                        referentie_arm1 = 48;
+                    if(puls_motor_arm1.getPosition() <= 25) {
+                        referentie_arm1 = 25;
                     }
 
                     while(puls_motor_arm2.getPosition() < 167) {
@@ -1154,11 +1154,11 @@
                         pc.printf("pwm motor 2 %f\n\r", pwm_to_motor_arm2);                 //PWM naar pc sturen
                     }
                     ticker_motor_arm2_pid.detach();
-                    pwm_to_motor_arm2 = 1;
+                    pwm_to_motor_arm2 = 0.8;
                     pwm_motor_arm2.write(pwm_to_motor_arm2);
                     dir_motor_arm2.write(0);
 
-                    while(puls_motor_arm2.getPosition() > -8) {
+                    while(puls_motor_arm2.getPosition() > -370) {
 
                         pc.printf("referentie arm 2 %f ", referentie_arm2);                 //Referentie naar pc sturen
                         pc.printf("get position 2 %d ", puls_motor_arm2.getPosition());     //Positie naar pc sturen
@@ -1207,15 +1207,15 @@
                     while(regelaar_ticker_flag != true);            //Als geen flag opgestoken, dan niks doen, wel flag, dan uit de while loop en door naar volgende regel
                     regelaar_ticker_flag = false;                   //Flag weer naar beneden, zodat deze straks weer omhoog kan
 
-                    while(puls_motor_arm1.getPosition() > 48) {
-                        referentie_arm1 = referentie_arm1 - 132.0/200.0;                    //Referentie arm 1 loopt af in een seconde naar gewenste waarde
+                    while(puls_motor_arm1.getPosition() > 25) {
+                        referentie_arm1 = referentie_arm1 - 155.0/200.0;                    //Referentie arm 1 loopt af in een seconde naar gewenste waarde
                         pc.printf("referentie arm 1 %f ", referentie_arm1);                 //Referentie naar pc sturen
                         pc.printf("get position 1 %d ", puls_motor_arm1.getPosition());     //Positie naar pc sturen
                         pc.printf("pwm motor 1 %f\n\r", pwm_to_motor_arm1);                 //PWM naar pc sturen
                     }
 
-                    if(puls_motor_arm1.getPosition() <= 48) {
-                        referentie_arm1 = 48;
+                    if(puls_motor_arm1.getPosition() <= 25) {
+                        referentie_arm1 = 25;
                     }
 
                     while(puls_motor_arm2.getPosition() < 167) {
@@ -1225,11 +1225,11 @@
                         pc.printf("pwm motor 2 %f\n\r", pwm_to_motor_arm2);                 //PWM naar pc sturen
                     }
                     ticker_motor_arm2_pid.detach();
-                    pwm_to_motor_arm2 = 1;
+                    pwm_to_motor_arm2 = 0.9;
                     pwm_motor_arm2.write(pwm_to_motor_arm2);
                     dir_motor_arm2.write(0);
 
-                    while(puls_motor_arm2.getPosition() > -8) {
+                    while(puls_motor_arm2.getPosition() > -370) {
 
                         pc.printf("referentie arm 2 %f ", referentie_arm2);                 //Referentie naar pc sturen
                         pc.printf("get position 2 %d ", puls_motor_arm2.getPosition());     //Positie naar pc sturen
@@ -1263,15 +1263,15 @@
                     while(regelaar_ticker_flag != true);            //Als geen flag opgestoken, dan niks doen, wel flag, dan uit de while loop en door naar volgende regel
                     regelaar_ticker_flag = false;                   //Flag weer naar beneden, zodat deze straks weer omhoog kan
 
-                    while(puls_motor_arm1.getPosition() > 48) {
-                        referentie_arm1 = referentie_arm1 - 132.0/200.0;                    //Referentie arm 1 loopt af in een seconde naar gewenste positie
+                    while(puls_motor_arm1.getPosition() > 25) {
+                        referentie_arm1 = referentie_arm1 - 155.0/200.0;                    //Referentie arm 1 loopt af in een seconde naar gewenste positie
                         pc.printf("referentie arm 1 %f ", referentie_arm1);                 //Referentie naar pc sturen
                         pc.printf("get position 1 %d ", puls_motor_arm1.getPosition());     //Positie naar pc sturen
                         pc.printf("pwm motor 1 %f\n\r", pwm_to_motor_arm1);                 //PWM naar pc sturen
                     }
 
-                    if(puls_motor_arm1.getPosition() <= 48) {
-                        referentie_arm1 = 48;
+                    if(puls_motor_arm1.getPosition() <= 25) {
+                        referentie_arm1 = 25;
                     }
 
                     while(puls_motor_arm2.getPosition() < 167) {
@@ -1285,7 +1285,7 @@
                     pwm_motor_arm2.write(pwm_to_motor_arm2);
                     dir_motor_arm2.write(0);
 
-                    while(puls_motor_arm2.getPosition() > -8) {
+                    while(puls_motor_arm2.getPosition() > -370) {
 
                         pc.printf("referentie arm 2 %f ", referentie_arm2);                 //Referentie naar pc sturen
                         pc.printf("get position 2 %d ", puls_motor_arm2.getPosition());     //Positie naar pc sturen
@@ -1320,11 +1320,11 @@
                     regelaar_ticker_flag = false;                   //Flag weer naar beneden, zodat deze straks weer omhoog kan
 
                     ticker_motor_arm2_pid.detach();
-                    pwm_to_motor_arm2 = 1;
+                    pwm_to_motor_arm2 = 0.8;
                     pwm_motor_arm2.write(pwm_to_motor_arm2);
                     dir_motor_arm2.write(0);
 
-                    while(puls_motor_arm2.getPosition() < -175) {
+                    while(puls_motor_arm2.getPosition() > -414) {
 
                         pc.printf("referentie arm 2 %f ", referentie_arm2);                 //Referentie naar pc sturen
                         pc.printf("get position 2 %d ", puls_motor_arm2.getPosition());     //Positie naar pc sturen
@@ -1335,7 +1335,7 @@
                     pwm_motor_arm2.write(pwm_to_motor_arm2);
                     dir_motor_arm2.write(1);
 
-                    while(puls_motor_arm2.getPosition() >= 0) {
+                    while(puls_motor_arm2.getPosition()<= 123) {
                         pc.printf("referentie arm 2 %f ", referentie_arm2);             //Referentie naar pc sturen
                         pc.printf("get position 2 %d ", puls_motor_arm2.getPosition()); //Positie naar pc sturen
                         pc.printf("pwm motor 2 %f\n\r ", pwm_to_motor_arm2);            //PWM naar pc sturen
@@ -1380,7 +1380,7 @@
                     pwm_motor_arm2.write(pwm_to_motor_arm2);
                     dir_motor_arm2.write(0);
 
-                    while(puls_motor_arm2.getPosition() < -175) {
+                    while(puls_motor_arm2.getPosition() > -414) {
 
                         pc.printf("referentie arm 2 %f ", referentie_arm2);                 //Referentie naar pc sturen
                         pc.printf("get position 2 %d ", puls_motor_arm2.getPosition());     //Positie naar pc sturen
@@ -1391,7 +1391,7 @@
                     pwm_motor_arm2.write(pwm_to_motor_arm2);
                     dir_motor_arm2.write(1);
 
-                    while(puls_motor_arm2.getPosition() >= 0) {
+                    while(puls_motor_arm2.getPosition()<= 123) {
                         pc.printf("referentie arm 2 %f ", referentie_arm2);             //Referentie naar pc sturen
                         pc.printf("get position 2 %d ", puls_motor_arm2.getPosition()); //Positie naar pc sturen
                         pc.printf("pwm motor 2 %f\n\r ", pwm_to_motor_arm2);            //PWM naar pc sturen
@@ -1420,7 +1420,7 @@
                     pwm_motor_arm2.write(pwm_to_motor_arm2);
                     dir_motor_arm2.write(0);
 
-                    while(puls_motor_arm2.getPosition() < -175) {
+                    while(puls_motor_arm2.getPosition() > -414) {
 
                         pc.printf("referentie arm 2 %f ", referentie_arm2);                 //Referentie naar pc sturen
                         pc.printf("get position 2 %d ", puls_motor_arm2.getPosition());     //Positie naar pc sturen
@@ -1431,7 +1431,7 @@
                     pwm_motor_arm2.write(pwm_to_motor_arm2);
                     dir_motor_arm2.write(1);
 
-                    while(puls_motor_arm2.getPosition() >= 0) {
+                    while(puls_motor_arm2.getPosition()<= 123) {
                         pc.printf("referentie arm 2 %f ", referentie_arm2);             //Referentie naar pc sturen
                         pc.printf("get position 2 %d ", puls_motor_arm2.getPosition()); //Positie naar pc sturen
                         pc.printf("pwm motor 2 %f\n\r ", pwm_to_motor_arm2);            //PWM naar pc sturen
@@ -1454,11 +1454,11 @@
                     pc.printf("pwm motor 2 %f\n\r ", pwm_to_motor_arm2);                    //PWM naar pc sturen
                 }
 
-                while(puls_motor_arm1.getPosition() < 180) {
+                while(puls_motor_arm1.getPosition() < 203) {
                     while(regelaar_ticker_flag != true);            //Als geen flag opgestoken, dan niks doen, wel flag, dan uit de while loop en door naar volgende regel
                     regelaar_ticker_flag = false;                   //Flag weer naar beneden, zodat deze straks weer omhoog kan
 
-                    referentie_arm1 = referentie_arm1 + 132.0/200.0;                        //Referentie arm 1 loopt op in een seconde naar gewenste waarde
+                    referentie_arm1 = referentie_arm1 + 155.0/200.0;                        //Referentie arm 1 loopt op in een seconde naar gewenste waarde
                     pc.printf("referentie arm 1 %f ", referentie_arm1);                     //Referentie naar pc sturen
                     pc.printf("get position 1 %d ", puls_motor_arm1.getPosition());         //Positie naar pc sturen
                     pc.printf("pwm motor 1 %f\n\r ", pwm_to_motor_arm1);                    //PWM naar pc sturen
@@ -1479,11 +1479,11 @@
                     pc.printf("pwm motor 2 %f\n\r ", pwm_to_motor_arm2);                    //PWM naar pc sturen
                 }
 
-                while(puls_motor_arm1.getPosition() < 175) {
+                while(puls_motor_arm1.getPosition() < 203) {
                     while(regelaar_ticker_flag != true);            //Als geen flag opgestoken, dan niks doen, wel flag, dan uit de while loop en door naar volgende regel
                     regelaar_ticker_flag = false;                   //Flag weer naar beneden, zodat deze straks weer omhoog kan
 
-                    referentie_arm1 = referentie_arm1 + 259.0/200.0;                        //Referentie arm 1 loopt op in een seconde naar gewenste waarde
+                    referentie_arm1 = referentie_arm1 + 287.0/200.0;                        //Referentie arm 1 loopt op in een seconde naar gewenste waarde
                     pc.printf("referentie arm 1 %f ", referentie_arm1);                     //Referentie naar pc sturen
                     pc.printf("get position 1 %d ", puls_motor_arm1.getPosition());         //Positie naar pc sturen
                     pc.printf("pwm motor 1 %f\n\r ", pwm_to_motor_arm1);                    //PWM naar pc sturen