Arduino Nano ESP32 - Moteur pas à pas
Dans ce tutoriel, nous allons apprendre à utiliser l'Arduino Nano ESP32 pour contrôler le moteur pas à pas :
- Comment utiliser le pilote L298N pour contrôler un moteur pas à pas bipolaire
- Comment contrôler la position d'un moteur pas à pas
- Comment contrôler la vitesse d'un moteur pas à pas
- Comment contrôler la direction d'un moteur pas à pas
Le tutoriel peut s'appliquer à tout type de moteur pas à pas bipolaire (4 fils). Le tutoriel prendra comme exemple le moteur pas à pas NEMA 17.
Préparation du matériel
1 | × | Arduino Nano ESP32 | |
1 | × | USB Cable Type-C | |
1 | × | Stepper Motor Nema 17 | |
1 | × | L298N Motor Driver Module | |
1 | × | 12V Power Adapter | |
1 | × | DC Power Jack | |
1 | × | Jumper Wires | |
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) |
À propos du moteur pas à pas
Il existe deux types courants de moteurs pas à pas :
- Bipolaire : Ces moteurs sont équipés de 4 fils.
- Unipolaire : Les moteurs unipolaires peuvent avoir 5 ou 6 fils. Dans le cas d'un moteur pas à pas unipolaire à 6 fils, vous pouvez utiliser efficacement quatre des six fils pour le contrôler comme s'il s'agissait d'un moteur pas à pas bipolaire.
Si vous êtes spécifiquement intéressé par un moteur pas à pas unipolaire à 5 fils, vous pouvez consulter le tutoriel intitulé Arduino Nano ESP32 - Contrôle du moteur pas à pas 28BYJ-48 à l'aide du pilote ULN2003.
Toutefois, ce tutoriel est exclusivement dédié aux moteurs pas à pas bipolaires.
Brochage du moteur pas à pas bipolaire
Un moteur pas à pas bipolaire possède quatre broches, et ces broches peuvent être nommées différemment selon le fabricant. Ci-dessous, vous trouverez un tableau avec certains noms de broches courants :
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 noms des fils et les couleurs des fils peuvent varier d'un fabricant à l'autre. Pour comprendre comment les couleurs des fils correspondent aux noms des broches, il est essentiel de consulter la fiche technique ou le manuel d'utilisation fourni par le fabricant. L'image ci-dessus illustre les spécifications de deux moteurs distincts, chacun présentant ses propres conventions de nommage et de coloration des fils.
Pas par révolution
La spécification du moteur indique le degré par pas (appelons-le DEG_PAR_PAS). Selon la méthode de contrôle, le nombre de pas par révolution (appelons-le PAS_PAR_REVOLUTION) est calculé comme le montre le 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 spécifie 1,8 degré par pas :
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 Arduino Nano ESP32
L'Arduino Nano ESP32 peut produire des signaux pour commander le moteur pas à pas, mais ces signaux peuvent manquer des niveaux de tension et de courant nécessaires que le moteur pas à pas exige. Par conséquent, un pilote matériel intermédiaire est nécessaire pour combler l'écart entre l'Arduino Nano ESP32 et le moteur pas à pas. Ce pilote remplit deux fonctions principales :
- Amplification des signaux de contrôle : Elle augmente le courant et la tension des signaux de contrôle provenant de l'ESP32, assurant qu'ils répondent aux exigences du moteur pas à pas.
- Protection de l'ESP32 : Parallèlement, elle protège l'Arduino Nano ESP32 contre les niveaux de courant et de tension plus élevés utilisés pour alimenter le moteur pas à pas, évitant ainsi tout dommage potentiel.
Divers pilotes matériels sont disponibles pour contrôler les moteurs pas à pas, et une option couramment utilisée est le pilote L298N.
À propos du pilote L298N
Un seul pilote L298N peut être utilisé pour contrôler deux moteurs à courant continu ou un moteur pas à pas. Dans ce tutoriel, nous apprenons à l'utiliser pour contrôler le moteur pas à pas.
Brochage du pilote L298N
Le driver L298N possède 11 broches et trois cavaliers:
- Broche VCC : alimente le moteur. Elle peut être comprise entre 5 et 35V.
- Broche GND : est une broche de masse commune, doit être connectée à GND (0V).
- Broche 5V : alimente le module L298N. Elle peut être alimentée par 5V depuis un Arduino Nano ESP32.
- Broches IN1, IN2, IN3, IN4 : sont connectées aux broches de l'ESP32 pour recevoir le signal de commande pour contrôler le moteur pas à pas.
- Broches OUT1, OUT2, OUT3, OUT4 : sont connectées au moteur pas à pas.
- Cavaliers ENA, ENB : sont utilisés pour activer le moteur pas à pas. Vous devez laisser les cavaliers ENA et ENB en place.
- Cavalier 5V-EN : si nous laissons le cavalier 5V-EN en place, l'alimentation pour le module L298N provient de VCC, nous n'avons pas besoin de connecter quoi que ce soit à la broche 5V. Si nous retirons le cavalier 5V-EN, nous devons alimenter le module L298N via une broche 5V.
Comme décrit ci-dessus, le pilote L298N dispose de deux alimentations d'entrée :
- Un pour 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, nous n'avons pas besoin de connecter cette broche à quoi que ce soit.
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
※ NOTE THAT:
- Veuillez laisser en place les trois cavaliers sur le module L298N (dans le cas où l'alimentation du moteur est ≤ 12V)
- L'ordre des broches sur les moteurs pas à pas peut varier selon les fabricants. Veuillez vérifier le tableau ci-dessous pour un câblage correct.
Tableau de câblage entre Arduino Nano ESP32 et le pilote L298N
Arduino Nano ESP32 pins | L298N pins |
---|---|
D5 | IN1 |
D4 | IN2 |
D3 | IN3 |
D2 | IN4 |
Tableau de câblage entre le pilote L298N et le moteur pas à pas
Important !: Veuillez ne pas tenir compte de l'ordre des fils du moteur pas à pas sur l'image du schéma de câblage ci-dessus. C'est juste un exemple. L'ordre 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, nous vous recommandons de vérifier la fiche technique, la spécification ou le manuel du moteur pas à pas. Assurez-vous qu'ils fournissent la correspondance entre la couleur des broches et leur nom. Par exemple, ce moteur pas à pas fournit la correspondance comme sur l'image ci-dessous :
En fonction de ce schéma, le tableau de câblage devient :
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 ci-dessus entre le moteur pas à pas et le driver L298N, nous pouvons échanger OUT1 avec OUT2, OUT3 avec OUT4. Par conséquent, il y a plusieurs façons de réaliser le câblage. Cependant, si nous les échangeons, le sens de rotation des moteurs peut être modifié (dans le sens des aiguilles d'une montre en sens inverse, et vice versa).
Comment contrôler un moteur pas à pas avec un pilote L298N.
Contrôler un moteur pas à pas n'est pas une tâche simple, surtout lorsque nous voulons le contrôler de manière non bloquante. Heureusement, grâce à la bibliothèque AccelStepper, contrôler le moteur pas à pas devient un jeu d'enfant.
Arduino IDE dispose également d'une bibliothèque Stepper intégrée. Cependant, nous ne vous recommandons pas d'utiliser cette bibliothèque car :
- La bibliothèque fournit la fonction de blocage. Cela signifie qu'elle empêche l'Arduino Nano ESP32 de réaliser d'autres tâches pendant qu'elle contrôle le moteur pas à pas.
- Elle n'a pas suffisamment de fonctions.
Au lieu de cela, nous vous recommandons d'utiliser la bibliothèque AccelStepper. Cette bibliothèque prend en charge :
- Accélération
- Décélération.
- Conduite en pas entier et demi-pas.
- Plusieurs moteurs pas à pas simultanés, avec des pas indépendants et simultanés sur chaque moteur.
- Inconvénient : Ne prend pas en charge la conduite en micro-pas.
Comment contrôler la position d'un moteur pas à pas via un pilote L298N
Nous pouvons déplacer le moteur pas à pas jusqu'à la position souhaitée en utilisant :
※ NOTE THAT:
La fonction stepper.moveTo() est non bloquante. C'est un excellent point de la bibliothèque. Cependant, nous devons faire attention lorsque nous utilisons cette fonction :
- Appelez 'stepper.run()' aussi fréquemment que possible. Elle doit être appelée dans la fonction void loop().
- N'utilisez PAS la fonction delay() lorsque le moteur est en mouvement.
- Il ne faut PAS utiliser les fonctions Serial.print() et Serial.println() lorsque le moteur est en mouvement. Ces fonctions ralentissent le mouvement du moteur pas à pas.
Comment contrôler la vitesse d'un moteur pas à pas via un pilote L298N
Nous pouvons contrôler non seulement la vitesse, mais aussi l'accélération et la décélération en utilisant quelques fonctions simples.
Comment contrôler la direction d'un moteur pas à pas via un pilote L298N
Si vous réalisez le câblage comme ci-dessus, le moteur tournera dans :
- Direction horaire : si nous contrôlons le moteur d'une position à une position supérieure (incrémentation de la position)
- Direction antihoraire : si nous contrôlons le moteur d'une position à une position inférieure (décrémentation de la position)
Par exemple :
- Si la position actuelle est 100 et que nous réglons le moteur sur 200, le moteur tourne dans le sens des aiguilles d'une montre.
- Si la position actuelle est -200 et que nous réglons le moteur sur -100, le moteur tourne dans le sens des aiguilles d'une montre.
- Si la position actuelle est 200 et que nous réglons le moteur sur 100, le moteur tourne dans le sens contraire des aiguilles d'une montre.
- Si la position actuelle est -100 et que nous réglons le moteur sur -200, le moteur tourne dans le sens contraire 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 peut être antihoraire et la diminution de la position peut être horaire.
Comment arrêter un moteur pas à pas
- Le moteur pas à pas s'arrêtera automatiquement après avoir atteint la position souhaitée.
- Le moteur pas à pas peut être forcé à s'arrêter immédiatement à tout moment en utilisant la fonction stepper.stop().
Code Arduino Nano ESP32 - Code pour moteur pas à pas
Le code ci-dessous fait :
- Faites tourner le moteur d'une révolution dans le sens des aiguilles d'une montre
- Arrêtez le moteur 5 secondes
- Faites tourner le moteur d'une révolution dans le sens contraire des aiguilles d'une montre
- Arrêtez le moteur 5 secondes
- Ce processus est répété encore et encore
Étapes rapides
Pour commencer avec l'Arduino Nano ESP32, suivez ces étapes :
- Si vous êtes nouveau avec l'Arduino Nano ESP32, consultez le tutoriel sur comment configurer l'environnement pour Arduino Nano ESP32 dans l'IDE Arduino.
- Câblez les composants selon le schéma fourni.
- Connectez la carte Arduino Nano ESP32 à votre ordinateur à l'aide d'un câble USB.
- Lancez l'IDE Arduino sur votre ordinateur.
- Sélectionnez la carte Arduino Nano ESP32 et son port COM correspondant.
- Ouvrez le Gestionnaire de bibliothèques en cliquant sur l'icône Gestionnaire de bibliothèques située dans la barre de navigation gauche de l'IDE Arduino.
- Recherchez "AccelStepper", puis trouvez la bibliothèque AccelStepper de Mike McCauley.
- Cliquez sur le bouton Install pour installer la bibliothèque AccelStepper.
- Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
- Cliquez sur le bouton Upload sur l'IDE Arduino pour téléverser le code sur Arduino Nano ESP32
- Vous verrez :
- Le moteur pas à pas effectue une révolution dans le sens horaire
- Le moteur pas à pas s'arrête 5 secondes
- Le moteur pas à pas effectue une révolution dans le sens anti-horaire
- Le moteur pas à pas s'arrête 5 secondes
- Le processus ci-dessus est répété continuellement.
- Consultez le résultat sur le moniteur série
Explication du code
Lisez l'explication ligne par ligne dans les lignes de commentaire du code source !