ESP8266 - Moteur pas à pas

Ce tutoriel vous explique comment utiliser l'ESP8266 pour contrôler un moteur pas à pas avec le pilote L298N. En détail, nous allons apprendre :

Le tutoriel est applicable à tous les types de moteurs pas à pas bipolaires à quatre fils. Il utilisera un moteur pas à pas NEMA 17 comme exemple.

Pilote L298N pour moteur pas à pas ESP8266 NodeMCU

Si vous souhaitez contrôler un autre type de moteur pas à pas, veuillez consulter ce tutoriel ESP8266 - Moteur pas à pas 28BYJ-48.

Préparation du matériel

1×ESP8266 NodeMCU
1×Micro USB Cable
1×Stepper Motor Nema 17
1×L298N Motor Driver Module
1×12V Power Adapter
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 pas à pas

Deux types courants de moteurs pas à pas existent :

  • bipolaire : ce moteur a 4 fils
  • unipolaire : ce moteur a soit 5 soit 6 fils

Pour un moteur pas à pas unipolaire à 6 fils, nous pouvons utiliser quatre de ses six fils et le contrôler comme s'il s'agissait d'un moteur pas à pas bipolaire.

Pour les moteurs pas à pas unipolaires à 5 fils, consultez ESP8266 - contrôler le moteur pas à pas 28BYJ-48 à l'aide du pilote ULN2003.

L'accent de ce tutoriel est uniquement mis sur le moteur pas à pas bipolaire.

Configuration des broches du moteur pas à pas bipolaire

Le brochage du moteur pas à pas bipolaire comporte 4 broches. Différents fabricants utilisent divers noms pour les broches du moteur. Le tableau suivant fournit certains des noms de broches les plus couramment utilisés :

PIN NO Naming 1 Naming 2 Naming 3
1 A+ A A
2 A- A C
3 B+ B B
4 B- B D
Brochage du moteur pas à pas bipolaire

La séquence des broches, l'étiquetage des fils et les couleurs des fils peuvent varier d'un fabricant à l'autre. Il est nécessaire de lire la fiche technique ou le manuel pour comprendre la corrélation entre la couleur du fil et le nom de la broche. L'image ci-dessus montre également les détails de deux moteurs distincts avec un étiquetage des fils et des couleurs de fils différents.

Étapes par révolution

La spécification du moteur indique le DEG_PER_STEP. Selon le type de contrôle, le STEP_PER_REVOLUTION peut être déterminé en utilisant le tableau ci-dessous :

Control method Steps per Revolution Real degree per step
Full-step STEP_PER_REVOLUTION = 360 / DEG_PER_STEP DEG_PER_STEP
Half-step STEP_PER_REVOLUTION = (360 / DEG_PER_STEP) * 2 DEG_PER_STEP / 2
Micro-step (1/n) STEP_PER_REVOLUTION = (360 / DEG_PER_STEP) * n DEG_PER_STEP / n

Par exemple, si la fiche technique du moteur indique qu'il a 1,8 degré/étape :

Control method Steps per Revolution Real degree per step
Full-step 200 steps/revolution 1.8°
Half-step 400 steps/revolution 0.9°
Micro-step (1/n) (200 * n) steps/revolution (1.8 / n)°

Comment contrôler un moteur pas à pas en utilisant ESP8266

ESP8266 peut produire des signaux pour faire fonctionner le moteur pas à pas. Cependant, les signaux de l'ESP8266 manquent de la tension et/ou du courant nécessaires dont le moteur pas à pas a besoin. Par conséquent, un pilote matériel est nécessaire entre l'ESP8266 et le moteur pas à pas. Ce pilote a deux fonctions :

  • Augmentez les signaux de contrôle de l'ESP8266 (courant et tension)
  • Protégez l'ESP8266 des courants et tensions élevés utilisés pour alimenter le moteur pas à pas.

Il existe divers types de pilotes matériels qui peuvent être utilisés pour gérer les moteurs pas à pas. L'un des pilotes matériels les plus couramment utilisés pour contrôler les moteurs pas à pas est le pilote L298N.

À propos du pilote L298N

Un pilote L298N peut être utilisé pour contrôler deux moteurs à courant continu ou un moteur pas à pas. Ce tutoriel vous explique comment l'utiliser pour contrôler le moteur pas à pas.

Brochage du pilote L298N

Brochage du pilote L298N

Le pilote L298N possède 11 broches et trois cavaliers :

  • Broche VCC : Elle alimente le moteur et peut varier entre 5 et 35V.
  • Broche GND : Il s'agit d'une broche de masse commune qui doit être connectée à GND (0V).
  • Broche 5V : Elle alimente le module L298N et peut être alimentée par 5V provenant de l'ESP8266.
  • Broches IN1, IN2, IN3, IN4 : Elles sont connectées aux broches de l'ESP8266 pour recevoir le signal de commande pour contrôler le moteur pas à pas.
  • Broches OUT1, OUT2, OUT3, OUT4 : Elles sont connectées au moteur pas à pas.
  • Cavaliers ENA, ENB : Ils sont utilisés pour activer le moteur pas à pas et il est nécessaire de maintenir en place les cavaliers ENA et ENB.
  • Cavalier 5V-EN : S'il est maintenu en place, l'alimentation pour le module L298N provient de VCC et rien ne doit être connecté à la broche 5V. S'il est retiré, l'alimentation doit être fournie au module L298N via une broche 5V.

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

  • Une pour le moteur pas à pas (broches VCC et GND) : de 5 à 35 volts.
  • Une pour le fonctionnement interne du module L298N (broches 5V et GND) : de 5 à 7 volts. Si le cavalier 5V-EN est laissé en place, cette alimentation n'est pas nécessaire.

Diagramme de câblage

Schéma de câblage du pilote de moteur pas à pas L298N 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.

※ NOTE THAT:

  • Laissez les trois cavaliers en place sur le module L298N si la tension d'alimentation du moteur est de 12V ou moins.
  • La disposition des broches sur les moteurs pas à pas peut varier selon les fabricants. Consultez le tableau ci-dessous pour garantir le câblage correct.

Tableau de câblage entre ESP8266 et le pilote L298N

ESP8266 pins L298N pins
7 IN1
6 IN2
5 IN3
4 IN4

Tableau de câblage entre le pilote L298N et le moteur pas à pas

Important ! : Ne tenez pas compte de l'ordre des fils dans le moteur pas à pas sur l'image du schéma de câblage. Il s'agit simplement d'une illustration. L'agencement des broches sur les moteurs pas à pas peut varier selon le fabricant. Assurez-vous que votre câblage suit le tableau ci-dessous.

L298N pins Stepper motor pins Or Or
OUT1 A+ A A
OUT2 A- A C
OUT3 B+ B B
OUT4 B- B D

Avant d'acheter un moteur pas à pas, nous vous suggérons de consulter la fiche technique, les spécifications ou le manuel du moteur pas à pas. Assurez-vous qu'il inclut la corrélation entre la couleur des broches et leur nom. Par exemple, ce moteur pas à pas fournit la correspondance comme on peut le voir dans l'image suivante :

Mappage des couleurs des bobines de moteur pas à pas

En utilisant la cartographie, le tableau de câblage est :

L298N pins stepper motor pins wire color
OUT1 A black wire
OUT2 C green wire
OUT3 B red wire
OUT4 D blue wire

※ NOTE THAT:

Dans les tableaux de câblage présentés ci-dessus, OUT1 et OUT2, ainsi que OUT3 et OUT4, peuvent être interchangés. Cela augmente le nombre de configurations de câblage possibles. Cependant, cela peut également amener le moteur à changer son sens de rotation (dans le sens des aiguilles d'une montre à l'inverse, ou vice versa).

Comment contrôler un moteur pas à pas avec un pilote L298N.

Contrôler un moteur pas à pas peut être une entreprise difficile, surtout lorsque nous devons le faire sans interruption. Heureusement, la bibliothèque AccelStepper rend cela très facile.

L'IDE Arduino comprend une bibliothèque Stepper intégrée. Cependant, nous déconseillons d'utiliser cette bibliothèque car :

  • Il contient une fonction de blocage, qui empêche l'ESP8266 d'effectuer d'autres tâches tout en contrôlant le moteur pas à pas.
  • Il manque de fonctionnalités suffisantes.

Au lieu de cela, nous vous suggérons d'utiliser la bibliothèque AccelStepper. Cette bibliothèque offre :

  • Accélération
  • Décélération
  • Commande en pas entiers et demi-pas
  • Capacité à contrôler plusieurs moteurs pas à pas simultanément, chaque moteur pouvant se déplacer indépendamment
  • Inconvénient : Ne prend pas en charge la commande en micro-pas

Comment contrôler la position d'un moteur pas à pas via un pilote L298N

Nous pouvons atteindre la position souhaitée du moteur pas à pas en : 1. Définissant la position actuelle comme point de référence. 1. Établissant le point de référence comme la position actuelle.

stepper.moveTo(desiredPosition); // déplacer le moteur d'une révolution

※ NOTE THAT:

La fonction stepper.moveTo() est non bloquante, ce qui représente un grand avantage de la bibliothèque. Cependant, lors de son utilisation, nous devons être prudents :

  • Assurez-vous que stepper.run() soit appelé aussi souvent que possible, de préférence dans la fonction void loop().
  • Évitez d'utiliser la fonction delay() pendant que le moteur est en mouvement.
  • Ne pas utiliser les fonctions Serial.print() ou Serial.println() pendant que le moteur fonctionne, car cela ralentirait son mouvement.

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

Nous pouvons réguler à la fois la vitesse et l'accélération/la décélération grâce à l'utilisation de quelques fonctions simples.

stepper.setAcceleration(50.0); // définir l'accélération/décélération stepper.setSpeed(200); // définir la vitesse souhaitée

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

Si vous câblez le moteur comme indiqué, il tournera dans le sens :

  • Sens horaire : lorsque le moteur passe d'une position basse à une position haute (Incrémentation de position)
  • Sens antihoraire : lorsque le moteur est déplacé d'une position haute à une position basse (Décrémentation de position)
  • Si la position actuelle est 100 et que nous ordonnons au moteur d'aller à 200, il tournera dans le sens horaire.
  • Lorsque la position actuelle est -200 et que le moteur est dirigé vers -100, il tournera dans le sens horaire.
  • Si la position actuelle est 200 et que le moteur est commandé à 100, il tournera dans le sens antihoraire.
  • Si la position actuelle est -100 et que le moteur est dirigé vers -200, il tournera dans le sens antihoraire.

※ NOTE THAT:

Comme mentionné précédemment, si vous échangez OUT1 avec OUT2, ou OUT3 avec OUT4, l'augmentation de la position peut être dans le sens antihoraire et la diminution de la position peut être dans le sens horaire.

Comment arrêter un moteur pas à pas

  • Le moteur pas à pas s'arrêtera lorsqu'il atteindra la position souhaitée.
  • Si un arrêt immédiat est souhaité, la fonction stepper.stop() peut être utilisée.

Code ESP8266 - Code pour moteur pas à pas

Le code ci-dessous :

  • Fait tourner le moteur d'une révolution dans le sens des aiguilles d'une montre
  • Met le moteur en pause pendant 5 secondes
  • Provoque la rotation du moteur d'une révolution dans le sens inverse des aiguilles d'une montre
  • Arrête le moteur pendant 5 secondes
  • Répète ce processus de manière continue
/* * 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-stepper-motor */ #include <AccelStepper.h> #define DEG_PER_STEP 1.8 #define STEP_PER_REVOLUTION (360 / DEG_PER_STEP) AccelStepper stepper(AccelStepper::FULL4WIRE, D1, D2, D5, D6); long moveToPosition = STEP_PER_REVOLUTION; void setup() { Serial.begin(9600); stepper.setAcceleration(200.0); // set acceleration stepper.setSpeed(200); // set initial speed stepper.setCurrentPosition(0); // set position to 0 stepper.moveTo(STEP_PER_REVOLUTION); // move motor one revolution, in clockwise direction Serial.println("Motor moving in clockwise direction"); } void loop() { if (stepper.distanceToGo() == 0) { Serial.println("Motor is stopped"); delay(5000); // stop 5 seconds stepper.setCurrentPosition(0); // reset position to 0 moveToPosition = -1 * moveToPosition; // reverse direction stepper.moveTo(moveToPosition); // move motor one revolution if (stepper.distanceToGo() > 0) Serial.println("Motor moving in clockwise direction"); else if (stepper.distanceToGo() < 0) Serial.println("Motor moving in anticlockwise direction"); } // Serial.print(F("position: ")); // Serial.println(stepper.currentPosition()); stepper.run(); // MUST be called as frequently as possible }

Étapes rapides

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

  • Consultez le tutoriel comment configurer l'environnement pour ESP8266 sur Arduino IDE si c'est votre première utilisation de l'ESP8266.
  • Câblez les composants comme indiqué dans le schéma.
  • Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez Arduino IDE sur votre ordinateur.
  • Sélectionnez la bonne carte ESP8266, comme (par exemple NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
  • Cliquez sur l'icône Libraries sur la barre gauche de l'Arduino IDE.
  • Recherchez "AccelStepper", puis localisez la bibliothèque AccelStepper créée par Mike McCauley.
  • Cliquez sur le bouton Install pour installer la bibliothèque AccelStepper.
Bibliothèque AccelStepper ESP8266 NodeMCU

Copiez le code et ouvrez-le avec l'IDE Arduino.

Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code vers l'ESP8266.

Vous observerez que le moteur pas à pas effectue une révolution dans le sens des aiguilles d'une montre, marque une pause de 5 secondes, puis effectue une révolution dans le sens inverse des aiguilles d'une montre et marque de nouveau une pause de 5 secondes. Ce processus est répété en continu.

Vérifiez les résultats sur le moniteur série.

COM6
Send
Motor moving in clockwise direction Motor is stopped Motor moving in anticlockwise direction Motor is stopped Motor moving in clockwise direction Motor is stopped Motor moving in anticlockwise direction Motor is stopped Motor moving in clockwise direction Motor is stopped Motor moving in anticlockwise direction Motor is stopped
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Explication du code

Découvrez l'explication ligne par ligne contenue dans les commentaires du code source !

Vidéo

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