From 5f4cacf2d1d6b7f1e7eee504885643489a2e22d1 Mon Sep 17 00:00:00 2001 From: Samuel Date: Sat, 18 Apr 2026 14:00:17 +0200 Subject: [PATCH] =?UTF-8?q?R=C3=A9glage=20de=20l'asservissement=20des=20mo?= =?UTF-8?q?teurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 4 +++- Asser_Moteurs.c | 10 ++++++++-- Readme.md | 38 ++++++++++++++++++++------------------ main.c | 12 ++++++++---- messages_propulsion.h | 1 + 5 files changed, 40 insertions(+), 25 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 8d2ec55..241c813 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,6 +13,8 @@ "stdlib.h": "c", "strategie.h": "c", "strategie_deplacement.h": "c", - "servomoteur.h": "c" + "servomoteur.h": "c", + "moteurs.h": "c", + "messagerie_applicative.h": "c" } } \ No newline at end of file diff --git a/Asser_Moteurs.c b/Asser_Moteurs.c index d17c612..4c13558 100644 --- a/Asser_Moteurs.c +++ b/Asser_Moteurs.c @@ -2,8 +2,14 @@ #include "Moteurs.h" #include "Asser_Moteurs.h" -#define ASSERMOTEUR_GAIN_P 30000.f -#define ASSERMOTEUR_GAIN_I 3000.f +// Paramètres pour PAMI +//#define ASSERMOTEUR_GAIN_P 30000.f +//#define ASSERMOTEUR_GAIN_I 3000.f + +// Paramètre Robot 2026 +#define ASSERMOTEUR_GAIN_P 150.f +#define ASSERMOTEUR_GAIN_I 1.f + float consigne_mm_s[3]; // Consigne de vitesse (en mm/s) float commande_I[3]; // Terme integral diff --git a/Readme.md b/Readme.md index 79c9759..180f240 100644 --- a/Readme.md +++ b/Readme.md @@ -34,9 +34,6 @@ Pas de trajectoire rotation sur soi-même ? Annexes ======= -Tables des registres --------------------- - Table des registres : --------------------- @@ -63,22 +60,22 @@ Les adresses en **gras** sont celles pour lesquelles des `#define` existent qui | 0x0F | RW | int_16 | Commande PWM moteur gauche | | 0x10 | RW | int_16 | Commande PWM moteur droit | | 0x11 | RW | int_16 | Commande PWM moteur droit | -| **0x12** | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s | -| 0x13 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s | -| 0x14 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s | -| 0x15 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s | -| 0x16 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s | -| 0x17 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s | -| 0x18 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s | -| 0x19 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s | +| **0x12** | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s| +| 0x13 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s| +| 0x14 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s| +| 0x15 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s| +| 0x16 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s| +| 0x17 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s| +| 0x18 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s| +| 0x19 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s| | 0x1A | RW | Flottant 32 bits | Consigne d’avance du robot | | 0x1B | RW | Flottant 32 bits | Consigne d’avance du robot | | 0x1C | RW | Flottant 32 bits | Consigne d’avance du robot | | 0x1D | RW | Flottant 32 bits | Consigne d’avance du robot | -| 0x1E | RW | Flottant 32 bits | Consigne de rotation du robot | -| 0x1F | RW | Flottant 32 bits | Consigne de rotation du robot | -| 0x20 | RW | Flottant 32 bits | Consigne de rotation du robot | -| 0x21 | RW | Flottant 32 bits | Consigne de rotation du robot | +| 0x1E | RW | Flottant 32 bits | Consigne de rotation du robot | +| 0x1F | RW | Flottant 32 bits | Consigne de rotation du robot | +| 0x20 | RW | Flottant 32 bits | Consigne de rotation du robot | +| 0x21 | RW | Flottant 32 bits | Consigne de rotation du robot | | **0x22** | RW | Enum 8 bits | Trajectoire, type :
0 : Droite
1 : Circulaire
2 : Bézier
3 : Composée
4 : Rotation | | 0x23 | RW | Flottant 32 bits | Point 1, X | | 0x24 | RW | Flottant 32 bits | Point 1, X | @@ -132,8 +129,6 @@ Les adresses en **gras** sont celles pour lesquelles des `#define` existent qui | 0x54 | RW | Flottant 32 bits | Angle fin rad | | 0x55 | RW | Flottant 32 bits | Angle fin rad | | 0x56 | RW | Flottant 32 bits | Angle fin rad | - - | **0x80** | R | flottant 32 bits | Position X en mm | | 0x81 | R | flottant 32 bits | Position X en mm | | 0x82 | R | flottant 32 bits | Position X en mm | @@ -158,5 +153,12 @@ Les adresses en **gras** sont celles pour lesquelles des `#define` existent qui | 0x95 | R | flottant 32 bits | Position consigne Y en mm | | 0x96 | R | flottant 32 bits | Position consigne Y en mm | | 0x97 | R | flottant 32 bits | Position consigne Y en mm | - +| **0x98** | R | flottant 32 bits | Vitesse roue gauche en mm/s | +| 0x99 | R | flottant 32 bits | Vitesse roue gauche en mm/s | +| 0x9A | R | flottant 32 bits | Vitesse roue gauche en mm/s | +| 0x9B | R | flottant 32 bits | Vitesse roue gauche en mm/s | +| 0x9C | R | flottant 32 bits | Vitesse roue droite en mm/s | +| 0x9D | R | flottant 32 bits | Vitesse roue droite en mm/s | +| 0x9E | R | flottant 32 bits | Vitesse roue droite en mm/s | +| 0x9F | R | flottant 32 bits | Vitesse roue droite en mm/s | | **0xFF** | R | int_8 | Identifiant de la carte : 'P' | \ No newline at end of file diff --git a/main.c b/main.c index 92bfb4f..4de4ba4 100644 --- a/main.c +++ b/main.c @@ -47,7 +47,7 @@ int get_couleur(void); void gestion_PAMI(uint32_t step_ms, int * asser_pos); void gestion_VL53L8CX(void); -const uint32_t step_ms=1; +const uint32_t step_ms=10; float distance1_mm=0, distance2_mm=0; // DEBUG @@ -172,7 +172,7 @@ void main(void) // Consigne Moteur_SetVitesse(MOTEUR_A, msg_propulsion_pwm.pwm_droit); Moteur_SetVitesse(MOTEUR_B, msg_propulsion_pwm.pwm_gauche); - //printf("pwm_gauche:%d, pwm_droit:%d\n", msg_propulsion_pwm.pwm_gauche, msg_propulsion_pwm.pwm_droit); + printf("pwm_gauche:%d, pwm_droit:%d\n", msg_propulsion_pwm.pwm_gauche, msg_propulsion_pwm.pwm_droit); } if(mise_a_jour_vitesse_roues){ struct msg_propulsion_vitesse_roues_t msg_propulsion_vitesse_roues; @@ -262,7 +262,7 @@ void main(void) } temps_ms = Temps_get_temps_ms(); - //if(temps_ms % step_ms == 0){ + if(temps_ms % step_ms == 0){ QEI_update(); Localisation_gestion(); @@ -302,6 +302,10 @@ void main(void) mise_données_dans_échange((uint8_t*) &abscisse, sizeof(abscisse), REG_PROPULSION_ABSCISSE); struct point_xyo_t position_consigne = Trajectoire_get_point(&trajectoire, abscisse); mise_données_dans_échange((uint8_t*) &(position_consigne.point_xy), sizeof(position_consigne.point_xy), REG_PROPULSION_POSITION_CONSIGNE); + float vitesse_roue_gauche = AsserMoteur_getVitesse_mm_s(MOTEUR_A, step_ms); + float vitesse_roue_droite = AsserMoteur_getVitesse_mm_s(MOTEUR_B, step_ms); + mise_données_dans_échange((uint8_t*) &(vitesse_roue_gauche), sizeof(vitesse_roue_gauche), REG_PROPULSION_VITESSE_ROUES_lecture); + mise_données_dans_échange((uint8_t*) &(vitesse_roue_droite), sizeof(vitesse_roue_droite), REG_PROPULSION_VITESSE_ROUES_lecture +4); //sleep_ms(1); //printf("x_mm:%.2f, y_mm:%.2f\n", position.x_mm, position.y_mm); @@ -312,7 +316,7 @@ void main(void) }*/ // Récupération des valeurs pour les mettre dans la mémoire d'échange // TODO - //} + } } } diff --git a/messages_propulsion.h b/messages_propulsion.h index fde4fae..2e54596 100644 --- a/messages_propulsion.h +++ b/messages_propulsion.h @@ -13,6 +13,7 @@ #define REG_PROPULSION_TRAJECTOIRE 0x22 #define REG_PROPULSION_ABSCISSE 0x8C #define REG_PROPULSION_POSITION_CONSIGNE 0x90 +#define REG_PROPULSION_VITESSE_ROUES_lecture 0x98 struct msg_propulsion_position_t{ float position_x_mm, position_y_mm, orientation_rad;