Dans ce tutoriel nous apprendrons comment fonctionne le moteur pas à pas 28BYJ-48       5V-DC

Ce tutoriel est destiné à toutes personnes désirant comprendre le fonctionnement du moteur pas à pas 28BYJ-48   5V-DC

Je nous propose donc dans ce tutoriel d’actionner un moteur pas à pas avec des commandes arduino

Ce tutoriel sera subdivisé en des sous-parties pour vous permettre de bien appréhender le fonctionnement du moteur pas à pas

Plan à suivre

  1. Préambule
  2. Que savoir sur le moteur pas à pas 28BYJ-48 ?
  3. Matériels
  4. Exemple de câblage du moteur pas à pas 28BYJ-48
  5. Exemples de code pour le moteur pas à pas 28BYJ-48
  6. Test.
  7. Préambule
  • Moteur à courant continu

Un moteur à courant continu est constitué de deux parties électriques : le stator et le rotor. Lorsqu’on alimente le moteur, il se crée une interaction magnétique qui met le moteur en mouvement. Lorsqu’on inverse le sens de la tension qui alimente le moteur, il tourne en sens inverse.

Sur le schéma suivant on distingue :

  • Le stator constitué du corps du moteur et des aimants qui sont fixes ;
  • Le rotor constitué des bobines et leurs noyaux de fer qui vont tourner ;
  • L’axe principal qui tournera pour transmettre le mouvement du rotor.

Figure : Moteur à courant continu

Dans ce tutoriel, nous utiliserons le moteur pas à pas 28-BYJ48  5V DC que l’on peut trouver (ou similaire) dans nos lecteurs de DVD, nos caméras Motion et bien d’autres endroits.

Un moteur pas à pas permet de transformer une impulsion électrique en un mouvement angulaire.

  • Que savoir sur le moteur pas à pas 28BYJ-48 ?

Le moteur a un arrangement unipolaire à 4 bobines et chaque bobine est évaluée à + 5V, il est donc relativement facile à contrôler avec n’importe quel microcontrôleur de base. Ces moteurs ont un angle de foulée de 5,625 ° / 64, cela signifie que le moteur devra faire 64 pas pour effectuer une rotation et pour chaque pas, il couvrira 5,625 °, d’où le niveau de contrôle est également élevé. Cependant, ces moteurs ne fonctionnent que sur 5V et ne peuvent donc pas fournir un couple élevé.

Donc, si vous recherchez un moteur pas à pas compact et facile à utiliser avec un couple décent, ce moteur est le bon choix pour vous.

Pour commander ce moteur, nous utiliserons le composant ULN2003 qui regroupe les éléments nécessaires pour le contrôle du moteur. Il existe des cartes toutes faites X113647.

Figure : circuit imprimé X113647

Caractéristiques :

Modèle : 28BYJ-48

Tension nominale : 5VDC

Nombre de phase : 4

Rapport de variation de vitesse : 1/64

Angle de foulée : 5,625 ° / 64

Fréquence : 100Hz

Couple de traction : 300 gf.cm

Puissance isolée : 600VAC / 1mA / 1s

Bobine : bobine unipolaire à 5 fils

Poids : 32g

Classe d’isolation : A

Présentation du moteur pas à pas 28BYJ-48

Figure : Moteur pas à pas 28-BYJ48 5VDC

3.Matériels

Pour réaliser notre petit test, nous aurons besoin des matériels suivant :

  • Une carte arduino (ici UNO)
  • un moteur pas à pas suivi du driver (le circuit intégré X113647)

Des fils de connexion

Tous ces matériels sont disponibles chez Youpilab  https://youpilab.com

4.Exemple de câblage du moteur pas à pas 28BYJ-48

Pour le branchement du moteur au circuit imprimé X113647, suivez le détrompeur qui indique comment le brancher.

5.Exemple de codes pour le moteur pas à pas 28BYJ-48

Le moteur étant constitué de 4 bobines :

  • Il fera des demis pas lorsqu’il activera une bobine l’une après l’autre en 2 temps donc fera (4*2 =8 demis pas) pour toutes les parcourir
  • Il fera des pas entiers lorsqu’il activera une bobine l’une après l’autre en 1 temps donc fera (4*1 =4  pas) pour toutes les parcourir.

Concernant le code, je vous propose 3 types.

  1. A demi pas
  2. Pas à pas
  3. Accélérer (stepper)
  • Code 1 :Demi pas

Vous pouvez directement le copier dans votre IDE Arduino

/* ————Demi pas ————— Active les bobines l’une après l’autre en 2 temps*/
/*Déclaration des variables*///on déclare les pin 8,9,10,11
int in1=8;
int in2=9;
int in3=10;
int in4=11;

int compteur=0; //on déclare un compteur qui servira à compter les demis pas
const int pause=10; // une constante de pause

void setup() {
Serial.begin(9600); //on initialise le moniteur série

/*Initialisation des in comme des sorties*/
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
delay(1000);

}

void loop() {

/*on arrete le moteur lorsqu’il effectue 4096 demis pas donc 1 tour de 360° */
if(compteur>=4096)
{
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,LOW);

}
else{//si le nombre de demi pas n’est pas atteint,il fait une serie de 8 demis pas

//PAS 0
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,LOW);
delay(pause);
//PAS 0.5
digitalWrite(in1,HIGH);
digitalWrite(in2,HIGH);
digitalWrite(in3,LOW);
digitalWrite(in4,LOW);
delay(pause);

//PAS 1
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
digitalWrite(in3,LOW);
digitalWrite(in4,LOW);
delay(pause);

//PAS 1.5
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4,LOW);
delay(pause);

//PAS 2
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);
digitalWrite(in3,HIGH);
digitalWrite(in4,LOW);
delay(pause);

//PAS 2.5
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);
digitalWrite(in3,HIGH);
digitalWrite(in4,HIGH);
delay(pause);

//PAS 3
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,HIGH);
delay(pause);

//PAS 3.5
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,HIGH);
delay(pause);

compteur = compteur +8; //on incrémente l compteur
Serial.print(“Pas : “);
Serial.println(compteur);
}

}

  • Code 2 : pas à pas

Vous pouvez directement le copier dans votre IDE Arduino

/* ————Pas à pas ——- Active les bobines l’une après l’autre en 1 temps*/
/*Déclaration des variables*///on déclare les pin 8,9,10,11
int in1=8;
int in2=9;
int in3=10;
int in4=11;

int compteur=0; //on déclare un compteur qui servira à compter les demis pas
const int pause=10; // une constante de pause

void setup() {
Serial.begin(9600); //on initialise le moniteur série

/*Initialisation des in comme des sorties*/
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
delay(1000);

}

void loop() {

/*on arrete le moteur lorsqu’il effectue 2048 pas donc 1 tour de 360° */
if(compteur>=2048)
{
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,LOW);

}
else{//si le nombre de pas n’est pas atteint,il fait une serie de 4 pas

//PAS 0
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,LOW);
delay(pause);

//PAS 1
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
digitalWrite(in3,LOW);
digitalWrite(in4,LOW);
delay(pause);

//PAS 2
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);
digitalWrite(in3,HIGH);
digitalWrite(in4,LOW);
delay(pause);

//PAS 3
digitalWrite(in1,LOW);
digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,HIGH);
delay(pause);

compteur = compteur +4; //on incrémente le compteur
Serial.print(“Pas : “);
Serial.println(compteur);
}

}

  • Code 3 : Accélérer

Vous pouvez directement le copier dans votre IDE Arduino

Pour ce côté rapide et pratique permettant de régler la vitesse, nous utiliserons la bibliothèque « stepper.h » d’Arduino

#include <Stepper.h> // on inclut la bibliothèque

double Pas = 2048; //on définit le nombre de pas

Stepper moteur(Pas,8,10,9,11); //ON envoie des parametres ; Mais il faut faire attention à l’ordre des fils et inverser les deux fils du milieu

void setup() {
moteur.setSpeed(10); //on definit la vitesse
Serial.begin(9600); //on initialise le moniteur série
}

void loop() {
Serial.println(“Sens des aiguilles d’une montre “);
moteur.step(Pas); //on demande au moteur d’avancer de “Pas” pas
delay(100);//on attend 0.1s

Serial.println(“Sens inverse des aiguilles d’une montre “);
moteur.step(-Pas); //on demande au moteur de rebrousser chemin de “Pas” pas
delay(100);//on attend 0.1s
}

Test:

Figure : câblage dans la réalité

Si tout a été bien fait, après téléversement des codes Arduino, vous devriez constater le résultat attendu.

Merci d’avoir suivi ce tutoriel. A bientôt !!!

Les détails ne sont pas renseignés

0.00 average based on 0 ratings

5 Star
0%
4 Star
0%
3 Star
0%
2 Star
0%
1 Star
0%

Course Features

  • Duration : 10 week
  • Max Students : 1000
  • Enrolled : 0
  • Re-take Course : 0
  • Assessments : Self
Price :
Gratuit

Rating

Average Rating: 0.00

Star
0%
Star
0%
Star
0%
Star
0%
Star
0%

Leave a Comment