Moteur pas à pas 28BYJ-48 : tout ce qu'il faut savoir

Moteur pas à pas 28byj-48

El 28BYJ-48 est un moteur pas à pas unipolaire faible coût et haute précision, idéal pour les projets électroniques, pour les imprimantes 3D, les machines CNC et la robotique. Sa taille compacte, sa faible consommation d'énergie et sa facilité d'utilisation en font un choix populaire pour les amateurs et les professionnels de l'électronique.

De plus, avec ce moteur, un module avec ULN2003, pour votre contrôle. De cette façon, nous disposons de tout le nécessaire pour pouvoir utiliser pleinement ce système, en utilisant un microcontrôleur ou une carte. Arduino ou similaire.

Qu'est-ce que le moteur pas à pas 28BYJ-48 ?

moteur électrique intérieur: stator-rotor

Un le moteur pas à pas est un type de moteur électrique qui se déplace par petits pas angulaires discrets, plutôt que par une rotation continue. Il fonctionne à l'aide d'un ensemble d'électro-aimants activés dans un ordre spécifique. En activant différents électro-aimants, un champ magnétique est créé qui attire le rotor du moteur, le faisant tourner pas à pas. Le nombre de pas par tour et la précision du mouvement dépendent de la conception spécifique du moteur et de la séquence de commande utilisée.

Parmi les moteurs pas à pas, nous en avons deux types :

  • Unipolaire- Ils ont un seul jeu de bobines et nécessitent un contrôleur spécial pour inverser le courant et faire tourner le moteur dans les deux sens.
  • Bipolaire- Ils disposent de deux jeux de bobines indépendantes, leur permettant de tourner dans les deux sens sans avoir besoin d'un contrôleur spécial.

Dans le cas du 28BYJ-28, il est de type unipolaire, comme je l'ai mentionné précédemment. Et, au sein de ce groupe, il se caractérise par les éléments suivants lunettes:

  • Moteur pas à pas unipolaire: contrôle simple avec seulement 4 câbles.
  • Réducteur intégré : offre une haute précision (0.088° par pas) et un couple (3 N·cm).
  • Faible consommation d'énergie: 83 mA (modèle 5V) ou 32 mA (modèle 12V).
  • Alimentation: 5V ou 12V (selon modèle).
  • Prix ​​économique: à partir de 1.2 € l'unité, ou un peu plus s'ils intègrent un module ULN2003.

Quant à la applications possibles, j'en ai déjà évoqué quelques-uns auparavant, mais je vous redonne ici quelques idées pour vos projets :

  • Contrôle de vannes hydrauliques et pneumatiques.
  • Robots articulés et bras robotisés.
  • Positionnement du capteur.
  • Tables tournantes pour scanners.
  • Imprimantes 3D.
  • Machines CNC.

Le moteur pas à pas ne fonctionne pas seul, il nécessite un autre élément. Dans ce cas, Le 28BYJ-48 est contrôlé par une carte avec un ULN2003 intégré, qui permet d'amplifier le courant des sorties Arduino pour alimenter les bobines du moteur. En activant les bobines dans le bon ordre, le moteur tourne pas à pas avec une grande précision.

Types de séquences et de phases de contrôle

diverses séquences de contrôle pour le 28BYJ-48, les plus courantes sont :

  • Séquence pleine onde: active toutes les bobines en même temps.
  • Séquence demi-pas: Active deux bobines adjacentes en même temps.
  • Séquence d'étapes microscopiques: Active une bobine à la fois.

Voyons voir las phases en détail:

  • Séquence monophasée: Dans une séquence monophasée, nous allumons une seule bobine à la fois. En prenant cette séquence d'allumage dans un tableau, les éléments suivants devraient être générés dans le brochage du moteur :
Étape A B UNE' B '
1 ON de remise de remise de remise
2 de remise ON de remise de remise
3 de remise de remise ON de remise
4 de remise de remise de remise ON
  • Séquence en 2 phases: on allume deux bobines corrélatives dans chaque phase, donc le champ magnétique généré est plus grand (41% de plus) donc le moteur a plus de couple, c'est-à-dire qu'on obtient plus de force. Point négatif, on double la consommation d'énergie. Quant au tableau, ce serait :
Étape A B UNE' B '
1 ON ON de remise de remise
2 de remise ON ON de remise
3 de remise de remise ON ON
4 ON de remise de remise ON
  • Séquence en demi-pas: C'est une autre des étapes que nous allons voir, vous pourrez découvrir ce qui vous intéresse le plus. Ici, nous allumons alternativement une et deux bobines, obtenant une précision d'un demi-pas. Il est utilisé dans les applications où la plus grande précision est requise, bien que des problèmes puissent survenir lorsque l'application atteint la limite de couple. L'expression de la séquence sous forme de tableau donne :
Demi-pas A B UNE' B '
1 ON de remise de remise de remise
2 ON ON de remise de remise
3 de remise ON de remise de remise
4 de remise ON ON de remise
5 de remise de remise ON de remise
6 de remise de remise ON ON
7 de remise de remise de remise ON
8 ON de remise de remise ON

28BYJ-28 avec Arduino

28byj-48 avec Arduino

La première chose est de bien connecter le module et moteur 28byj-48 à notre carte Arduino, pour ce faire, il vous suffit de réaliser les connexions suivantes :

  • Broche – de ULN2003 à GND d’Arduino.
  • Broche + de l'ULN2003 à Vcc (5v ou dans d'autres cas, s'il s'agit d'un moteur 12v, il faudrait utiliser une alimentation avec cette tension) d'Arduino.
  • IN1, IN2, IN3 et IN4 de l'ULN2003 aux entrées numériques D8, D9, D10 et D11 de l'Arduino.
  • Le moteur 28byj-48, connectez-le simplement au port du module ULN2003.

Maintenant que vous êtes connecté, il ne reste plus qu'à utiliser un exemple dans l'IDE Arduino, que vous pouvez utiliser tel quel pour l'expérimenter ou le modifier à votre guise. Dans cet exemple, toutes les tables de phases sont commentées, comme // devant la ligne, vous savez... Si vous souhaitez en utiliser une, supprimez simplement // devant les instructions.

//Definir los pines
const int motorPin1 = 8;    // 28BYJ48 In1
const int motorPin2 = 9;    // 28BYJ48 In2
const int motorPin3 = 10;   // 28BYJ48 In3
const int motorPin4 = 11;   // 28BYJ48 In4
                   
//Definición de variables
int motorSpeed = 1200;   //Velocidad del motor
int stepCounter = 0;     //Contador de pasos
int stepsPerRev = 4076;  //Pasos para un giro completo

//Tablas de secuencia (descomentar la que necesites)
//Secuencia 1-fase
//const int numSteps = 4;
//const int stepsLookup[4] = { B1000, B0100, B0010, B0001 };

//Secuencia 2-fases
//const int numSteps = 4;
//const int stepsLookup[4] = { B1100, B0110, B0011, B1001 };

//Secuencia media fase
//const int numSteps = 8;
//const int stepsLookup[8] = { B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001 };

void setup()
{
  //Declarar los pines usados como salida
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}

void loop()
{
  for (int i = 0; i < stepsPerRev * 2; i++)
  {
    clockwise();
    delayMicroseconds(motorSpeed);
  }
  for (int i = 0; i < stepsPerRev * 2; i++)
  {
    anticlockwise();
    delayMicroseconds(motorSpeed);
  }
  delay(1000);
}

void clockwise()
{
  stepCounter++;
  if (stepCounter >= numSteps) stepCounter = 0;
  setOutput(stepCounter);
}

void anticlockwise()
{
  stepCounter--;
  if (stepCounter < 0) stepCounter = numSteps - 1;
  setOutput(stepCounter);
}

void setOutput(int step)
{
  digitalWrite(motorPin1, bitRead(stepsLookup[step], 0));
  digitalWrite(motorPin2, bitRead(stepsLookup[step], 1));
  digitalWrite(motorPin3, bitRead(stepsLookup[step], 2));
  digitalWrite(motorPin4, bitRead(stepsLookup[step], 3));
}


Soyez le premier à commenter

Laisser un commentaire

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

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.