Arduino Nano - Moteur à courant continu

Ce tutoriel vous explique comment utiliser un Arduino Nano pour contrôler un moteur à courant continu. Plus précisément, nous allons apprendre :

Préparation du matériel

1×Arduino Nano
1×USB A to Mini-B USB cable
1×L298N Motor Driver Module
1×5V DC Motor
1×(Optional) 12V DC Motor
1×5V Power Adapter for 5V DC motor
1×DC Power Jack
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino Nano
1×(Recommended) Screw Terminal Adapter for Arduino Nano

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, le fil positif est généralement rouge et le fil négatif est généralement noir.

Brochage du moteur à courant continu

Comment ça marche

Lors de l'achat d'un moteur à courant continu, il est important de prendre conscience de la tension à laquelle il fonctionne. Prenons par exemple un moteur à courant continu de 12V.

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

  • Connecter 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.
  • Connecter 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.

Inverser le poteau de puissance entre deux fils du moteur à courant continu inversera sa direction de rotation. Cette technique est utilisée pour contrôler la direction du moteur à courant continu, non manuellement mais par programmation.

Si la tension de l'alimentation d'un moteur à courant continu est inférieure à 12V, le moteur tournera toujours, mais pas à sa vitesse maximale. Par conséquent, en ajustant la tension de la source d'alimentation, nous pouvons contrôler la vitesse du moteur à courant continu. Néanmoins, cette approche n'est généralement pas utilisée en raison de la difficulté à contrôler la tension de la source d'alimentation. En alternative, nous maintenons la tension de la source d'alimentation fixe et contrôlons la vitesse du moteur à courant continu via un signal PWM. Plus le cycle de travail du PWM est élevé, plus le moteur à courant continu tourne rapidement.

Comment contrôler un moteur à courant continu

Comment contrôler un moteur CC avec un Arduino Nano

La commande d'un moteur à courant continu implique deux éléments : la vitesse et la direction. L'Arduino Nano peut générer un signal PWM, mais ce signal a une faible tension et un faible courant, il ne peut donc pas être utilisé directement pour contrôler le moteur. Nous devons utiliser un pilote matériel entre l'Arduino Nano et le moteur. Le pilote effectue deux tâches :

  • Amplification du signal PWM de l'Arduino Nano (en termes de courant et/ou de tension) pour le contrôle de la vitesse
  • Réception du signal de contrôle de l'Arduino Nano pour changer la polarité de l'alimentation électrique pour le contrôle de direction.
Arduino Nano contrôle un moteur à courant continu

※ NOTE THAT:

  • Ce tutoriel peut être utilisé pour tous les moteurs à courant continu. Nous prenons comme exemple un moteur à courant continu de 12V.
  • Lors du contrôle d'un moteur CC de 5V, même si la broche de l'Arduino Nano délivre 5V (qui est la même tension que le moteur CC), un pilote est toujours nécessaire entre l'Arduino Nano et le moteur CC car la broche de l'Arduino Nano ne fournit pas assez de courant pour le moteur CC.
  • Si vous utilisez un moteur CC de 5V, vous avez besoin d'un adaptateur d'alimentation de 5V pour le moteur. Si vous utilisez un moteur CC de 12V, vous avez besoin d'un adaptateur d'alimentation de 12V pour le moteur.

Il existe de nombreux puces et modules pouvant fonctionner comme pilotes pour les moteurs à courant continu, tels que le L293D et le L298N. Dans ce guide, nous utiliserons le pilote L298N.

À propos du pilote L298N

Le pilote L298N peut être utilisé pour gérer des moteurs DC et des moteurs pas à pas. Ce tutoriel vous explique comment l'utiliser pour contrôler un moteur DC.

Brochage du pilote L298N

Brochage du pilote L298N

Le pilote L298N est capable de contrôler indépendamment deux moteurs à courant continu en même temps, appelés moteur A et moteur B. Ce pilote possède treize broches.

Les broches communes pour les deux moteurs :

  • Broche VCC : Cette broche fournit de l'énergie au moteur, avec une plage de tension de 5 à 35 V.
  • Broche GND : Cette broche est une connexion de masse commune qui doit être connectée à 0 V (GND).
  • Broche 5V : Cette broche alimente le module L298N et peut être alimentée par une source de 5V provenant d'un Arduino Nano.

Broches du moteur A (canal A) :

  • Broches ENA : Ces broches sont utilisées pour réguler la vitesse du moteur A. En retirant le cavalier et en connectant cette broche à une entrée PWM, cela nous permettra de contrôler la vitesse du moteur A.
  • Broches IN1 et IN2 : Ces broches sont utilisées pour gérer le sens de rotation du moteur A. Lorsque l'une d'elles est HIGH et l'autre est LOW, le moteur A tournera. Si les deux entrées sont HIGH ou LOW, le moteur A s'arrêtera.
  • Broches OUT1 et OUT2 : Ces broches sont connectées au moteur A.

Broches du moteur B (Canal B) :

  • Broches ENB : Cette broche peut être utilisée pour contrôler la vitesse du moteur B. En retirant le cavalier et en le connectant à l'entrée PWM, nous pouvons ajuster la vitesse du moteur B.
  • Broches IN3 & IN4 : Ces broches sont utilisées pour gérer la direction de rotation du moteur B. Lorsque l'une est HIGH et l'autre est LOW, le moteur B tournera. Si les deux entrées sont soit HIGH soit LOW, le moteur B cessera de bouger.
  • Broches OUT3 & OUT4 : Ces broches sont connectées au moteur B.

Le driver L298N dispose de deux alimentations d'entrée :

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

Retirez tous les cavaliers du pilote L298N par simplicité.

Nous pouvons également contrôler deux moteurs à courant continu séparément et simultanément en utilisant un Arduino Nano et un pilote L298N. Pour manipuler chaque moteur, nous avons besoin de seulement trois broches de l'Arduino Nano.

※ NOTE THAT:

Le reste de ce tutoriel se concentrera sur le contrôle d'un moteur à courant continu en utilisant le canal A. Des étapes similaires doivent être suivies pour contrôler l'autre moteur à courant continu.

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

Il est facile de contrôler la vitesse d'un moteur à courant continu en produisant un signal MLI vers la broche ENA de L298N. Pour ce faire :

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

La vitesse est un nombre variant de 0 à 255. Lorsque la vitesse est de 0, le moteur cessera de bouger. Lorsque la vitesse est de 255, le moteur tournera à son rythme le plus rapide.

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

La rotation d'un moteur peut être gérée en donnant un niveau logique HAUT/BAS aux broches IN1 et IN2. Le tableau ci-dessous montre 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

En conséquence :

  • Code Arduino pour faire tourner le moteur A dans le sens des aiguilles d'une montre.
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);
  • Code Arduino pour faire tourner le moteur A dans le sens antihoraire.
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ NOTE THAT:

La direction horaire/antihoraire du moteur à courant continu peut être inversée en connectant les broches OUT1 et OUT2 à deux broches du moteur de manière opposée.

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

Deux méthodes pour arrêter un moteur à courant continu :

  • Réduisant sa vitesse à zéro
analogWrite(ENA_PIN, 0);
  • Définit les broches IN1 et IN2 à la même valeur, soit BASSE soit 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 avec un pilote L298N.

Schéma de câblage

Retirez les trois cavaliers du module L298N avant de connecter les fils.

Schéma de câblage du pilote L298N pour moteur à courant continu Arduino Nano

This image is created using Fritzing. Click to enlarge image

Code Arduino Nano

Le code suivant effectue les actions suivantes une par une :

  • Augmente la vitesse d'un moteur à courant continu
  • Change la direction
  • Diminue la vitesse d'un moteur à courant continu
  • Arrête le moteur à courant continu
/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano 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-nano/arduino-nano-dc-motor */ const int ENA_PIN = 6; // The Arduino Nano pin connected to the EN1 pin L298N const int IN1_PIN = 5; // The Arduino Nano pin connected to the IN1 pin L298N const int IN2_PIN = 4; // The Arduino Nano pin connected to the IN2 pin L298N // The setup function runs once on reset or power-up void setup() { // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); } // The loop function repeats indefinitely 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 du module L298N.
  • Copiez le code et ouvrez-le dans l'Arduino IDE.
  • Cliquez sur le bouton Upload de l'Arduino IDE pour charger le code sur l'Arduino Nano.
  • Vous devriez observer :
    • Le moteur à courant continu accélérera puis tournera à sa vitesse maximale pendant 1 seconde.
    • La direction du moteur à courant continu sera changée.
    • Le moteur à courant continu tournera à sa vitesse maximale pendant 1 seconde dans la direction opposée.
    • Le moteur à courant continu ralentira.
    • Le moteur à courant continu s'arrêtera pendant 1 seconde.
    • Ce processus sera répété continuellement.

    ※ NOTE THAT:

    Ce tutoriel vous explique comment ajuster la vitesse d'un moteur à courant continu par rapport à sa vitesse maximale. Pour contrôler la vitesse absolue (en révolutions par seconde), nous devrons utiliser un contrôleur PID et un encodeur. Un autre tutoriel traitera du contrôle de la vitesse absolue du moteur à courant continu.

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

Bientôt disponible !

Vidéo

Références de fonctions

※ 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!