🛠 Pilotage avancé des E/S et diagnostics sur le module DRV8837
Objectifs
Ce tutoriel vise à maîtriser les fonctionnalités d'entrée-sortie avancées du module 4-Encoder Motor Driver. Nous allons configurer la lecture du capteur de courant INA199A pour surveiller la consommation électrique, utiliser la LED RGB WS2812C comme indicateur d'état visuel et comprendre l'extension I2C via les ports Grove. L'objectif est d'implémenter une boucle de diagnostic temps réel pour détecter les blocages moteurs ou les surcharges avant qu'ils n'endommagent le matériel.
Matériel nécessaire
- Module M5Stack 4-Encoder Motor Driver (DRV8837DSGR)
- Carte hôte compatible I2C (M5Stack Core2, Atom, ou Arduino avec bibliothèque Wire)
- Moteurs à engrenages avec encodeurs (connectés aux ports PH2.0-6P)
- Alimentation DC externe 6-12V (recommandé pour la pleine puissance)
- Câbles Grove HY2.0-4P (pour l'extension I2C si nécessaire)
- Ordinateur avec IDE Arduino ou MicroPython
Étapes
- Configuration de l'adresse I2C : Par défaut, le module utilise l'adresse 0x24. Vérifiez la connectivité avec un scanner I2C. Si vous utilisez plusieurs modules, changez l'adresse via les résistances de pull-up/down configurables (plage 0x08 à 0x77) pour éviter les conflits sur le bus.
- Initialisation du capteur INA199A : Le module intègre un capteur de courant INA199A. Pour lire la consommation, vous devez interroger les registres internes du microcontrôleur STM32F030C8T6 via I2C. La lecture ne se fait pas directement sur l'INA199A mais via les commandes du firmware du module qui agrègent les données de courant par canal.
- Lecture du courant moteur : Envoyez une commande de lecture de statut pour obtenir les valeurs de courant pour chaque canal. Une valeur anormalement élevée indique un blocage mécanique ou un court-circuit. Comparez ces valeurs à la charge maximale spécifiée de 1,2A par canal à 5V.
- Pilotage de la LED RGB WS2812C : La LED RGB sert de retour visuel. Configurez-la pour afficher des couleurs selon l'état : Vert (normal), Rouge (erreur de courant > 1A), Bleu (mode veille). La communication avec la LED se fait également via les registres de contrôle du module, pas directement en GPIO bit-bang sur l'hôte.
- Extension I2C via Grove : Utilisez les deux ports Grove HY2.0-4P pour connecter d'autres capteurs ou modules. Assurez-vous que les adresses I2C des périphériques connectés ne chevauchent pas celle du driver (0x24) ou des autres modules. Le bus I2C partagé permet de synchroniser les actions de pilotage moteur avec des données externes (ex: capteurs de distance).
Vérification
- Ouvrez le moniteur série pour afficher les valeurs de courant en temps réel.
- Bloquez manuellement un moteur (avec précaution) et observez l'augmentation du courant lu et le changement de couleur de la LED vers le rouge.
- Vérifiez que les autres moteurs continuent de fonctionner correctement malgré l'erreur sur un canal.
- Confirmez que l'alimentation DC externe fournit une tension stable et que le convertisseur DC-DC intégré délivre bien 5V sur le port Grove.
Pour aller plus loin
Intégrez ces lectures de courant dans un algorithme de contrôle PID pour ajuster la puissance en fonction de la charge réelle. Vous pouvez également utiliser la LED RGB pour coder des codes d'erreur spécifiques (clignotements) pour le débogage terrain. Explorez le mode veille pour réduire la consommation globale du système robotique lors des périodes d'inactivité.
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