Vous êtes sur la page 1sur 11

LE MOTEUR PAS A PAS

Le moteur pas à pas regroupe les avantages du moteur à courant continu et du


servomoteur. En effet, il est très précis dans son mouvement et est capable de
faire plus d'un tour.
Le moteur pas à pas est constitué  :
 d'un rotor aimanté (contrairement au moteur à courant continu).
 d'enroulements statoriques ou phases dans lesquels un champ

magnétique est créé lorsqu'ils sont parcourus par un courant électrique.


Le pas est l'angle minimal de rotation de ce moteur et nous le trouvons dans des
application pour lesquelles une grande précision est demandée (imprimante,
etc).
Pour piloter un moteur pas à pas, deux fonctions électroniques (ne pas
confondre avec les fonctions logicielles) sont nécessaires :
 un séquenceur, qui permet d'élaborer l'ordre d'alimentation des phases,
réalisé avec un circuit spécialisé comme le L297 ou un microcontrôleur.
 une interface de puissance, qui permet d'amplifier le courant pour les
bobinages, réalisée avec des composants discrets (transistor essentiellement)
ou un circuit spécialisé comme le L298.
Il existe deux types de moteurs pas à pas.

 Le moteur bipolaire
Le moteur pas à pas bipolaire possède 4 fils (un par phase) pour commander
simultanément 2 enroulements opposés. Regardons de plus près sa constitution
et son fonctionnement.
Câblage :
Liste du matériel :
 1 Arduino Uno
 1 plaquette d'essai
 1 moteur pas à pas unipolaire (Référence :28YBT-48 (DC 5V)). Ce moteur est
souvent commercialisé avec le module de puissance. Sa documentation est
disponible ici.
 1 ULN2003A
Exemple :
Nous souhaitons faire faire un tour à un moteur pas à pas unipolaire, puis le faire revenir
à sa position initiale.

Programme :
/* Moteur pas à pas est un programme qui fait tourner un moteur pas à pas dans un sens puis dans
l'autre*/

#include <Stepper.h>                                // appel de la bibliothèque


#define enroulement_1 2                         // affectation des broches
#define enroulement_2 3
#define enroulement_3 4
#define enroulement_4 5

const int nombre_pas=2048;                  // nombre de pas du moteur

Stepper moteur(nombre_pas, enroulement_1, enroulement_3, enroulement_2, enroulement_4);    //


création de l'objet moteur

void setup()   
{
moteur.setSpeed(10);                              // initialisation la vitesse de rotation du moteur en tour par
minute
pinMode(enroulement_1, OUTPUT);       // configuration des broches en sortie
pinMode(enroulement_2, OUTPUT);       
pinMode(enroulement_3, OUTPUT);     
pinMode(enroulement_4, OUTPUT);  
}

void loop()
{
for (int i=1; i<=nombre_pas; i++)            // boucle avance du moteur en fonction du nombre de pas
{
  moteur.step(1);                                       // un pas en sens positif
}
for (int i=1; i<=nombre_pas; i++)            // boucle retour du moteur en fonction du nombre de pas
{   
  moteur.step(-1);                                     // un pas en sens négatif
}
}
Un courant électrique circule de A vers B ou inversement et un autre courant
électrique circule de C vers D ou inversement. En fait, comme les enroulements
opposés sont parcourus par le même courant pouvant circuler dans les deux
sens (bipolaire d'où le nom de ce moteur), il y a en fait que deux enroulements à
piloter par l'interface de puissance.
Le moteur bipolaire peut être commandé selon 3 méthodes :

       - Commande par pas entier


C'est le mode de fonctionnement le plus simple et le mieux adapté pour expliquer
comment le moteur tourne.

Pas N°1 : le courant circule de A vers B créant un pôle Sud en A et un pôle Nord
en B. Le rotor se place dans l'alignement de ces deux enroulements (angle 0°).
Pas N°2 : le courant circule de C vers D créant un pôle Sud en C et un pôle Nord
en D. Le rotor se place dans l'alignement de ces deux enroulements (angle 90°).
Pas N°3 : le courant circule de B vers A créant un pôle Nord en A et un pôle Sud
en B. Le rotor se place dans l'alignement de ces deux enroulements (angle
180°).
Pas N°4 : le courant circule de D vers C créant un pôle Nord en C et un pôle Sud
en D. Le rotor se place dans l'alignement de ces deux enroulements (angle
270°).
Si nous souhaitons commander un moteur pas à pas bipolaire en pas entier à
l'aide d'une carte Arduino, il faut 4 broches numériques configurées en sortie et
appliquer la séquence suivante :
Pas N°1 : Sortie A à l'état haut, Sortie B à l'état bas, Sortie C=Sortie D à l'état
bas ou à l'état haut (pas de différence de potentiel)
Pas N°2 : Sortie A=Sortie B, Sortie C à l'état haut et Sortie D à l'état bas
Pas N°3 : Sortie A à l'état bas, Sortie B à l'état haut, Sortie C=Sortie D
Pas N°4 : Sortie A=Sortie B, Sortie C à l'état bas et Sortie D à l'état haut

Remarque : Dans cet exemple, pour faire un tour, le moteur fait 4 pas. La plupart
des moteurs pas à pas possède un nombre de pas plus important. La commande
reste identique (nous aurons toujours 4 fils), seule la constitution mécanique du
moteur change.
       - Commande par couple maximal
Dans ce mode de fonctionnement, tous les enroulements sont alimentés créant
ainsi un champ magnétique plus important (le couple est donc plus important
mais la consommation électrique aussi).

Pas N°1 : le courant circule de A vers B créant un pôle Sud en A et un pôle Nord
en B. Le courant circule de D vers C créant un pôle Sud en D et un pôle Nord en
C. Les deux champs magnétiques ainsi créés attirent à force égale le rotor.
Pas N°2 : le courant circule de A vers B créant un pôle Sud en A et un pôle Nord
en B. Le courant circule de C vers D créant un pôle Sud en C et un pôle Nord en
D.
Pas N°3 : le courant circule de B vers A créant un pôle Sud en B et un pôle Nord
en A. Le courant circule de C vers D créant un pôle Sud en C et un pôle Nord en
D.
Pas N°4 : le courant circule de B vers A créant un pôle Sud en B et un pôle Nord
en A. Le courant circule de D vers C créant un pôle Sud en D et un pôle Nord en
C.

Si nous souhaitons commander un moteur pas à pas bipolaire en couple


maximal à l'aide d'une carte Arduino, il faut 4 broches numériques configurées
en sortie et appliquer la séquence suivante :
Pas N°1 : Sortie A à l'état haut, Sortie B à l'état bas, Sortie C à l'état bas et Sortie
D à l'état haut
Pas N°2 : Sortie A à l'état haut, Sortie B à l'état bas, Sortie C à l'état haut et
Sortie D à l'état bas
Pas N°3 : Sortie A à l'état bas, Sortie B à l'état haut, Sortie C à l'état haut et
Sortie D à l'état bas
Pas N°4 : Sortie A à l'état bas, Sortie B à l'état haut, Sortie C à l'état bas et Sortie
D à l'état haut

       - Commande par demi-pas


Ce mode de fonctionnement permet de multiplier le nombre de pas par 2 et
utilise les deux méthodes précédentes.

Quelque soit le mode de fonctionnement retenu pour la commande d'un moteur


bipolaire, les enroulements sont parcourus par des courants bidirectionnels et
doivent donc être alimentés à l'aide d'un pont en H chacun.
 Le moteur unipolaire
Le moteur pas à pas unipolaire possède 5 fils (un par phase + la masse
commune aux 4 bobinages) ou 6 fils (un par phase + deux pour deux masses
communes à deux bobinages) pour commander séparément un seul
enroulement à la fois. Regardons de plus près sa constitution et son
fonctionnement.
La masse commune à deux enroulements est aussi appelée le point milieu de
l'enroulement.
Nous alimentons successivement les bobines A, C, D et B pour créer des
champs magnétiques rotatifs.

Pas N°1 : l'enroulement A seul est alimenté


Pas N°2 : l'enroulement C seul est alimenté
Pas N°3 : l'enroulement D seul est alimenté
Pas N°4 : l'enroulement B seul est alimenté

Si nous souhaitons commander un moteur pas à pas unipolaire à l'aide d'une


carte Arduino, il faut 4 broches numériques configurées en sortie et appliquer la
séquence suivante :
Pas N°1 : Sortie A à l'état haut, Sortie B à l'état bas, Sortie C à l'état bas et Sortie
D à l'état bas
Pas N°2 : Sortie A à l'état bas, Sortie B à l'état bas, Sortie C à l'état haut et Sortie
D à l'état bas
Pas N°3 : Sortie A à l'état bas, Sortie B à l'état bas, Sortie C à l'état bas et Sortie
D à l'état haut
Pas N°4 : Sortie A à l'état bas, Sortie B à l'état haut, Sortie C à l'état bas et Sortie
D à l'état bas

Contrairement au moteur bipolaire, les enroulements du moteur unipolaire sont


parcourus par un courant unidirectionnel. Ils peuvent donc être commandés par
un simple transistor ou un circuit tel que l'ULN2003A (circuit de puissance
possédant 7 transistors).

La génération des signaux de commande d'un moteur pas à pas peut se faire
avec les instructions de base du langage Arduino. Il existe cependant une
bibliothèque Stepper intégrée d'office dans l'IDE Arduino. Ses principales
fonctions sont :
 Stepper moteur(nb_pas, broche1, broche3, broche2, broche4) où
nb_pas représente le nombre de pas par tour du moteur et broche 1 à 4 les
broches connectées à l'interface de puissance. Cette fonction permet de créer
l'objet.
 moteur.setSpeed(vitesse) où vitesse représente la vitesse du moteur en
tr/min. Cette fonction permet de paramétrer la vitesse de rotation du moteur.
 moteur.step(pas) où pas représente le nombre de pas du moteur. Cette
fonction permet de faire tourner le moteur du nombre de pas voulu.

La bibliothèque Stepper gère les moteurs pas à pas unipolaires et bipolaires.


Câblage :
Liste du matériel :
 1 Arduino Uno
 1 plaquette d'essai
 1 moteur pas à pas unipolaire (Référence :28YBT-48 (DC 5V)). Ce moteur
est souvent commercialisé avec le module de puissance. Sa documentation est
disponible ici.
 1 ULN2003A
Exemple :
Nous souhaitons faire faire un tour à un moteur pas à pas unipolaire, puis le faire
revenir à sa position initiale.
Programme :
/* Moteur pas à pas est un programme qui fait tourner un moteur pas à pas dans un sens
puis dans l'autre*/

#include <Stepper.h>                                // appel de la bibliothèque

#define enroulement_1 2                         // affectation des broches


#define enroulement_2 3
#define enroulement_3 4
#define enroulement_4 5

const int nombre_pas=2048;                  // nombre de pas du moteur

Stepper moteur(nombre_pas, enroulement_1, enroulement_3, enroulement_2,


enroulement_4);    // création de l'objet moteur

void setup()   
{
moteur.setSpeed(10);                              // initialisation la vitesse de rotation du moteur en
tour par minute
pinMode(enroulement_1, OUTPUT);       // configuration des broches en sortie
pinMode(enroulement_2, OUTPUT);       
pinMode(enroulement_3, OUTPUT);     
pinMode(enroulement_4, OUTPUT);  
}

void loop()
{
for (int i=1; i<=nombre_pas; i++)            // boucle avance du moteur en fonction du nombre
de pas
{
  moteur.step(1);                                       // un pas en sens positif
}
for (int i=1; i<=nombre_pas; i++)            // boucle retour du moteur en fonction du nombre de
pas
{   
  moteur.step(-1);                                     // un pas en sens négatif
}
}
Un courant électrique circule de A vers B ou inversement et un autre courant
électrique circule de C vers D ou inversement. En fait, comme les enroulements
opposés sont parcourus par le même courant pouvant circuler dans les deux
sens (bipolaire d'où le nom de ce moteur), il y a en fait que deux enroulements à
piloter par l'interface de puissance.

Le moteur bipolaire peut être commandé selon 3 méthodes :

       - Commande par pas entier


C'est le mode de fonctionnement le plus simple et le mieux adapté pour expliquer
comment le moteur tourne.

Pas N°1 : le courant circule de A vers B créant un pôle Sud en A et un pôle Nord
en B. Le rotor se place dans l'alignement de ces deux enroulements (angle 0°).
Pas N°2 : le courant circule de C vers D créant un pôle Sud en C et un pôle Nord
en D. Le rotor se place dans l'alignement de ces deux enroulements (angle 90°).
Pas N°3 : le courant circule de B vers A créant un pôle Nord en A et un pôle Sud
en B. Le rotor se place dans l'alignement de ces deux enroulements (angle
180°).
Pas N°4 : le courant circule de D vers C créant un pôle Nord en C et un pôle Sud
en D. Le rotor se place dans l'alignement de ces deux enroulements (angle
270°).

Si nous souhaitons commander un moteur pas à pas bipolaire en pas entier à


l'aide d'une carte Arduino, il faut 4 broches numériques configurées en sortie et
appliquer la séquence suivante :
Pas N°1 : Sortie A à l'état haut, Sortie B à l'état bas, Sortie C=Sortie D à l'état
bas ou à l'état haut (pas de différence de potentiel)
Pas N°2 : Sortie A=Sortie B, Sortie C à l'état haut et Sortie D à l'état bas
Pas N°3 : Sortie A à l'état bas, Sortie B à l'état haut, Sortie C=Sortie D
Pas N°4 : Sortie A=Sortie B, Sortie C à l'état bas et Sortie D à l'état haut

Remarque : Dans cet exemple, pour faire un tour, le moteur fait 4 pas. La plupart
des moteurs pas à pas possède un nombre de pas plus important. La commande
reste identique (nous aurons toujours 4 fils), seule la constitution mécanique du
moteur change.

       - Commande par couple maximal


Dans ce mode de fonctionnement, tous les enroulements sont alimentés créant
ainsi un champ magnétique plus important (le couple est donc plus important
mais la consommation électrique aussi).

Pas N°1 : le courant circule de A vers B créant un pôle Sud en A et un pôle Nord
en B. Le courant circule de D vers C créant un pôle Sud en D et un pôle Nord en
C. Les deux champs magnétiques ainsi créés attirent à force égale le rotor.
Pas N°2 : le courant circule de A vers B créant un pôle Sud en A et un pôle Nord
en B. Le courant circule de C vers D créant un pôle Sud en C et un pôle Nord en
D.
Pas N°3 : le courant circule de B vers A créant un pôle Sud en B et un pôle Nord
en A. Le courant circule de C vers D créant un pôle Sud en C et un pôle Nord en
D.
Pas N°4 : le courant circule de B vers A créant un pôle Sud en B et un pôle Nord
en A. Le courant circule de D vers C créant un pôle Sud en D et un pôle Nord en
C.

Si nous souhaitons commander un moteur pas à pas bipolaire en couple


maximal à l'aide d'une carte Arduino, il faut 4 broches numériques configurées
en sortie et appliquer la séquence suivante :
Pas N°1 : Sortie A à l'état haut, Sortie B à l'état bas, Sortie C à l'état bas et Sortie
D à l'état haut
Pas N°2 : Sortie A à l'état haut, Sortie B à l'état bas, Sortie C à l'état haut et
Sortie D à l'état bas
Pas N°3 : Sortie A à l'état bas, Sortie B à l'état haut, Sortie C à l'état haut et
Sortie D à l'état bas
Pas N°4 : Sortie A à l'état bas, Sortie B à l'état haut, Sortie C à l'état bas et Sortie
D à l'état haut

       - Commande par demi-pas


Ce mode de fonctionnement permet de multiplier le nombre de pas par 2 et
utilise les deux méthodes précédentes.

Quelque soit le mode de fonctionnement retenu pour la commande d'un moteur


bipolaire, les enroulements sont parcourus par des courants bidirectionnels et
doivent donc être alimentés à l'aide d'un pont en H chacun.

 Le moteur unipolaire
Le moteur pas à pas unipolaire possède 5 fils (un par phase + la masse
commune aux 4 bobinages) ou 6 fils (un par phase + deux pour deux masses
communes à deux bobinages) pour commander séparément un seul
enroulement à la fois. Regardons de plus près sa constitution et son
fonctionnement.
La masse commune à deux enroulements est aussi appelée le point milieu de
l'enroulement.
Nous alimentons successivement les bobines A, C, D et B pour créer des
champs magnétiques rotatifs.

Pas N°1 : l'enroulement A seul est alimenté


Pas N°2 : l'enroulement C seul est alimenté
Pas N°3 : l'enroulement D seul est alimenté
Pas N°4 : l'enroulement B seul est alimenté

Si nous souhaitons commander un moteur pas à pas unipolaire à l'aide d'une


carte Arduino, il faut 4 broches numériques configurées en sortie et appliquer la
séquence suivante :
Pas N°1 : Sortie A à l'état haut, Sortie B à l'état bas, Sortie C à l'état bas et Sortie
D à l'état bas
Pas N°2 : Sortie A à l'état bas, Sortie B à l'état bas, Sortie C à l'état haut et Sortie
D à l'état bas
Pas N°3 : Sortie A à l'état bas, Sortie B à l'état bas, Sortie C à l'état bas et Sortie
D à l'état haut
Pas N°4 : Sortie A à l'état bas, Sortie B à l'état haut, Sortie C à l'état bas et Sortie
D à l'état bas

Contrairement au moteur bipolaire, les enroulements du moteur unipolaire sont


parcourus par un courant unidirectionnel. Ils peuvent donc être commandés par
un simple transistor ou un circuit tel que l'ULN2003A (circuit de puissance
possédant 7 transistors).

La génération des signaux de commande d'un moteur pas à pas peut se faire
avec les instructions de base du langage Arduino. Il existe cependant une
bibliothèque Stepper intégrée d'office dans l'IDE Arduino. Ses principales
fonctions sont :
 Stepper moteur(nb_pas, broche1, broche3, broche2, broche4) où
nb_pas représente le nombre de pas par tour du moteur et broche 1 à 4 les
broches connectées à l'interface de puissance. Cette fonction permet de créer
l'objet.
 moteur.setSpeed(vitesse) où vitesse représente la vitesse du moteur en
tr/min. Cette fonction permet de paramétrer la vitesse de rotation du moteur.
 moteur.step(pas) où pas représente le nombre de pas du moteur. Cette
fonction permet de faire tourner le moteur du nombre de pas voulu.

La bibliothèque Stepper gère les moteurs pas à pas unipolaires et bipolaires.

Commentaires :
L'interface de puissance ULN2003A amplifie le courant des enroulements mais
inverse les niveaux logiques. C'est pour cette raison que les points milieux des
enroulements sont reliés au 5V et non à la masse sur le schéma.
Le moteur pas à pas utilisé dans cet exemple a une puissance relativement
faible. Il peut donc être alimenté par la carte Arduino. Pour les moteurs plus
puissants, il faut utiliser une alimentation externe.

Une explication s'impose pour définir le nombre de pas par tour de ce moteur. Sa
documentation nous donne un angle de 5,625° par pas soit 360/5,625=64 pas
par tour sur l'axe du moteur. Ce moteur possède un réducteur de 1/64 donc pour
que l'axe du réducteur fasse un tour complet, il faut 64x64=4096 pas du moteur.
Cette donnée est valable pour une commande en demi-pas. Or, la bibliothèque
Stepper gère la commande des moteurs en pas complet. Pour notre moteur, il
faudra donc 2048 pas pour faire un tour.

Vous aimerez peut-être aussi