
Calibratie motor, demo, (EMG calibratie en movement werkt niet)
Dependencies: mbed QEI HIDScope biquadFilter MODSERIAL Encoder FastPWM
Diff: main.cpp
- Revision:
- 4:7d0df890e801
- Parent:
- 3:16df793da2be
- Child:
- 5:810892d669f9
--- a/main.cpp Wed Oct 30 15:42:23 2019 +0000 +++ b/main.cpp Wed Oct 30 16:07:58 2019 +0000 @@ -9,8 +9,8 @@ InterruptIn but1(D1); InterruptIn but2(D0); -DigitalIn butsw2(SW2); -DigitalIn butsw3(SW3); +DigitalIn butsw2(SW3); +DigitalIn butsw3(SW2); AnalogIn potMeter1(A2); AnalogIn potMeter2(A1); @@ -27,8 +27,8 @@ States state; // ENCODER ..................................................................... -Encoder enc1 (D13, D12, true); //encoder 1 gebruiken -Encoder enc2 (D9, D8, true); //encoder 2 gebruiken +QEI enc1 (D13, D12, NC, 4200); //encoder 1 gebruiken +QEI enc2 (D9, D8, NC, 4200); //encoder 2 gebruiken float dt = 0.001; double e_int = 0; @@ -78,12 +78,12 @@ } if (but1_pressed) { pc.printf("Encoder has been calibrated \r\n"); - enc1_value = enc1.getPosition(); - enc2_value = enc2.getPosition(); + enc1_value = enc1.getPulses(); + enc2_value = enc2.getPulses(); //enc1_value -= enc1_zero; //enc2_value -= enc2_zero; - theta1 = (float)(enc1_value)/(float)(8400)*2*PI; - theta2 = (float)(enc2_value)/(float)(8400)*2*PI; + theta1 = (float)(enc1_value)/(float)(4200)*2*PI; + theta2 = (float)(enc2_value)/(float)(4200)*2*PI; enc1_zero = enc1_value; enc2_zero = enc2_value; but1_pressed = false; @@ -109,17 +109,17 @@ double GetReferencePosition() { double Potmeterwaarde = potMeter2.read(); //naam moet universeel worden - int maxwaarde = 400; // = 64x64 + int maxwaarde = 400; // double refP = Potmeterwaarde*maxwaarde; - return refP; // value between 0 and 4096 + return refP; // } double GetReferencePosition2() { double potmeterwaarde2 = potMeter1.read(); - int maxwaarde2 = 400; // = 64x64 + int maxwaarde2 = 400; // double refP2 = potmeterwaarde2*maxwaarde2; - return refP2; // value between 0 and 4096 + return refP2; // } double FeedBackControl(double error, double &e_int) // schaalt de snelheid naar de snelheid zodat onze chip het begrijpt (is nog niet in werking) @@ -167,13 +167,13 @@ //RKI(); // hier the control of the 1st control system refP = GetReferencePosition(); //moet nog met RKI - Huidigepositie1 = enc1.getPosition(); + Huidigepositie1 = enc1.getPulses(); error1 = (refP - Huidigepositie1);// make an error motorValue1 = FeedBackControl(error1, e_int); SetMotor1(motorValue1); // hier the control of the 2nd control system refP2 = GetReferencePosition2(); - Huidigepositie2 = enc2.getPosition(); + Huidigepositie2 = enc2.getPulses(); error2 = (refP2 - Huidigepositie2);// make an error motorValue2 = FeedBackControl2(error2, e_int2); SetMotor2(motorValue2); @@ -209,9 +209,9 @@ /*void measure_signals() { - enc1_value = enc1.getPosition(); - enc2_value = enc2.getPosition(); - //enc1_value -= enc1_zero; + enc1_value = enc1.getPulses(); + enc2_value = enc2.getPulses(); + enc1_value -= enc1_zero; //enc2_value -= enc2_zero; theta1 = (float)(enc1_value)/(float)(8400)*2*PI; theta2 = (float)(enc2_value)/(float)(8400)*2*PI;