Piloter un moteur pas à pas Arduino

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:

  1. Controleur de moteurs avec shield L293D
  2. Branchement et piloter moteur DC Arduino
  3. Branchement module MOSFET transistor

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.

Séquence du moteur pas à pas Arduino
Séquence du moteur pas à pas unipolaire Arduino

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

Connecter moteur 28BYJ-48 et le module UNL2003
Comment connecter moteur pas à pas 28BYJ-48 et le module UNL2003

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:

  1. tout port numérique peut être utilisé à la place des ports 8,9,10,11;
  2. 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.
Le moteur pas à pas 28BYJ-48 avec UNL2003
Le moteur pas à pas 28BYJ-48 avec le module UNL2003

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:

  1. 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.





11 Replies to “Piloter un moteur pas à pas 28BYJ-48 Arduino”

  1. 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.

    1. 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)
      }

    1. 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.

    2. 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.

  2. bonjour c’est possible de faire de faire tourner le moteur dans l’autre sens sinon très bon tuto merci beaucoup

    cordialement

    1. oui, en inversant juste (ex: 100 -100)
      ou pour le cas du premier programme, tu échange juste le sens d’exécution du programme

  3. 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 ).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Découvrez comment les données de vos commentaires sont traitées.