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 :
- Comment utiliser ESP8266 et le pilote L298N pour contrôler un moteur pas à pas bipolaire
- Comment programmer ESP8266 pour contrôler la position du moteur pas à pas
- Comment programmer ESP8266 pour contrôler la vitesse du moteur pas à pas
- Comment programmer ESP8266 pour contrôler la direction du moteur pas à pas
Le tutoriel est applicable à tous les types de moteurs pas à pas bipolaires à quatre fils. Il utilisera un moteur pas à pas NEMA 17 comme exemple.
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
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
À 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 |
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
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
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 :
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.
※ 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.
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
É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.
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.
Explication du code
Découvrez l'explication ligne par ligne contenue dans les commentaires du code source !