🛠 Automatisation multi-axes avec le M5Stack 4-Encoder Motor Driver
Objectifs
Ce tutoriel vise à implémenter un système de contrôle de position précis sur quatre axes simultanément. Nous utiliserons le mode de régulation de position en boucle fermée du DRV8837DSGR pour atteindre des angles spécifiques, une tâche critique pour les bras robotiques ou les systèmes de positionnement. L'objectif est de comprendre l'interaction entre les encodeurs, le microcontrôleur STM32 et la communication I2C pour une automatisation fiable.
Matériel nécessaire
- 1x Unit 4-Encoder Motor Driver (M5Stack)
- 4x Moteurs à engrenages 6 fils avec encodeurs (PPR entre 3 et 15)
- 1x M5Stack Core ou Host compatible I2C
- Câbles Grove et PH2.0-6P
- Alimentation DC externe 6-12V (recommandée pour la stabilité)
- Logiciel Arduino IDE avec bibliothèque M5Stack Motor Driver
Étapes
``cpp motor.setPID(1, Kp, Ki, Kd); ``
``cpp motor.moveTo(1, 90); // Moteur 1 vers 90 degrés motor.moveTo(2, -90); ``
- Connexion matérielle : Branchez les quatre moteurs sur les connecteurs PH2.0-6P. Assurez-vous que les fils des encodeurs sont correctement alignés. Connectez l'alimentation DC externe pour garantir le courant nécessaire (jusqu'à 1,2A par canal).
- Configuration I2C : Dans le code, initialisez la communication I2C. L'adresse par défaut est 0x24. Si vous utilisez plusieurs modules, configurez les adresses via les broches d'adressage avant l'allumage.
- Calibration des encodeurs : Définissez le nombre de PPR (Pulses Per Revolution) de vos moteurs. Exemple :
motor.setEncoderPPR(1, 12);pour le moteur 1 avec 12 PPR. - Réglage du PID : Pour une position stable, ajustez les gains PID. Commencez avec des valeurs faibles pour éviter les oscillations.
- Commande de position : Envoyez les consignes de position en degrés ou en ticks d'encodeur.
- Boucle de surveillance : Dans la boucle
loop(), vérifiez l'étatisBusy()pour attendre la fin du mouvement avant la prochaine action.
Vérification
Utilisez la LED RGB WS2812C pour indiquer l'état : rouge si erreur, vert si position atteinte. Lisez les valeurs de position actuelles via I2C pour confirmer que les moteurs ont atteint la consigne avec une tolérance acceptable (généralement +/- 2 degrés). Vérifiez l'absence de surchauffe des ponts en H.
Pour aller plus loin
Intégrez un capteur de courant INA199A pour détecter les blocages mécaniques (stall detection) et arrêter les moteurs automatiquement pour éviter les dommages. Explorez la synchronisation des axes pour des trajectoires complexes.
Autres tutoriels pour cette carte
- Premier branchement et mise en route du Driver Moteur 4-Encoder
- Découverte des entrées-sorties : LED RGB et lecture d'encodeurs
- Automatiser un châssis robotique avec le Driver 4-Encoder
- Premier branchement et mise en route du 4-Encoder Motor Driver
- Pilotage GPIO et LED RGB sur le Driver Moteur 4-Encodeurs
- Automatisation et Boucle Fermée avec le Driver 4-Encoder
Exemples de code pour cette carte
i2c-motor-spin.inoarduinoclosed-loop-speed-control.inoarduinorelative-position-move.inoarduinorgb-led-status-indicator.inoarduinodifferential-drive-robot.inoarduinoi2c_basic_motor_control.pyPython