From b9eaec8e975684b118f352345c127ffb8ce7676d Mon Sep 17 00:00:00 2001 From: Randy Mackay Date: Mon, 6 Oct 2014 12:48:27 +0900 Subject: [PATCH] Tracker: rename err variable to angle_err No functional change --- AntennaTracker/servos.pde | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/AntennaTracker/servos.pde b/AntennaTracker/servos.pde index d3d71352db..e95d623fce 100644 --- a/AntennaTracker/servos.pde +++ b/AntennaTracker/servos.pde @@ -14,7 +14,7 @@ static void update_pitch_position_servo(float pitch) // pitch argument is -90 to 90, where 0 is horizontal // servo_out is in 100ths of a degree float ahrs_pitch = ahrs.pitch_sensor*0.01f; - int32_t err = (ahrs_pitch - pitch) * 100.0; + int32_t angle_err = (ahrs_pitch - pitch) * 100.0; // Need to configure your servo so that increasing servo_out causes increase in pitch/elevation (ie pointing higher into the sky, // above the horizon. On my antenna tracker this requires the pitch/elevation servo to be reversed // param set RC2_REV -1 @@ -31,7 +31,7 @@ static void update_pitch_position_servo(float pitch) // PITCH2SRV_I 0.020000 // PITCH2SRV_D 0.000000 // PITCH2SRV_IMAX 4000.000000 - int32_t new_servo_out = channel_pitch.servo_out - g.pidPitch2Srv.get_pid(err); + int32_t new_servo_out = channel_pitch.servo_out - g.pidPitch2Srv.get_pid(angle_err); channel_pitch.servo_out = constrain_float(new_servo_out, -9000, 9000); // add slew rate limit @@ -145,7 +145,7 @@ static void update_yaw_position_servo(float yaw) // param set RC1_MIN 680 // According to the specs at https://www.servocity.com/html/hs-645mg_ultra_torque.html, // that should be 600 through 2400, but the azimuth gearing in my antenna pointer is not exactly 2:1 - int32_t err = wrap_180_cd(ahrs_yaw_cd - yaw_cd); + int32_t angle_err = wrap_180_cd(ahrs_yaw_cd - yaw_cd); /* a positive error means that we need to rotate counter-clockwise @@ -163,10 +163,12 @@ static void update_yaw_position_servo(float yaw) if (slew_dir != 0) { making_progress = (-slew_dir * earth_rotation.z >= 0); } else { - making_progress = (err * earth_rotation.z >= 0); + making_progress = (angle_err * earth_rotation.z >= 0); } + + // handle hitting servo limits if (abs(channel_yaw.servo_out) == 18000 && - abs(err) > margin && + abs(angle_err) > margin && making_progress && hal.scheduler->millis() - slew_start_ms > g.min_reverse_time*1000) { // we are at the limit of the servo and are not moving in the @@ -179,14 +181,14 @@ static void update_yaw_position_servo(float yaw) stop slewing and revert to normal control when normal control should move us in the right direction */ - if (slew_dir * err < -margin) { + if (slew_dir * angle_err < -margin) { new_slew_dir = 0; } if (new_slew_dir != slew_dir) { gcs_send_text_fmt(PSTR("SLEW: %d/%d err=%ld servo=%ld ez=%.3f"), (int)slew_dir, (int)new_slew_dir, - (long)err, + (long)angle_err, (long)channel_yaw.servo_out, degrees(ahrs.get_gyro().z)); } @@ -198,7 +200,7 @@ static void update_yaw_position_servo(float yaw) new_servo_out = slew_dir * 18000; g.pidYaw2Srv.reset_I(); } else { - float servo_change = g.pidYaw2Srv.get_pid(err); + float servo_change = g.pidYaw2Srv.get_pid(angle_err); servo_change = constrain_float(servo_change, -18000, 18000); new_servo_out = constrain_float(channel_yaw.servo_out - servo_change, -18000, 18000); }