ESP8266 - Moteur à courant continu

Ce tutoriel vous explique comment utiliser l'ESP8266 pour contrôler un moteur à courant continu. En détail, nous apprendrons :

Préparation du matériel

1×ESP8266 NodeMCU
1×Micro 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) 5V Power Adapter for ESP8266
1×(Optional) ESP8266 Screw Terminal Adapter

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

Un moteur à courant continu possède deux fils, le positif étant généralement rouge et le négatif noir.

Brochage du moteur à courant continu

Comment ça fonctionne

Lors de l'achat d'un moteur à courant continu, il est essentiel d'identifier la tension à laquelle il fonctionne. Par exemple, considérons un moteur à courant continu de 12V.

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

  • Connectez le 12V et le 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.
  • Connectez le 12V et le GND au fil négatif et au fil positif, respectivement : le moteur à courant continu tourne à vitesse maximale dans le sens contraire des aiguilles d'une montre.

Comme mentionné précédemment, en échangeant le poteau de puissance entre deux fils du moteur à courant continu, le sens de rotation est inversé. C'est une méthode utilisée pour contrôler la direction du moteur à courant continu, non manuellement mais par programmation.

Si la puissance fournie aux moteurs à courant continu est inférieure à 12V, le moteur tournera toujours mais pas à sa vitesse maximale. Cela implique qu'en ajustant la tension de la source d'alimentation, nous pouvons modifier la vitesse du moteur à courant continu. Néanmoins, cette approche n'est pas couramment utilisée en raison de la complexité de contrôle de la tension de la source d'alimentation. Par conséquent, la tension de la source d'alimentation est maintenue constante et la vitesse du moteur à courant continu est régulée par 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 à courant continu en utilisant un ESP8266

Contrôler un moteur à courant continu implique deux composants : la vitesse et la direction. L'ESP8266 peut générer un signal PWM, mais il a une faible tension et un faible courant, donc il ne peut pas être utilisé pour contrôler le moteur à courant continu. Pour combler l'écart entre l'ESP8266 et le moteur à courant continu, un pilote matériel est nécessaire. Ce pilote effectue deux tâches :

  • Amplifier le signal PWM de l'ESP8266 en termes de courant et de tension pour le contrôle de la vitesse.
  • Recevoir le signal de commande de l'ESP8266 pour inverser la polarité de l'alimentation électrique pour le contrôle de direction.
Contrôle d'un moteur DC par ESP8266 NodeMCU

※ NOTE THAT:

  • Ce tutoriel peut être utilisé pour tout moteur à courant continu. Le moteur à courant continu de 12V est juste un exemple.
  • Lorsque vous contrôlez un moteur à courant continu de 5V, même si la broche ESP8266 délivre 5V (qui est la même tension que celle du moteur à courant continu), vous devez toujours avoir un driver entre l'ESP8266 et le moteur à courant continu car la broche ESP8266 ne fournit pas assez de courant pour le moteur à courant continu.

Il existe de nombreux types de puces, et des modules tels que le L293D et le L298N 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 gérer des moteurs à courant continu et des moteurs pas à pas. Ce tutoriel vous explique comment l'utiliser pour contrôler un moteur à courant continu.

Brochage du pilote L298N

Brochage du pilote L298N

Le pilote L298N est capable de contrôler simultanément deux moteurs à courant continu de manière indépendante, appelés moteur A et moteur B. Ce pilote possède en tout 13 broches.

Les broches communes pour les deux moteurs :

  • Broche VCC : Cette broche fournit l'alimentation électrique du moteur, avec une plage de tension de 5 à 35V.
  • Broche GND : C’est une broche de masse commune, qui doit être connectée à 0V (GND).
  • Broche 5V : Cette broche alimente le module L298N, et peut être alimentée par 5V provenant d'un ESP8266.

Broches du moteur A (Canal A) :

  • Broches ENA : Cette broche peut être utilisée pour contrôler la vitesse du moteur A. En retirant le cavalier et en la connectant à une entrée PWM, nous pouvons ajuster la vitesse du moteur A.
  • Broches IN1 et IN2 : Ces broches sont utilisées pour contrôler la direction de rotation du moteur A. Lorsqu'une de ces broches est réglée sur HIGH et l'autre sur LOW, le moteur A tournera. Si les deux broches sont soit HIGH soit LOW, le moteur A ne bougera pas.
  • Broches OUT1 et OUT2 : Ces broches sont connectées au moteur A.

Broches du moteur B (Canal B) :

  • Ces broches sont utilisées pour alimenter le moteur B.
  • Broches ENB : Cette broche peut être connectée à une entrée PWM pour contrôler la vitesse du moteur B. Retirer le cavalier permettra cela.
  • Broches IN3 et IN4 : Ces broches sont utilisées pour déterminer le sens de rotation du moteur B. Lorsque l'une d'elles est HIGH et l'autre LOW, le moteur B tournera. Si les deux entrées sont soit HIGH, soit LOW, le moteur B s'arrêtera.
  • Broches OUT3 et OUT4 : Ces broches sont connectées au moteur B et lui fournissent de l'énergie.

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

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

Retirez tous les cavaliers du pilote L298N pour des raisons de simplicité. Cela est nécessaire car les cavaliers sont utilisés pour des utilisations avancées ou d'autres fins.

Nous pouvons contrôler deux moteurs à courant continu de manière indépendante et simultanée en utilisant un ESP8266 et un pilote L298N. Pour réguler chaque moteur, nous avons besoin de seulement trois broches de l'ESP8266.

※ 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 peuvent ê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 réguler la vitesse d'un moteur à courant continu en produisant un signal MLI sur la broche ENA du L298N. Cela peut être réalisé en :

  • Connexion d'une broche ESP8266 à l'ENA de L298N
  • Génération d'un signal PWM sur la broche ENA en utilisant la fonction analogWrite(). Le driver L298N amplifiera le signal PWM vers le moteur à courant continu.
analogWrite(ENA_PIN, speed); // la vitesse est une valeur de 0 à 255

La vitesse peut varier de 0 à 255. Lorsque la vitesse est de 0, le moteur cessera de bouger. À une vitesse de 255, le moteur tournera à sa vitesse maximale.

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

La rotation d'un moteur peut être ajustée en fournissant un 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 ESP8266 pour tourner dans le sens des aiguilles d'une montre.
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);
  • Code ESP8266 pour tourner dans le sens antihoraire.
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ NOTE THAT:

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

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

Il existe deux méthodes pour arrêter un moteur à courant continu :

  • Réduisez la vitesse à 0.
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

Il est essentiel de retirer les trois cavaliers du module L298N avant de connecter les fils.

Schéma de câblage du pilote L298N pour moteur à courant continu ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Voir plus dans l'agencement des broches de l'ESP8266 et comment alimenter l'ESP8266 et d'autres composants.

Code ESP8266

Le code suivant fait :

  • Augmente la vitesse d'un moteur à courant continu
  • Modifie la direction
  • Diminue la vitesse d'un moteur à courant continu
  • Arrête le moteur
/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-dc-motor */ #define PIN_ENA D5 // The ESP8266 pin connected to the EN1 pin L298N #define PIN_IN1 D6 // The ESP8266 pin connected to the IN1 pin L298N #define PIN_IN2 D7 // The ESP8266 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(PIN_IN1, OUTPUT); pinMode(PIN_IN2, OUTPUT); pinMode(PIN_ENA, OUTPUT); } // The loop function repeats indefinitely void loop() { digitalWrite(PIN_IN1, HIGH); // control the motor's direction in clockwise digitalWrite(PIN_IN2, LOW); // control the motor's direction in clockwise for (int speed = 0; speed <= 255; speed++) { analogWrite(PIN_ENA, speed); // speed up delay(10); } delay(2000); // rotate at maximum speed 2 seconds in clockwise direction // change direction digitalWrite(PIN_IN1, LOW); // control the motor's direction in anti-clockwise digitalWrite(PIN_IN2, HIGH); // control the motor's direction in anti-clockwise delay(2000); // rotate at maximum speed for 2 seconds in anti-clockwise direction for (int speed = 255; speed >= 0; speed--) { analogWrite(PIN_ENA, speed); // speed down delay(10); } delay(2000); // stop motor 2 second }

Étapes rapides

Pour commencer avec l'ESP8266 sur l'IDE Arduino, suivez ces étapes :

  • Consultez le tutoriel comment configurer l'environnement pour ESP8266 sur Arduino IDE si c'est la première fois que vous utilisez un ESP8266.
  • Connectez les composants comme indiqué sur le schéma.
  • Connectez la carte ESP8266 à votre ordinateur via un câble USB.
  • Ouvrez Arduino IDE sur votre ordinateur.
  • Choisissez la bonne carte ESP8266, comme (par exemple NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
  • Retirez les trois cavaliers du module L298N.
  • Copiez le code et ouvrez-le dans l'Arduino IDE.
  • Cliquez sur le bouton Upload dans l'Arduino IDE pour compiler et téléverser le code vers l'ESP8266.
  • 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 dans la direction opposée pendant 1 seconde.
    • Le moteur à courant continu ralentira.
    • Le moteur à courant continu s'arrêtera pendant 1 seconde.
    • Ce processus se répétera.

    ※ NOTE THAT:

    Ce tutoriel vous explique comment contrôler la vitesse d'un moteur à courant continu par rapport à sa vitesse maximale. Pour contrôler la vitesse absolue (en tours par seconde), nous devrons utiliser un contrôleur PID et un encodeur. La régulation de la vitesse absolue du moteur à courant continu sera abordée dans un tutoriel séparé.

Comment contrôler deux moteurs à courant continu en utilisant 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!