2014-10-15 Arm 1 naar thuispositie. Eerste poging, fout in keep_in_range
Dependencies: Encoder MODSERIAL TextLCD mbed mbed-dsp
Revision 32:80fc2de5b511, committed 2014-11-05
- 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