top of page

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.

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.

Exemple :

Nous souhaitons faire faire un tour à un moteur pas à pas unipolaire, puis le faire revenir à sa position initiale.

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.

​

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

Câblage :​

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
}
}

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.

bottom of page