not working yet
Dependencies: Motor_with_encoder MODSERIAL mbed HIDScope
Diff: main.cpp
- Revision:
- 2:7c6391c8ca71
- Parent:
- 1:f3fe6d2b7639
- Child:
- 3:e888f52a46bc
--- a/main.cpp Mon Oct 16 09:43:57 2017 +0000 +++ b/main.cpp Mon Oct 16 10:15:23 2017 +0000 @@ -21,9 +21,9 @@ volatile double angle = 0;//set the angles double setpoint = 180;//I am setting it to move through 180 degrees -double Kp = 0.15;// you can set these constants however you like depending on trial & error -double Ki = 1; -double Kd = 0.5; +double Kp = 0.216;// you can set these constants however you like depending on trial & error +double Ki = 1.8; +double Kd = 0; float last_error = 0; float error1 = 0; @@ -36,7 +36,7 @@ volatile double position = 0.0; /*void readpot() { - + } */ void PIDcalculation() @@ -46,17 +46,14 @@ setpoint = potvalue*setpoint; //pc.printf("pos: %d, speed %f reference position = %.2f\r ",motor1.getPosition(), motor1.getSpeed(), setpoint); //motorpid = PID(potvalue - position, M1_KP, M1_KI, M1_KD, M1_TS, m1_err_int, m1_prev_err, m1_f_v1, m1_f_v2, M1_F_A1, M1_F_A2, M1_F_B0, M1_F_B1, M1_F_B2); - + if (angle <= setpoint) { dir1 = 1;// Forward motion } else { dir1 = 0;//Reverse motion } - + error1 = setpoint - angle; - if (error1 <= 0.2) { - speed1 = 0; - } changeError = error1 - last_error; // derivative term totalError += error1; //accumalate errors to find integral term @@ -79,11 +76,8 @@ speed1.period(PwmPeriod); while(true) { - - - + speed1 = pidTerm_scaled; - pc.printf("WHEEL ANGLE:%d, PID_scaled = %f, error = %f\r", angle, pidTerm_scaled, error1); }