SOMMAIRE ►
Le moteur pas à pas (stepper motor) est conçu pour positionner ou déplacer avec précision un objet selon un nombre déterminé de pas d’arbre. La carte Arduino peut contrôler le moteur pas à pas au moyen d’un pilote et de la bibliothèque stepper.h. Voyons le principe de fonctionnement et le schéma de connexion du moteur pas à pas à Arduino Uno et examinons le programme pour contrôler le moteur pas à pas 28BYJ-48 avec le module UNL2003.
Pour cette activité, nous aurons besoin:
- Arduino Uno / Arduino Nano / Arduino Mega
- moteur pas à pas 4 fils
- module UNL2003
- fils de connexion
Matériel supplémentaire sur ce sujet:
Fonctionnement du moteur pas à pas (datasheet)
Un moteur 28BYJ-48 avec le module UNL2003 est un moteur synchrone sans collecteur. Comme tous les moteurs, il convertit l’énergie électrique en énergie mécanique. Contrairement à un moteur à courant continu dans lequel l’arbre tourne, l’arbre d’un moteur pas à pas effectue des mouvements discrets, c’est-à-dire qu’il ne tourne pas de manière continue, mais par étapes. Chaque pas de l’arbre (rotor) représente une partie d’une révolution complète.

Caractéristiques moteur pas à pas 28BYJ 48
- Alimentation: 5 V
- Résistance: 21 ohms
- Intensité: 25 mA
- Réduction: 1/64
- Nombre de pas par tour: 64 (réduction de 4096 en sortie d’axe)
- Entraxe de fixation: 35 mm
Selon la conception, trois types de moteurs pas à pas sont utilisés: les moteurs à aimant permanent, à aimant variable et hybrides. Avec les moteurs à aimants permanents, le nombre de pas par tour d’arbre peut atteindre 48, c’est-à-dire qu’un pas correspond à une rotation d’arbre de 7,5°. Les moteurs hybrides permettent 400 pas par tour (angle de tangage de 0,9°). En comptant le nombre de pas effectués, vous pouvez déterminer l’angle de rotation du rotor.
L’arbre du moteur est mis en rotation par un signal qui contrôle le champ magnétique des bobines du stator du moteur. Le signal est généré par le pilote du moteur pas à pas 28BYJ-48. Le champ magnétique généré par le passage du courant électrique dans les enroulements du stator fait tourner l’arbre sur lequel sont montés les aimants. Le nombre de pas est défini dans le programme à l’aide des commandes de la bibliothèque Stepper.h.
Comment brancher moteur pas à pas 4 fils

Le moteur pas à pas 28BYJ-48 avec le module UNL2003 est contrôlé via l’Arduino en pulsant les enroulements du moteur dans une certaine séquence. Des bibliothèques spéciales stepper.h ont été créées pour faciliter le contrôle des moteurs pas à pas, mais il est possible de faire tourner l’arbre du moteur sans les bibliothèques standard. Connectez le moteur pas à pas au microcontrôleur comme dans le schéma ci-dessus et chargez le programme.
Programme Arduino pour moteur pas à pas 28byj-48
#define in1 8 #define in2 9 #define in3 10 #define in4 11 int dl = 20; // temps entre les pas, minimum 10 ms void setup() { pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); } void loop() { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); delay(dl); digitalWrite(in1, HIGH); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, LOW); delay(dl); digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); delay(dl); digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, HIGH); digitalWrite(in4, HIGH); delay(dl); }
Explication du code pour commande de moteur pas à pas 4 fils:
- tout port numérique peut être utilisé à la place des ports 8,9,10,11;
- temps de retard en millisecondes int dl = 20; peut être modifié, plus le retard est faible dans le programme, plus l’arbre du moteur tournera vite.

Envisagez la commande de moteurs pas à pas en utilisant la bibliothèque standard Stepper.h, où de nombreuses commandes et fonctions supplémentaires sont implémentées. Le schéma de câblage du moteur reste le même. Les principales caractéristiques du stepper motor 28byj-48: Alimentation de 5 ou 12 volts, moteur à 4 phases, l’angle de pas de 5.625°. Les ports du pilote IN1 à IN4 sont connectés à n’importe quelle broche numérique de Arduino.
Programme Arduino avec librairie Stepper.h
#include "Stepper.h" const int stepsPerRevolution = 200; Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); void setup() { myStepper.setSpeed(60); } void loop() { myStepper.step(stepsPerRevolution); delay(500); myStepper.step(-stepsPerRevolution); delay(500); myStepper.step(200); // nombre de pas delay(2000); myStepper.step(-300); // nombre de pas delay(2000); }
Explication du commande de moteur pas à pas avec Stepper.h:
- tout port numérique peut être utilisé à la place des ports 8,9,10,11.
Conclusion. Stepper motor 28byj-48 est aujourd’hui l’entraînement idéal dans les imprimantes 3D, les machines CNC et autres équipements industriels. Branchement moteur pas à pas 4 fils (28byj 48 Arduino) et le module contrôleur est simple puisque il existe un connecteur avec des rainures qui sert à guider l’union entre les deux dispositifs. Le module UNL2003 Arduino possède quatre diodes qui nous indiquerons quelle bobine est active à chaque moment.







Bonjour,
étant un novice en arduino pouvez-vous me dire comment ajouter un contacteur de niveau d’eau pour démarrer le moteur pas a pas quand le niveau est haut avec ce programme.
merci vous.
Salut !
Je débute aussi mais je pense savoir comment faire :
Tu met ton code qui détecter le niveux d’eau, admet-on que tu a ainsi une valeur « char ».
Tu rajoute cette condition :
if (niveau > TonNiveuxMax) {
myStepper.step(NombreDePas)
}
est-il possible d’effectuer la commande sans utiliser de carte moteur ?
Oui, vous pouvez connecter un moteur pas à pas sans pilote directement aux broches du microcontrôleur. L’essentiel est de composer correctement l’algorithme d’impulsions pour la rotation du moteur.
Sérieux ? Piloter un moteur pas à pas avec 20 mA ? Montrez moi ça !
Non, le micro-controleur ne peut fournir un tel courant, il est limité à 20mA par sortie au grand maximum et pas toutes en même temps, il faut regarder sa fiche technique.
♥ Aucune idée ♥
bonjour c’est possible de faire de faire tourner le moteur dans l’autre sens sinon très bon tuto merci beaucoup
cordialement
oui, en inversant juste (ex: 100 -100)
ou pour le cas du premier programme, tu échange juste le sens d’exécution du programme
Très bon résumé. Ma question est de savoir , quel est l’intérêt d’utiliser un pilote pour contrôler un moteur(Parce que l’ajout d’un élément supplémentaire augmente le cout ).
Parce que l’Arduino ne peut pas délivrer le courant nécessaire.