Réglage de l'asservissement des moteurs
This commit is contained in:
parent
23bc31cfac
commit
5f4cacf2d1
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@ -13,6 +13,8 @@
|
|||||||
"stdlib.h": "c",
|
"stdlib.h": "c",
|
||||||
"strategie.h": "c",
|
"strategie.h": "c",
|
||||||
"strategie_deplacement.h": "c",
|
"strategie_deplacement.h": "c",
|
||||||
"servomoteur.h": "c"
|
"servomoteur.h": "c",
|
||||||
|
"moteurs.h": "c",
|
||||||
|
"messagerie_applicative.h": "c"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,8 +2,14 @@
|
|||||||
#include "Moteurs.h"
|
#include "Moteurs.h"
|
||||||
#include "Asser_Moteurs.h"
|
#include "Asser_Moteurs.h"
|
||||||
|
|
||||||
#define ASSERMOTEUR_GAIN_P 30000.f
|
// Paramètres pour PAMI
|
||||||
#define ASSERMOTEUR_GAIN_I 3000.f
|
//#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 consigne_mm_s[3]; // Consigne de vitesse (en mm/s)
|
||||||
float commande_I[3]; // Terme integral
|
float commande_I[3]; // Terme integral
|
||||||
|
|||||||
14
Readme.md
14
Readme.md
@ -34,9 +34,6 @@ Pas de trajectoire rotation sur soi-même ?
|
|||||||
Annexes
|
Annexes
|
||||||
=======
|
=======
|
||||||
|
|
||||||
Tables des registres
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
|
|
||||||
Table des registres :
|
Table des registres :
|
||||||
---------------------
|
---------------------
|
||||||
@ -132,8 +129,6 @@ Les adresses en **gras** sont celles pour lesquelles des `#define` existent qui
|
|||||||
| 0x54 | RW | Flottant 32 bits | Angle fin rad |
|
| 0x54 | RW | Flottant 32 bits | Angle fin rad |
|
||||||
| 0x55 | RW | Flottant 32 bits | Angle fin rad |
|
| 0x55 | RW | Flottant 32 bits | Angle fin rad |
|
||||||
| 0x56 | RW | Flottant 32 bits | Angle fin rad |
|
| 0x56 | RW | Flottant 32 bits | Angle fin rad |
|
||||||
|
|
||||||
|
|
||||||
| **0x80** | R | flottant 32 bits | Position X en mm |
|
| **0x80** | R | flottant 32 bits | Position X en mm |
|
||||||
| 0x81 | 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 |
|
| 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 |
|
| 0x95 | R | flottant 32 bits | Position consigne Y en mm |
|
||||||
| 0x96 | 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 |
|
| 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' |
|
| **0xFF** | R | int_8 | Identifiant de la carte : 'P' |
|
||||||
12
main.c
12
main.c
@ -47,7 +47,7 @@ int get_couleur(void);
|
|||||||
void gestion_PAMI(uint32_t step_ms, int * asser_pos);
|
void gestion_PAMI(uint32_t step_ms, int * asser_pos);
|
||||||
void gestion_VL53L8CX(void);
|
void gestion_VL53L8CX(void);
|
||||||
|
|
||||||
const uint32_t step_ms=1;
|
const uint32_t step_ms=10;
|
||||||
float distance1_mm=0, distance2_mm=0;
|
float distance1_mm=0, distance2_mm=0;
|
||||||
|
|
||||||
// DEBUG
|
// DEBUG
|
||||||
@ -172,7 +172,7 @@ void main(void)
|
|||||||
// Consigne
|
// Consigne
|
||||||
Moteur_SetVitesse(MOTEUR_A, msg_propulsion_pwm.pwm_droit);
|
Moteur_SetVitesse(MOTEUR_A, msg_propulsion_pwm.pwm_droit);
|
||||||
Moteur_SetVitesse(MOTEUR_B, msg_propulsion_pwm.pwm_gauche);
|
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){
|
if(mise_a_jour_vitesse_roues){
|
||||||
struct msg_propulsion_vitesse_roues_t msg_propulsion_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();
|
temps_ms = Temps_get_temps_ms();
|
||||||
//if(temps_ms % step_ms == 0){
|
if(temps_ms % step_ms == 0){
|
||||||
QEI_update();
|
QEI_update();
|
||||||
Localisation_gestion();
|
Localisation_gestion();
|
||||||
|
|
||||||
@ -302,6 +302,10 @@ void main(void)
|
|||||||
mise_données_dans_échange((uint8_t*) &abscisse, sizeof(abscisse), REG_PROPULSION_ABSCISSE);
|
mise_données_dans_échange((uint8_t*) &abscisse, sizeof(abscisse), REG_PROPULSION_ABSCISSE);
|
||||||
struct point_xyo_t position_consigne = Trajectoire_get_point(&trajectoire, 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);
|
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);
|
//sleep_ms(1);
|
||||||
//printf("x_mm:%.2f, y_mm:%.2f\n", position.x_mm, position.y_mm);
|
//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
|
// Récupération des valeurs pour les mettre dans la mémoire d'échange
|
||||||
// TODO
|
// TODO
|
||||||
//}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@
|
|||||||
#define REG_PROPULSION_TRAJECTOIRE 0x22
|
#define REG_PROPULSION_TRAJECTOIRE 0x22
|
||||||
#define REG_PROPULSION_ABSCISSE 0x8C
|
#define REG_PROPULSION_ABSCISSE 0x8C
|
||||||
#define REG_PROPULSION_POSITION_CONSIGNE 0x90
|
#define REG_PROPULSION_POSITION_CONSIGNE 0x90
|
||||||
|
#define REG_PROPULSION_VITESSE_ROUES_lecture 0x98
|
||||||
|
|
||||||
struct msg_propulsion_position_t{
|
struct msg_propulsion_position_t{
|
||||||
float position_x_mm, position_y_mm, orientation_rad;
|
float position_x_mm, position_y_mm, orientation_rad;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user