From 435b5a9adaa251e8d72ccf5b744db80296b30908 Mon Sep 17 00:00:00 2001 From: schodet Date: Tue, 17 Jan 2006 16:39:17 +0000 Subject: Ouh lala, plein de modifs, dont l'ajout d'un modèle de moteur à courant continue, le changement du PID, de la PWM et l'ajout de commandes dans main. --- n/asserv/src/asserv/speed.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'n/asserv/src/asserv/speed.c') diff --git a/n/asserv/src/asserv/speed.c b/n/asserv/src/asserv/speed.c index 87223e2..d354307 100644 --- a/n/asserv/src/asserv/speed.c +++ b/n/asserv/src/asserv/speed.c @@ -29,12 +29,12 @@ * shaft position. */ -/** Current speed, uf8.8. */ +/** Current speed, f8.8. */ int16_t speed_theta_cur, speed_alpha_cur; -/** Consign speed, uf8.8. */ +/** Consign speed, f8.8. */ int16_t speed_theta_cons, speed_alpha_cons; /** Consign position. */ -uint16_t speed_theta_pos_cons, speed_alpha_pos_cons; +uint32_t speed_theta_pos_cons, speed_alpha_pos_cons; /** Weither to use the consign position (1) or not (0). */ uint8_t speed_pos; @@ -52,18 +52,15 @@ speed_update_by_speed (void) if (UTILS_ABS (speed_theta_cons - speed_theta_cur) < speed_theta_acc) speed_theta_cur = speed_theta_cons; else if (speed_theta_cons > speed_theta_cur) - speed_theta_cur -= speed_theta_acc; - else speed_theta_cur += speed_theta_acc; + else + speed_theta_cur -= speed_theta_acc; if (UTILS_ABS (speed_alpha_cons - speed_alpha_cur) < speed_alpha_acc) speed_alpha_cur = speed_alpha_cons; else if (speed_alpha_cons > speed_alpha_cur) - speed_alpha_cur -= speed_alpha_acc; - else speed_alpha_cur += speed_alpha_acc; - /* Update shaft position. */ - pos_theta_cur += speed_theta_cur; - pos_alpha_cur += speed_alpha_cur; + else + speed_alpha_cur -= speed_alpha_acc; } /** Update shaft position consign according to a position consign. */ @@ -77,9 +74,13 @@ speed_update_by_position (void) static void speed_update (void) { + /* Update speed. */ if (speed_pos) speed_update_by_position (); else speed_update_by_speed (); + /* Update shaft position. */ + pos_theta_cur += speed_theta_cur >> 8; + pos_alpha_cur += speed_alpha_cur >> 8; } -- cgit v1.2.3