Arduino - Shield Moteur DC
Ce tutoriel vous explique comment contrôler un moteur DC avec Arduino et le Motor Shield Rev3. En détail, nous allons apprendre :
- Comment monter le Motor Shield Rev3 sur l'Arduino.
- Comment connecter un moteur DC et une source d'alimentation externe.
- Comment programmer Arduino pour contrôler la direction du moteur (avant/arrière).
- Comment programmer Arduino pour contrôler la vitesse du moteur avec PWM.
- Comment programmer Arduino pour activer et relâcher le frein.
- Comment programmer Arduino pour lire le courant du moteur.
- Comment contrôler deux moteurs DC simultanément en utilisant les deux canaux.

Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Démarrage DIYables STEM V3 (Arduino inclus) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À Propos du Motor Shield Rev3
L'Arduino Motor Shield Rev3 est basé sur le circuit intégré L298P double pont complet, qui vous permet de piloter deux moteurs DC (ou un moteur pas à pas) avec un contrôle total sur la direction, la vitesse et le freinage.
Le shield offre les fonctionnalités suivantes :
- Deux canaux moteur (A et B) : Chaque canal peut piloter indépendamment un moteur DC.
- Contrôle de direction : Faites tourner le moteur en avant ou en arrière avec une broche numérique.
- Contrôle de vitesse PWM : Ajustez la vitesse du moteur de 0 à 255 avec une broche PWM.
- Contrôle de frein : Activez ou relâchez le frein sur chaque canal avec une broche numérique.
- Détection de courant : Lisez le courant consommé par chaque moteur via des broches analogiques.
Le Motor Shield Rev3 est conçu pour le facteur de forme Arduino Uno et se monte directement sur la carte Arduino — aucune breadboard ni câblage complexe nécessaire.
Correspondance des Broches
| Function | Channel A | Channel B |
|---|---|---|
| Direction | D12 | D13 |
| PWM (Speed) | D3 | D11 |
| Brake | D9 | D8 |
| Current Sensing | A0 | A1 |
Alimentation Externe
Le Motor Shield Rev3 nécessite une source d'alimentation externe pour les moteurs. Connectez votre source d'alimentation (6-12V) aux bornes à vis d'alimentation du shield. L'alimentation de la source externe alimente les moteurs, tandis que l'Arduino peut être alimenté séparément via USB ou sa propre alimentation.
Schéma de Câblage
Tout d'abord, montez l'Arduino Motor Shield Rev3 sur l'Arduino Uno en alignant soigneusement les broches.
Ensuite, connectez le moteur DC au Canal A en utilisant les bornes à vis du shield. Les canaux sont indiqués à côté des bornes à vis.
Enfin, connectez la source d'alimentation externe (par exemple, 2 batteries Li-Ion 3,7V) aux bornes à vis d'alimentation du shield.

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Installation de la Bibliothèque
- Connectez la carte Arduino à votre ordinateur avec un câble USB.
- Ouvrez l'Arduino IDE, sélectionnez la bonne carte et le bon port.
- Accédez à l'icône Bibliothèques dans la barre de gauche de l'Arduino IDE.
- Recherchez "DIYables_DC_Motor", puis trouvez la bibliothèque DIYables_DC_Motor par DIYables.
- Cliquez sur le bouton Installer pour installer la dernière version de la bibliothèque.

Remarque : Cette bibliothèque est autonome, sans dépendances externes.
Structure de Base
Chaque sketch utilisant la bibliothèque DC Motor suit cette structure de base :
motor.begin() initialise les broches de direction, PWM et frein. Ensuite, utilisez motor.run() pour définir la direction et la vitesse, et motor.brake() pour arrêter le moteur. Aucun appel à loop() sur l'objet moteur n'est nécessaire — le moteur tourne en continu jusqu'à ce que vous changiez son état.
Code Arduino - Contrôle du Moteur Canal A
Le code suivant montre comment contrôler un moteur DC sur le Canal A : alternance de direction toutes les 2 secondes avec freinage entre les deux.
Étapes Rapides
- Montez le Motor Shield Rev3 sur la carte Arduino.
- Connectez le moteur DC aux bornes à vis du Canal A.
- Connectez la source d'alimentation externe.
- Connectez la carte Arduino à votre ordinateur avec un câble USB.
- Ouvrez l'Arduino IDE, sélectionnez la bonne carte et le bon port.
- Copiez le code ci-dessus et collez-le dans l'éditeur de l'Arduino IDE.
- Cliquez sur le bouton Téléverser dans l'Arduino IDE pour téléverser le code sur Arduino.
- Ouvrez le Moniteur Série pour voir les messages d'état du moteur.
Le moteur tourne en avant pendant 2 secondes à la vitesse 30, freine pendant 2 secondes, puis tourne en arrière pendant 2 secondes, et recommence.
Résumé de l'API Moteur
| Method | Description | Example |
|---|---|---|
| run(direction, speed) | Set direction and speed, release brake | motor.run(MOTOR_FORWARD, 100) |
| setSpeed(speed) | Set PWM speed (0-255) | motor.setSpeed(150) |
| setDirection(direction) | Set direction only | motor.setDirection(MOTOR_BACKWARD) |
| brake() | Activate brake and set speed to 0 | motor.brake() |
| release() | Release brake | motor.release() |
| readCurrent() | Read raw ADC from current sensing pin | motor.readCurrent() |
Code Arduino - Contrôle du Moteur Canal B
Le code suivant montre comment contrôler un moteur DC sur le Canal B.
Étapes Rapides
- Connectez le moteur DC aux bornes à vis du Canal B (au lieu du Canal A).
- Copiez le code ci-dessus et collez-le dans l'éditeur de l'Arduino IDE.
- Cliquez sur le bouton Téléverser dans l'Arduino IDE pour téléverser le code sur Arduino.
- Ouvrez le Moniteur Série.
Le comportement est identique au Canal A — la seule différence est le canal utilisé.
Code Arduino - Les Deux Canaux
Le code suivant montre comment contrôler deux moteurs DC simultanément, un sur chaque canal.
Étapes Rapides
- Connectez un moteur DC au Canal A et un autre au Canal B.
- Copiez le code ci-dessus et collez-le dans l'éditeur de l'Arduino IDE.
- Cliquez sur le bouton Téléverser dans l'Arduino IDE pour téléverser le code sur Arduino.
- Ouvrez le Moniteur Série.
Les deux moteurs tournent en avant ensemble, puis en arrière ensemble, puis dans des directions opposées — avec des pauses de freinage entre les deux.
Code Arduino - Détection de Courant
Le code suivant montre comment lire le courant consommé par un moteur DC en utilisant la broche de détection de courant intégrée.
Étapes Rapides
- Connectez un moteur DC au Canal A.
- Copiez le code ci-dessus et collez-le dans l'éditeur de l'Arduino IDE.
- Cliquez sur le bouton Téléverser dans l'Arduino IDE pour téléverser le code sur Arduino.
- Ouvrez le Moniteur Série.
- Observez la valeur brute de détection de courant ADC se mettre à jour toutes les 500 ms.
Notes sur la Détection de Courant
Le Motor Shield Rev3 fournit une détection de courant via les broches analogiques A0 (Canal A) et A1 (Canal B). La méthode readCurrent() renvoie une valeur ADC brute. Pour convertir en courant réel (en ampères), vous devez appliquer le facteur de conversion approprié basé sur le circuit de détection de courant du shield.
Code Arduino - Broches Personnalisées
Le code suivant montre comment créer un objet moteur avec des assignations de broches personnalisées au lieu d'utiliser les constantes de canal prédéfinies.
Étapes Rapides
- Ajustez les numéros de broches dans le constructeur pour correspondre à votre câblage.
- Copiez le code ci-dessus et collez-le dans l'éditeur de l'Arduino IDE.
- Cliquez sur le bouton Téléverser dans l'Arduino IDE pour téléverser le code sur Arduino.
Cette approche est utile lorsque vous utilisez un pilote de moteur non standard ou une configuration de broches modifiée.
Dépannage
Si le code ne fonctionne pas, voici quelques problèmes courants que vous pouvez résoudre :
- Le moteur ne tourne pas : Vérifiez que le moteur est correctement connecté aux bornes à vis du bon canal.
- Mauvais canal : Assurez-vous que les définitions de broches dans votre code correspondent au canal auquel vous avez connecté le moteur (Canal A ou Canal B).
- Pas d'alimentation : Vérifiez que la source d'alimentation externe est connectée et fonctionne. Le moteur a besoin d'une alimentation externe — USB seul n'est pas suffisant pour le fonctionnement du moteur.
- Rotation faible ou nulle : Augmentez la valeur de vitesse dans setSpeed() ou run(). Une vitesse très basse (par exemple, inférieure à 20) peut ne pas suffire à surmonter le couple de démarrage du moteur.
- Direction inversée : Échangez simplement les deux fils du moteur sur la borne à vis, ou changez MOTOR_FORWARD en MOTOR_BACKWARD dans votre code.
Démo Complète du Shield Moteur DC Arduino
Voici un tutoriel vidéo étape par étape démontrant tous les exemples du Shield Moteur DC :
Compatibilité des Plateformes
La bibliothèque utilise uniquement les API standard Arduino (pinMode, digitalWrite, analogWrite, analogRead) et prend en charge toutes les plateformes Arduino (architectures=*).