Arduino Nano - Moteur pas à pas 28BYJ-48 avec driver ULN2003

Ce tutoriel vous explique comment utiliser un Arduino Nano pour contrôler un moteur pas à pas 28BYJ-48 à l'aide d'un pilote ULN2003. En détail, nous apprendrons :

Arduino Nano ULN2003 moteur pas à pas 28BYJ-48

Préparation du matériel

1×Arduino Nano
1×USB A to Mini-B USB cable
1×28BYJ-48 stepper motor + ULN2003 Driver Module
1×5V Power Adapter
1×DC Power Jack
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino Nano
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 pas à pas 28BYJ-48.

Les moteurs pas à pas sont excellents pour le contrôle de position. Ils divisent une révolution complète en un nombre égal de "pas". Ces moteurs sont utilisés dans de nombreux appareils, tels que les imprimantes, les imprimantes 3D, les machines CNC et l'automatisation industrielle.

L'une des méthodes économiques pour acquérir des connaissances sur les moteurs pas à pas est d'utiliser des moteurs pas à pas 28BYJ-48. Ils sont généralement accompagnés d'une carte de commande basée sur ULN2003, ce qui les rend incroyablement faciles à utiliser.

Comme indiqué dans la fiche technique, le moteur 28BYJ-48 fonctionne en mode pas complet, chaque pas correspondant à une rotation de 11,25°. Par conséquent, il y a 32 pas par révolution (360° / 11,25° = 32).

De plus, le moteur dispose d'un réducteur de 1/64. Cela se traduit par 32 x 64 = 2048 pas. Chaque pas est équivalent à 360°/2048 = 0,1758°.

Conclusion : Si le moteur est réglé en mode pas entier, il faudra 2048 pas pour qu'il effectue une révolution complète.

Le moteur pas à pas 28BYJ-48 utilisant le brochage du pilote ULN2003

Le moteur pas à pas 28BYJ-48 possède 5 broches. Il n'est pas nécessaire de s'inquiéter des spécificités de ces broches ; elles doivent simplement être connectées au connecteur du pilote de moteur ULN2003.

Moteur pas à pas 28BYJ-48

À propos du pilote de moteur pas à pas ULN2003

Le ULN2003 est un module de commande de moteur largement utilisé pour les moteurs pas à pas.

  • Il dispose de quatre LED qui indiquent l'activité des quatre lignes d'entrée de commande, ce qui offre un bel effet visuel lorsque le moteur pas à pas est en mouvement.
  • De plus, il comprend un cavalier marche/arrêt pour séparer l'alimentation du moteur pas à pas.

Brochage de l'ULN2003

Brochage du pilote de moteur pas à pas ULN2003

Le module ULN2003 dispose de 6 broches et d'un connecteur femelle :

  • Broche IN1 : elle est utilisée pour commander le moteur. Elle doit être connectée à une broche de sortie sur la carte Arduino Nano.
  • Broche IN2 : elle est utilisée pour commander le moteur. Elle doit être connectée à une broche de sortie sur la carte Arduino Nano.
  • Broche IN3 : elle est utilisée pour commander le moteur. Elle doit être connectée à une broche de sortie sur la carte Arduino Nano.
  • Broche IN4 : elle est utilisée pour commander le moteur. Elle doit être connectée à une broche de sortie sur la carte Arduino Nano.
  • Broche GND : c'est la broche de masse commune. Elle doit être connectée aux broches GND de la carte Arduino Nano et à l'alimentation externe.
  • Broche VDD : elle alimente le moteur. Elle doit être connectée à l'alimentation externe.
  • Connecteur du moteur : c'est ici que le moteur se branche.

※ NOTE THAT:

  • La tension de l'alimentation externe doit être égale à la tension du moteur pas à pas. Par exemple, si un moteur pas à pas fonctionne avec du 12V DC, nous devons utiliser une alimentation de 12V. Dans le cas du moteur pas à pas 28BYJ-48, il fonctionne avec 5V DC, donc nous utiliserons une alimentation de 5V.
  • Cependant, même si le moteur pas à pas nécessite une alimentation de 5V, veuillez NE PAS connecter la broche VDD à la broche 5V sur l'Arduino Nano. Connectez-la plutôt à une alimentation externe de 5V, car le moteur pas à pas consomme trop de puissance.

Diagramme de câblage

Schéma de câblage du moteur pas à pas Arduino Nano avec le pilote ULN2003

This image is created using Fritzing. Click to enlarge image

Il n'est pas nécessaire de prêter attention à la couleur des fils du moteur pas à pas. Il suffit de connecter le connecteur mâle du moteur pas à pas 28BYJ-48 au connecteur femelle du pilote ULN2003.

Comment programmer pour contrôler un moteur pas à pas

Il existe trois manières de réguler un moteur pas à pas :

  • Pas complet
  • Demi-pas
  • Micro-pas

Pour les applications de base, nous pouvons utiliser l'approche par pas complet. Les spécificités des trois méthodes seront détaillées dans la dernière section de ce tutoriel. Programmer ces techniques peut être complexe. Heureusement, il existe de nombreuses bibliothèques qui ont fait le travail pour nous, il suffit donc de les utiliser.

L'IDE Arduino inclut une bibliothèque Stepper intégrée. Cependant, nous ne vous recommandons pas d'utiliser cette bibliothèque car :

  • C'est une bibliothèque bloquante, ce qui signifie qu'elle empêche l'Arduino Nano de réaliser d'autres tâches tout en contrôlant le moteur pas à pas.
  • Elle ne fournit pas suffisamment de fonctions.

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
  • Pilotage en pas complet et demi-pas
  • Plusieurs moteurs pas à pas simultanés, avec progression indépendante et simultanée sur chaque moteur
  • Inconvénient : Pas de support pour la conduite en micro-pas

Code Arduino Nano

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano 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/arduino-nano-28byj-48-stepper-motor-uln2003-driver */ // Include the AccelStepper Library #include <AccelStepper.h> // define step constant #define FULLSTEP 4 #define STEP_PER_REVOLUTION 2048 // this value is from datasheet // Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper(FULLSTEP, 11, 9, 10, 8); void setup() { Serial.begin(9600); stepper.setMaxSpeed(1000.0); // set the maximum speed stepper.setAcceleration(50.0); // set acceleration stepper.setSpeed(200); // set initial speed stepper.setCurrentPosition(0); // set position stepper.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution } void loop() { // change direction once the motor reaches target position if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); // MUST be called in loop() function Serial.print(F("Current Position: ")); Serial.println(stepper.currentPosition()); }

Étapes rapides

  • Cliquez sur l'icône Libraries dans la barre latérale gauche de l'Arduino IDE.
  • Recherchez "AccelStepper", puis trouvez la bibliothèque AccelStepper créée par Mike McCauley.
  • Cliquez sur le bouton Install pour ajouter la bibliothèque AccelStepper.
Bibliothèque AccelStepper pour Arduino Nano
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino.
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code vers l'Arduino Nano.
  • Vous devriez alors voir le moteur tourner. Il devrait faire une révolution dans le sens des aiguilles d'une montre, suivie de deux révolutions dans le sens inverse des aiguilles d'une montre, puis de deux révolutions dans le sens des aiguilles d'une montre.

La procédure est menée de manière continue.

  • Consultez la sortie dans le moniteur série.
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Comment contrôler plusieurs moteurs pas à pas 28BYJ-48

Découvrons comment gérer deux moteurs pas à pas séparément mais simultanément.

Schéma de câblage pour deux moteurs pas à pas 28BYJ-48

Schéma de câblage du pilote ULN2003 pour deux moteurs pas à pas Arduino Nano

This image is created using Fritzing. Click to enlarge image

Code Arduino Nano pour deux moteurs pas à pas 28BYJ-48

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano 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/arduino-nano-28byj-48-stepper-motor-uln2003-driver */ // Include the AccelStepper Library #include <AccelStepper.h> // define step constant #define FULLSTEP 4 #define STEP_PER_REVOLUTION 2048 // this value is from datasheet // Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper_1(FULLSTEP, 11, 9, 10, 8); AccelStepper stepper_2(FULLSTEP, 7, 5, 6, 4); void setup() { Serial.begin(9600); stepper_1.setMaxSpeed(1000.0); // set the maximum speed stepper_1.setAcceleration(50.0); // set acceleration stepper_1.setSpeed(200); // set initial speed stepper_1.setCurrentPosition(0); // set position stepper_1.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution stepper_2.setMaxSpeed(1000.0); // set the maximum speed stepper_2.setAcceleration(50.0); // set acceleration stepper_2.setSpeed(200); // set initial speed stepper_2.setCurrentPosition(0); // set position stepper_2.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution } void loop() { // change direction once the motor reaches target position if (stepper_1.distanceToGo() == 0) stepper_1.moveTo(-stepper_1.currentPosition()); if (stepper_2.distanceToGo() == 0) stepper_2.moveTo(-stepper_2.currentPosition()); stepper_1.run(); // MUST be called in loop() function stepper_2.run(); // MUST be called in loop() function Serial.print(F("stepper_1# current position: ")); Serial.println(stepper_1.currentPosition()); Serial.print(F("stepper_2# current position: ")); Serial.println(stepper_2.currentPosition()); }

Connaissances supplémentaires

1. Le moteur pas à pas vibre lors du déplacement

Ne soyez PAS inquiet si le moteur pas à pas tremble pendant son mouvement. C'est une caractéristique du moteur pas à pas. Nous pouvons réduire les vibrations en utilisant la technique de contrôle par micro-pas.

De plus, grâce à cette fonctionnalité, si elle est bien gérée, le moteur pas à pas peut créer de la musique comme s'il s'agissait d'un instrument de musique. Un exemple de cela peut être trouvé ici sur Hackster.io.

2. Méthode de contrôle des moteurs pas à pas

  • Pas complet: L'unité de mouvement est un pas, qui est égal à la valeur de degré spécifiée dans la fiche technique ou le manuel du moteur pas à pas.
  • Demi-pas: Divise chaque pas complet en deux pas plus petits. L'unité de mouvement est la moitié du pas complet. Cette méthode permet au moteur de se déplacer avec une résolution doublée.
  • Micro-pas: Divise chaque pas complet en de nombreux pas plus petits. L'unité de mouvement est une fraction du pas complet. La fraction peut être de 1/4, 1/8, 1/16, 1/32 ou même plus. Cette méthode permet au moteur de se déplacer avec une résolution plus élevée. Elle permet également au moteur de se déplacer plus doucement à basse vitesse. Plus le diviseur est grand, plus la résolution est élevée et le mouvement est fluide.

Si la fiche technique du moteur indique 1,8 degré par pas :

  • Pas complet : Le moteur avancera par incréments de 1,8 degrés par pas, ce qui résulte en 200 pas par révolution.
  • Demi-pas : Le moteur avancera par incréments de 0,9 degrés par pas, ce qui résulte en 400 pas par révolution.
  • Micro-pas : Le moteur avancera par incréments de 0,45, 0,225, 1,125, 0,05625 degrés par pas, ce qui résulte en 800, 1600, 3200, 6400... pas par révolution.

La méthode de contrôle utilisée dans le code ci-dessus était l'approche par pas complet.

3. Problème de résonance

Ceci est destiné aux utilisateurs avancés. Les débutants n'ont pas à s'en préoccuper. Cela se produit dans une gamme de vitesses, où la vitesse de pas est égale à la fréquence naturelle du moteur. Il pourrait y avoir un changement notable dans le son produit par le moteur, ainsi qu'une augmentation des vibrations. Dans les applications pratiques, les développeurs devraient prendre cela en compte.

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!