🛠 Maîtriser les entrées-sorties avec l'Encoder Motor Driver Unit
Objectifs
Ce tutoriel vise à comprendre les interfaces d'entrée/sortie de l'Encoder Motor Driver Unit (DRV8837DSGR). Nous allons configurer la communication I2C pour contrôler la LED RGB programmable WS2812C intégrée et lire les impulsions de l'encodeur pour estimer la position du moteur. Ce niveau d'introduction nécessite une compréhension basique des protocoles de communication série.
Matériel nécessaire
- Une carte de développement compatible M5Stack (Core2, StickC Plus2 ou Stack)
- L'Encoder Motor Driver Unit (DRV8837DSGR)
- Un moteur à engrenages 6 fils avec encodeur AB
- Câbles Grove ou connecteurs compatibles
- Logiciel Arduino IDE ou M5Burner
Étapes
- Installation des bibliothèques : Dans l'Arduino IDE, installez la bibliothèque officielle
M5Stacket la bibliothèque dédiéeM5EncoderMotorDriver. Ces bibliothèques gèrent les registres internes du STM32G031. - Connexion physique : Connectez l'unité à un port Grove I2C (G16/G17 ou G21/G22 selon votre carte). Assurez-vous que l'alimentation externe DC 6-12V est branchée sur le connecteur dédié, car le moteur nécessite plus de courant que le port Grove seul.
- Initialisation I2C : Dans le code, initialisez le bus I2C. L'adresse par défaut du driver est 0x2F. Vérifiez la connexion via une fonction de scan I2C si nécessaire.
- Configuration de la LED RGB : Utilisez la fonction pour définir la couleur de la LED WS2812C. Par exemple, mettez la LED en rouge pour indiquer que le moteur est prêt. La LED sert ici d'indicateur d'état visuel simple.
- Lecture de l'encodeur : Configurez le driver pour lire les impulsions de l'encodeur AB. Bien que le contrôle en boucle fermée soit avancé, nous lisons ici la valeur brute du compteur pour observer les changements de position.
Vérification
Téléversez le code. La LED de l'unité doit s'allumer en rouge. Faites tourner le moteur à la main ou avec une commande de rotation lente. Ouvrez le moniteur série (115200 bauds). Vous devez voir les valeurs de l'encodeur augmenter ou diminuer selon le sens de rotation, confirmant que les entrées de l'encodeur et la sortie LED fonctionnent correctement via I2C.
Pour aller plus loin
Explorez le contrôle en boucle fermée de la vitesse en utilisant les données de l'encodeur pour ajuster le PWM automatiquement, ou utilisez la détection de courant INA199A pour surveiller la charge du moteur.
Autres tutoriels pour cette carte
- Premier branchement et mise en route de l'Encoder Motor Driver Unit
- Automatiser un mouvement précis avec l'Encoder Motor Driver
- Première mise en route du Driver Moteur Encoder
- Pilotage GPIO et LED RGB sur l'Encoder Motor Driver Unit
- Automatisation par retour d'encodeur avec la DRV8837
- Configuration avancée et validation du bus I2C
Exemples de code pour cette carte
m5stack-encoder-motor-i2c-esp32.inoC++ (Arduino)m5stack-encoder-motor-pwm-control.inoC++ (Arduino)m5stack-encoder-motor-closed-loop.inoC++ (Arduino)m5stack-encoder-motor-position-control.inoC++ (Arduino)m5stack-encoder-motor-led-status.inoC++ (Arduino)closed_loop_speed_pid.pyMicroPython