Arduino UNO R4 - Shield Moteur DC

L'Arduino Uno R4 — disponible en versions Minima et WiFi — apporte plus de puissance de traitement, de la mémoire supplémentaire et un ADC 14 bits tout en conservant le format de connecteur classique Uno. Cela signifie que le Motor Shield Rev3 se branche directement sur l'Uno R4 sans aucun câblage supplémentaire.

Dans ce guide, vous allez :

Arduino Uno R4 DC Motor Shield

Aperçu du Motor Shield Rev3

Au cœur du Motor Shield Rev3 se trouve le pilote double pont complet L298P. Cette puce vous donne un contrôle indépendant sur deux moteurs DC — chacun avec sa propre ligne de direction, ligne de vitesse PWM, ligne de frein et entrée analogique de détection de courant.

Voici ce que chaque ligne de contrôle fait :

  • Direction — une sortie numérique qui définit le sens de rotation. Écrire HAUT fait tourner dans un sens ; BAS fait tourner dans l'autre.
  • PWM — une sortie analogique (PWM) qui définit le rapport cyclique. Les valeurs vont de 0 (arrêté) à 255 (pleine vitesse).
  • Frein — une sortie numérique. La mettre à HAUT bloque l'arbre du moteur ; la mettre à BAS laisse le moteur tourner librement.
  • Détection de Courant — une entrée analogique qui indique la quantité de courant que le moteur consomme.

Parce que l'Uno R4 partage les mêmes positions de connecteur que l'Uno R3 original, toutes les broches s'alignent automatiquement :

Function Channel A Channel B
Direction D12 D13
PWM (Speed) D3 D11
Brake D9 D8
Current Sensing A0 A1

Alimentation des Moteurs

Les moteurs ont besoin de plus de courant que ce que USB peut fournir. Connectez une alimentation externe de 6-12 V (comme deux cellules lithium 18650 en série) aux bornes à vis d'alimentation du shield. L'Arduino lui-même peut continuer à fonctionner via USB.

Schéma de Câblage

Placez le Motor Shield Rev3 sur les connecteurs de l'Uno R4, en vous assurant que chaque broche est bien en place.

Attachez les fils du moteur DC aux bornes à vis du Canal A — les étiquettes de canaux sont imprimées sur la carte.

Connectez le pack de batteries externe aux bornes à vis d'alimentation.

Arduino Uno R4 DC Motor Shield wiring diagram

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Voir Comment alimenter l'Arduino UNO R4..

Comment Installer la Bibliothèque

  1. Branchez l'Arduino Uno R4 à votre ordinateur avec un câble USB Type-C.
  2. Dans l'Arduino IDE, vérifiez que la bonne carte (Arduino Uno R4 Minima ou WiFi) et le bon port série sont sélectionnés.
  3. Cliquez sur l'icône Bibliothèques dans la barre latérale gauche.
  4. Tapez "DIYables_DC_Motor" dans la zone de recherche et localisez la bibliothèque publiée par DIYables.
  5. Cliquez sur Installer pour ajouter la bibliothèque à votre IDE.
Arduino DC Motor Shield library

Aucune dépendance supplémentaire n'est nécessaire — la bibliothèque est entièrement autonome.

Structure Minimale du Sketch

Tous les sketches de contrôle de moteur partagent ce squelette :

#include <DIYables_DC_Motor.h> DIYables_DC_Motor motor(MOTOR_CH_A); void setup() { motor.begin(); } void loop() { motor.run(MOTOR_FORWARD, 100); delay(2000); motor.brake(); delay(1000); }

motor.begin() configure les broches de direction, PWM et frein. Appeler motor.run() définit la direction, relâche le frein et applique la vitesse demandée. motor.brake() engage le frein et coupe le PWM à zéro.

Moteur Unique sur le Canal A

Faites tourner un moteur sur le Canal A, alternant entre avant et arrière toutes les deux secondes avec un arrêt complet entre les deux.

/* * Ce code Arduino UNO R4 a été développé par newbiely.fr * Ce code Arduino UNO R4 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-r4/arduino-uno-r4-dc-motor-shield */ /* * DIYables_DC_Motor - ChannelA Example * * This example demonstrates how to control a DC motor connected to * Channel A of the Arduino Motor Shield Rev3. The motor alternates * direction every 2 seconds with braking in between. * * Channel A pins: D12 (Direction), D3 (PWM), D9 (Brake), A0 (Current) * * Tutorial: https://diyables.io/motor-shield * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - It is expected to work with other boards */ #include <DIYables_DC_Motor.h> DIYables_DC_Motor motor(MOTOR_CH_A); bool directionState = false; void setup() { Serial.begin(9600); motor.begin(); Serial.println("Motor Shield - Channel A"); } void loop() { // Toggle direction each cycle directionState = !directionState; int direction = directionState ? MOTOR_FORWARD : MOTOR_BACKWARD; // Run motor with speed 30 (out of 255) motor.run(direction, 30); Serial.print("Running "); Serial.println(directionState ? "FORWARD" : "BACKWARD"); delay(2000); // Brake the motor motor.brake(); Serial.println("Braking"); delay(2000); }

Comment Exécuter

  • Placez le shield sur l'Uno R4 et connectez le moteur au Canal A.
  • Connectez le pack de batteries aux bornes d'alimentation.
  • Branchez le câble USB Type-C.
  • Collez le code dans l'Arduino IDE, choisissez la bonne carte et le bon port, et appuyez sur Téléverser.
  • Ouvrez le Moniteur Série pour suivre les changements de direction.

Le moteur alterne entre avant et arrière à la vitesse 30, avec une pause de 2 secondes entre chaque changement de direction.

Référence Rapide des Méthodes

Method What It Does Usage
run(dir, speed) Spins the motor in the given direction at the given speed motor.run(MOTOR_FORWARD, 100)
setSpeed(speed) Changes speed without touching direction or brake motor.setSpeed(200)
setDirection(dir) Changes direction without touching speed or brake motor.setDirection(MOTOR_BACKWARD)
brake() Engages the brake and drops speed to zero motor.brake()
release() Disengages the brake motor.release()
readCurrent() Returns raw ADC from the current-sensing pin motor.readCurrent()

Moteur Unique sur le Canal B

Comportement identique, mais sur le Canal B — changez simplement la constante de canal.

/* * Ce code Arduino UNO R4 a été développé par newbiely.fr * Ce code Arduino UNO R4 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-r4/arduino-uno-r4-dc-motor-shield */ /* * DIYables_DC_Motor - ChannelB Example * * This example demonstrates how to control a DC motor connected to * Channel B of the Arduino Motor Shield Rev3. The motor alternates * direction every 2 seconds with braking in between. * * Channel B pins: D13 (Direction), D11 (PWM), D8 (Brake), A1 (Current) * * Tutorial: https://diyables.io/motor-shield * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - It is expected to work with other boards */ #include <DIYables_DC_Motor.h> DIYables_DC_Motor motor(MOTOR_CH_B); bool directionState = false; void setup() { Serial.begin(9600); motor.begin(); Serial.println("Motor Shield - Channel B"); } void loop() { // Toggle direction each cycle directionState = !directionState; int direction = directionState ? MOTOR_FORWARD : MOTOR_BACKWARD; // Run motor with speed 30 (out of 255) motor.run(direction, 30); Serial.print("Running "); Serial.println(directionState ? "FORWARD" : "BACKWARD"); delay(2000); // Brake the motor motor.brake(); Serial.println("Braking"); delay(2000); }

Comment Exécuter

  • Câblez le moteur aux bornes à vis du Canal B.
  • Téléversez le sketch et ouvrez le Moniteur Série.

Tout fonctionne de la même façon ; seules les broches sous-jacentes diffèrent.

Deux Moteurs - Les Deux Canaux

Pilotez deux moteurs indépendamment : même direction, direction opposée et freinage synchronisé.

/* * Ce code Arduino UNO R4 a été développé par newbiely.fr * Ce code Arduino UNO R4 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-r4/arduino-uno-r4-dc-motor-shield */ /* * DIYables_DC_Motor - BothChannels Example * * This example demonstrates how to control two DC motors simultaneously, * one on Channel A and one on Channel B of the Arduino Motor Shield Rev3. * * Channel A pins: D12 (Direction), D3 (PWM), D9 (Brake), A0 (Current) * Channel B pins: D13 (Direction), D11 (PWM), D8 (Brake), A1 (Current) * * Tutorial: https://diyables.io/motor-shield * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - It is expected to work with other boards */ #include <DIYables_DC_Motor.h> DIYables_DC_Motor motorA(MOTOR_CH_A); DIYables_DC_Motor motorB(MOTOR_CH_B); void setup() { Serial.begin(9600); motorA.begin(); motorB.begin(); Serial.println("Motor Shield - Both Channels"); } void loop() { // Both motors forward motorA.run(MOTOR_FORWARD, 100); motorB.run(MOTOR_FORWARD, 100); Serial.println("Both FORWARD"); delay(2000); // Brake both motors motorA.brake(); motorB.brake(); Serial.println("Both BRAKING"); delay(1000); // Both motors backward motorA.run(MOTOR_BACKWARD, 100); motorB.run(MOTOR_BACKWARD, 100); Serial.println("Both BACKWARD"); delay(2000); // Brake both motors motorA.brake(); motorB.brake(); Serial.println("Both BRAKING"); delay(1000); // Motors in opposite directions motorA.run(MOTOR_FORWARD, 150); motorB.run(MOTOR_BACKWARD, 150); Serial.println("A FORWARD, B BACKWARD"); delay(2000); // Brake both motors motorA.brake(); motorB.brake(); Serial.println("Both BRAKING"); delay(1000); }

Comment Exécuter

  • Attachez un moteur au Canal A et un autre au Canal B.
  • Téléversez et ouvrez le Moniteur Série.

Le sketch passe par trois schémas : les deux en avant, les deux en arrière, et les moteurs tournant dans des directions opposées.

Lecture du Courant du Moteur

Surveillez la consommation de courant d'un moteur en temps réel.

/* * Ce code Arduino UNO R4 a été développé par newbiely.fr * Ce code Arduino UNO R4 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-r4/arduino-uno-r4-dc-motor-shield */ /* * DIYables_DC_Motor - CurrentSensing Example * * This example demonstrates how to read the current drawn by a DC motor * connected to Channel A of the Arduino Motor Shield Rev3. * * The Motor Shield Rev3 provides current sensing via analog pins: * Channel A: A0 * Channel B: A1 * * Tutorial: https://diyables.io/motor-shield * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - It is expected to work with other boards */ #include <DIYables_DC_Motor.h> DIYables_DC_Motor motor(MOTOR_CH_A); void setup() { Serial.begin(9600); motor.begin(); Serial.println("Motor Shield - Current Sensing"); } void loop() { // Run motor forward motor.run(MOTOR_FORWARD, 100); // Read and print current sensing value int current = motor.readCurrent(); Serial.print("Current sensing (raw ADC): "); Serial.println(current); delay(500); }

Comment Exécuter

  • Câblez un moteur au Canal A.
  • Téléversez le sketch et ouvrez le Moniteur Série.
  • La valeur ADC brute se rafraîchit toutes les 500 ms.

À Propos de la Détection de Courant

Les broches analogiques A0 et A1 portent une tension proportionnelle au courant du moteur sur le Canal A et le Canal B respectivement. readCurrent() renvoie la lecture ADC brute — sur l'Uno R4, c'est une valeur 14 bits (0-16383) grâce à l'ADC Renesas RA4M1. Convertissez en milliampères en utilisant le facteur de sensibilité documenté du shield.

Attribution Personnalisée des Broches

Si vous devez remplacer la correspondance de broches par défaut — par exemple, lorsque vous utilisez une carte de pilote de moteur tierce partie — passez les broches directement au constructeur.

/* * Ce code Arduino UNO R4 a été développé par newbiely.fr * Ce code Arduino UNO R4 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-r4/arduino-uno-r4-dc-motor-shield */ /* * DIYables_DC_Motor - CustomPins Example * * This example demonstrates how to create a motor object with * custom pin assignments instead of using the predefined channels. * * Tutorial: https://diyables.io/motor-shield * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - It is expected to work with other boards */ #include <DIYables_DC_Motor.h> // Custom pin assignment: direction=12, pwm=3, brake=9, currentSensing=A0 DIYables_DC_Motor motor(12, 3, 9, A0); bool directionState = false; void setup() { Serial.begin(9600); motor.begin(); Serial.println("Motor Shield - Custom Pins"); } void loop() { // Toggle direction each cycle directionState = !directionState; int direction = directionState ? MOTOR_FORWARD : MOTOR_BACKWARD; // Run motor motor.run(direction, 30); Serial.print("Running "); Serial.println(directionState ? "FORWARD" : "BACKWARD"); delay(2000); // Brake the motor motor.brake(); Serial.println("Braking"); delay(2000); }

Comment Exécuter

  • Mettez à jour les numéros de broches dans le constructeur pour correspondre à votre matériel.
  • Téléversez et vérifiez le fonctionnement du moteur.

Dépannage

  • Le moteur reste immobile - Confirmez que les fils du moteur sont bien fixés dans les bornes à vis et que le canal correspond au code (MOTOR_CH_A vs. MOTOR_CH_B).
  • Pas de couple - Augmentez la valeur de vitesse. Des valeurs PWM très basses peuvent ne pas surmonter l'inertie du moteur.
  • Alimentation externe morte - Rechargez ou remplacez les batteries. Vérifiez que la polarité est correcte aux bornes d'alimentation.
  • La direction semble incorrecte - Échangez les deux fils du moteur à la borne à vis, ou inversez la constante de direction dans le logiciel.
  • La lecture de courant est toujours zéro - Assurez-vous d'avoir utilisé le constructeur de canal ou le constructeur à 4 broches qui inclut la broche de détection de courant.

Démo Complète du Shield Moteur DC Arduino Uno R4

Voici un tutoriel vidéo étape par étape démontrant tous les exemples du Shield Moteur DC :

Compatibilité des Plateformes

La bibliothèque s'appuie exclusivement sur les API Arduino standard (pinMode, digitalWrite, analogWrite, analogRead) et fonctionne sur toutes les plateformes compatibles Arduino.

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !