🛠 Première mise en route du Driver Moteur Encoder
Objectifs
Ce tutoriel vise à réaliser le premier branchement physique et la mise sous tension de l'Encoder Motor Driver Unit (DRV8837DSGR) de M5Stack. Vous apprendrez à identifier les connecteurs, à fournir l'alimentation correcte et à vérifier la communication I2C initiale. À la fin, vous saurez si votre unité est fonctionnelle et prête pour le contrôle moteur.
Matériel nécessaire
- 1x Unité Encoder Motor Driver (DRV8837DSGR)
- 1x Moteur DC à encodeur (6 fils) ou moteur TT compatible
- 1x Alimentation DC externe (6V à 12V)
- 1x Câble Grove (pour la liaison I2C vers un master comme M5Stack Core2 ou ESP32)
- Logiciel Arduino IDE avec la bibliothèque M5Stack installée
Étapes
- Vérification des composants : Assurez-vous que l'unité n'a pas de dommages visibles. L'adresse I2C par défaut est 0x2F. Si vous changez l'adresse, notez-la immédiatement.
- Connexion du moteur : Branchez le moteur sur les bornes du moteur de l'unité. Pour un moteur à 6 fils, respectez le schéma de brochage standard (Phase A/B et Encodeur A/B). Pour un moteur TT, connectez les deux fils de puissance.
- Alimentation externe : Connectez votre source DC (6-12V) aux bornes d'alimentation externe (GND et VCC). L'unité convertira cela en 5V internes pour le moteur (max 1.2A).
- Liaison I2C : Connectez l'unité à votre carte maître via le port Grove. Assurez-vous que les lignes SDA et SCL sont correctement reliées. Ne connectez pas l'alimentation moteur avant d'avoir vérifié la liaison logique.
- Initialisation logicielle : Ouvrez l'IDE Arduino. Installez la bibliothèque M5Stack. Créez un nouveau projet. Incluez la bibliothèque
M5Unified.hou la lib spécifique au driver si disponible. - Code de test : Écrivez un code minimal pour initialiser I2C et scanner le bus. Exemple de commande de base :
#include <Wire.h>
void setup() {
Serial.begin(115200);
Wire.begin();
Serial.println("Scanning I2C...");
for (byte i = 8; i < 120; i++) {
Wire.beginTransmission(i);
if (Wire.endTransmission() == 0) {
Serial.print("Found address: ");
Serial.println(i, HEX);
}
}
}
void loop() {}
- Téléversement : Compilez et téléversez le code sur votre carte maître.
Vérification
Ouvrez le moniteur série à 115200 bauds. Vous devriez voir l'adresse 0x2F s'afficher dans le scanner I2C. Si l'adresse apparaît, la communication est établie. La LED RGB WS2812C peut s'allumer brièvement au démarrage, indiquant une alimentation correcte. Si aucune adresse n'est trouvée, vérifiez les connexions SDA/SCL et l'alimentation.
Pour aller plus loin
Une fois la communication confirmée, explorez les modes de contrôle en boucle fermée. Testez la lecture de l'encodeur pour mesurer la vitesse réelle du moteur. Vous pouvez ensuite implémenter un PID simple pour maintenir une vitesse constante malgré les charges variables.
Autres tutoriels pour cette carte
- Premier branchement et mise en route de l'Encoder Motor Driver Unit
- Maîtriser les entrées-sorties avec l'Encoder Motor Driver Unit
- Automatiser un mouvement précis avec l'Encoder Motor Driver
- 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