Unit 4-Encoder Motor Driver (DRV8837DSGR)
⚡ L’essentiel en 60 secondes
- soc — STM32F030C8T6
- motor_driver — 4x DRV8837DSGR H-bridge
- communication — I2C (Default address 0x24, configurable 0x08-0x77)
- encoder_support — 4-channel AB encoder, 3-15 PPR
- power_input — DC 6-12V (2x PH2.0-2P) or DC 5V (Grove)
- power_output — DC 5V @ 8A max (via DC-DC buck converter)
- Sur cette fiche : 9 tutoriels · 10 codes
Piloter plusieurs moteurs à courant continu de manière précise et coordonnée est souvent l’un des défis les plus complexes pour les amateurs de robotique et les ingénieurs en prototypage. Le module Unit 4-Encoder Motor Driver (DRV8837DSGR) de M5Stack se présente comme une solution intégrée et compacte pour relever ce défi, en offrant une interface simple pour gérer jusqu’à quatre moteurs équipés d’encodeurs. Loin d’être un simple amplificateur de puissance, cette carte agit comme un véritable sous-système de contrôle autonome, capable de gérer la logique complexe nécessaire au mouvement fluide et précis des mécanismes. Au cœur de ce module réside un microcontrôleur STM32F030C8T6, un circuit intégré qui prend en charge l’ensemble des tâches de calcul et de communication, libérant ainsi le processeur principal de votre projet pour se concentrer sur la logique d’application plutôt que sur la gestion bas niveau des signaux électriques. Cette architecture permet de déléguer au module la responsabilité de maintenir la vitesse ou la position des moteurs, une tâche qui exige une réactivité et une précision temporelle difficiles à obtenir avec des microcontrôleurs généralistes moins spécialisés.
La puissance de ce module repose sur l’intégration de quatre ponts en H de type DRV8837DSGR. Pour comprendre l’importance de ces composants, il faut imaginer le pont en H comme un ensemble de quatre interrupteurs électroniques disposés en forme de « H » autour du moteur. En activant les paires d’interrupteurs opposées, on peut inverser la direction du courant traversant le moteur, ce qui permet de le faire tourner dans un sens ou dans l’autre. Le DRV8837DSGR est un circuit intégré spécialisé qui combine ces interrupteurs avec des protections thermiques et contre les surintensités, assurant une fiabilité accrue. Chaque canal moteur peut supporter une charge maximale de 1,2 ampère sous une tension de 5 volts, ce qui convient parfaitement aux petits moteurs à engrenages couramment utilisés dans les jouets éducatifs, les petits bras robotiques ou les châssis de robots mobiles. La compatibilité avec les moteurs à engrenages à 6 fils ou de type TT, ainsi que le support des encodeurs offrant une résolution de 3 à 15 impulsions par tour (PPR), font de ce module un choix polyvalent pour divers projets mécaniques. Les encodeurs jouent ici un rôle crucial en fournissant un retour d’information continu sur la rotation du moteur, permettant au module de corriger en temps réel les écarts par rapport à la consigne demandée.
La communication avec ce module s’effectue via le bus I2C, un protocole de communication série standard qui permet de connecter plusieurs périphériques sur seulement deux fils de données. Par défaut, le module répond à l’adresse 0x24, mais cette adresse est configurable dans une plage allant de 0x08 à 0x77, ce qui offre une grande flexibilité pour intégrer plusieurs de ces cartes dans un même système sans conflit d’adressage. Cette approche simplifie considérablement le câblage, car contrairement aux méthodes de contrôle direct par broches GPIO qui nécessitent de nombreuses connexions physiques, l’I2C permet de piloter les quatre moteurs ainsi que de lire les données des encodeurs et du capteur de courant à travers un ensemble minimal de connexions. Le module dispose d’ailleurs de deux ports Grove HY2.0-4P, facilitant l’extension de la chaîne I2C vers d’autres modules compatibles avec l’écosystème M5Stack, tout en conservant une organisation propre et modulaire du câblage.
L’aspect le plus remarquable de ce pilote réside dans ses modes de contrôle avancés, qui vont bien au-delà de la simple modulation de largeur d’impulsion (PWM) basique. Le module intègre des algorithmes de régulation en boucle fermée pour la vitesse et la position. En mode boucle fermée de vitesse, le microcontrôleur ajuste automatiquement la puissance envoyée au moteur pour maintenir une vitesse constante, même si la charge mécanique varie, par exemple lorsqu’un robot rencontre une pente ou un obstacle. En mode position, le module peut commander au moteur d’atteindre un angle précis et de s’y maintenir, une fonctionnalité indispensable pour les bras robotiques ou les systèmes de pointage. De plus, les fonctions de démarrage et d’arrêt progressifs (soft start/stop) permettent d’éviter les à-coups mécaniques et les pics de courant au démarrage, prolongeant ainsi la durée de vie des engrenages et des composants électroniques. Le mode veille est également disponible pour réduire la consommation d’énergie lorsque les moteurs ne sont pas utilisés, une caractéristique précieuse pour les projets alimentés par batterie.
L’alimentation du module est conçue pour être flexible et robuste. Il peut être alimenté par une entrée DC externe comprise entre 6 et 12 volts via deux connecteurs PH2.0-2P, ou directement par le port Grove en 5 volts. Un convertisseur DC-DC intégré, de type abaisseur (buck converter), joue un rôle central dans la gestion de l’énergie. Il permet non seulement d’alimenter les moteurs, mais aussi de fournir jusqu’à 5 volts à 8 ampères sur la sortie, ce qui est suffisant pour alimenter la carte hôte ou d’autres périphériques connectés. Cette capacité de sortie élevée est particulièrement utile dans les configurations où plusieurs moteurs fonctionnent simultanément, nécessitant un courant important sans faire chuter la tension d’alimentation du système de contrôle. Pour surveiller cette consommation, le module intègre un circuit de détection de courant INA199A, permettant au microcontrôleur de lire en temps réel la consommation électrique de chaque moteur, une information vitale pour détecter les blocages mécaniques ou les anomalies de fonctionnement.
Physiquement, le module est extrêmement compact, avec des dimensions de 56,5 x 24,0 x 12,8 mm et un poids plume de seulement 10 grammes. Cette faible encombrement permet de l’intégrer facilement dans des espaces restreints, comme l’intérieur d’un châssis de robot ou au niveau des articulations d’un bras mécanique. Quatre connecteurs PH2.0-6P sont prévus pour brancher les moteurs, tandis qu’une LED RGB WS2812C offre un indicateur visuel programmable, utile pour le débogage ou pour signaler l’état du système. L’ensemble de ces caractéristiques fait de l’Unit 4-Encoder Motor Driver un outil de prédilection pour la conception de robots multi-articulés, de véhicules mobiles à quatre roues motrices ou de bras robotiques légers. En centralisant la gestion de la puissance, de la logique de contrôle et de l’acquisition de données des encodeurs sur une seule carte, M5Stack propose une solution qui simplifie le développement, réduit le temps de mise au point et améliore la fiabilité des systèmes robotiques complexes, tout en restant accessible aux débutants grâce à sa simplicité d’interface via le bus I2C et l’écosystème Grove.

| Attr | Specs | vérifié |
|---|---|---|
soc | STM32F030C8T6 | ? non vérifié |
motor_driver | 4x DRV8837DSGR H-bridge | ? non vérifié |
communication | I2C (Default address 0x24, configurable 0x08-0x77) | ? non vérifié |
encoder_support | 4-channel AB encoder, 3-15 PPR | ? non vérifié |
power_input | DC 6-12V (2x PH2.0-2P) or DC 5V (Grove) | ? non vérifié |
power_output | DC 5V @ 8A max (via DC-DC buck converter) | ? non vérifié |
motor_load | Max single-channel DC 5V @ 1.2A | ? non vérifié |
current_sensing | INA199A circuit | ? non vérifié |
interfaces | 2x HY2.0-4P Grove, 4x PH2.0-6P motor ports | ? non vérifié |
dimensions | 56.5 x 24.0 x 12.8 mm | ? non vérifié |
weight | 10.0 g | ? non vérifié |
led | 1x WS2812C-2020 RGB | ? non vérifié |
control_modes | PWM, Forward/Reverse, Speed/Position Loop, Soft Start/Stop | ? non vérifié |
Ce module M5Stack est conçu pour le pilotage précis de quatre moteurs à courant continu avec encodeurs. Il s'appuie sur un microcontrôleur STM32F030C8T6 et quatre ponts en H DRV8837DSGR pour offrir des fonctions de régulation en boucle fermée via le bus I2C.
+ Points forts
["- Régulation de vitesse et de position en boucle fermée avec démarrage/arrêt progressif","- Convertisseur DC-DC intégré fournissant jusqu'à 5V @ 8A pour alimenter les moteurs et l'hôte","- Support natif des encodeurs AB (3-15 PPR) et compatibilité avec les moteurs à engrenages 6 fils ou TT"]
− Points faibles
["- Charge maximale limitée à 1,2A par canal moteur à 5V","- Nécessite une alimentation externe DC 6-12V pour la puissance moteur (le port Grove 5V est insuffisant pour les charges élevées)","- Dimensions compactes (56,5 x 24,0 mm) pouvant limiter l'accès physique aux connecteurs en cas d'empilement dense"]
- Retour d'expérience expert expert — expert-microdb
- J'ai intégré la carte 4-Encoder Motor Driver (DRV8837DSGR) sur un châssis 4 roues. Le point fort est la boucle fermée PID gérée par le STM32F030, ce qui libère totalement l'hôte. La régulation de vitesse est précise avec des moteurs TT standards. Attention toutefois à la gestion thermique : bien qu… — expert-microdb
- Bon retour. Je confirme que la communication I2C (0x24) est très stable, mais la documentation sur les registres de position est parfois floue. Pour les bras robotiques, le mode veille est crucial pour économiser l'énergie. J'ai noté que les encodeurs 3-15 PPR fonctionnent bien, mais si tu utilises… — membre-forum
Retours et projets de la communauté
Contenu indisponible pour le moment.
Contenu indisponible pour le moment.
Contenu indisponible pour le moment.
["- non renseigné"]
- Premier branchement et mise en route du Driver Moteur 4-Encoder debutant Apprenez à alimenter, connecter et vérifier la communication I2C de votre module DRV8837 pour la première fois.
- Découverte des entrées-sorties : LED RGB et lecture d'encodeurs debutant Apprenez à interagir avec les périphériques intégrés du module en contrôlant la LED RGB et en lisant les données des encodeurs via I2C.
- Automatiser un châssis robotique avec le Driver 4-Encoder debutant Apprenez à contrôler quatre moteurs avec retour d'encodeur pour une automatisation précise via I2C.
- Premier branchement et mise en route du 4-Encoder Motor Driver intermediaire Guide étape par étape pour alimenter, connecter les moteurs et initialiser le module DRV8837DSGR via I2C.
- Pilotage GPIO et LED RGB sur le Driver Moteur 4-Encodeurs intermediaire Apprenez à utiliser les entrées-sorties et la LED RGB WS2812C intégrée au module DRV8837DSGR via I2C.
- Automatisation et Boucle Fermée avec le Driver 4-Encoder intermediaire Configurez une automatisation précise en utilisant la régulation de position en boucle fermée et le stockage d'état via I2C.
- Premier branchement et initialisation du module 4-Encoder Motor Driver avance Guide avancé pour le câblage physique, la gestion de l'alimentation et la vérification de la communication I2C du module DRV8837DSGR.
- Pilotage avancé des E/S et diagnostics sur le module DRV8837 avance Apprenez à exploiter les entrées-sorties étendues, le capteur de courant INA199A et la LED RGB pour le diagnostic temps réel.
- Automatisation multi-axes avec le M5Stack 4-Encoder Motor Driver avance Mettez en œuvre un système de contrôle de position en boucle fermée pour un robot à quatre roues ou un bras articulé en utilisant la régulation PID intégrée.
Bibliothèque de code — exemples écrits pour cette carte
i2c-motor-spin.inoarduinoclosed-loop-speed-control.inoarduinorelative-position-move.inoarduinorgb-led-status-indicator.inoarduinodifferential-drive-robot.inoarduinoi2c_basic_motor_control.pyPythonclosed_loop_speed_pid.inoC++rgb_status_led_ws2812.pyPythoncurrent_sensing_ina199.inoC++multi_motor_sequencer.pyPython