Les moteurs pas-à-pas
Sommaire du chapitre
- Les moteurs pas-à-pas
- Commande des
- Mise en pratique avec Arduino
- Constitution
- Les types de
- Principe
- Moteurs unipolaires
- Moteurs bipolaires
- Comment distinguer les différents types de moteurs ?
- Exemples avec phases bipolaires
- Exemples avec phases unipolaires
- Avantages et inconvénients des
- Domaines d'application
- Mise en pratique avec l'ESP12 NodeMCU
- Liste du matériel
- Branchements
- Code C++
- Liste du matériel
- Branchements
- Code ESP12
Les moteurs pas-à-pas
moteur pas-à-pas moteurs pas-à-pas
Les sont utilisés lorsqu'on souhaite un asservissement en position d'un axe de rotation avec une précision inégalée par les servomoteurs.
Constitution
Les sont constitués de :
Plusieurs bobines (un pôle forme une paire de bobines)
Un aimant qui sert d'axe de rotation
Les types de
à phase bipolaire

bipolaire à phases unipolaires

unipolaires à réluctance variable (non abordés ici)
Principe
En faisant varier le champ électromagnétique des différentes phases, on peut faire varier la position angulaire de l'aimant.
Exemples avec phases bipolaires
En alimentant une paire de phases avec une tension positif, l'aimant se place dans l'alignement du champ électromagnétique
formé par la paire de phase.
En alimentant la paire de phase avec une tension négative, l'aimant se place dans le sens contraire.



Exemples avec phases unipolaires



Les moteurs possèdent plus de phases car un débattement de 45° est vite limité.

Les unipolaires présentent l'avantage de faire circuler un courant positif dans le circuit de commande. Ils sont donc plus simples à mettre en oeuvre mais ils nécessitent plus de bobinage.
Commande des
Moteurs unipolaires
Les unipolaires ont besoins d'être contrôlés via un circuit adaptés, le plus connu est le REFULN2803
Pour les moteurs unipolaires, il faut mettre une des phases à la masse pour faire circuler le courant dans la phase [2]
On constate sur la figure suivante un montage Darlington : deux transistors NPN forme un seul transistor dont le coefficient $\beta$ est le produit de chacun des coefficients $\beta$ de chaque transistor.
Cela permet de contrôler des charges avec très peu de courant de commande. [3]


Moteurs bipolaires
On a vu qu'il fallait inverser la tension de commande au borne des bobines. Pour cela on peut utiliser le montage en pont en H.

En activant S1 et S4 (fermeture du circuit), la charge est parcourue par un courant allant de gauche à droite
En activant S2 et S3 (fermeture du circuit), la charge est parcourue par un courant allant de droite à gauche
Et qui dit inversion de courant dit inversion de tension. Notre objectif est atteint, nous pouvons mettre des tensions positives
et négatives aux bornes des phases de nos moteurs.
Ce principe est également utilisé pour contrôler les moteurs à courant continu
On peut utiliser le circuit REFL298

Avantages et inconvénients des
Très grande précision en boucle ouverte [1]
Couple élevé en bas régime
Plus lent qu'un servomoteur
Complexité de mise en oeuvre
Domaines d'application
Imprimantes
Machines CNC
Comment distinguer les différents types de moteurs ?
2 fils = moteur à courant continue
3 fils = servomoteurs
4 fils = bipolaire
5 fils = unipolaire
Mise en pratique avec Arduino
Nous utiliserons un 28BYJ-48 de type unipolaire.

Les caractéristiques sont les suivantes :
Nombre de pas : 2048
Tension d'alimentation : 5V
Pour augmenter le nombre de pas, on ajoute un train d'engrenage.

Notes
Liste du matériel
Carte Arduino Uno
Driver ULN2803
Moteur 28BYJ-48 ou équivalent
Câbles
Branchements
Nous utiliserons les broches 8, 9, 10 et 11 et l'alimentation 5V du moteur sera fournie par la broche +5V de l'Arduino
D1 sur IN1
D2 sur IN3
D5 sur IN2
D6 sur IN4
Vin sur Vcc
Gnd sur Gnd

Code C++
Ce code fait tourner le moteur d'un tour, attend 2 secondes puis fait un tour dans l'autre sens avec un délai de 2s.
#include //Inclusion de la bibliothèque Stepper
int nbPas = 2048; //Nombre de pas pour le moteur 28BYJ-48
#define IN1 8 //Broche IN1
#define IN2 9 //Broche IN2
#define IN3 10 //Broche IN3
#define IN4 11 //Broche IN4
Stepper moteur(nbPas, IN1, IN3, IN2, IN4); //Création de l'objet moteur
void setup()
moteur.setSpeed(10); //On définit la vitesse à 10 tr/min
//Fin setup
void loop()
moteur.step(nbPas); //On avance de nbPas pas, c'est à dire un tour complet (sens horaire)
delay(2000); //pause de 2s
moteur.step(-nbPas); //On avance de -nbPas pas, c'est à dire un tour complet (sens anti-horaire)
delay(2000); //pause de 2s
//Fin loop
Mise en pratique avec l'ESP12 NodeMCU
Nous utiliserons le même 28BYJ-48
Liste du matériel
Carte ESP8266 NodeMCU (ESP-12)

ESP12 NodeMCU Cette carte fait partie de la famille des ESP8266 et se programme directement avec l’Éditeur Arduino. L'installation des bibliothèques pour l'ESP12 est détaillée en annexe du document.
Driver ULN2803
Moteur 28BYJ-48 ou équivalent ( unipolaire)
Câbles
Branchements
Les numéros des broches sont différents sur les cartes ESP812 (modèle NodeMCU).
Voici les équivalences des broches entre le code et l'emplacement physique.

Nous utiliserons les broches D1, D2, D5 et D6 et l'alimentation 5V du moteur sera fournie par la broche Vin de l'ESP12
D1 sur IN1
D2 sur IN3
D5 sur IN2
D6 sur IN4
Vin sur Vcc
Gnd sur Gnd

Code ESP12
Ce code fait tourner le moteur d'un tour, attend 2 secondes puis fait un tour dans l'autre sens avec un délai de 2s.
#include //Inclusion de la bibliothèque Stepper
int nbPas = 2048; //Nombre de pas pour le moteur 28BYJ-48
#define IN1 D1 //Broche IN1
#define IN2 D5 //Broche IN2
#define IN3 D2 //Broche IN3
#define IN4 D6 //Broche IN4
Stepper moteur(nbPas, IN1, IN3, IN2, IN4); //Création de l'objet moteur
void setup()
moteur.setSpeed(10); //On définit la vitesse à 10 tr/min
//Fin setup
void loop()
moteur.step(nbPas); //On avance de nbPas pas, c'est à dire un tour complet (sens horaire)
delay(2000); //pause de 2s
moteur.step(-nbPas); //On avance de -nbPas pas, c'est à dire un tour complet (sens anti-horaire)
delay(2000); //pause de 2s
//Fin loop