Arduino Nano - Moteur pas à pas
Ce tutoriel vous explique comment utiliser un Arduino Nano pour contrôler un moteur pas à pas à l'aide d'un driver L298N. En détail, nous apprendrons :
- Comment utiliser Arduino Nano et le pilote L298N pour contrôler un moteur pas à pas bipolaire
- Comment programmer Arduino Nano pour contrôler la position du moteur pas à pas
- Comment programmer Arduino Nano pour contrôler la vitesse du moteur pas à pas
- Comment programmer Arduino Nano 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 Arduino Nano - 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 des six fils et le contrôler comme s'il s'agissait d'un moteur pas à pas bipolaire.
Pour un moteur pas à pas unipolaire à 5 fils, consultez le tutoriel Arduino Nano - contrôler le moteur pas à pas 28BYJ-48 avec le pilote ULN2003 pour plus d'informations.
L'accent de ce tutoriel est uniquement mis sur le moteur pas à pas bipolaire.
Brochage du moteur pas à pas bipolaire
Le moteur pas à pas bipolaire possède quatre broches, et les noms de ces broches varient selon le fabricant. Le tableau suivant fournit certains des noms 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 |
L'agencement des broches, les étiquettes attribuées aux fils et les couleurs des fils peuvent varier d'un fabricant à l'autre. Vous devez vérifier la fiche technique ou le manuel pour savoir comment la couleur du fil correspond au nom de la broche. L'image ci-dessus montre également les spécifications de deux moteurs distincts avec un étiquetage et une coloration des fils différents.
Pas par révolution
La spécification du moteur indique la valeur DEG_PER_STEP. En fonction de la technique de contrôle, STEP_PER_REVOLUTION peut être déterminé à partir du tableau suivant :
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 une mesure de 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 avec un Arduino Nano
L'Arduino Nano peut générer des signaux pour contrôler le moteur pas à pas, cependant ces signaux n'ont pas la tension et/ou le courant suffisants requis par le moteur pas à pas. Par conséquent, un pilote matériel est nécessaire entre l'Arduino Nano et le moteur pas à pas. Ce pilote a deux fonctions :
- Pour amplifier les signaux de commande de l'Arduino Nano en termes de courant et de tension.
- Pour protéger l'Arduino Nano contre le courant élevé et la tension utilisés pour alimenter le moteur pas à pas.
Il existe de nombreux 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 populaires 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 : C'est une broche de masse commune et doit être connectée à GND (0V).
- Broche 5V : Elle alimente le module L298N et peut être alimentée par les 5V provenant de l'Arduino Nano.
- Broches IN1, IN2, IN3, IN4 : Elles sont connectées aux broches de l'Arduino pour recevoir le signal de contrôle afin de commander le moteur pas à pas.
- Broches OUT1, OUT2, OUT3, OUT4 : Elles sont connectées au moteur pas à pas.
- Cavaliers ENA, ENB : Ils servent à activer le moteur pas à pas et les deux cavaliers ENA & ENB doivent être en place.
- Cavalier 5V-EN : S'il est laissé en place, l'alimentation pour le module L298N est tirée 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 a deux alimentations d'entrée :
- Un pour le moteur pas à pas (broches VCC et GND) : de 5 à 35V.
- Un pour le fonctionnement interne du module L298N (broches 5V et GND) : de 5 à 7V. Si le cavalier 5V-EN est laissé en place, aucune connexion à cette broche n'est nécessaire.
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
※ NOTE THAT:
- Conservez les trois cavaliers sur le module L298N dans leurs positions actuelles si l'alimentation du moteur est de 12V ou moins.
- La disposition des broches sur les moteurs pas à pas peut varier selon les fabricants. Veuillez vous référer au tableau ci-dessous pour le câblage correct.
Tableau de câblage entre Arduino Nano et le driver L298N
Arduino Nano 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 prêtez pas attention à l'ordre des fils dans le moteur pas à pas sur le schéma ci-dessus. Il s'agit simplement d'une illustration. L'agencement des broches sur les moteurs pas à pas peut varier selon les fabricants. Assurez-vous que votre câblage suive 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, il est recommandé de consulter la fiche technique, les spécifications ou le manuel du moteur pas à pas. Assurez-vous que l'information contient la correspondance 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 le mappage, 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 tous les tableaux de câblage présentés ci-dessus entre le moteur pas à pas et le pilote L298N, il est possible d'intervertir OUT1 avec OUT2, et OUT3 avec OUT4. Par conséquent, il existe plusieurs manières de réaliser le câblage. Néanmoins, si l'échange est effectué, le sens de rotation des moteurs peut être modifié (de sens horaire à antihoraire, et vice versa).
Comment contrôler un moteur pas à pas avec un pilote L298N.
Contrôler un moteur pas à pas peut être un défi, surtout lorsque nous devons le faire sans blocage. Heureusement, la bibliothèque AccelStepper rend cela très facile.
L'IDE Arduino contient une bibliothèque Stepper intégrée. Néanmoins, nous vous déconseillons d'utiliser cette bibliothèque pour les raisons suivantes :
- La bibliothèque offre une fonction de blocage. Cela implique que l'Arduino Nano est empêché d'exécuter d'autres tâches pendant qu'il contrôle le moteur pas à pas.
- Elle ne possède pas de fonctions adéquates.
Au lieu de cela, nous suggérons d'utiliser la bibliothèque AccelStepper. Cette bibliothèque offre:
- Accélération
- Décélération
- Conduite en pas entier et demi-pas
- Capacité à contrôler plusieurs moteurs pas à pas simultanément, avec des pas concourants individuels pour chaque moteur
- Inconvénient : Ne permet pas la conduite en micro-pas.
Comment contrôler la position d'un moteur pas à pas via un pilote L298N
Nous pouvons atteindre notre objectif de déplacer le moteur pas à pas à la position souhaitée en utilisant :
※ NOTE THAT:
La fonction stepper.moveTo() est non bloquante, ce qui est un grand avantage de la bibliothèque. Cependant, lors de l'utilisation de cette fonction, il y a quelques points à surveiller :
- Assurez-vous d'appeler 'stepper.run()' 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() et Serial.println() pendant que le moteur fonctionne, car celles-ci ralentiront le moteur pas à pas.
Comment contrôler la vitesse d'un moteur pas à pas via un pilote L298N
Nous pouvons réguler non seulement la vitesse, mais aussi l'accélération et la décélération, grâce à l'utilisation de quelques fonctions de base.
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 : lors du contrôle du moteur d'une position inférieure à une position supérieure (incrémentation de la position)
- Sens antihoraire : lors du contrôle du moteur d'une position supérieure à une position inférieure (décrémentation de la position)
Par exemple :
- Lorsque la position actuelle est de 100 et que le moteur est dirigé vers 200, il tourne dans le sens des aiguilles d'une montre.
- Si la position actuelle est de -200 et que le moteur est contrôlé à -100, il tourne dans le sens des aiguilles d'une montre.
- Si la position actuelle est de 200 et que le moteur est régulé à 100, il tourne dans le sens inverse des aiguilles d'une montre.
- Si la position actuelle est de -100 et que le moteur est géré à -200, il tourne dans le sens inverse des aiguilles d'une montre.
※ NOTE THAT:
Comme mentionné précédemment, si vous échangez OUT1 avec OUT2, ou OUT3 avec OUT4, l'augmentation de la position pourrait être antihoraire et la diminution de la position pourrait être horaire.
Comment arrêter un moteur pas à pas
- Le moteur pas à pas s'arrêtera lorsqu'il atteindra la position souhaitée.
- Il est également possible de le faire arrêter immédiatement en utilisant la fonction stepper.stop().
Code Arduino Nano - Code moteur pas à pas
Le code suivant :
- Fait tourner le moteur d'une révolution dans le sens des aiguilles d'une montre
- Met le moteur en pause pendant 5 secondes
- Fait tourner le moteur d'une révolution dans le sens inverse des aiguilles d'une montre
- Arrête le moteur pendant 5 secondes
- Répète le processus encore et encore
Étapes rapides
- Cliquez sur l'icône Libraries dans la barre gauche de l'IDE Arduino.
- Recherchez “AccelStepper” et trouvez la bibliothèque AccelStepper créée par Mike McCauley.
- Appuyez sur le bouton Install pour compléter l'installation de la bibliothèque AccelStepper.
- Copiez le code et ouvrez-le dans l'IDE Arduino.
- Cliquez sur le bouton Upload pour charger le code sur l'Arduino Nano.
- Le moteur pas à pas effectuera une révolution dans le sens horaire, marquera une pause de 5 secondes, tournera d'une révolution dans le sens antihoraire, marquera une pause de 5 secondes, et répétera ce processus.
- Vérifiez le résultat dans le moniteur série.
Explication du code
Découvrez l'explication ligne par ligne contenue dans les commentaires du code source !