Arduino - Moteur à courant continu

Dans ce tutoriel, nous allons apprendre :

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×L298N Motor Driver Module
1×5V DC Motor
1×5V Power Adapter for 5V DC motor
1×DC Power Jack
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du moteur à courant continu

Brochage du moteur à courant continu

Le moteur à courant continu possède deux fils :

  • Fil positif : généralement rouge
  • Fil négatif : généralement noir
Brochage du moteur à courant continu

Comment ça marche

Lorsque vous achetez un moteur à courant continu, vous devez savoir sous quelle tension fonctionne ce moteur à courant continu. Prenons l'exemple d'un moteur à courant continu de 12V.

Lorsque vous alimentez le moteur 12V DC par une source d'alimentation de 12V :

  • 12V et GND au fil positif et au fil négatif, respectivement : le moteur à courant continu tourne à vitesse maximale dans le sens des aiguilles d'une montre.
  • 12V et GND au fil négatif et au fil positif, respectivement : le moteur à courant continu tourne à vitesse maximale dans le sens inverse des aiguilles d'une montre.

Comme décrit ci-dessus, lorsque le poteau électrique est échangé entre deux fils du moteur à courant continu, la direction de rotation est inversée. Cette méthode est utilisée pour contrôler la direction du moteur à courant continu. Bien sûr, non pas en changeant manuellement mais par programmation.

Si nous fournissons une puissance inférieure à 12V aux moteurs à courant continu, le moteur tourne toujours mais pas à la vitesse maximale. Cela signifie que si nous changeons la tension de l'alimentation, nous pouvons changer la vitesse du moteur à courant continu. Cependant, cette méthode n'est pas utilisée en pratique à cause de la difficulté à contrôler la tension de la source d'alimentation. Au lieu de cela, nous fixons la tension de la source d'alimentation et contrôlons la vitesse du moteur à courant continu via un signal PWM. Plus le cycle de travail du PWM est important, plus la vitesse du moteur à courant continu est élevée.

Comment contrôler un moteur à courant continu

Comment contrôler un moteur CC avec Arduino

Contrôler un moteur à courant continu comprend deux facteurs : la vitesse et la direction. Arduino peut générer le signal PWM. Cependant, ce signal PWM a une faible tension et un faible courant, nous ne pouvons pas l'utiliser pour contrôler le moteur à courant continu. Nous devons utiliser un pilote matériel entre l'Arduino et le moteur à courant continu. Le pilote effectue deux travaux :

  • Amplifier le signal PWM de l'Arduino (courant et tension) → pour le contrôle de la vitesse.
  • Recevoir le signal de commande de l'Arduino pour inverser le pôle de l'alimentation électrique → pour le contrôle de la direction.
Contrôle d'un moteur à courant continu par Arduino

※ NOTE THAT:

  • Ce tutoriel peut être appliqué à tous les moteurs à courant continu. Le moteur à courant continu de 12V est juste un exemple.
  • Lorsque vous contrôlez un moteur à courant continu de 5V, bien que la broche Arduino délivre 5V (la même tension que le moteur à courant continu), il vous faut toujours un pilote entre l'Arduino et le moteur à courant continu car la broche Arduino ne fournit pas assez de courant pour le moteur à courant continu.

Il existe de nombreux types de puces et de modules (par exemple, L293D, L298N) qui peuvent être utilisés comme pilotes de moteurs à courant continu. Dans ce tutoriel, nous utiliserons le pilote L298N.

À propos du pilote L298N

Le pilote L298N peut être utilisé pour contrôler un moteur à courant continu et un moteur pas à pas. Dans ce tutoriel, nous apprenons à l'utiliser pour contrôler le moteur à courant continu.

Brochage du pilote L298N

Brochage du pilote L298N

Le pilote L298N peut contrôler deux moteurs à courant continu indépendamment en même temps, nommés moteur A et moteur B. Le pilote L298N dispose de 13 broches :

Les broches communes pour les deux moteurs :

  • Broche VCC : fournit l'alimentation pour le moteur. Elle peut être comprise entre 5 et 35V.
  • Broche GND : est une broche de masse commune, doit être connectée à GND (0V).
  • Broche 5V : fournit l'alimentation pour le module L298N. Elle peut être alimentée par 5V depuis un Arduino.

Broches du moteur A (Canal A) :

  • Broches ENA : sont utilisées pour contrôler la vitesse du moteur A. Retirer le cavalier et connecter cette broche à une entrée PWM nous permettra de contrôler la vitesse du moteur A.
  • Broches IN1 et IN2 : sont utilisées pour contrôler le sens de rotation du moteur A. Lorsque l'une d'elles est HIGH et l'autre LOW, le moteur A tournera. Si les deux entrées sont soit HIGH soit LOW, le moteur A s'arrêtera.
  • Broches OUT1 et OUT2 : sont connectées au moteur A.

Broches du moteur B (canal B) :

  • Broches ENB : sont utilisées pour contrôler la vitesse du moteur B. En enlevant le cavalier et en connectant cette broche à une entrée PWM, nous pouvons contrôler la vitesse du moteur B.
  • Broches IN3 & IN4 : sont utilisées pour contrôler le sens de rotation du moteur B. Lorsque l'une d'elles est HIGH et l'autre est LOW, le moteur B tournera. Si les deux entrées sont soit HIGH, soit LOW, le moteur B s'arrêtera.
  • Broches OUT3 & OUT4 : sont connectées au moteur B.

Comme décrit ci-dessus, le pilote L298N dispose de deux alimentations d'entrée :

  • Un pour le moteur à courant continu (broches VCC et GND) : de 5 à 35V.
  • Un pour le fonctionnement interne du module L298N (broches 5V et GND) : de 5 à 7V.

Le pilote L298N dispose également de trois cavaliers pour des utilisations avancées ou d'autres fins. Par souci de simplicité, veuillez retirer tous les cavaliers du pilote L298N.

Nous pouvons contrôler deux moteurs à courant continu indépendamment en même temps en utilisant un Arduino et un pilote L298N. Pour contrôler chaque moteur, nous avons besoin de seulement trois broches de l'Arduino.

※ NOTE THAT:

Le reste de ce tutoriel permet de contrôler un moteur à courant continu en utilisant le canal A. Contrôler l'autre moteur à courant continu est similaire.

Comment contrôler la vitesse d'un moteur à courant continu via un pilote L298N

Il est simple de contrôler la vitesse du moteur à courant continu en générant un signal PWM vers la broche ENA de L298N. Nous pouvons faire cela en :

  • Connectez une broche Arduino à ENA de L298N
  • Générez un signal PWM vers la broche ENA en utilisant la fonction analogWrite(). Le pilote L298N amplifie le signal PWM au moteur DC.
analogWrite(ENA_PIN, speed); // la vitesse est une valeur de 0 à 255

La vitesse est une valeur comprise entre 0 et 255. Si la vitesse est 0, le moteur s'arrête. Si la vitesse est 255, le moteur tourne à vitesse maximale.

Comment contrôler la direction d'un moteur à courant continu via le pilote L298N

La direction de rotation d'un moteur peut être contrôlée en appliquant un niveau logique HAUT/BAS aux broches IN1 et IN2. Le tableau ci-dessous illustre comment contrôler la direction dans les deux canaux.

IN1 pin IN2 pin Direction
LOW LOW Motor A stops
HIGH HIGH Motor A stops
HIGH LOW Motor A spins Clockwise
LOW HIGH Motor A spins Anti-Clockwise
  • Le moteur de commande A tourne dans le sens des aiguilles d'une montre.
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);
  • Le moteur de contrôle A tourne dans le sens antihoraire.
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ NOTE THAT:

La direction de rotation est inversée si la broche OUT1 & OUT2 est connectée de manière inverse aux deux broches du moteur à courant continu. Si c'est le cas, il suffit d'intervertir les broches OUT1 & OUT2 ou de modifier le signal de commande sur les broches IN1 et IN2 dans le code.

Comment arrêter la rotation d'un moteur à courant continu

Il existe deux manières d'arrêter un moteur à courant continu.

  • Contrôle la vitesse à 0
analogWrite(ENA_PIN, 0);
  • Contrôle les broches IN1 IN2 à la même valeur (BASSE ou HAUTE)
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW);

*.Ou

digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, HIGH);

Comment contrôler un moteur à courant continu en utilisant un pilote L298N.

Schéma de câblage

Veuillez retirer les trois cavaliers du module L298N avant de procéder au câblage.

Schéma de câblage du pilote de moteur DC L298N pour Arduino

This image is created using Fritzing. Click to enlarge image

Code Arduino

Le code ci-dessous fait :

  • Accélérer le moteur à courant continu
  • Changer la direction
  • Ralentir le moteur à courant continu
  • Arrêter le moteur
/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino-dc-motor */ // constants won't change const int ENA_PIN = 9; // the Arduino pin connected to the EN1 pin L298N const int IN1_PIN = 6; // the Arduino pin connected to the IN1 pin L298N const int IN2_PIN = 5; // the Arduino pin connected to the IN2 pin L298N // the setup function runs once when you press reset or power the board void setup() { // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise for (int speed = 0; speed <= 255; speed++) { analogWrite(ENA_PIN, speed); // control the speed delay(10); } delay(1000); // rotate at maximum speed 1 seconds in in clockwise direction // change direction digitalWrite(IN1_PIN, LOW); // control motor A spins anti-clockwise digitalWrite(IN2_PIN, HIGH); // control motor A spins anti-clockwise delay(1000); // rotate at maximum speed 1 seconds in in anti-clockwise direction for (int speed = 255; speed >= 0; speed--) { analogWrite(ENA_PIN, speed); // control the speed delay(10); } delay(1000); // stop motor 1 second }

Étapes rapides

  • Retirez les trois cavaliers sur le module L298N.
  • Copiez le code ci-dessus et ouvrez-le avec l'Arduino IDE.
  • Cliquez sur le bouton Upload dans l'Arduino IDE pour charger le code sur Arduino.
  • Vous verrez :
    • Le moteur DC accélère puis tourne à la vitesse maximale pendant 1 seconde
    • La direction du moteur DC est changée
    • Le moteur DC tourne à la vitesse maximale pendant 1 seconde en sens inverse
    • Le moteur DC ralentit
    • Le moteur DC s'arrête 1 seconde
    • Le processus ci-dessus est répété.

    ※ NOTE THAT:

    Dans ce tutoriel, nous apprenons à contrôler la vitesse du moteur à courant continu qui est relative à la vitesse maximale. Pour contrôler la vitesse absolue (tour par seconde), nous devons utiliser un régulateur PID et un encodeur. La maîtrise de la vitesse absolue du moteur à courant continu sera présentée dans un autre tutoriel.

Comment contrôler deux moteurs à courant continu avec un pilote L298N

(bientôt disponible)

Vidéo

Références de fonction

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!