ESP32 - Moteur à courant continu

Ce tutoriel vous explique comment utiliser l'ESP32 pour contrôler un moteur à courant continu à l'aide d'un pilote de moteur L298N. En détail, nous apprendrons à contrôler la vitesse et la direction du moteur à courant continu. Nous apprendrons à contrôler un seul moteur à courant continu, puis deux moteurs à courant continu en utilisant un seul pilote de moteur L298N.

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×L298N Motor Driver Module
1×5V DC Motor
1×5V Power Adapter for 5V DC motor
1×Breadboard
1×Jumper Wires
1×(Optional) DC Power Jack
1×(Recommended) ESP32 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 comprend deux fils : Négatif (noir) et Positif (rouge).

Brochage du moteur à courant continu

Fonctionnement du moteur à courant continu

La direction et la vitesse du moteur à courant continu seront déterminées par la manière dont nous lui fournissons de l'énergie. Les images ci-dessous montrent la relation détaillée entre la puissance et la vitesse/direction.

Comment contrôler un moteur à courant continu

Dans le cas de l'utilisation du PWM, plus le cycle de travail est grand, plus la vitesse de rotation du moteur est élevée.

Comment contrôler la vitesse et la direction d'un moteur CC en utilisant un ESP32

Tout d'abord, le moteur à courant continu fonctionne avec une haute tension qui peut endommager l'ESP32 ⇒ Nous ne pouvons pas connecter directement le moteur à courant continu à l'ESP32. Nous avons besoin d'un pilote matériel entre le moteur à courant continu et l'ESP32. Le pilote prend trois responsabilités :

  • Protéger l'ESP32 de la haute tension
  • Recevoir le signal de l'ESP32 pour changer le pôle de l'alimentation afin de contrôler la direction du moteur.
  • Amplifier le signal PWM de l'ESP32 (courant et tension) pour contrôler la vitesse du moteur
Contrôle du moteur CC par ESP32

Il existe de nombreux pilotes de moteurs à courant continu. Ce tutoriel utilisera le pilote L298N.

À propos du pilote L298N

Un seul pilote L298N peut contrôler deux moteurs à courant continu ou un moteur pas à pas. Ce tutoriel utilise ce pilote pour contrôler le moteur à courant continu.

Brochage du pilote L298N

L'image ci-dessous montre le brochage du pilote L298N.

Brochage du pilote L298N

L'explication détaillée pour chaque broche est disponible dans ce tutoriel Arduino - moteur DC.

Un seul pilote L298N peut contrôler indépendamment deux moteurs à courant continu :

  • Le premier moteur (appelé moteur A) est contrôlé par les broches IN1, IN2, ENA, OUT1, OUT2.
  • Le deuxième moteur (appelé moteur B) est contrôlé par les broches IN3, IN4, ENB, OUT3, OUT4.

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 MLI vers la broche ENA/ENB du L298N. Nous pouvons le faire en :

  • Connecter la broche de sortie numérique d'un ESP32 à la broche ENA/ENB d'un L298N
  • Création d'un signal PWM sur la broche ENA/ENB en utilisant la fonction analogWrite(). Ce signal PWM passe par le pilote L298N et le courant ainsi que la tension sont amplifiés avant d'être transmis au moteur à courant continu.
analogWrite(PIN_ENA, speed); // contrôler le moteur A analogWrite(PIN_ENB, speed); // contrôler le moteur B

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

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

La direction du moteur à courant continu A peut être contrôlée par les broches IN1 et IN2. Le tableau suivant montre la relation entre la direction du moteur et le signal sur les broches IN1 et IN2.

IN1 pin IN2 pin Direction
HIGH LOW DC Motor A rotates in clockwise direction
LOW HIGH DC Motor A rotates in anticlockwise direction
HIGH HIGH DC Motor A stops
LOW LOW DC Motor A stops

De même, le tableau ci-dessous concerne le moteur à courant continu B.

IN3 pin IN4 pin Direction
HIGH LOW DC Motor B rotates in clockwise direction
LOW HIGH DC Motor B rotates in anticlockwise direction
HIGH HIGH DC Motor B stops
LOW LOW DC Motor B stops

Apprenons à programmer pour le contrôler. Prenons par exemple le moteur A. Le moteur B est similaire.

  • Contrôler la direction du moteur A vers la droite
digitalWrite(PIN_IN1, HIGH); digitalWrite(PIN_IN2, LOW);
  • Contrôler la direction du moteur A en sens antihoraire
digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, HIGH);

※ NOTE THAT:

La direction du moteur à courant continu est opposée si le câblage entre le moteur à courant continu et le pilote L298N est inversé. Dans ce cas, échangez les broches OUT1 et OUT2.

Comment arrêter un moteur à courant continu

Il existe deux façons d'arrêter un moteur à courant continu.

  • Contrôler la vitesse à 0
analogWrite(PIN_ENA, 0);
  • Contrôler les broches IN1 IN2 à la même valeur BASSE ou HAUTE
digitalWrite(PIN_IN1, HIGH); digitalWrite(PIN_IN2, HIGH);
  • Or
digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, LOW);

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

Schéma de câblage

Il y a trois cavaliers sur le module L298N. Retirez-les tous avant de procéder au câblage.

Schéma de câblage du pilote de moteur à courant continu ESP32 L298N

This image is created using Fritzing. Click to enlarge image

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.

Code ESP32

Voyons le code ci-dessous qui fait la chose suivante, une par une :

  • L'ESP32 augmente progressivement la vitesse du moteur à courant continu.
  • L'ESP32 inverse la direction du moteur à courant continu.
  • L'ESP32 réduit progressivement la vitesse du moteur à courant continu.
  • L'ESP32 arrête le moteur à courant continu.
/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 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/esp32/esp32-dc-motor */ #define PIN_IN1 19 // ESP32 pin GPIO19 connected to the IN1 pin L298N #define PIN_IN2 18 // ESP32 pin GPIO18 connected to the IN2 pin L298N #define PIN_ENA 17 // ESP32 pin GPIO17 connected to the EN1 pin L298N // the setup function runs once when you press reset or power the board void setup() { // initialize digital pins as outputs. pinMode(PIN_IN1, OUTPUT); pinMode(PIN_IN2, OUTPUT); pinMode(PIN_ENA, OUTPUT); } // the loop function runs over and over again forever 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

  • Si c'est la première fois que vous utilisez un ESP32, consultez comment configurer l'environnement pour ESP32 sur Arduino IDE.
  • Retirez les trois cavaliers sur le module L298N.
  • Copiez le code ci-dessus et collez-le dans Arduino IDE.
  • Compilez et téléchargez le code sur la carte ESP32 en cliquant sur le bouton Upload de l'Arduino IDE.
  • Observez le moteur DC, vous verrez :
    • Le moteur DC est accéléré et tourne à la vitesse maximale pendant 2 secondes.
    • La direction du moteur DC est inversée.
    • Le moteur DC tourne dans le sens inverse à la vitesse maximale pendant 2 secondes.
    • Le moteur DC est décéléré.
    • Le moteur DC s'arrête 2 secondes.
  • Le processus ci-dessus est répété indéfiniment.

※ NOTE THAT:

Ce tutoriel vous explique comment contrôler la vitesse relative d'un moteur à courant continu. Pour contrôler la vitesse absolue (tours par seconde), il est nécessaire d'utiliser un régulateur PID et le retour d'information d'un encodeur.

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

(bientôt disponible)

Vidéo

Références linguistiques

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