Les moteurs pas à pas
Présentation
\newcommand{\pap}{moteur pas-à-pas~}
\newcommand{\paps}{moteurs pas-à-pas~}
Les \pap 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.
\index{asservissement}
Constitution
Les \pap 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 \pap
- \pap à phase bipolaire
- \pap à phases unipolaires
- \pap à reluctance 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 \pap 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 \paps
Moteurs unipolaires
Les \pap unipolaires ont besoins d’être contrôlés via un circuit adaptés, le plus connu est le \lbl{blue}{REF}{ULN2803}
Pour les moteurs unipolaires, il faut mettre une des phases à la masse pour faire circuler le courant dans la phase [note]
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. [note]}
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 \lbl{blue}{REF}{L298}
Avantages et inconvénients des \paps
- Très grande précision en boucle ouverte [note]
- 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 = \pap bipolaire
- 5 fils = \pap unipolaire
Exemples
Mise en pratique avec Arduino
Nous utiliserons un \pap 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.
Liste du matériel
- Carte Arduino Uno
- Driver ULN2803
- Moteur \pap 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 Arduino
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 ESP8266
Nous utiliserons le même \pap 28BYJ-48
Liste du matériel
- Carte ESP8266 NodeMCU (ESP-12)
- Driver ULN2803
- Moteur \pap 28BYJ-48 ou équivalent (\pap unipolaire)
- Câbles
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.
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