Moteur pas à pas ESP32 (pilote 28BYJ-48 et ULN2003)

Moteur pas à pas ESP32 (pilote 28BYJ-48 et ULN2003)

Dans ce guide, vous apprendrez à contrôler un moteur pas à pas avec l’ESP32. Nous utiliserons le moteur pas à pas unipolaire 28BYJ-48 avec le pilote de moteur ULN2003. La carte ESP32 sera programmée à l’aide d’Arduino IDE.

ESP32 avec moteur pas à pas 28BYJ-48 et pilote de moteur ULN2003

Nous avons un tutoriel similaire pour la carte ESP8266 : ESP8266 NodeMCU avec moteur pas à pas (28BYJ-48 et ULN2003 Motor Driver)

Nous avons des tutos pour d’autres moteurs avec l’ESP32 :

Pièces requises

Pour suivre ce tutoriel, vous avez besoin des pièces suivantes :

Vous pouvez utiliser les liens précédents ou aller directement sur MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

Moteur pas a pas ESP32 pilote 28BYJ 48 et ULN2003

Présentation des moteurs pas à pas

Un moteur pas à pas est un moteur électrique à courant continu sans balais qui divise une rotation complète en plusieurs étapes. Il se déplace pas à pas, et chaque pas a la même taille. Cela nous permet de faire pivoter le moteur d’un angle précis jusqu’à une position précise. Le moteur pas à pas peut tourner dans le sens horaire ou antihoraire.

L’image suivante montre deux moteurs pas à pas 28BYJ-48.

Moteurs pas à pas 28BYJ-48

Les moteurs pas à pas sont constitués de bobines internes qui font bouger l’arbre du moteur pas à pas dans un sens ou dans l’autre lorsque le courant est appliqué aux bobines d’une manière spécifique.

Il existe deux types de moteurs pas à pas : les moteurs pas à pas unipolaires et bipolaires.

Dans cet article, nous ne détaillerons pas comment sont fabriqués les moteurs pas à pas et comment ils fonctionnent en interne. Pour en savoir plus sur leur fonctionnement et les différences entre chaque type de moteur pas à pas, nous vous recommandons de lire cet article du Blog DroneBotWorkshop.

Moteur pas à pas 28BYJ-48

Il existe plusieurs moteurs pas à pas avec des spécifications différentes. Ce didacticiel couvrira les applications largement utilisées Moteur pas à pas unipolaire 28BYJ-48 avec le Pilote de moteur ULN2003.

28BYJ-48 connecté au module ULN2003 Motor Driver 01

Caractéristiques du moteur pas à pas 28BYJ-48

Caractéristiques du moteur pas à pas (pour plus de détails, consultez la fiche technique) :

  • Tension nominale : 5 V CC
  • Nombre de phases : 4
  • Rapport de variation de vitesse : 1/64
  • Angle de foulée : 5.625º/64
  • Fréquence : 100 Hz

Le moteur pas à pas 28BYJ-48 a un total de quatre bobines. Une extrémité des bobines est connectée à 5V, ce qui correspond au fil rouge du moteur. L’autre extrémité des bobines correspond aux fils de couleur bleu, rose, jaune et orange. L’excitation des bobines dans une séquence logique fait bouger le moteur d’un pas dans un sens ou dans l’autre.

Bobines de moteur pas à pas 28BYJ-48

Le moteur pas à pas 28BYJ-48 a un angle de foulée de 5,625°/64 en mode demi-pas. Cela signifie que le moteur a un angle de pas de 5,625º—il a donc besoin de 360º/5,625º = 64 pas en mode demi-pas. En mode pas à pas : 64/2 = 32 pas pour effectuer une rotation.

Cependant, l’arbre de sortie est entraîné via un rapport de transmission de 64:1. Cela signifie que l’arbre (visible à l’extérieur du moteur) effectuera une rotation si le moteur à l’intérieur tourne 64 fois. Cela signifie que le moteur devra se déplacer de 32 × 64 = 2048 pas pour que l’arbre effectue une rotation complète. Cela signifie que vous aurez une précision de 360º/2048 pas = 0,18º/pas.

Donc, en résumé :

  • Nombre total de pas par tour = 2048 pas
  • Angle de pas = 0,18º/pas

Si vous utilisez un moteur pas à pas différent, veuillez consulter la fiche technique.

Pilote de moteur ULN2003

Pour interfacer le moteur pas à pas avec l’ESP32, nous utiliserons le pilote de moteur ULN2003, comme illustré dans la figure ci-dessous. Le moteur pas à pas 28BYJ-48 est souvent vendu avec le pilote de moteur ULN2003.

Carte de module ULN2003 Motor Driver 01

Le module est livré avec un connecteur qui permet de connecter facilement et simplement le moteur au module. Il a quatre broches d’entrée pour contrôler les bobines qui font bouger le moteur pas à pas. Les quatre LED fournissent une interface visuelle de l’état des bobines.

Étiquettes de pilote de moteur IC ULN2003

Il y a des broches à connecter VCC et GND, et un capuchon de cavalier qui agit comme un interrupteur marche/arrêt pour alimenter le moteur pas à pas. Si vous retirez le cavalier, aucune alimentation n’atteint le moteur. Vous pouvez utiliser ces broches pour câbler un commutateur physique.

Brochage du pilote de moteur ULN2003

Le tableau suivant montre le brochage du module :

EN 1 Contrôler le moteur: connectez-vous à une broche numérique du microcontrôleur
EN 2 Contrôler le moteur: connectez-vous à une broche numérique du microcontrôleur
IN3 Contrôler le moteur: connectez-vous à une broche numérique du microcontrôleur
IN4 Contrôler le moteur: connectez-vous à une broche numérique du microcontrôleur
VCC Alimente le moteur
GND GND commun
Connecteur moteur Branchez le connecteur du moteur

Câbler le moteur pas à pas à l’ESP32

Dans cette section, nous allons connecter le moteur pas à pas à l’ESP32 via le pilote de moteur ULN2003.

Nous allons connecter IN1, IN2, IN3 et IN4 aux GPIO 19, 18, 5, et 17. Vous pouvez utiliser n’importe quelle autre broche numérique appropriée (consultez notre guide de référence du brochage ESP32).

Vous pouvez suivre le schéma suivant.

ESP32 avec moteur pas à pas 28BYJ-48 et câblage schématique ULN2003A

Noter: vous devez alimenter le pilote du moteur à l’aide d’une alimentation externe 5V.

Pilote de moteur ESP32
EN 1 GPIO 19
EN 2 GPIO 18
IN3 GPIO 5
IN4 GPIO 17

Contrôler le moteur pas à pas avec l’ESP32 – Code

Il existe différentes manières de contrôler les moteurs pas à pas avec un microcontrôleur. Nous utiliserons l’Arduino intégré Stepper.h bibliothèque. Cette bibliothèque permet de déplacer facilement le moteur d’un nombre défini d’étapes.

Copiez le code suivant dans votre IDE Arduino.

/*
  Rui Santos
  Complete project details at https://Raspberryme.com/esp32-stepper-motor-28byj-48-uln2003/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
  
  Based on Stepper Motor Control - one revolution by Tom Igoe
*/

#include <Stepper.h>

const int stepsPerRevolution = 2048;  // change this to fit the number of steps per revolution

// ULN2003 Motor Driver Pins
#define IN1 19
#define IN2 18
#define IN3 5
#define IN4 17

// initialize the stepper library
Stepper myStepper(stepsPerRevolution, IN1, IN3, IN2, IN4);

void setup() {
  // set the speed at 5 rpm
  myStepper.setSpeed(5);
  // initialize the serial port
  Serial.begin(115200);
}

void loop() {
  // step one revolution in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(1000);

  // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(1000);
}

Afficher le code brut

Nous avons adapté ce code à partir des exemples fournis par la bibliothèque Stepper (Déposer > Exemples > Pas à pas > stepper_oneRévolution).

Comment fonctionne le code

Tout d’abord, incluez le Stepper.h bibliothèque.

#include <Stepper.h>

Définissez les pas par tour de votre moteur pas à pas, dans notre cas, il s’agit de 2048 :

const int stepsPerRevolution = 2048;  // change this to fit the number of steps per revolution

Définissez les broches d’entrée du moteur. Dans cet exemple, nous nous connectons aux GPIO 19, 18, 5 et 17, mais vous pouvez utiliser n’importe quel autre GPIO approprié.

#define IN1 19
#define IN2 18
#define IN3 5
#define IN4 17

Initialiser une instance de la bibliothèque pas à pas appelée mon pas. Passez en arguments les pas par tour et les broches d’entrée. Dans le cas du moteur pas à pas 28BYJ-48, l’ordre des broches est EN 1, IN3, EN 2, IN4-cela peut être différent pour votre moteur.

Stepper myStepper(stepsPerRevolution, IN1, IN3, IN2, IN4);

Dans le mettre en place(), réglez la vitesse du pas à pas à l’aide du setSpeed méthode. La vitesse du pas à pas est en tr/min.

myStepper.setSpeed(5);

Initialisez le moniteur série à un débit en bauds de 115 200.

Serial.begin(115200);

Dans le boucler(), nous allons faire tourner le moteur pas à pas dans le sens horaire et antihoraire. Vous pouvez utiliser le étape() méthode sur le mon pas objet. Passez en argument le nombre de pas que vous souhaitez effectuer. Pour une rotation complète (révolution), vous avez besoin de 2048 pas (étapesParRévolution variable).

myStepper.step(stepsPerRevolution);

Pour faire tourner le moteur dans le sens inverse des aiguilles d’une montre, vous devez passer le nombre de pas avec le moins «  » signe.

myStepper.step(-stepsPerRevolution);

Manifestation

Téléchargez le code sur votre tableau. Après le téléchargement, le moteur effectuera une rotation dans le sens des aiguilles d’une montre et une rotation dans le sens inverse des aiguilles d’une montre encore et encore.

Vous pouvez regarder une démonstration vidéo rapide :

Autres bibliothèques

En utilisant le Stepper.h La bibliothèque est l’un des moyens les plus simples de contrôler un moteur pas à pas. Cependant, si vous voulez plus de contrôle sur votre moteur pas à pas, il existe des bibliothèques avec plus de fonctions comme le Bibliothèque AccelStepper. Cette bibliothèque est bien documentée, avec toutes les méthodes décrites en détail.

Il offre plusieurs exemples compatibles avec l’ESP32. Assurez-vous simplement d’initialiser un objet pas à pas avec les bonnes broches :

AccelStepper stepper (AccelStepper::FULL4WIRE, 19, 5, 18, 17);

Cette bibliothèque vous permet de contrôler les moteurs de manière non bloquante et vous permet de contrôler plus d’un moteur à la fois. Mais ceci est un sujet pour un autre tutoriel.

Conclusion

Ce tutoriel était un guide de démarrage pour les moteurs pas à pas avec l’ESP32. Les moteurs pas à pas se déplacent pas à pas et vous permettent de positionner l’arbre du moteur à un angle spécifique.

L’un des moyens les plus simples de contrôler le moteur pas à pas est d’utiliser l’Arduino intégré Pas à pas bibliothèque. Cette bibliothèque fournit un moyen facile de faire tourner le moteur dans le sens horaire ou antihoraire sur un nombre déterminé d’étapes. Si vous voulez plus de contrôle sur votre moteur pas à pas, nous vous recommandons le AccelStepper bibliothèque.

Nous espérons que ce tutoriel vous sera utile.

En savoir plus avec l’ESP32 avec nos ressources :

Merci d’avoir lu.

  • ICQUANZX 5 Ensembles 28BYJ-48 ULN2003 5V Moteur Pas à Pas + Carte Pilote ULN2003 pour Arduino
    Moteur pas à pas avec une interface standard, lorsqu'il est utilisé directement enfichable. Une LED à quatre phases A, B, C, D indique l'état du travail du moteur pas à pas. 5 lignes 4 phases peuvent être utilisées pour le pilote de puce ULN2003 ordinaire, connectez-vous à la phase 2, supportez la carte de développement Avec une utilisation pratique, connexion directe Taille de la carte du module d'entraînement (pouces): 1,37 * 1,18 * 0,6; Diamètre du moteur pas à pas: 1,06 (in); Lignes de moteur pas à pas: 9.45 (in)
  • Elegoo 5pcs Moteurs Pas à Pas 5V 28BYJ-48 Stepper Motor + 5pcs Driver Board Carte Pilot ULN2003 + Câble Dupont Mâle vers Femelle
    Moteur pas à pas avec connecteur standard, branchable directement. Un affichage à 4 Leds indique quelle phase du moteur est en cours de fonctionnement (A, B, C ou D). Un connecteur en ligne 5 broches ( de type Dupont mâle ) est utilisé pour connecter les 4 phases du moteur au pilote ULN2003. Et l’UNL2003 à la carte de développement directement de l’autre côté. Taille carte de commande ULN2003 : 3,48 x 3 x 1,52 cm ; Diamètre du moteur pas à pas:2,7 cm ; Longueur câbles du moteur pas à pas:24 cm. Packaging dans une boîte en plastique refermable:5 Sets de 5 set ULN2003 Stepper Motor + Driver Board ( plus un petit cadeau )
  • Fasizi 28BYJ-48 ULN2003 Moteur Pas à Pas 5V + Carte Pilote ULN2003 pour Arduino - 5pcs
    Le moteur pas à pas est un type de dispositif électromagnétique qui se déplace par étapes discrètes. Cela a plusieurs bobines, l'arbre central a une série d'aimants montés dessus, et les bobines entourant l'arbre reçoivent alternativement du courant ou non, créant des champs magnétiques qui repoussent ou attirent les aimants sur l'arbre, provoquant la rotation du moteur. Ce moteur pas à pas unipolaire 28-BYJ48 est fourni avec cinq fils et quatre bobines. Les connexions centrales des bobines sont liées ensemble et généralement utilisées comme connexion d'alimentation. Ils sont nommés steppers unipolaires car la puissance arrive toujours sur ce pôle. Une LED quadriphasée A, B, C, D indique l'état du fonctionnement du moteur pas à pas.Moteur pas à pas avec une interface standard, lorsqu'il est utilisé directement enfichable.