From cbdfded9991dc3e01da3f70cd81b854694c0f769 Mon Sep 17 00:00:00 2001 From: schodet Date: Sat, 9 Apr 2005 21:30:07 +0000 Subject: footing pour Taz, 0.05/256 d'erreur d'angle !! --- n/asserv/src/speed.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'n/asserv/src/speed.c') diff --git a/n/asserv/src/speed.c b/n/asserv/src/speed.c index 38842a1..7fdb0dc 100644 --- a/n/asserv/src/speed.c +++ b/n/asserv/src/speed.c @@ -43,6 +43,8 @@ int16_t speed_left_e_old, speed_right_e_old; uint16_t speed_kp = 5 * 255; /** I coeficients. 4.8 fixed point format. */ uint16_t speed_ki = 1 * 255; +/** Dead zone. */ +uint16_t speed_dead_zone = 0; /* +AutoDec */ @@ -114,6 +116,9 @@ speed_compute_left_pwm (void) int16_t e; int16_t pwm; e = speed_left - counter_left_diff; /* 10b = 8b + 9b */ + /* Dead zone. */ + if (speed_dead_zone > e && e > -speed_dead_zone) + e = 0; /* Integral update. */ speed_left_int += e; /* 12b = 11b + 10b */ if (speed_left_int > speed_int_max) /* 11b */ @@ -135,6 +140,9 @@ speed_compute_right_pwm (void) int16_t e; int16_t pwm; e = speed_right - counter_right_diff; + /* Dead zone. */ + if (speed_dead_zone > e && e > -speed_dead_zone) + e = 0; /* Integral update. */ speed_right_int += e; if (speed_right_int > speed_int_max) -- cgit v1.2.3