La livraison gratuite de plus de 1000DH pour les particuliers
Moteur Pas à Pas Stepper 5V 28BYJ-48+ Driver ULN2003 Arduino
Le prix initial était : 50.00 د.م..45.00 د.م.Le prix actuel est : 45.00 د.م..
1 en stock
Tutoriel: Comment utiliser Moteur Pas à Pas 5V 28BYJ-48+ Driver ULN2003 pour Arduino
Composants matériels
- Moteur pas à pas 28BYJ-48
- Carte pilote ULN2003
- Arduino Uno Rev 3
- Fils de cavalier (mâle à femelle)
- Breadboard (en option, facilite le câblage)
- Câble USB type A / B
- Alimentation 5V (alimenter le moteur pas à pas directement depuis l’Arduino peut l’endommager!)
Informations sur le moteur pas à pas 5V 28BYJ-48 et la carte de commande ULN2003
Le 28BYJ-48 est l’un des moteurs pas à pas les moins chers que vous puissiez trouver . Bien qu’il ne soit pas super précis ou puissant, c’est un excellent moteur à utiliser pour les petits projets ou si vous voulez simplement en savoir plus sur les moteurs pas à pas.
Ce moteur est souvent utilisé pour ajuster automatiquement les aubes d’un climatiseur. Il dispose d’une boîte de vitesses intégrée, ce qui lui confère un couple supplémentaire et réduit considérablement la vitesse.
Vous trouverez ci-dessous les spécifications du moteur pas à pas et du pilote utilisés dans ce didacticiel.
Spécifications du moteur pas à pas 28BYJ-48
Tension nominale | 5 V |
Résistance de la bobine | 50 Ohms |
Type de bobine | Unipolaire |
Diamètre – arbre | 0.197″ (5.00 mm) |
Longueur – arbre et roulement | 0.394″ (10 mm) |
Fonctionnalités | Arbre aplati |
Taille / dimension | Rond – 1.100 ″ de diamètre (28.00 mm) |
Espacement des trous de montage | Arbre aplati |
Réduction de vitesse | 1/64 ( voir note ) |
Angle de pas | Mode demi-pas (recommandé): 0,0879 ° Mode pas complet: 0,176 ° |
Pas par révolution | Mode demi-pas: 4096 ( voir note ) Mode pas complet: 2048 |
Style de terminaison | Fils conducteurs avec connecteur |
Motor type | Moteur à engrenages à aimant permanent |
Nombre de phases | 4 |
Fiche Technique | 28BYJ-48 + ULN2003 |
Remarque importante : les fabricants spécifient généralement que les moteurs ont une réduction de 64: 1. Certains membres des forums Arduino ont remarqué que ce n’était pas correct et ont donc démonté certains moteurs pour vérifier le rapport de vitesse réel. Ils ont déterminé que le rapport de démultiplication exact est en fait de 63,68395: 1 , ce qui donne environ 4076 pas par tour complet (en mode demi-pas).
Je ne sais pas si tous les fabricants utilisent exactement la même boîte de vitesses, mais vous pouvez simplement ajuster les pas par tour dans le code, pour correspondre à votre modèle.
Le moteur pas à pas à petite réduction utilise le même facteur de forme que le 28BYJ-48, mais a un rapport de démultiplication différent. Il a un ensemble d’engrenages réducteurs d’environ 1/16, ce qui donne 513 pas par tour (en mode pas complet).
Câblage – Connexion du moteur pas à pas 5V 28BYJ-48 et de la carte pilote ULN2003 à Arduino UNO
Le schéma de câblage / schéma ci-dessous vous montre comment connecter la carte pilote ULN2003 au moteur pas à pas 28BYJ-48 et à l’Arduino. Les connexions sont également données dans le tableau ci-dessous.
J’ai utilisé une planche à pain et des fils de cavalier pour connecter la carte de commande à une alimentation externe.
Connexions ULN2003 et 28BYJ-48 vers Arduino
Carte de pilote ULN2003 | Connexion |
---|---|
EN 1 | Broche 8 Arduino |
EN 2 | Broche 9 Arduino |
IN3 | Broche 10 Arduino |
IN4 | Broche 11 Arduino |
– | Logic GND Arduino |
– | Alimentation GND |
+ | Alimentation 5 V |
Remarque : il est possible d’alimenter directement le moteur pas à pas à partir de la sortie 5 V de l’Arduino. Ceci n’est cependant pas recommandé. Lorsque le moteur pas à pas consomme trop de courant, vous pouvez endommager l’Arduino . J’ai également constaté que lorsque j’alimentais l’Arduino avec une alimentation USB uniquement, j’obtiendrais un comportement incohérent et de mauvaises performances du moteur pas à pas.
Je recommande d’alimenter la carte de commande / le moteur pas à pas avec une alimentation externe 5 V, comme celle-ci . Il doit être livré avec un connecteur DC femelle, vous pouvez donc le connecter facilement à certains fils (cavaliers). Notez que vous devez également connecter le GND de l’Arduino à la broche – sur la carte pilote ULN2003.
Après avoir téléchargé le code, vous devez également alimenter l’Arduino , soit avec un câble USB de type B, soit via la prise d’alimentation de 5,5 mm.
Le cavalier à côté des connexions d’alimentation sur la carte de commande peut être utilisé pour déconnecter l’alimentation du moteur pas à pas.
Exemple de code Arduino de base pour contrôler un moteur pas à pas 5V 28BYJ-48
Vous pouvez télécharger l’exemple de code suivant sur votre Arduino à l’aide de l’ IDE Arduino .
Cet exemple utilise la bibliothèque Stepper.h , qui devrait être préinstallée avec l’IDE Arduino. Cette esquisse fait tourner le moteur pas à pas d’un tour dans un sens, s’arrête, puis fait un tour dans l’autre sens.
/ * Exemple d’esquisse pour contrôler un moteur pas à pas 5V 28BYJ-48 avec carte pilote ULN2003 et Arduino UNO. Plus d'information visite notre page Facebook. // Inclut la bibliothèque Arduino Stepper.h: #include <Stepper.h> // Définit le nombre de pas par rotation: const int stepsPerRevolution = 2048; // Câblage: // Broche 8 à IN1 sur le pilote ULN2003 // Broche 9 à IN2 sur le pilote ULN2003 // Broche 10 à IN3 sur le pilote ULN2003 // Broche 11 à IN4 sur le pilote ULN2003 // Créez un objet stepper appelé ‘myStepper’, notez l’ordre des broches: Stepper myStepper = Stepper ( stepsPerRevolution, 8, 10, 9, 11 ) ; void setup () { // Réglez la vitesse sur 5 tr / min: myStepper. setSpeed ( 5 ) ; // Commencez la communication série à une vitesse de transmission de 9600: En série. commencer ( 9600 ) ; } boucle void () { // Étape d’une révolution dans une direction: En série. println ( “dans le sens des aiguilles d’une montre” ) ; myStepper. step ( stepsPerRevolution ) ; retard ( 500 ) ; // Étape d’une révolution dans l’autre sens: En série. println ( “sens antihoraire” ) ; myStepper. step ( -stepsPerRevolution ) ; retard ( 500 ) ; }
Code :
L’esquisse commence par inclure la bibliothèque Arduino Stepper.h. Plus d’informations sur cette bibliothèque peuvent être trouvées sur le site Web Arduino. Plus d’information visite notre page Facebook.
// Inclut la bibliothèque Arduino Stepper.h: #include <Stepper.h>
Ensuite, j’ai défini le nombre de pas nécessaires au moteur pour faire tourner 1 tour. Dans cet exemple, nous utiliserons le moteur en mode pas à pas . Cela signifie qu’il faut 2048 pas pour tourner à 360 degrés (voir les spécifications du moteur ci-dessus).
// Définit le nombre de pas par rotation: const int stepsPerRevolution = 2048;
Ensuite, vous devez créer une nouvelle instance de la classe Stepper, qui représente un moteur pas à pas particulier connecté à l’Arduino. Pour cela, nous utilisons la fonction Stepper(steps, pin1, pin2, pin3, pin4)
où étapes est le nombre de pas par tour et pin1 à pin4 sont les broches auxquelles le moteur est connecté. Pour obtenir la séquence d’étapes correcte, nous devons définir les broches dans l’ordre suivant: 8, 10, 9, 11.
// Créez un objet stepper appelé ‘myStepper’, notez l’ordre des broches: Stepper myStepper = Stepper ( stepsPerRevolution, 8, 10, 9, 11 ) ;
Dans ce cas , j’ai appelé le moteur pas à pas « myStepper » mais vous pouvez utiliser d’ autres noms aussi, comme « z_motor » ou « liftmotor » , etc. Stepper liftmotor = Stepper(stepsPerRevolution, 8, 10, 9, 11);
. Vous pouvez créer plusieurs objets de moteur pas à pas avec des noms et des broches différents. Cela vous permet de contrôler facilement 2 moteurs pas à pas ou plus en même temps.
Dans la configuration, vous pouvez régler la vitesse en tr / min avec la fonction setSpeed(rpm)
. La vitesse maximale d’un moteur pas à pas 28byj-48 est d’ environ 10 à 15 tours par minute à 5 V .
void setup () { // Réglez la vitesse sur 5 tr / min: myStepper. setSpeed ( 5 ) ;
Dans la section de code en boucle, nous appelons simplement la step(steps)
fonction qui fait tourner le moteur d’un nombre spécifique de pas à une vitesse déterminée par la setSpeed(rpm)
fonction. Le passage d’un nombre négatif à cette fonction inverse le sens de rotation du moteur.
boucle void () { // Étape d’une révolution dans une direction: En série. println ( “dans le sens des aiguilles d’une montre” ) ; myStepper. step ( stepsPerRevolution ) ; retard ( 500 ) ; // Étape d’une révolution dans l’autre sens: En série. println ( “sens antihoraire” ) ; myStepper. step ( -stepsPerRevolution ) ; retard ( 500 ) ; }
Exemples de codes pour moteur pas à pas 5V 28BYJ-48 avec bibliothèque Arduino et AccelStepper
Dans les trois exemples suivants, je vais vous montrer comment contrôler à la fois la vitesse, la direction et le nombre de pas que le moteur pas à pas 5V doit faire. Dans ces exemples, j’utiliserai la bibliothèque AccelStepper .
La bibliothèque AccelStepper écrite par Mike McCauley est une bibliothèque géniale à utiliser pour votre projet. L’un des avantages est qu’il prend en charge l’accélération et la décélération, mais il a également beaucoup d’autres fonctions intéressantes.
Vous pouvez télécharger la dernière version de cette bibliothèque ici ou cliquer sur le bouton ci-dessous.
Vous pouvez installer la bibliothèque en allant dans Sketch> Inclure la bibliothèque> Ajouter une bibliothèque .ZIP… dans l’IDE Arduino.
Une autre option consiste à naviguer vers Outils> Gérer les bibliothèques… ou tapez Ctrl + Maj + I sous Windows. Le gestionnaire de bibliothèque ouvrira et mettra à jour la liste des bibliothèques installées.
Vous pouvez rechercher «accelstepper» et chercher la bibliothèque de Mike McCauley. Sélectionnez la dernière version, puis cliquez sur Installer.
Exemple de code de rotation continue
L’esquisse suivante peut être utilisée pour faire fonctionner un ou plusieurs moteurs pas à pas en continu à une vitesse constante. (Aucune accélération ou décélération n’est utilisée).
Vous pouvez copier le code en cliquant sur le bouton dans le coin supérieur droit du champ de code.
/ * Exemple d’esquisse pour contrôler un moteur pas à pas 28BYJ-48 avec carte pilote ULN2003, AccelStepper et Arduino UNO: rotation continue. Plus d'information visite notre page Facebook. // Inclut la bibliothèque AccelStepper: #include <AccelStepper.h> // Définitions des broches du moteur: #define motorPin1 8 // IN1 sur le pilote ULN2003 #define motorPin2 9 // IN2 sur le pilote ULN2003 #define motorPin3 10 // IN3 sur le pilote ULN2003 #define motorPin4 11 // IN4 sur le pilote ULN2003 // Définit le type d’interface AccelStepper; Moteur 4 fils en mode demi-pas: #define MotorInterfaceType 8 // Initialisation avec la séquence de broches IN1-IN3-IN2-IN4 pour utiliser la bibliothèque AccelStepper avec le moteur pas à pas 28BYJ-48: AccelStepper stepper = AccelStepper ( MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4 ) ; void setup () { // Définit le nombre maximum de pas par seconde: stepper. setMaxSpeed ( 1000 ) ; } boucle void () { // Réglez la vitesse du moteur en pas par seconde: stepper. setSpeed ( 500 ) ; // Faire avancer le moteur avec une vitesse constante définie par setSpeed(): stepper. runSpeed () ; }
Comment fonctionne le code:
Encore une fois, la première étape consiste à inclure la bibliothèque avec #include <AccelStepper.h>
. Plus d’information visite notre page Facebook.
// Inclut la bibliothèque AccelStepper: #include <AccelStepper.h>
L’étape suivante consiste à définir les connexions ULN2003 à Arduino.
L’instruction #define
est utilisée pour donner un nom à une valeur constante. Le compilateur remplacera toutes les références à cette constante par la valeur définie lors de la compilation du programme. Ainsi, partout où vous parlez motorPin1
, le compilateur le remplacera par la valeur 8 lorsque le programme sera compilé.
// Définitions des broches du moteur: #define motorPin1 8 // IN1 sur le pilote ULN2003 #define motorPin2 9 // IN2 sur le pilote ULN2003 #define motorPin3 10 // IN3 sur le pilote ULN2003 #define motorPin4 11 // IN4 sur le pilote ULN2003
L’étape suivante consiste à spécifier le type d’interface moteur pour la bibliothèque AccelStepper. Dans ce cas, nous allons piloter un moteur pas à pas à 4 fils en mode demi-pas , nous définissons donc le type d’interface sur «8». Vous pouvez trouver les autres types d’interface ici . Si vous souhaitez faire fonctionner le moteur en mode pas-à-pas complet (moins de pas par tour), changez simplement le 8 en 4.
// Définit le type d’interface AccelStepper; Moteur 4 fils en mode demi-pas: #define MotorInterfaceType 8
Ensuite, vous devez créer une nouvelle instance de la classe AccelStepper avec le type d’interface moteur et les connexions appropriés. Pour obtenir la séquence d’étapes correcte, nous devons définir les broches dans l’ordre suivant: motorPin1, motorPin3, motorPin2, motorPin4 .
Dans ce cas , j’ai appelé le moteur pas à pas « pas à pas » , mais vous pouvez utiliser d’ autres noms aussi, comme « z_motor » ou « liftmotor » , etc. AccelStepper liftmotor = AccelStepper(MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4);
. Vous pouvez créer plusieurs objets de moteur pas à pas avec des noms et des broches différents. Cela vous permet de contrôler facilement 2 moteurs pas à pas ou plus en même temps.
// Initialisation avec la séquence de broches IN1-IN3-IN2-IN4 pour utiliser la bibliothèque AccelStepper avec le moteur pas à pas 28BYJ-48: AccelStepper stepper = AccelStepper ( MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4 ) ;
Dans la section setup du code, nous définissons la vitesse maximale en pas / seconde avec la fonction setMaxSpeed()
. Des vitesses de plus de 1000 pas par seconde peuvent ne pas être fiables, je l’ai donc définie comme maximum. Notez que je précise le nom du moteur pas à pas (‘stepper’), pour lequel je souhaite définir la vitesse maximale. Si vous avez plusieurs moteurs pas à pas connectés, vous pouvez spécifier une vitesse différente pour chaque moteur: stepper2.setMaxSpeed(500);
.
void setup () { // Définit le nombre maximum de pas par seconde: stepper. setMaxSpeed ( 1000 ) ; }
Dans la boucle, nous définissons d’abord la vitesse à laquelle nous voulons que le moteur fonctionne avec la fonction setSpeed()
. (vous pouvez également le placer dans la section de configuration du code).
stepper.runSpeed()
interroge le moteur et lorsqu’une étape est due, il exécute 1 étape. Cela dépend de la vitesse réglée et du temps écoulé depuis la dernière étape. Si vous voulez changer la direction du moteur, vous pouvez régler une vitesse négative: fait stepper.setSpeed(-400);
tourner le moteur dans l’autre sens.
boucle void () { // Réglez la vitesse du moteur en pas par seconde: stepper. setSpeed ( 500 ) ; // Faire avancer le moteur avec une vitesse constante définie par setSpeed(): stepper. runSpeed () ; }
En mode demi-pas, un tour prend 4096 pas, donc 500 pas / s donnent environ 7 tr / min .
Plus d’information visite notre page Facebook.
Option: | Moteur pas à pas Stepper, Driver ULN2003, Moteur pas à pas + Driver ULN2003 |
---|
Avis
Il n’y a pas encore d’avis.