Arduino Nano ESP32 - Moteur à courant continu

Ce tutoriel fournit des instructions sur comment utiliser un Arduino Nano ESP32 pour contrôler un moteur à courant continu avec un pilote de moteur L298N. En détail, nous apprendrons comment contrôler la vitesse et la direction d'un moteur à courant continu. Nous verrons comment 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×Arduino Nano ESP32
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) 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

Un moteur à courant continu comprend deux fils : Négatif (noir) et Positif (rouge)

Brochage du moteur à courant continu

Comment fonctionne un moteur à courant continu

La direction et la vitesse du moteur à courant continu seront déterminées par la manière dont nous l'alimentons. 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 de la MLI, 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 à courant continu en utilisant Arduino Nano ESP32

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

  • Protéger l'Arduino Nano ESP32 de la haute tension
  • Recevoir le signal de l'Arduino Nano ESP32 pour changer le pôle de l'alimentation afin de contrôler la direction du moteur.
  • Amplifier le signal PWM de l'Arduino Nano ESP32 (courant et tension) pour contrôler la vitesse du moteur.
Contrôle d'un moteur CC avec Arduino Nano 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 schéma de brochage du pilote L298N.

Brochage du pilote L298N

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

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

  • 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 PWM 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 amplifie le courant et la tension avant d'aller 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 pilote 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 est pour 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 dans le sens des aiguilles d'une montre
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, inversez les broches OUT1 et OUT2.

Comment arrêter un moteur à courant continu

Il existe deux manières 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 tension BASSE ou HAUTE.
digitalWrite(PIN_IN1, HIGH); digitalWrite(PIN_IN2, HIGH);
  • Ou
digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, LOW);

Comment contrôler un moteur à courant continu avec 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 L298N pour moteur à courant continu Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Code Arduino Nano ESP32

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

  • Arduino Nano ESP32 contrôle progressivement la vitesse du moteur à courant continu.
  • Arduino Nano ESP32 inverse la direction du moteur à courant continu.
  • Arduino Nano ESP32 contrôle la vitesse du moteur à courant continu en diminution.
  • Arduino Nano ESP32 arrête le moteur à courant continu.
/* * Ce code Arduino Nano ESP32 a été développé par newbiely.fr * Ce code Arduino Nano 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/arduino-nano-esp32/arduino-nano-esp32-dc-motor */ #define PIN_ENA D5 // The Arduino Nano ESP32 pin connected to the EN1 pin L298N #define PIN_IN1 D4 // The Arduino Nano ESP32 pin connected to the IN1 pin L298N #define PIN_IN2 D3 // The Arduino Nano ESP32 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

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

※ NOTE THAT:

Ce tutoriel fournit des instructions sur comment contrôler la vitesse du moteur à courant continu de manière relative. 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

(prochainement)

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!