Vous êtes sur la page 1sur 138

UNIVERSITE D’ANTANANARIVO

ECOLE SUPERIEURE POLYTECHNIQUE

FILIERE GENIE INDUSTRIEL


Départements : Génie Mécanique et Productique - Génie Electrique

Mémoire de fin d’études en vue de l’obtention du diplôme d’ingénieur en Génie Industriel

Etude et COMMANDE DE MOTEUR PAS A PAS


PAR ORDINATEUR pour un positionnement
sur le plan

Présenté par : RANDRIAMIARISOA Haritiana Léonce


le : 11 Novembre 2011
Directeur de mémoire : Monsieur RAKOTOJAONA ANDRIAMANANTENA

Promotion : 2009 – 2010


UNIVERSITE D’ANTANANARIVO
ECOLE SUPERIEURE POLYTECHNIQUE

FILIERE GENIE INDUSTRIEL


Départements : Génie Mécanique et Productique - Génie Electrique

Mémoire de fin d’études en vue de l’obtention du diplôme d’ingénieur en Génie Industriel

Etude et COMMANDE DE MOTEUR PAS A PAS


PAR ORDINATEUR pour un positionnement
sur le plan

Présenté par : RANDRIAMIARISOA Haritiana Léonce


le : 11 Novembre 2011
Devant les membres du jury, composé de :
- Président : Monsieur RAVELOMANANA Nathanaël,
Enseignant à l’ESPA
- Directeur de mémoire : Monsieur RAKOTOJAONA Andriamanantena,
Enseignant à l’ESPA
- Examinateurs : Monsieur RAKOTONIAINA Solofo Hery,
Chef de département et enseignant à l’ESPA
Monsieur RATOVOHARISOA,
Enseignant à l’ESPA
Monsieur RAMELINA Arimonjy,
Enseignant à l’ESPA

Promotion : 2009 – 2010


REMERCIEMENTS

Remerciements

Nous tenons tout d’abord, à remercier Dieu tout puissant, de nous avoir donné la santé et
la volonté pour accomplir ce travail.

En témoignage de notre reconnaissance, nous adressons aussi nos plus vifs remerciements
aux personnes suivantes, sans qui ce mémoire n’aurait été possible :

Monsieur ANDRIANARY Philippe, Directeur de l’Ecole Supérieure Polytechnique


d’Antananarivo (E.S.P.A.), de m’avoir autorisé à soutenir ce mémoire.

Monsieur RAKOTONIAINA Solofo Hery, Chef de Département Génie Electrique.

Monsieur RAVELOMANANA Nathanaël, Enseignant à l’E.S.P.A.,qui a eu la


bienveillance de présider les jurys de ce mémoire.

Monsieur RAKOTOJAONA Andriamanantena, Enseignant à l’E.S.P.A. qui a dirigé ce


mémoire. Merci pour votre aide, suivi, conseils et malgré vos nombreuses occupations,
vous avez consacré du temps pour ce travail.

Les membres du jury qui ont consacrés leur temps pour examiner ce mémoire, qui sont :
- Monsieur RAKOTONIAINA Solofo Hery, Chef de département Génie Electrique et
Enseignant à l’E.S.P.A.
- Monsieur RATOVOHARISOA, Enseignant à l’E.S.P.A.
- Monsieur RAMELINA Arimonjy, Enseignant à l’E.S.P.A.

Tous les enseignants de la filière Génie Industriel qui nous a formés durant ces cinq
années d’études.

Tous ceux qui, de près ou de loin, ont contribué à la préparation et l’élaboration de ce


mémoire.

Enfin, mes remerciements s’adressent plus particulièrement à ma famille et mes amis,


qui ont su me soutenir, m’encourager et m’aider tout au long des années.

Promotion 2010 Pagei


TABLE DES MATIERES

Table des matières


Remerciement
Table des matières
Liste des figures
Liste des tableaux
Liste des symboles et notations
INTRODUCTION……………………………………………………………………………………..1

PARTIE 1 : CONTEXTE GENERAL

Chapitre 1 : PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS……………………..3


I.1- Introduction : historique …………………………………………………………………………3
I.2- Généralité ………………………………………………………………………………………..3
I.2-1 Définitions …………………………………………………………………………………...3
I.2-2 Principales avantages et inconvénients du moteur pas à pas ………………………………..5
I.3- Les moteurs pas à pas à aimant permanent………………………………………………………6
I.3.1- Phénomènes magnétiques…………………………………………………………………...6
I.3.2- Moteur pas à pas bipolaire…………………………………………………………………..8
I.3.3- Moteur pas à pas unipolaire………………………………………………………………..11
I.3.4- Conclusion………………………………………………………………………………….14
I.4- Les moteurs pas à pas à réluctance variable…………………………………………………….14
I.4.1- Introduction : circuit magnétique…………………………………………………………..14
I.4.2- Constitution ………………………………………………………………………………..16
I.4.3- Fonctionnement…………………………………………………………………………….17
I.5- Les moteurs pas à pas hybrides…………………………………………………………………18
I.5.1- Constitution ………………………………………………………………………………..18
I.5.2- Fonctionnement…………………………………………………………………………….19
I.6- Autres constructions…………………………………………………………………………….21
I.6.1- Les moteurs à rotor-disque…………………………………………………………………21
I.6.2- Les moteurs Lavet………………………………………………………………………….21
I.7- Nombre de fils…………………………………………………………………………………..22
I.7.1- Les moteurs à 4 fils (bipolaires)……………………………………………………………22
I.7.2- Les moteurs à 5 fils (unipolaires)…………………………………………………………..23
I.7.3- Les moteurs à 6 fils ………………………………………………………………………..23
I.7.4- Les moteurs à 8 fils………………………………………………………………………...23
Chapitre 2 : ALIMENTATION ET COMMANDE DES MOTEURS PAS A PAS…………………25
II.1- Circuit de commande…………………………………………………………………………..25
II.2- Alimentation et commande unipolaire…………………………………………………………25
II.3- Alimentation et commande bipolaire…………………………………………………………..27
II.3.1- Double pont en H……………………………………………………………………….....27
II.3.2- Alimentation symétrique…………………………………………………………………..28
II.4- Etude du courant dans un enroulement (phase) du moteur…………………………………….29
II.4.1- Etablissement du courant………………………………………………………………….29
II.4.2- Rupture du courant………………………………………………………………………...31
II.4.3- Problème de la constante de temps inductive et de la FCEM……………………………..32

Promotion 2010 Page ii


TABLE DES MATIERES

II.4.4- Conclusion………………………………………………………………………………...34
Chapitre 3 : CARACTERISTIQUES ET COMPORTEMENTS DU MOTEUR PAS A PAS………35
III.1- Caractéristiques des moteurs pas à pas ……………………………………………………….35
III.1.1- Caractéristiques mécaniques……………………………………………………………..35
a- Taille………………………………………………………………………………………..35
b- Masse……………………………………………………………………………………….35
c- Nombre de pas par tour Np…………………………………………………………………35
d- Précision du pas……………………………………………………………………………35
e- Inertie du rotor……………………………………………………………………………..35
f- Couple résiduel……………………………………………………………………………..35
III.1.2- Caractéristiques électriques et électromécaniques……………………………………….36
a- Résistance de phase……………………………………………………………………...36
b- Inductance de phase……………………………………………………………………..36
c- Courant de phase………………………………………………………………………..36
d- Couple de retenue……………………………………………………………………….36
e- Couple dynamique………………………………………………………………………37
f- Puissance nominale……………………………………………………………………...37
g- Force contre-électromotrice……………………………………………………………..37
III.2- Fonctionnement statique et dynamique……………………………………………………….38
III.2.1- Caractéristique couple-déflexion…………………………………………………………38
III.2.2- Caractéristiques de couple-vitesse………………………………………………………..39
III.2.3- Comportement dynamique du moteur……………………………………………………40
III.3- Comparaison sur les différents types de moteurs pas à pas…………………………………...42
III.3.1- Comparaison entre moteur bipolaire et unipolaire……………………………………….42
a- Moteur bipolaire………………………………………………………………………42
b- Moteur unipolaire……………………………………………………………………..43
III.3.2- Comparaison sur les trois types…………………………………………………………..44

PARTIE 2 : METHODOLOGIE

Chapitre 1 : AMELIORATIONS POUR AVOIR UNE MEILLEURE PERFORMANCE DU


MOTEUR………………………………………………………………………………………………46
I.1- Introduction……………………………………………………………………………………..46
I.2- Mode de commande…………………………………………………………………………….46
I.2.1- Mode 4 : mode demi-pas amélioré…………………………………………………………46
I.2.2- Mode 5 : mode quart de pas………………………………………………………………..47
I.2.3- Mode 6 : mode micropas …………………………………………………………………..48
I.3- Améliorations pour l’alimentation……………………………………………………………...50
I.3.1- Alimentations en tension…………………………………………………………………..50
a- Résistance additionnelle……………………………………………………………………50
b- Alimentation bitension……………………………………………………………………..51
I.3.2- Alimentations en courant…………………………………………………………………..52
I.4- Remarque……………………………………………………………………………………….55
I.5- Conclusion………………………………………………………………………………………55
Chapitre 2 : ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT
PARALLELE DE L’ORDINATEUR…………………………………………………………………57
II.1- Aspect matérielle du port parallèle……………………………………………………………57
II.1.1- Présentation du port parallèle……………………………………………………………..57

Promotion 2010 Page iii


TABLE DES MATIERES

II.1.2- Brochage et désignation…………………………………………………………………..58


II.1.3- Caractéristiques électriques du port parallèle……………………………………………..59
II.2- Extrait de circuits intégrés pour la commande de l’étage de puissance……………………….60
II.3- Utilisation d’un circuit intégré spécialisé SAA 1027 pour la commande unipolaire………….61
II.3.1- Présentation du SAA 1027………………………………………………………………..61
II.3.2- Etude de la carte d’interface………………………………………………………………64
a- Sortie du port parallèle……………………………………………………………………66
b- Entrée du SAA 1027………………………………………………………………………67
c- Polarisation du SAA 1027………………………………………………………………...69
d- Sortie du SAA 1027 et alimentation du moteur…………………………………………..71
e- Amélioration du circuit……………………………………………………………………73
Chapitre 3 : PROGRAMMATION DU PORT PARALLELE PAR LE LANGAGE C++…………..77
III.1- Aspect logiciel du Port parallèle ……………………………………………………………..77
III.1.1- Les modes de fonctionnement du port parallèle………………………………………….77
III.1.2- Adressage du port :……………………………………………………………………….77
a- Le port DATA…………………………………………………………………………….78
b- Le port STATUS………………………………………………………………………….79
c- Le port CONTROL……………………………………………………………………….79
III.1.3- Programmation du Port parallèle sous Windows XP……………………………… ……79
III.2- Le langage C++……………………………………………………………………………….81
III.2.1- Introduction………………………………………………………………………………81
III.2.2- Les spécificités de C++…………………………………………………………………..82
III.2.3- Utilisation des fonctions d’écriture et lecture sur le port…………………………………82
III.3- La programmation orientée objet (POO)……………………………………………………...84
III.3.1- Introduction………………………………………………………………………………84
III.3.2- Objet……………………………………………………………………………………...84
III.3.3- Encapsulation…………………………………………………………………………….84
III.3.4- Classe……………………………………………………………………………………..85
III.3.5- Héritage…………………………………………………………………………………..85
III.4- Création d’une classe « ParallelPort » pour la gestion du port parallèle……………………..86
III.4.1- Attribut…………………………………………………………………………………...86
III.4.2- Méthodes…………………………………………………………………………………86
III.4.3- Définition de la classe……………………………………………………………………87

PARTIE 3 : APPLICATION

Chapitre 1 : REALISATION DE LA CARTE D’INTERFACE……………………………………..89

I.1- Alimentation…………………………………………………………………………………….89
I.1.1- Le courant que doit fournir l’alimentation…………………………………………………89
I.1.2- Transformateur……………………………………………………………………………..89
I.1.3- Redressement et filtrage……………………………………………………………………90
I.1.4- Alimentation du circuit…………………………………………………………………….91
I.2- Radiateurs………………………………………………………………………………………92
I.3- Réalisation pratique…………………………………………………………………………….93
Chapitre 2 : EXEMPLE D’APPLICATION : SYSTEME DE POSITIONNEMENT SUR UN PLAN
(X,Y)………………………………………………………………………………………….95
II.1- But et limite……………………………………………………………………………………95

Promotion 2010 Page iv


TABLE DES MATIERES

II.2- Réalisation du système mécanique…………………………………………………………….96


II.3- Calcul du nombre de pas en fonction de la position du point………………………………….97
II.3.1- Théoriquement…………………………………………………………………………….97
II.3.2- Pratiquement………………………………………………………………………………98
Chapitre 3 : PROGRAMMATION DE LA COMMANDE DE POSITIONNEMENT ……………100
III.1- Introduction………………………………………………………………………………….100
III.2- Faire tourner le moteur avec une vitesse et un nombre de pas connus………………………100
III.2.1- Ligne de programme utilisant la classe ParallelPort……………………………………101
III.2.2- Précision des attentes sous Windows…………………………………………………...102
a- Notion de temps partagé et temps réel…………………………………………………..103
b- Conclusion……………………………………………………………………………….103
III.3- Création de classes pour contrôler le déplacement et la position du point sur les deux axes..104
III.3.1- Introduction …………………………………………………………………………….104
III.3.2- Classe Point …………………………………………………………………………….104
III.3.3- Classe Moteur …………………………………………………………………………..105
III.3.4- Utilisation dans main()………………………………………………………………….108
III.4- Utilisation de la console……………………………………………………………………..111
III.4.1- 1 point…………………………………………………………………………………...112
III.4.2- Séquence de points……………………………………………………………………...113
III.4.3- Remettre à zéro………………………………………………………………………….113
III.5- Conclusion…………………………………………………………………………………...113

CONCLUSION ……………………………………………………………………………………. 114


BIBLIOGRAPHIE ET WEBOGRAPHIE
ANNEXES

Promotion 2010 Page v


LISTE DES FIGURES

Liste des figures


PARTIE 1
Figure 1-1 : Moteur pas à pas (32 dents rotoriques) inventé par C.I. WALKER en 1919
Figure 1-2 : Flux induit dans une bobine
Figure 1-3 : Les deux faces de la bobine d’après le sens du courant
Figure 1-4 : Action d’un champ magnétique sur un barreau aimanté
Figure 1-5 : Principe d’un moteur pas à pas à aimant permanent
Figure 1-6 : Représentation schématique d’un moteur bipolaire
Figure 1-7 : Moteur bipolaire en mode monophasé
Figure 1-8 : Moteur bipolaire en mode biphasé
Figure 1-9 : Moteur bipolaire en mode demi-pas
Figure 1-10 : Représentation schématique d’un moteur unipolaire
Figure 1-11 : Moteur unipolaire en mode monophasé
Figure 1-12 : Moteur unipolaire en mode biphasé
Figure 1-13 : Moteur unipolaire en mode demi-pas
Figure 1-14 : Moteur à réluctance variable
Figure 1-15 : Rotor à 2 pôles, 5 dents par pôle
Figure 1-16 : Structure interne d’un moteur pas à pas hybride
Figure 1-17 : Moteur hybride
Figure 1-18 : Moteur hybride en mode monophasé
Figure 1-19 : Moteur hybride en mode biphasé
Figure 1-20 : Moteur à rotor-disque
Figure 1-21 : Moteur Lavet
Figure 1-22 : Configuration interne des bobines du moteur
Figure 1-23 : Circuit de commande d’un moteur unipolaire
Figure 1-24 : Chronogramme des impulsions en mode monophasé pour moteur unipolaire
Figure 1-25 : Chronogramme des impulsions en mode biphasé pour moteur unipolaire
Figure 1-26 : Double pont en H pour moteur bipolaire
Figure 1-27 : Chronogramme des impulsions en mode monophasé pour moteur bipolaire
Figure 1-28 : Chronogramme des impulsions en mode biphasé pour moteur bipolaire
Figure 1-29 : Commande d’un moteur bipolaire avec alimentation symétrique
Figure 1-30 : Schéma équivalent pour une phase
Figure 1-31 : Apparition du courant lors de la fermeture du circuit
Figure 1-32 : Disparition du courant lors de l’ouverture du circuit
Figure 1-33 : Courant dans les deux enroulements en plein pas pour une faible fréquence de
commutation
Figure 1-34 : Courant dans les deux enroulements en plein pas pour une fréquence de
commutation élevée
Figure 1-35 : Caractéristique couple-déflexion
Figure 1-36 : Domaines de fonctionnement
Figure 1-37 : Position du rotor en fonction du temps
Figure 1-38 : Décrochage du moteur
Figure 1-39 : Fonctionnement en survitesse
Figure 1-40 : Courbes de couples moteurs pour différents couplages à pertes Joule égales

Promotion 2010 Page vi


LISTE DES FIGURES

PARTIE 2
Figure 2-1 : Mode demi-pas amélioré
Figure 2-2 : Forme d’onde réelle en mode demi-pas amélioré
Figure 2-3 : Mode quart de pas
Figure 2-4 : Mode quart de pas avec compensation de couple
Figure 2-5 : Mode micropas
Figure 2-6 : Allure du courant des 2 phases pour 16 micropas/pas
Figure 2-7 : Montage avec résistance additionnelle
Figure 2-8 : Montage pour une extinction plus rapide
Figure 2-9 : Montage avec alimentation bitension
Figure 2-10 : Montage avec hacheur
Figure 2-11 : Hachage du courant, réglage par Imax et Imin
Figure 2-12 : Hachage du courant, réglage par Imax et temps de coupure t0 fixe
Figure 2-13 : Hachage du courant, réglage par Imax et remise en conduction périodique
Figure 2-14 : Effet du type d’alimentation sur la caractéristique mécanique
Figure 2-15--a : Connecteur centronics
Figure 2-15--b : Connecteur DB 25
Figure 2-16 : Polarisation de l’entrée du port parallèle
Figure 2-17 : Entrée du port parallèle optocouplée
Figure 2-18 : Schéma interne du SAA 1027
Figure 2-19 : Diagramme des impulsions
Figure 2-20 : Schéma de principe de la carte
Figure 2-21 : Polarisation de l’optocoupleur
Figure 2-22 : Circuit de commande d’un entrée du SAA 1027
Figure 2-23 : Polarisation du SAA 1027
Figure 2-24 : Relation entre IQ, VB et RB
Figure 2-25 : Relation entre IQ, VB et PRB
Figure 2-26 : Schéma des phases alimentés du moteur
Figure 2-27 : Alimentation des phases avec résistance de limitation de courant
Figure 2-28 : Commande du relais
Figure 2-29 : Recherche de l’adresse de base du port LPT1
Figure 2-30 : Organigramme du fonctionnement d’Inpout32.dll

PARTIE 3
Figure 3-1 : Schéma géneral de l’alimentation
Figure 3-2 : Configuration du moteur en mode unipolaire
Figure 3-3 : Système de guidage du porte-outil
Figure 3-4 : Système S1
Figure 3-5 : Déplacement du point pour un pas
Figure 3-6 : Photo de la réalisation
Figure 3-7 : Diagramme des impulsions
Figure 3-8 : Syntaxe de l’instruction switch
Figure 3-9 : Affichage du menu dans la console
Figure 3-10 : Affichage à l’écran

Promotion 2010 Page vii


LISTE DES TABLEAUX

Liste des tableaux

PARTIE 1
Tableau 1-1 : Connexion des bobinages…………………………………………………………..24

Tableau 1-2 : tableau de commande pour moteur unipolaire…………………………………..26

Tableau 1-3 : tableau de commande pour moteur bipolaire……………………………………27

Tableau 1-4 : comparaison des trois types de moteurs……………………………………….…44

PARTIE 2
Tableau 2-1 : Brochage et désignation de l’interface parallèle……………………………..…58

Tableau 2-2 : Table de vérité du SAA 1027…………………………………………………….…63

PARTIE 3
Tableau 3-1 : Table de vérité de l’opérateur OU……………………………………………….102

Tableau 3-2 : Liste des valeurs à envoyer au port……………………………………………...102

Promotion 2010 Page viii


LISTE DES SYMBOLES ET NOTATIONS

Liste des symboles et notations


Symboles / Notations Désignation Unité
θ Angle de pas [°]
α Déflexion [rad]
Np Nombre de pas par tour [pas / tour]
f Fréquence des impulsions [pas / s]
n Vitesse de rotation du moteur [tour / s]
B Induction magnétique [Tesla]
Г Couple électromagnétique [N.m]
R Réluctance [H-1]
μ Perméabilité magnétique [H / m]
μ0 Perméabilité magnétique du vide [H / m]
N Nombre de spire [spire]
Ф Flux d’induction magnétique [Wb]
nr Nombre de dents au rotor [dent]
ns Nombre de dents au stator [dent]
Nd Nombre de dents sur un demi-rotor [dent]
p Nombre de systèmes de pôles
R Raideur [N.m / rad]
VCEsat Tension de saturation entre le collecteur et [V]
l’émetteur
VBEsat Tension de saturation entre la base et l’émetteur [V]
IB Courant de base [A]
Icmax Courant maximal du collecteur [A]
β ou hFE Gain
VF Tension directe de la diode [V]
VLED Tension de seuil de la diode [V]
Kc Constante de couple
Ic Intensité composé [A]
Cr Couple de retenue [N.m]
Iph Intensité par phase [A]
E Force électromotrice [V]
ω Vitesse angulaire de l’arbre du moteur [rad/s]
Kv Constante de vitesse [V/tour/s]
FCEM Force contre-électromotrice [V]
C.I. Circuit Intégré
LPT Line Printing Terminal
PC Personal Computer (ordinateur)
BIOS Basic Input/Output System
Ack Acknowledgement
H Niveau logique haut

Promotion 2010 Page ix


LISTE DES SYMBOLES ET NOTATIONS

L Niveau logique bas


L Inductance du bobinage [H]
r Résistance du bobinage [Ω]
τ Constante de temps [s]
VOH Tension de sortie à l’état haut [V]
VOL Tension de sortie à l’état bas [V]
VIH Tension d’entrée à l’état haut [V]
VIL Tension d’entrée à l’état bas [V]
IOH Courant de sortie à l’état haut [mA]
IOL Courant de sortie à l’état bas [mA]
IIH Courant d’entrée à l’état haut [mA]
IIL Courant d’entrée à l’état bas [mA]
Vcc1 Tension d’alimentation 5V [V]
Vcc2 Tension d’alimentation 12V [V]
Vccm Tension d’alimentation 16V [V]
OS Système d’exploitation
DLL Dynamic Link Library
Imoteur Courant consommé par un moteur [A]
U1N Tension primaire du transformateur [V]
U2N Tension secondaire du transformateur [V]
S Puissance apparente du transformateur [VA]
DEL Diode électroluminescente
CPU Central Processing Unit ou processeur
IDE Environnements de développement
SPP Standard Parallel Port
EPP Enhanced Parallel Port
ECP Extended Capacity Port
POO Programmation Orienté Objet
TTL Total Transistor Logic
LS Low power Schottky
CMOS Complementary Metal Oxyde Semi-conductor
T Entrée Trigger du SAA 1027
R Entrée de l’étage de configuration du sens de
rotation du SAA 1027
S Entrée de mis en marche du SAA 1027
Q1 à Q4 Sorties du SAA 1027
M1 Moteur N°1
M2 Moteur N°2

Promotion 2010 Page x


INTRODUCTION

Introduction

Bien que les moteurs pas à pas sont utilisés dans de nombreux applications et depuis
une trentaines d’années déjà, par rapport aux autres moteurs, ils sont moins connus. Or, même
si leur commande est beaucoup plus complexe, ils offrent avec un faible coût, un contrôle de
vitesse ou de position en boucle ouverte, typiquement dans les systèmes de positionnement.
Ils sont ainsi beaucoup utilisés dans le domaine de la robotique.

Il existe plusieurs façons de commander ces moteurs, mais dans tous les cas, on a
besoin d’un circuit de commande et d’alimentation. La performance des moteurs dépend
considérablement de ces derniers.

Ainsi, le présent mémoire intitulé « Etude et commande de moteurs pas à pas par
ordinateur pour un positionnement sur le plan » a pour but :

- D’étudier les différents types et commandes de moteurs pas à pas tout en apportant
les améliorations nécessaires.
- D’étudier et de réaliser une carte d’interface entre PC, par l’intermédiaire du port
parallèle et moteurs pas à pas, en utilisant des circuits intégrés spécialisés.
- D’écrire un programme en C++ pour l’application d’une commande de système de
positionnement sur un plan, composé du port parallèle d’un PC, d’une carte
d’interface et de deux moteurs pas à pas.

Le travail sera organisé en trois grandes parties. En premier lieu, on va voir la


généralité sur les moteurs pas à pas. Ensuite, la deuxième partie concerne la méthodologie où
on apportera les améliorations nécessaires à la commande et à l’alimentation d’une part, les
études nécessaires à la réalisation du système de commande de positionnement d’autre part.
Enfin, on terminera par l’application pour apprécier la précision du système.

Promotion 2010 Page 1


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

Chapitre 1 : PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

I.1- Introduction : historique

Déjà vers les années 1850, les premiers moteurs pas à pas furent employés naturellement,
dans les systèmes d’horlogerie. Mais en 1936, Marius Lavet inventa spécialement pour
l’industrie horlogère. En 1919, une invention de l’ingénieur écossais C.L. WALKER fit l’objet
d’un dépôt de brevet au Royaume-Uni, la structure proposée est présentée sur la figure ci-
dessous.

Figure 1-1 : Moteur pas à pas (32 dents rotoriques) inventé par C.I. WALKER en 1919

Source : Historique des machines électromagnétiques – Bernard Multon

Ces moteurs ne se sont développés qu’à partir de 1960, dû à l’apparition des


microprocesseurs, aux progrès de l’électronique de puissance et des matériaux. Ils permettent
d’obtenir une grande précision grâce à leur conception mécanique et électrique, d’où, on les
utilise surtout dans les applications demandant un positionnement précis, en boucle ouverte (sans
asservissement).

I.2- Généralité

I.2-1 Définitions :

Le moteur pas à pas également connu sous le nom de « stepping motor » est un dispositif
électromécanique qui convertit les impulsions électriques en un mouvement angulaire. C'est-à-
dire qu’à chaque impulsion que le moteur recevra sur son enroulement statorique, son axe (rotor)
effectuera un angle θ déterminé. Un tour complet de l’axe peut donc être décomposé en un
nombre connu de pas N p .

Promotion 2010 Page 3


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

Le moteur pas à pas est alimenté par une tension continue. Pour faire tourner le moteur
dans un sens ou dans l’autre, il faudra commuter cette tension successivement sur les différents
bobinages du stator et suivant un ordre bien défini.

θ est appelé « angle de pas » ou simplement « pas », son unité est le degré et s’obtient par la
formule suivante :

360
=θ [ °] (I - 1)
Np

Où N p est le nombre de pas par tour, donc le nombre de pas nécessaire pour faire une rotation

complète.

360
Np = [ pas / tour ] (I - 2)
θ
Cet angle peut varier dans de grande proportion, selon le moteur. Les valeurs les plus
couramment rencontrées sont :

 θ = 0,9 ° ; soit N p = 400 [pas par tour]

 θ = 1,8 ° ; soit N p = 200 [pas par tour]

 θ = 3 ,6 ° ; soit N p = 100 [pas par tour]

 θ = 7,5 ° ; soit N p = 48 [pas par tour]

 θ = 15 ° ; soit N p = 24 [pas par tour]

On voit que la précision de ces moteurs peut-être très grande.

La vitesse de rotation du moteur dépend de la fréquence f des impulsions et s’obtient


par la formule suivante :

f
n= [tours / s ] (I - 3)
Np

f × 60
n= [tours / min ] (I - 4)
Np

Promotion 2010 Page 4


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

f est la fréquence ou le nombre de pas par seconde.

Les tensions d’alimentation des moteurs pas à pas et le courant consommé varient dans
de grandes proportions. Les tensions d’alimentation varient de 3 [V] continues à plusieurs
dizaines de Volts, la consommation est de 0,2[ A] à plusieurs Ampères, selon la résistance
ohmique des bobinages. Le couple développé est proportionnel au courant dans les bobinages, le
plus souvent exprimé en kilogrammes par centimètre [kg.cm-1]. Pour les moteurs à faible
couple, il conviendra d’opérer, à l’aide de pignons, un réducteur de vitesse afin d’augmenter le
couple et la précision en même temps.

Les moteurs pas à pas existent en différentes tailles, environ entre 1 cm et plus d’une
dizaine de centimètres de diamètre. Tout dépendra des applications dans lesquelles ils seront
utilisés. Les petites tailles seront utilisées dans les applications qui demandent un faible couple,
pour un couple plus important, des plus grandes tailles seront employées.

Les domaines d’applications les plus connus des moteurs pas à pas sont :

 imprimantes
 scanners
 photocopieurs
 lecteur de disque
 traceurs
 machines à coudre
 robotiques
 astronomie
 horlogerie …

I.2-2 Principales avantages et inconvénients du moteur pas à pas :

Avantages :

• L’angle de rotation du moteur est proportionnel au nombre d’impulsion d’entrée. On peut


déterminer l’angle exact de rotation.
• Existence d’un couple à l’arrêt appelé « couple de maintien » (si les enroulements sont
alimentés).
• Fort couple à basse vitesse.

Promotion 2010 Page 5


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

• Durée de vie quasi illimitée puisque l’usure mécanique est pratiquement inexistante
(absence de frottement), sans nécessiter d’entretien. Par conséquent, la durée de vie dépend de
celle du roulement.
• Commande en boucle ouverte, qui signifie qu’aucune rétroaction (boucle de retour) n’est
nécessaire.
• Positionnement précis.
• Un éventail de vitesse peut être réalisé étant donné que la vitesse est proportionnelle à la
fréquence d’impulsion. Il est possible de le faire tourner très lentement en contrôlant la vitesse.
• Faible prix.

Inconvénients :

• Vitesse de rotation réduite. Le moteur peut en effet ne pas suivre toutes les impulsions de
commande.
• Risque de perte de pas (et donc de dysfonctionnement du contrôle en position) en cas de
perturbation anormale notamment de la charge ou de fréquence excessive des impulsions.
• Des résonances peuvent se produire si la commande n’est pas bien contrôlée.
• Vibrations souvent génératrices de bruit acoustique.

En fonction du phénomène physique qui est à l’origine du couple, on distingue 3 groupes


de moteur pas à pas :

 Les moteurs à aimant permanent.


 Les moteurs à réluctance variable.
 Les moteurs hybrides.

I.3- Les moteurs pas à pas à aimant permanent


I.3.1- Phénomènes magnétiques

Pour comprendre le fonctionnement d’un moteur à aimant permanent, faisons un petit


rappel sur les phénomènes magnétiques.

Un aimant permanent ou tout simplement aimant est un objet fabriqué dans un matériau
magnétique dur, c’est-à-dire dont le champ rémanent et l'excitation coercitive sont grands. Cela
lui donne des propriétés particulières liées à l'existence du champ magnétique, comme celle
d'exercer une force d'attraction sur tout matériau ferromagnétique.
Dans toute zone de l’espace avoisinant un aimant ou un conducteur parcouru par un courant
Promotion 2010 Page 6
PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

électrique se manifeste un phénomène physique dit magnétique, une aiguille aimantée se


trouvant dans cette zone est soumise à une force appelée force magnétique.
Un aimant possède deux pôles appelés pôles magnétiques, le pôle nord et le pôle sud. Deux pôles
de même nom se repoussent et deux pôles de nom contraire s’attirent.

En faisant passer un courant électrique dans une bobine, on crée un champ magnétique

B parallèlement à son axe. Le sens du champ d’induction magnétique est déterminé par la règle
de l’observateur d’Ampère ou du tire-bouchon. On obtient ainsi sur les deux faces de la bobine

deux pôles différents tel que le pôle nord soit dans le sens de l’induction B .

Figure 1-2 : Flux induit dans une bobine

Figure 1-3 : Les deux faces de la bobine d’après le sens du courant



En plaçant un barreau aimanté dans un champ magnétique uniforme B , il s’oriente
 
parallèlement à B tel que le pôle nord soit dans le sens de B .

Figure 1-4 : Action d’un champ magnétique sur un barreau aimanté

Promotion 2010 Page 7


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

Le barreau aimanté présente un moment magnétique M . La rotation de l’aimant est due à un
 
couple électromagnétique Г qui tend à rendre les vecteurs M et B colinéaires et en position
d’équilibre d’après la règle du flux maximal.

 
Γ = M ∧ B = M × B × sin α [ N .m ] (I - 5)

Le moteur à aimant permanent fonctionne sur ce principe. L’induction B est créée par les
bobinages statoriques et le barreau aimanté représente le rotor. Le rotor est en aimant permanent

avec beaucoup de pôles. On impose la direction et le sens de B , donc la position du rotor, avec
le sens du courant dans les enroulements.

La figure ci-dessous montre le principe d’un moteur à aimant permanent. Les bobines de même
couleur sont reliées en série.

Figure 1-5 : Principe d’un moteur pas à pas à aimant permanent

Le moteur à aimant permanent se subdivise en deux types, le moteur unipolaire et le


moteur bipolaire.

I.3.2- Moteur pas à pas bipolaire

Le terme bipolaire vient du faite que, pour faire tourner l’axe, il faut inverser la polarité
de l’alimentation de leurs bobines, selon une séquence bien précise. En inversant les polarités
des enroulements statoriques, on inverse les pôles nord et sud au stator. Ces moteurs se
reconnaissent au 4 fils qui sortent de leurs corps.

Promotion 2010 Page 8


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

Pour comprendre comment on procède pour faire tourner l’axe du moteur, analysons un
moteur théorique muni de 4 bobines excitatrices seulement et un rotor avec une paire de pôle,
comme la montre la figure 1-6.

Figure 1-6 : Représentation schématique d’un moteur bipolaire

Chaque bobine est composée d’un seul fil, on parle d’enroulements unifilaires.
Comme pour chaque type de moteur, le modèle bipolaire peut être commandé en mode
monophasé, biphasé ou demi-pas.

N.B : Les phases correspondent aux différentes sources d'énergies alimentant les bobinages.
Généralement un moteur bipolaire est un moteur 2 phases, un moteur unipolaire est un
moteur 4 phases.

Notations :

AB : le sens du courant va de A vers B


CD : le sens du courant va de C vers D
BA : le sens du courant va de B vers A
DC : le sens du courant va de D vers C

Mode 1 : mode monophasé

Egalement connue sous le nom de "one phase on full step" ou une phase à la fois en pas
entier. Cette séquence de commande ne réclame que l’alimentation d’un seul enroulement à
chaque pas.
La séquence de commande est : AB / CD / BA / DC / AB . . .

Promotion 2010 Page 9


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

Pour obtenir une rotation dans la direction opposée, il suffit d’inverser les séquences de
commande, donc : AB / DC / BA / CD / AB . . .

Figure 1-7 : Moteur bipolaire en mode monophasé

En mode monophasé, le couple développé par le moteur n’est pas très important puisqu’un seul
enroulement est alimenté pour effectuer un pas.

Mode 2 : mode biphasé

Aussi appelé "two-phase-on full step" ou deux phases à la fois en pas entier. Il consiste à
alimenter deux enroulements à la fois de façon à ce que le rotor se positionne entre deux pôles.
La séquence sera : AB et CD / CD et BA / BA et DC / DC et AB / AB et CD . . .
et pour l’autre sens : AB et CD / DC et AB/ BA et DC/ CD et BA/ AB et CD . . .

Figure 1-8 : Moteur bipolaire en mode biphasé

Ce mode de commande est celui qui procure le couple le plus élevé car deux phases sont
alimentées en même temps.

Mode 3 : mode demi-pas

C’est un mélange de mode biphasé et monophasé. Le moteur est commandé en biphasé,


puis en monophasé, puis en biphasé . . .

Promotion 2010 Page 10


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

La séquence sera donc : AB / AB et CD / CD / CD et BA / BA / BA et DC / DC / DC et AB . . .


et pour l’autre sens : AB / DC et AB / DC / BA et DC / BA / CD et BA / CD / AB et CD . . .

Figure 1-9 : Moteur bipolaire en mode demi-pas

On arrive ainsi à doubler le nombre de pas et à augmenter sa précision mais le couple devient
irrégulier. Dans ce cas, si la charge est importante, des pas risquent de « sauter ».

En constatant les figures, on voit que ce moteur a un angle de pas de 90° ou 4 pas par tour
en pas entier. Dans les moteurs réels le nombre de pôles est multiplié afin de réduire l’angle de
pas à quelques degrés seulement. Le nombre de phases et la séquence de commande restants,
quand à eux, inchangés. Plus le nombre de pôles sur le rotor et de bobines présentes dans le
stator sera important, plus grand sera le nombre de pas par tour du moteur.

Pour le moteur bipolaire, le nombre de phases est égal au nombre d’enroulements (en général 2
phases). Le nombre de pas par tour Np est obtenu par la formule suivante.

Np = nombre de phases au stator × nombre de pôles au rotor (I - 6)

I.3.3- Moteur pas à pas unipolaire

Les enroulements ont un point milieu et sont alimentés avec une polarité toujours de
même signe, attirant toujours le même pôle, d’où le nom « unipolaire ». Afin d’inverser le sens
du courant, les enroulements sont réalisés à l’aide de deux fils dont l’une des extrémités est relié
à la masse (ou au plus de l’alimentation). Pour obtenir la rotation de l’axe du moteur, il suffit
d’alimenter les enroulements à tour de rôle. Ils se reconnaissent au 5 ou 6 fils sortant de leurs
corps.

Promotion 2010 Page 11


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

Pour comprendre comment on procède pour faire tourner l’axe du moteur, analysons un
moteur théorique de 4 pas par tour comme la montre la figure 1-10.

Figure 1-10 : Représentation schématique d’un moteur unipolaire

Chaque bobine est composée de deux fils, on parle d’enroulements bifilaires.


Comme pour le moteur précédent, le modèle unipolaire peut être alimenté sous trois séquences
différentes.

Notations :

A : le courant entre par A

B : le courant entre par B

C : le courant entre par C

D : le courant entre par D

Mode 1 : mode monophasé

On alimente successivement chaque demi-enroulement.


La séquence de commande est : A / C / B / D / A . . .
Pour obtenir une rotation dans la direction opposée, il suffit d’inverser les séquences de
commande, donc : A / D / B / C / A . . .

Promotion 2010 Page 12


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

Figure 1-11 : Moteur unipolaire en mode monophasé

Mode 2 : mode biphasé

On alimente successivement deux demi-enroulement.


Voici la séquence à suivre : A et C / C et B / B et D / D et A / A et C . . .
et pour l’autre sens : A et C / D et A / B et D / C et B / A et C . . .

Figure 1-12 : Moteur unipolaire en mode biphasé

Mode 3 : mode demi-pas

On obtient le mode demi-pas en associant les modes 1 et 2.


Ce qui nous donne la séquence suivante : A / A et C / C / C et B / B / B et D / D / D et A / A . . .
et pour l’autre sens : A / D et A / D / B et D / B / C et B / C / A et C / A . . .

Figure 1-13 : Moteur unipolaire en mode demi-pas

Promotion 2010 Page 13


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

Bien que la commande d’un moteur unipolaire est plus facile qu’un bipolaire, avec le
double enroulements, ce moteur est plus coûteux et plus encombrant. Un moteur unipolaire
présentera, à dimension équivalentes, un couple moins important qu’un moteur bipolaire. Ce
moteur est idéal pour les petites puissances.

Pour le moteur unipolaire, le nombre de phases est égal au nombre de demi-enroulements (en
général 4 phases). Le nombre de pas par tour Np est obtenu par la formule suivante.

Np = nombre de phases au stator × nombre de paires de pôles au rotor (I - 7)

I.3.4- Conclusion

Pour conclure cette brève description, signalons que ces moteurs (bipolaires et unipolaires) ne
peuvent présenter des vitesses de rotation très élevées. Cette limitation est en grande partie due à
la tension induite par le rotor dans le stator et produisant une force contre-électromotrice.

Quand des accélérations et des vitesses plus élevées sont nécessaires on utilisera de préférence
les moteurs à reluctance variable, dont le rotor est, comme nous le verrons dans le paragraphe
suivant, en fer doux non magnétique, et qui n’induit donc pas de tension dans le stator.

I.4- Les moteurs pas à pas à réluctance variable


Un moteur à reluctance variable possède un rotor en fer doux non magnétisé avec moins
de pôles que le stator. Il utilise le principe physique du flux maximum, le rotor va se placer de
telle sorte que le flux magnétique qui le traverse soit maximum (il recherche la reluctance la plus
faible possible).

I.4.1- Introduction : circuit magnétique

Un circuit magnétique est constitué de matériaux ferromagnétiques de forte perméabilité,


destiné à canaliser le flux magnétique.

Réluctance d’un circuit magnétique homogène

Un circuit magnétique est dit homogène lorsqu’il est constitué d’un seul matériau avec une
section homogène. [ http://fr.wikipedia.org]

La réluctance du circuit magnétique est représentée par R . Il existe une relation permettant de
calculer sa valeur en fonction du matériau qui le constitue et de ses dimensions.

Promotion 2010 Page 14


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

1 l
ℜ= ×  H −1  (I - 8)
µ S
Où l est la longueur en [mètres]
S la section en [m²]
μ la perméabilité magnétique en [H/m] : μ = μ0 × μr
μ0 la perméabilité du vide et μr la perméabilité relative

Réluctance équivalente d’un entrefer

Pour un entrefer de faible épaisseur, la réluctance est donnée par

e
ℜ2 =  H −1  (I - 9)
µ0 × S 2

Avec e épaisseur de l'entrefer [m]


μ0 perméabilité du vide μ0 = 4π.10-7 [H/m]
S2 section de l'entrefer [m²]

Circuit magnétique avec entrefer

La réluctance de l’ensemble est ℜ = ℜ1 + ℜ2


R1 est la réluctance du circuit magnétique et R2 celle de l’entrefer avec

1 l −e
=
ℜ1 ×
µ0 × µr S1

Pour un entrefer de faible épaisseur, on peut considérer que S1 = S2 = S

l + e ( µr − 1)
ℜ=
d’où
µ r × µ0 × S
on voit que la réluctance R augmente avec l’épaisseur de l’entrefer e.

Promotion 2010 Page 15


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

La loi d’Ohm pour les circuits magnétiques s’écrit :

NI
φ=

où φ flux [Wb]

ℜ réluctance du circuit magnétique [H-1]

NI force magnétomotrice avec N : nombre de spires et I courant dans l’enroulement

Si des pièces du circuit magnétique sont mobiles, elles vont se placer de telle sorte que la
réluctance soit minimum et donc le flux maximum ce qui revient en fait à réduire les entrefers.

Dans un moteur, le circuit magnétique est constitué du stator, du rotor et des entrefers.

I.4.2- Constitution

Le rotor est fabriqué en acier doux non magnétique. Il n’est pas lisse et possède plusieurs
dents (pôles du rotor). Le stator est formé d’un empilage de tôles avec des encoches dans
lesquelles sont logés les bobinages. Les enroulements en série sont diamétralement opposés.

Le nombre de dents au rotor nr est différent du nombre de dents au stator ns avec nr < ns.

Figure 1-14 : Moteur à réluctance variable

Promotion 2010 Page 16


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

I.4.3- Fonctionnement

Le fonctionnement du moteur est assuré par un pilotage du type unipolaire et l’avance du


rotor est obtenue en excitant tour à tour une paire de pôles du stator. Lorsqu’on alimente une
paire de bobines, les pôles les plus proches des bobines alimentées se positionnent en face de ces
dernières de façon à ce que le flux qui la traverse soit maximal, donc réluctance minimale. A
chaque impulsion de courant sur une nouvelle paire de bobines, le rotor tourne d’un pas.

La figure 1-14 représente le schéma simplifié d’un tel moteur pas à pas. Le stator est
composé de 8 plots sur lesquels sont enroulés les bobinages, ce qui donne 4 phases, étant donné
qu’il faut au minimum 3 phases pour obtenir un cycle complet c’est-à-dire pour faire un tour. Le
rotor est composé de 6 dents. La séquence de commande est la même que celle d’un modèle
unipolaire et peut être commandé sous 3 séquences différentes.

Mode 1 : mode monophasé

A / C / B / D pour avoir le sens horaire et D / B / C / A pour l’autre sens.

Mode 2 : mode biphasé

pour un sens horaire : A et C / C et B / B et D / D et A

et pour l’autre sens : A et C / D et A / B et D / C et B

Mode 3 : mode demi-pas

pour un sens horaire : A / A et C / C / C et B / B / B et D / D / D et A

et pour l’autre sens : A / D et A / D / B et D / B / C et B / C / A et C

Le nombre de pas par tour Np est obtenu par la formule suivante :

ns × nr
Np = (I - 10)
ns − nr

ns : nombre de dents du stator

nr : nombre de dents du rotor

Dans l’exemple ci-dessus, on a ns = 8 et nr = 6 ce qui donne

Promotion 2010 Page 17


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

8× 6
=
Np = 24 [ pas ]
8−6
360 360 360 360
Ou, en regardant la figure : − = − =60° − 45° =
15° , donc c’est un moteur de 24
nr ns 6 8
pas.

I.5- Les moteurs pas à pas hybrides

C’est une combinaison des 2 types de moteurs à aimant permanent et à réluctance variable. Il est
donc à réluctance variable mais avec un rotor en aimant permanent.

I.5.1- Constitution

Le stator possède des pôles dentés. Le rotor est composé de deux demi-rotors séparés par
un aimant suivant la direction de l’axe de la machine.

Figure 1-15 : Rotor à 2 pôles, 5 dents par pôle

Source : Guide du technicien en électrotechnique – éd. Hachette Technique

La structure interne est donnée par la figure suivante :

Figure 1-16 : Structure interne d’un moteur pas à pas hybride


Promotion 2010 Page 18
PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

I.5.2- Fonctionnement

Prenons un modèle très simple qui produit 12 pas par tour comme le montre la figure
1-17. Le rotor est composé de 2 demi-rotors ayant chacune 3 dents. Entre les deux pièces se
trouve un aimant permanent magnétisé dans le sens de l'axe du rotor, créant ainsi un pôle sud sur
une pièce, et un pôle nord sur l'autre. Le stator consiste en un tube ayant quatre dents à l'intérieur
de celui-ci. Les bobines sont enroulées autour des dents du stator.

Figure 1-17 : Moteur hybride

Lorsqu' aucun courant ne circule dans les bobines, le rotor va prendre une des positions
montrées dans les diagrammes. C'est parce que l'aimant permanent du rotor essaie de minimiser
la réluctance du champ magnétique. Le couple qui tend à maintenir le rotor dans ces positions est
habituellement petit et est appelé « couple de détente » ou « couple résiduel ». Le moteur ci-
dessous aura 12 positions de détente possibles.
Si le courant circule dans une paire de bobines du stator, comme le montre la figure 1-17, les
pôles résultants vont attirer les dents de la polarité inverse les plus proches, à chaque extrémité
du rotor. Il y a maintenant trois positions stables pour le rotor, le même nombre que le nombre de
dents sur le demi-rotor. Maintenant, le couple requis pour déplacer le rotor de sa position stable
est beaucoup plus grand, et est appelé "couple de maintien" ou « «couple de retenue ».
La séquence de commande est la même que celle d’un modèle bipolaire et peut être
commandé sous 3 séquences différentes. Pour avoir l’autre sens, il suffit d’inverser les séquences
de commande.

Mode 1 : mode monophasé


Les bobines opposées sont reliés en séries. Les flèches désignent les sens du courant dans
les enroulements.
Promotion 2010 Page 19
PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

Pour simplifier l’écriture, on va désigner par A : le courant entre par A


B : le courant entre par B
C : le courant entre par C
D : le courant entre par D
La séquence est : A / C / B / D.

Figure 1-18 : Moteur hybride en mode monophasé

Après ces 4 étapes, le rotor a bougé d’une dent de stator.

Mode 2 : mode biphasé

La séquence est : A et C / B et C / B et D / A et D

Figure 1-19 : Moteur hybride en mode biphasé

Promotion 2010 Page 20


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

Mode 3 : mode demi-pas

A / A et C / C / B et C / B / B et D / D / A et D

Le nombre de pas par tour Np est obtenu par la formule suivante :

Np = 4.Nd (I - 11)

où Nd est le nombre de dents sur un demi-rotor.

Dans l’exemple ci-dessus, on a Nd = 3. D’où N p = 3 × 4 = 12 [ pas ]

I.6- Autres constructions


I.6.1- Les moteurs à rotor-disque

Un nouveau mode de construction comporte un rotor en forme de disque passant dans


l'entrefer du stator. Cette fois, une phase crée soit un ensemble de pôles nord, soit un ensemble
de pôles sud en face desquels viennent s’aligner les pôles opposés du disque rotorique. Ce
dernier est aimanté axialement de façon alternée. Les performances sont plus élevées, en
particulier une très faible inertie qui permet de très grandes accélérations.

Figure 1-20 : Moteur à rotor-disque

Source : Moteurs pas à pas – Bernard Multon

I.6.2- Les moteurs Lavet

Le moteur Lavet utilise un rotor bipolaire et une structure très simple qui permet une
miniaturisation aisée, il est couramment utilisé en horlogerie (dans les montres à aiguilles).

Promotion 2010 Page 21


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

Figure 1-21 : Moteur Lavet

Source : Les Micromachines – P.Minotti

I.7- Nombre de fils


Le nombre de fils sortants du moteur pas à pas peuvent être de 4, 5, 6 ou 8 fils. Ces fils
sont les extrémités des bobines à l’intérieur du moteur.

Figure 1-22 : Configuration interne des bobines du moteur

I.7.1- Les moteurs à 4 fils (bipolaires)

Bien que sur le schéma, 4 bobines ont été représentées, ce moteur agit comme s'il ne
possédait que 2 bobines. Ce moteur oblige d'alimenter soit une bobine à la fois, ou les deux en
même temps. À tout moment, donc, le moteur a la moitié ou la totalité de ses bobines alimentées,
ce qui a comme avantage de lui donner plus de force. Par contre, il est plus complexe de
contrôler un moteur bipolaire, au niveau de l'interface de puissance, puisqu'il faut inverser la
polarité de la bobine.

Promotion 2010 Page 22


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

I.7.2- Les moteurs à 5 fils (unipolaires)

Le moteur unipolaire est conçu de sorte que l'interface de puissance soit grandement
simplifiée, mais au détriment de la force. Le moteur comporte en quelque sorte deux bobines à
points centraux, ces derniers étant communs. Habituellement, on relie ces points centraux, et on
applique l'alimentation à un des 4 autres fils.

I.7.3- Les moteurs à 6 fils

Avec le moteur à 6 fils, on a alors réellement le choix de le contrôler comme un moteur


bipolaire, ou comme un moteur unipolaire. Dans le premier cas, on ignore simplement les
connexions centrales, et dans le second cas, on relie les deux points centraux à la masse, pour
alimenter l'un après l'autre les 4 autres fils.

I.7.4- Les moteurs à 8 fils

Le moteur à 8 fils est celui qui permet le plus de flexibilité, quant au nombre de façons
différentes de le contrôler.

Les différentes connexions possibles des bobines sont montrées dans le tableau suivant :

Promotion 2010 Page 23


PRINCIPE DE FONCTIONNEMENT DU MOTEUR PAS A PAS

Connexion bipolaire en Connexion bipolaire en série. Connexion unipolaire


parallèle.

Tableau 1-1 : Connexion des bobinages

Promotion 2010 Page 24


ALIMENTATION ET COMMANDE DES MOTEURS PAS A PAS

Chapitre 2 : ALIMENTATION ET COMMANDE DES MOTEURS PAS A


PAS

II.1- Circuit de commande

Le circuit de commande d'un moteur pas à pas se compose de deux parties : le


séquenceur, qui commande l'ordre des commutations des courants dans les enroulements, celui-
ci peut être un microcontrôleur, un ordinateur ou un circuit intégré spécialisé ; et l'étage de
puissance, qui injecte le courant imposé par le séquenceur. L'étage de puissance peut fonctionner
en tout ou rien, ou en découpage.

II.2- Alimentation et commande unipolaire

Le circuit électronique de commande de ce moteur est simple puisqu’il ne réclame, dans


sa version la plus simple, que quatre transistors utilisés en commutation.

Figure 1-23 : Circuit de commande d’un moteur unipolaire

Notations :

B1 : bobinage 1 ; P1 : phase 1 ; B2 : bobinage 2 ; P2 : phase 2


Il suffit d’alimenter, en reliant à la masse, l’extrémité de l’une des phases, l’autre extrémité étant
connectée en permanence au + de l’alimentation. On voit qu’un seul transistor sera nécessaire
pour cette commutation. Le moteur comprenant quatre bobinages donc quatre transistors seront

Promotion 2010 Page 25


ALIMENTATION ET COMMANDE DES MOTEURS PAS A PAS

utilisés. Le tableau ci-dessous résume, de façon plus pratique, les différentes séquences à
réaliser.

Mode 1 : mode monophasé Mode 2 : mode biphasé


séquence A B C D séquence A B C D
1 1 0 0 0 1 1 1 0 0
2 0 1 0 0 2 0 1 1 0
3 0 0 1 0 3 0 0 1 1
4 0 0 0 1 4 1 0 0 1
Tableau 1-2 : tableau de commande pour moteur unipolaire

En associant les deux modes 1 et 2, on obtient le fonctionnement en demi-pas.

Et voici les chronogrammes correspondants :

Figure 1-24 : Chronogramme des impulsions en mode monophasé pour moteur unipolaire

Figure 1-25 : Chronogramme des impulsions en mode biphasé pour moteur unipolaire

Dans le mode 2, le chronogramme laisse apparaître que pour le bobinage 1, les signaux de
contrôle de la phase 1 (B1, P1) et de la phase 2 (B1, P2) sont complémentaires ; il en va de
même pour le bobinage 2.

Promotion 2010 Page 26


ALIMENTATION ET COMMANDE DES MOTEURS PAS A PAS

N.B : Comme on le sait déjà, pour avoir l’autre sens, il suffit d’inverser les séquences de
commutation, c’est pourquoi on montre seulement les séquences dans un seul sens.

II.3- Alimentation et commande bipolaire

Pour la commande d’un moteur bipolaire, c’est un peu plus compliqué puisqu’il faudra
inverser le sens du courant dans les bobinages à chaque pas effectué par le moteur. Deux
solutions sont envisageables : dans le premier cas, un pont de quatre transistors par phase doit
être utilisé ; dans le second, on peut n’utiliser que deux transistors, mais dans ce cas, une
alimentation symétrique sera nécessaire.

II.3.1- Double pont en H

Le schéma est donné en figure 1-26. A chaque commande, deux des transistors placés en
diagonale de chacun des deux ponts seront commutés dans le même temps. Ainsi, on obtiendra
une inversion de la polarité de l’alimentation de la bobine, et donc une inversion du sens de
courant.

Figure 1-26 : Double pont en H pour moteur bipolaire

Le tableau ci-dessous résume, les différentes séquences à réaliser.

Mode 1 : mode monophasé Mode 2 : mode biphasé


séquence A B C D séquence A B C D
1 1 0 0 0 1 1 0 1 0
2 0 0 1 0 2 0 1 1 0
3 0 1 0 0 3 0 1 0 1
4 0 0 0 1 4 1 0 0 1
Tableau 1-3 : tableau de commande pour moteur bipolaire

Promotion 2010 Page 27


ALIMENTATION ET COMMANDE DES MOTEURS PAS A PAS

Le mode demi-pas est obtenu en associant les deux modes 1 et 2.

Et voici les chronogrammes correspondants :

Figure 1-27 : Chronogramme des impulsions en mode monophasé pour moteur bipolaire

Figure 1-28 : Chronogramme des impulsions en mode biphasé pour moteur bipolaire

II.3.2- Alimentation symétrique

Ici, l’un des pôles de chaque bobinage est connecté à la masse. L’autre extrémité sera elle
reliée à un couple de transistors dont la commande séparée l’amènera soit au potentiel positif de
l’alimentation, soit au potentiel négatif. On obtient ainsi une inversion du courant dans la bobine.

Le câblage utilisé est représenté dans la figure suivante.

Promotion 2010 Page 28


ALIMENTATION ET COMMANDE DES MOTEURS PAS A PAS

Figure 1-29 : Commande d’un moteur bipolaire avec alimentation symétrique

Les séquences à réaliser et les chronogrammes correspondants sont les mêmes que le précédent.

II.4- Etude du courant dans un enroulement (phase) du moteur

En négligeant la force contre-électromotrice due au mouvement du rotor, donc à l’arrêt


ou à faible vitesse, l’enroulement du moteur est équivalent à un dipôle RL soumis à des échelons
de tension. Soit r la résistance de la bobine et L l’inductance. Le schéma équivalent pour un
enroulement est donné par :

Figure 1-30 : Schéma équivalent pour une phase

II.4.1- Etablissement du courant

En négligeant les chutes de tension provoquées par les VCEsat .

A la date t = 0, on sature le transistor T.

La loi d’additivité des tensions nous donne l’expression de la tension aux bornes de la bobine :

Promotion 2010 Page 29


ALIMENTATION ET COMMANDE DES MOTEURS PAS A PAS

U = U R + U L = Vcc

di
Or d’après la loi d’ohm, U R = r.i et par définition U L = L.
dt . Ce qui nous
donne l'équation différentielle de l'installation du courant i dans l’enroulement :

di
= r.i + L.
Vcc (I - 12)
dt
La résolution de cette équation différentielle, donnée en annexe-I, nous donne l’expression de
i(t).

t
Vcc −
=
i (t ) (1 − e ) τ
(I - 13)
r
L
avec τ =
r la constante de temps en [s]. Elle caractérise le retard que met l’intensité à
atteindre sa valeur maximale Vcc/r (intensité nominal).

L’intensité du courant croit exponentiellement. En supposant que le circuit se charge


complètement pendant la durée d’une impulsion, quand le régime permanent est établi, le
courant atteint une valeur constante IN (di/dt=0), c’est le courant nominal qui vaut :

IN = Vcc / r

Le régime permanent est atteint au bout du temps t = 5τ

Quand t = τ = L/R,

le courant a atteint 63% de IN à l’instant t = τ

Promotion 2010 Page 30


ALIMENTATION ET COMMANDE DES MOTEURS PAS A PAS

Figure 1-31 : Apparition du courant lors de la fermeture du circuit

II.4.2- Rupture du courant

Maintenant, en supposant que l’intensité a atteint son seuil maximal, on bloque le


transistor T et cet instant est considéré comme le nouvel instant initial t= 0, donc
i(0) = IN = Vcc/r. La tension aux bornes de l’enroulement passe donc de Vcc à 0.

L’équation différentielle de rupture du courant i dans l’enroulement s’écrit:

di
r.i + L. =0 (I - 14)
dt
La résolution de cette équation différentielle, donnée en annexe-I, nous donne l’expression de
i(t).

Vcc −τt
i (t ) = .e (I - 15)
r
L
avec τ =
r la constante de temps en [s]. Ici, elle caractérise le retard que met l’intensité à
disparaitre.

Lorsque t = 5τ, le régime permanent est atteint (quasiment car l'axe des abscisses est asymptote
horizontale à la courbe).

Quand t = τ = L/R,

Promotion 2010 Page 31


ALIMENTATION ET COMMANDE DES MOTEURS PAS A PAS

le courant a atteint 37% de IN à l’instant t = τ

Figure 1-32 : Disparition du courant lors de l’ouverture du circuit

II.4.3- Problème de la constante de temps inductive et de la FCEM


Premier cas : la constante de temps est faible devant la période de commutation.

Figure 1-33 : Courant dans les deux enroulements en plein pas pour une faible fréquence de
commutation

Source : Les Moteurs pas à pas – Jean-Marc Delaplace

On constate que les formes des courants ne sont pas très éloignées de la forme idéale donnée plus
haut.

Deuxième cas : la constante de temps est grande devant la période de commutation.

Promotion 2010 Page 32


ALIMENTATION ET COMMANDE DES MOTEURS PAS A PAS

Figure 1-34 : Courant dans les deux enroulements en plein pas pour une fréquence de
commutation élevée

Source : Les Moteurs pas à pas – Jean-Marc Delaplace

On constate que les formes des courants tendent vers la dent de scie. Ce qui donne une
commande moins brutale, mais on voit que l'amplitude est aussi sensiblement diminuée. Comme
un fonctionnement silencieux à vitesse constante peut être obtenu dans ce cas de figure, on le
trouve employé dans certaines imprimantes.

On vient de voir les problèmes liés à la constante de temps inductive. L'autre composante
du problème est la force contre-électromotrice. Le moteur étant un moteur synchrone et fournit
une tension sinusoïdale d'amplitude proportionnelle à la vitesse.

Ce paramètre n'est pas spécifié, mais on peut le mesurer facilement. Par exemple, en serrant l'axe
du moteur dans le mandrin d’un tour réglé à une vitesse constante en [tours/min], et en mesurant
la tension aux bornes de l’enroulement avec un voltmètre alternatif.

L'effet de la FCEM ne peut pas être simulé facilement car la FCEM est produite par le
mouvement du rotor, et dépend donc de la charge.

Dans le cas d’une alimentation en tension, les formes des courants sont très sensibles au
déplacement, en effet, le courant résulte de la différence entre la tension appliquée et la force
contre-électromotrice de nature complexe à cause des déplacements pulsants (dθ/dt non
constant). Le couple électromagnétique est alors lui-même très pulsé et la détermination des
formes d’onde résulte d’un couplage électromécanique complexe. Seule une résolution
numérique des équations permet de simuler ce fonctionnement.

Promotion 2010 Page 33


ALIMENTATION ET COMMANDE DES MOTEURS PAS A PAS

II.4.4- Conclusion

On ne peut pas atteindre instantanément la valeur nominale du courant dans chaque bobinage ni
l’annuler instantanément à cause de l’inductance. Les variations du courant dans le circuit ne
subissent aucune discontinuité.

Le champ magnétique créé est proportionnel au courant qui traverse la bobine (B=4π x10-7 NI/L).
Le couple du moteur est donc lui aussi, proportionnel au courant, il croit exponentiellement.

Par son principe de fonctionnement, un moteur pas à pas ne travail que sur des régimes
transitoires, qui sont ceux d’un circuit RL (un enroulement) soumis à des échelons de tensions.
A l’arrêt, le courant est maximal, traversant la résistance r d’un enroulement, il entraîne des
pertes Joule (Pj = rIN² par enroulement) : c’est à l’arrêt que le moteur pas à pas chauffe le plus.
En marche, à haute fréquence le circuit RL n’a plus le temps de se charger et de se décharger
complètement. La valeur efficace du courant et le couple diminue quand la fréquence (vitesse du
moteur) augmente. Le couple finit par s’annuler au-delà d’une fréquence maximale de
fonctionnement, ce qu’on va découvrir dans le chapitre suivant.

Promotion 2010 Page 34


CARACTERISTIQUES ET COMPORTEMENTS DU MOTEUR PAS A PAS

Chapitre 3 : CARACTERISTIQUES ET COMPORTEMENTS DU MOTEUR


PAS A PAS

III.1- Caractéristiques des moteurs pas à pas

Ils existent deux sortes de caractéristiques pour le moteur pas à pas : les caractéristiques
mécaniques et les caractéristiques électriques (électromagnétiques et électromécaniques)

III.1.1- Caractéristiques mécaniques


a- Taille

C’est la dimension mécanique du moteur. Elle consiste en un diamètre (ou une cote sur plat pour
les moteurs carrés) et une longueur. Pour les moteurs hybrides, les cotes sont souvent données en
pouces, ce qui fait qu'un moteur de 2,3 pouces de diamètre et de 2 pouces de longueur est
désigné par "taille 23 longueur 2 pouces".

b- Masse

C’est la masse du moteur en [grammes].

c- Nombre de pas par tour Np

Il correspond au nombre de systèmes de pôles. Il est donné pour une commande dite "en plein
pas" et vaut 4 fois le nombre de systèmes de pôles pour les moteurs diphasés.

d- Précision du pas

C'est la tolérance non-cumulative de la position des pas par rapport à leur place théorique. Elle
est donnée en [%] de l'intervalle angulaire entre deux pas.

e- Inertie du rotor

C'est le moment d'inertie donné en [g.cm2].

f- Couple résiduel

C'est le couple qu'il faut fournir au moteur non alimenté pour vaincre l'attraction magnétique
rotor-stator. Il est assez fort pour un moteur à aimant permanent, moyen pour un hybride et nul
pour un moteur à réluctance variable qui ne comporte pas d’aimant. Les fabricants y incluent
aussi le frottement des paliers.
Promotion 2010 Page 35
CARACTERISTIQUES ET COMPORTEMENTS DU MOTEUR PAS A PAS

III.1.2- Caractéristiques électriques et électromécaniques


a- Résistance de phase

C'est la valeur ohmique de chaque enroulement.

b- Inductance de phase

C'est l'inductance de chaque enroulement non couplé aux autres (tous les autres en circuit
ouvert).

c- Courant de phase

C'est l'intensité nominale moyenne par phase. Elle est limitée par des considérations
d'échauffement et par la saturation du circuit magnétique. Ces deux limitations agissent
différemment selon le mode de commande. Cette valeur ne constitue pas la limite supérieure
mais plutôt correspond à la performance optimum en service continu.

d- Couple de retenue

C’est le couple qu’il faut appliquer pour faire décrocher le moteur (le déplacer de façon
permanente de sa position initiale). Cette valeur est généralement donnée pour un moteur à
l’arrêt mais alimenté normalement.

On en déduit la constante de couple, donnée par la relation :

Cr
Kc = (I - 16)
Ic
où Cr est le couple de retenue [N.m]

Ic est l’intensité composée [A]

L’intensité composée est le module de la somme vectorielle des intensités des enroulements
alimentés. Dans le cas de la commande en plein pas (deux phases à la fois alimentés par des
courants égaux), elle vaut :

I=
c I ph × 2

Iph est l’intensité par phase [A]

Promotion 2010 Page 36


CARACTERISTIQUES ET COMPORTEMENTS DU MOTEUR PAS A PAS

Les champs magnétiques créés s’ajoutent aussi vectoriellement et en mode plein pas, le couple

est maximal et vaut K c × I ph × 2

En mode demi-pas, on a alternativement un puis deux enroulements alimentés. Dans ce cas,

l’intensité composée varie un pas sur deux entre I ph et I ph × 2 , et le couple varie dans la
même proportion.

e- Couple dynamique

C'est la valeur du couple résistant qui provoque le décrochage en marche. Cette valeur diminue
quand la vitesse augmente.

f- Puissance nominale

C'est la puissance qu'on peut tirer au régime de puissance maximum en alimentant avec un
circuit simple donné en référence.

g- Force contre-électromotrice

Ce paramètre est rarement donné dans les documentations, mais il peut être facilement mesuré. Il
peut aussi être estimé assez exactement comme suit.

On appelle constante de vitesse la relation :

E
Kv = (I - 17)
ω
où E est la force contre-électromotrice en [V]

ω la vitesse angulaire de l’arbre du moteur [rad/s]

or dans un moteur, la constante de vitesse est numériquement égale à la constante de couple


quand les deux sont dans le système MKSA. Comme on peut calculer facilement la constante de
couple par la relation plus haut, on en déduit immédiatement la constante de vitesse. En pratique,
la constante de vitesse est exprimée en [Volts par tour/s] ou en [Volts par tour/minute]. On a
donc les relations suivantes :

sachant que un tour vaut 2π radian, on a =


: K 'v π .K v 2π .K c [V / tour / s ]
2=

Promotion 2010 Page 37


CARACTERISTIQUES ET COMPORTEMENTS DU MOTEUR PAS A PAS

π .K v
ou K ''v = [V / tour / min ]
30

Pour le cas de la commande en plein pas, on a :

Cr
K 'v = π . 2 [V / tour / s ] (I - 18)
I ph

Cr
K ''v = π . 2 [V / tour / min ] (I - 19)
60.I ph

III.2- Fonctionnement statique et dynamique

III.2.1- Caractéristique couple-déflexion

Figure 1-35 : Caractéristique couple-déflexion

Source : Les Moteurs pas à pas – Jean-Marc Delaplace

Cette caractéristique est donnée dans la figure ci-dessus. On constate qu'il y a des points où le
couple s'annule ; cependant, il faut distinguer deux groupes de points :
 S : Le couple décroît quand le rotor avance, il s’agit d’un rappel. La dérivée du couple est
négative, c'est à dire que le couple tend à ramener l'induit vers la position d'équilibre si on
l'en écarte : ce sont des points d'équilibre stable
 I : Le couple augmente lorsque le rotor avance. La dérivée du couple est positive, c'est à
dire que le couple tend à écarter l'induit de la position d'équilibre si on l'en écarte : ce sont
des points d'équilibre instable ; le rotor tournera et s'arrêtera à la prochaine position
d'équilibre stable. (La convention sur le couple doit être moteur).

Promotion 2010 Page 38


CARACTERISTIQUES ET COMPORTEMENTS DU MOTEUR PAS A PAS

De cette courbe, on déduit deux paramètres : le couple de retenue et la raideur.

Le couple de retenue est la valeur maximum du couple : en partant d'une position d'équilibre
stable, si on exerce un couple sur le rotor, il se déplacera de sa position d'équilibre à vide et y
reviendra, si on ne dépasse pas ce couple. Si on le dépasse, le moteur tourne sans exercer aucun
couple résistant : il décroche.

La raideur est la dérivée du couple par rapport à la déflexion. Dans le cas d'un moteur ayant p
systèmes de pôles, la fonction du couple de retenue étant une sinusoïde d'amplitude Cr (couple
de retenue), elle vaut :

dC
=
R = p.Cr (I - 20)

R est la raideur en [Nm/rad], C est le couple et α est l'angle en [radians].
On voit que la raideur augmente avec le nombre de systèmes de pôles.

III.2.2- Caractéristiques de couple-vitesse

Les caractéristiques de couple-vitesse d’un moteur pas à pas dépendent beaucoup du


mode d’alimentation et, bien entendu, des caractéristiques de la charge, notamment de son
moment d’inertie. Il est en effet évident qu’entre deux pas stabilisés, il faut pouvoir accélérer les
parties mobiles puis les immobiliser. A couple électromagnétique limité, l’accélération est
inversement proportionnelle au moment d’inertie.

Figure 1-36 : Domaines de fonctionnement

Source : Moteurs pas à pas - Techniques de l’Ingénieur – Michel Abignoli et Clément Goeldel
Promotion 2010 Page 39
CARACTERISTIQUES ET COMPORTEMENTS DU MOTEUR PAS A PAS

I : Démarrage et arrêt du moteur sans perte de pas.


II : Vitesse trop grande pour obtenir l’arrêt sur le pas désiré. Le rotor dépasse la position
imposée. Dans cette zone dite de survitesse, le fonctionnement est possible si le démarrage et
l’arrêt du moteur se situent dans la zone I.

III : Fonctionnement instable


fdm : fréquence limite de démarrage et d’arrêt
fem : fréquence limite d’entraînement. Au-delà de cette fréquence, le fonctionnement est
impossible, le moteur décroche.

Ils existent deux fonctionnements :


Cr fixe : Pour une charge imposant un couple Cr, le moteur démarre sans perte de pas si
f<fa. Ensuite, il peut accélérer jusqu’à la fréquence fb. L’arrêt sans perte de pas doit se
pratiquer par un retour à la fréquence ≤ fa.
Fréquence fixe fa : démarrage avec un couple ≤ Cr ensuite on peur aller jusqu’à (fa , C’r ).

Le calcul du couple disponible étant impossible parce qu’il dépend d’un grand nombre de
facteurs tels que : vitesse, type de circuit de commande, nature de la charge. Les constructeurs
donnent des courbes couple-vitesse pour plusieurs montages-type de commande et en supposant
une charge de friction pure. Ceci ne permet que de se faire une idée de ce qu'on est susceptible
d'obtenir dans le cas réel.

III.2.3- Comportement dynamique du moteur

La courbe ci-dessous représente la position du rotor en fonction du temps lorsqu'on commute les
enroulements de un pas en avant.

Figure 1-37 : Position du rotor en fonction du temps

Promotion 2010 Page 40


CARACTERISTIQUES ET COMPORTEMENTS DU MOTEUR PAS A PAS

Compte tenu de l’inertie et de l’accélération des masses en mouvement, le positionnement


angulaire du rotor présente une oscillation autour de la position d’équilibre à chaque pas. Le
rotor dépasse la position souhaitée puis revient en oscillant de part et d'autre de la position.

 Comportement à basse vitesse

La commande à vitesse constante très basse peut conduire à des phénomènes de résonance
qui entraînent des pertes de synchronisme pour certains moteurs.

Dans la figure 1-37, l’évolution oscillante passe par un maximum à la position θ max et par un
minimum à la position θmin .
La commutation vers le pas suivant arrive à la position θ pour laquelle la vitesse du rotor est
négative, et l’énergie cinétique emmagasinée sera notée Wc. De θ à θmin, le rotor est freiné par le
couple accélérateur résultant de la différence entre le couple moteur et le couple résistant.
L’énergie de freinage est notée Wf , l’énergie maximale de freinage W’f est obtenue si θ = θmin.
La condition de fonctionnement synchrone s’écrit donc : W’f > Wc
Si cette condition n’est pas satisfaite, le moteur continue sa rotation en sens inverse et entre dans
un fonctionnement instable.
Les résonances mécaniques peuvent être la source de décrochage à des certains fréquences
inférieures à celle de « arrêt-démarrage ». La figure suivante illustre la possibilité de décrochage
due à ces oscillations.

Figure 1-38 : Décrochage du moteur

Source : Les actionneurs électriques pas à pas - M.Kant - Hermes,1989

Promotion 2010 Page 41


CARACTERISTIQUES ET COMPORTEMENTS DU MOTEUR PAS A PAS

Pour atténuer ces défauts : le moteur peut-être équipé d’un amortisseur : frottements
mécaniques, magnétiques ou hydrauliques ; passer par une commande spéciale qui est le mode
« micropas » ou utilisation du freinage électrique. Un amortissement électrique peut être obtenu,
pour les moteurs alimentés en tension, en plaçant des diodes de roue libre aux bornes des
enroulements ; les courants induits dans ceux-ci créent un couple de freinage.
C’est dans la commande en plein pas (pas entier) que ce phénomène est plus susceptible
d’apparaître.

 Comportement aux vitesses élevées

Figure 1-39 : Fonctionnement en survitesse

Un moteur démarré dans la zone d’arrêt-démarrage (zone I) peut être accéléré en accroissant
progressivement la fréquence des impulsions de commande jusqu’à la zone II (survitesse), puis
revenir dans la zone I pour effectuer l’arrêt.

III.3- Comparaison sur les différents types de moteurs pas à pas

III.3.1- Comparaison entre moteur bipolaire et unipolaire


a- Moteur bipolaire
Avantages :
 Les moteurs bipolaires développent un couple plus important que les moteurs unipolaires
 Moins encombrant

Promotion 2010 Page 42


CARACTERISTIQUES ET COMPORTEMENTS DU MOTEUR PAS A PAS

Inconvénients :
 La commande est plus compliquée car il faut inverser le sens du courant pour faire
tourner le moteur

b- Moteur unipolaire
Avantages :
 La commande est beaucoup plus simple que le bipolaire

Inconvénients :
 Couple plus faible que le moteur bipolaire
 Le nombre d’enroulement est doublé (enroulement bifilaire), donc plus coûteux et
encombrant

Pour un moteur à aimant permanent ou hybride donné, le couple moteur obtenu avec une
alimentation bipolaire est toujours supérieur à celui que crée une alimentation unipolaire, pour la
même dissipation thermique. De même, pour un même couple moteur, on a des pertes inférieures
avec une alimentation bipolaire. La figure 1-40 montre les différentes performances limites d’un
moteur hybride alimenté à partir d’une même tension, mais pour différents couplages de ses
enroulements.

Figure 1-40 : Courbes de couples moteurs pour différents couplages à pertes Joule égales

Source : Moteurs pas à pas - Techniques de l’Ingénieur – Michel Abignoli et Clément Goeldel

Promotion 2010 Page 43


CARACTERISTIQUES ET COMPORTEMENTS DU MOTEUR PAS A PAS

III.3.2- Comparaison sur les trois types

Type Moteur à aimant Moteur à réluctance Moteur hybride


permanent variable
Coût Economique Elevé Elevé
Résolution (pas/tour) Moyenne Bonne Elevé
Valeurs courantes : Valeurs courantes : Valeurs courantes :
24 – 48 12 à 100 pas 100 – 200 – 400 pas
Couple Elevé Faible Elevé
Puissance ~10 [W] Quelque Watts Jusqu’à 2 [kW]
Fréquence de travail Faible Grande Grande
Avantages : - Présence d’un - Accélération et - Combine les
couple de détente vitesse plus élevées avantages du moteur à
- Le sens du courant aimant permanent et à
n’a pas d’ importance réluctance variable
- Très bonne
résolution
Inconvénients : - Faible résolution - Nécessite au moins
- Souffrent des 3 bobinages pour
oscillations générées obtenir un cycle
par le rotor qui complet
limitent la vitesse de - Pas de couple
rotation résiduel
- Les entrefers
doivent être très
faibles, donc
fabrication assez
délicate

Tableau 1-4 : comparaison des trois types de moteurs

Promotion 2010 Page 44


AMELIORATIONS POUR AVOIR UNE MEILLEURE PERFORMANCE DU MOTEUR

Chapitre 1 : AMELIORATIONS POUR AVOIR UNE MEILLEURE


PERFORMANCE DU MOTEUR

I.1- Introduction

Comme nous avons vu auparavant que les performances statiques ou dynamiques d’un
entraînement par moteur pas à pas dépendent de beaucoup de paramètres. Toute amélioration du
comportement nécessite une amélioration sur la commande et/ou l’alimentation.

Nous allons voir quelque moyen pour améliorer la commande et l’alimentation dans les
paragraphes suivants dans le but de résoudre les problèmes cités avant.

I.2- Mode de commande

Nous avons déjà vu les 3 modes les plus répandus qui sont : la mode monophasé, la mode
biphasé et la mode demi-pas.

Pour améliorer la résolution et la performance des moteurs pas à pas, nous allons voir
d’autre mode pour la commande de ces moteurs. Pour simplifier nous n’allons voir que pour les
moteurs bipolaires, mais il est facile de l’adapter pour l’unipolaire.

I.2.1- Mode 4 : mode demi-pas amélioré

Le problème du demi-pas qu’on a vu avant était que le couple n’était pas régulier. Quand
une seule phase est alimentée, le couple est minimal ; quand deux phases sont alimentées, le

couple devient 2 fois plus élevé. Le couple est alors limité par le pas les plus faibles.

Ce que nous voulons, c'est produire un couple approximativement semblable à chaque


pas, et ce couple devrait être le même que le pas le plus fort. Nous pouvons le faire en

augmentant le courant d’un facteur 2 lorsqu'une seule phase est alimentée. L'utilisation de ce
courant plus élevé durant l'alimentation d'une seule phase produit approximativement un couple
égal pour tous les pas. Ainsi, on a les performances de couple du mode 2 avec une précision
double. Grâce à la plus grande régularité du couple et à la diminution des oscillations
mécaniques, la fréquence maximale des pas possible est plus élevée qu’en pas entier. Les circuits
intégrés de commande modernes, génèrent directement cette consigne.

La figure 2-1 montre les courants théoriques correspondants.

Promotion 2010 Page 46


AMELIORATIONS POUR AVOIR UNE MEILLEURE PERFORMANCE DU MOTEUR

Figure 2-1 : Mode demi-pas amélioré

Figure 2-2 : Forme d’onde réelle en mode demi-pas amélioré

Source: Note d’application Thinkescap n°5 – Portescap

I.2.2- Mode 5 : mode quart de pas

Pour avoir des pas encore plus fins, on peut adopter le mode quart de pas, c'est-à-dire
qu’un pas entier est divisé par 4.

Figure 2-3 : Mode quart de pas

Promotion 2010 Page 47


AMELIORATIONS POUR AVOIR UNE MEILLEURE PERFORMANCE DU MOTEUR

Ici, on constate sur la figure que le couple est moins régulier qu’en mode 4.

On peut l’améliorer pour avoir un couple régulier en rajoutant des valeurs intermédiaires du
courant. Voici la forme d’onde réelle pour cette amélioration.

Figure 2-4 : Mode quart de pas avec compensation de couple

Source: Note d’application Thinkescap n°5 – Portescap

I.2.3- Mode 6 : mode micropas

Nous avons vu qu'en alimentant les deux phases avec des courants égaux, il apparait un
pas intermédiaire à mi-chemin entre les positions du mode "une phase à la fois". Si les deux
courants sont inégaux, comme dans le mode 5, la position du rotor sera décalée vers le pôle le
plus fort. Cet effet est utilisé dans le contrôle par micropas (microstepping), qui subdivise les pas
de base en proportionnant le courant dans les deux phases. De cette façon, la grandeur des pas est
réduite et la fluidité à basse vitesse est améliorée. Dans cette situation, le courant dans les
bobines ressemble de plus en plus à deux ondes sinusoïdales déphasées de 90 degrés (voir figure
2-6). Le moteur est alors contrôlé comme s'il s'agissait d'un moteur à courant alternatif (AC)
synchrone avec la faculté de s'arrêter à n'importe quelle position, c'est à dire avec une très grande
résolution.

En pratique, la résolution ne peut pas être infinie, car :

le moteur a une raideur non infinie, c'est à dire qu'il présente une zone élastique de l'ordre
de + ou - un pas entier, ce qui donne une incertitude de positionnement dépendant de la
charge.
le champ circulaire est approximé de manière numérique, c'est à dire que le cercle est
simulé par un polygone à un grand nombre de côtés. Bien que l'on puisse donner le

Promotion 2010 Page 48


AMELIORATIONS POUR AVOIR UNE MEILLEURE PERFORMANCE DU MOTEUR

nombre de côtés que l'on veut, en pratique il est sans intérêt d'aller au-delà de 512 pas par
période (le plein pas découpé en 128 parties).
le moteur réel a une précision du pas donnée par le constructeur qui est de l'ordre de 5%
du plein pas pour les moteurs ordinaires, et 2 ou 3% pour les moteurs de haute qualité.

Dans cette mode d’alimentation, on n’impose plus au rotor de franchir brutalement les pas.
Les vitesses de rotation peuvent alors être beaucoup plus élevées et ce sont les accélérations en
vitesse qui sont limitées par le moment d’inertie des parties tournantes.

Figure 2-5 : Mode micropas

La figure montre en réalité les consignes de courant. Les courants suivent une fonction
sinusoïdale et sont en quadrature.

Figure 2-6 : Allure du courant des 2 phases pour 16 micropas/pas

Source: Note d’application Thinkescap n°5 – Portescap

Promotion 2010 Page 49


AMELIORATIONS POUR AVOIR UNE MEILLEURE PERFORMANCE DU MOTEUR

I.3- Améliorations pour l’alimentation

L’alimentation en énergie est à distinguer de la commande proprement dite qui détermine


les formes d’onde de courant et le séquencement.

On a vu qu’on ne pouvait pas atteindre instantanément la valeur nominale du courant


dans chaque bobinage ni l’annuler instantanément à cause de l’inductance des bobinages, pour
améliorer l’établissement et l’extinction du courant, voici quelque solutions.

I.3.1- Alimentations en tension


a- Résistance additionnelle

On constate que la constante de temps τ = L/r peut être diminuée par l’addition d’une résistance
r’ en série avec l’enroulement. Cependant, la valeur du courant (régime permanent) est réduite.
Vcc / r+r’ < Vcc/r, le couple est donc diminué. Pour le rétablir, il faut augmenter la tension

d’alimentation du moteur avec Vcc=


'
( r + r ') I N .

L
est τ '
La nouvelle constante de temps = <τ
r+r'

Figure 2-7 : Montage avec résistance additionnelle

Pour une extinction plus rapide, on place en série avec la diode une résistance r ′ ou une diode
Zener (figure 2-8).

Promotion 2010 Page 50


AMELIORATIONS POUR AVOIR UNE MEILLEURE PERFORMANCE DU MOTEUR

Figure 2-8 : Montage pour une extinction plus rapide

Cette amélioration est facile à obtenir mais se paie par des pertes électriques dans la
résistance série, qui augmentent avec le degré de l’amélioration. Aussi, ce procédé ne sera utilisé
que pour les entraînements de faible puissance pour lesquels le prix de revient doit être
particulièrement réduit.
b- Alimentation bitension

Il est en théorie impossible d’avoir de parfait créneaux de courant dans les moteurs puisqu’ils
sont composés de bobines. Il est cependant possible d’accélérer la mise en place du courant en
augmentant la tension d’alimentation.

Comme IN = Vcc/r :

L
 si Vcc ⇒ I N ⇒ τ = = cte
r
= : i (τ ) 0, 63.I N > 0, 63.I N
'
 Soit V’cc > Vcc, le courant croit rapidement car

Vcc' V
I =
'
N > I N = cc
r r

Promotion 2010 Page 51


AMELIORATIONS POUR AVOIR UNE MEILLEURE PERFORMANCE DU MOTEUR

Figure 2-9 : Montage avec alimentation bitension

La figure 2-9 représente le principe de l’alimentation bitension. Au début de la commutation, les


deux transistors T et T’ sont mis en conduction. L’alimentation V’cc > Vcc permet d’accélérer la
montée du courant. Lorsque le courant nominal IN est atteint, le transistor T′ se bloque et
l’alimentation Vcc entretient le courant à travers la diode D. L’instant de ce blocage est
déterminé par la mesure du courant. Ce procédé est très économique, surtout lorsque l’on a
plusieurs moteurs à alimenter.
t = 0 : T et T’ passants
t = t1 < τ : i atteint la valeur nominale IN, T’ bloqué et T passant
 IN = Vcc/r

I.3.2- Alimentations en courant

Le principe consiste à augmenter la tension et à contrôler (réguler) le courant autour de sa


valeur nominale Vcc/r. Le couple moteur étant proportionnel au courant, ce contrôle de courant
permet d’obtenir le couple nécessaire sans perte d’énergie inutile et consiste à intégrer un
hacheur de courant dans une alimentation dont la tension V’cc est la plus élevée possible. Le
schéma de principe est donné par la figure 2-10.

Promotion 2010 Page 52


AMELIORATIONS POUR AVOIR UNE MEILLEURE PERFORMANCE DU MOTEUR

Figure 2-10 : Montage avec hacheur

t = 0 :T et T’ passants et le courant s’établit avec une vitesse proportionnelle à V’cc.


L’alimentation débite le courant Imoteur pendant le temps Ton (temps de conduction des
transistors).
i > Imax : T’ bloqué, T passant, le courant décroît en circulant à travers la diode de roue
libre (il y a récupération de l’énergie).
Dans cette phase, pendant le temps Toff (temps de blocage des transistors), le courant
débité par l’alimentation est nul.
La remise en conduction peut se faire selon trois stratégies :
 i < Imin : T et T’ passants, i croît (figure 2-11). Dans ce cas, le courant a une valeur
moyenne et une ondulation assez bien fixées, mais la fréquence de hachage n’est pas maîtrisée
par la commande (elle dépend de la vitesse et de la position du rotor).

Promotion 2010 Page 53


AMELIORATIONS POUR AVOIR UNE MEILLEURE PERFORMANCE DU MOTEUR

Figure 2-11 : Hachage du courant, réglage par Imax et Imin

 T’ passant au bout d’un temps t0 de coupure (figure 2-12). Le C.I. PBL 3717 (Rifa ou
SGS Thomson) intègre cette commande avec un pont en H et un courant allant jusqu’à 1A. (2
C.I. sont nécessaires pour un moteur).

Figure 2-12 : Hachage du courant, réglage par Imax et temps de coupure t0 fixe

 Une horloge remet T’en conduction avec une période te (figure 2-13). Le C.I. L 297
(SGS Thomson) réalise cette régulation, associé à deux ponts en H qui sont intégrés dans le C.I.
L 298 (SGS Thomson).

Promotion 2010 Page 54


AMELIORATIONS POUR AVOIR UNE MEILLEURE PERFORMANCE DU MOTEUR

Figure 2-13 : Hachage du courant, réglage par Imax et remise en conduction périodique

Remarque : Dans ces deux derniers cas, le courant n’a pas une valeur moyenne et une ondulation
fixées, car elles dépendent de la vitesse et de la position du rotor (par la FCEM ou la réluctance).
Par contre, la fréquence de hachage est maîtrisée par la commande et seule la valeur Imax doit être
mesurée.

t = t2 : T et T’ bloqués, i diminue puis s’annule (figure 2-11).

On a vu que le courant peut être régulé autour de sa valeur nominale Vcc/r. Sa vitesse de montée
est considérablement augmentée. Les performances en fréquence (arrêt - démarrage, survitesse)
du moteur sont donc largement améliorées. Le rendement du montage est supérieur au montage
avec résistance additionnelle.

I.4- Remarque

Dans le cas d’une alimentation en tension, les formes des courants sont très sensibles au
déplacement. En alimentation en courant, les formes de courant sont asservies à des créneaux
aux basses vitesses. Lorsque la vitesse augmente, les FCEM croissent et perturbent les formes de
courant qui ne peuvent plus être régulées.

I.5- Conclusion

Les alimentations peuvent être en pleine onde de tension (éventuellement avec résistance de
limitation) ou en courant avec régulation. Les performances obtenues dépendent
considérablement du mode d’alimentation comme en témoigne la figure ci-dessous.

Promotion 2010 Page 55


AMELIORATIONS POUR AVOIR UNE MEILLEURE PERFORMANCE DU MOTEUR

Figure 2-14 : Effet du type d’alimentation sur la caractéristique mécanique

Source : Moteurs pas à pas – Bernard Multon

Selon le besoin, l'utilisateur peut choisir le moteur qui lui convient à son application, avec
l'alimentation et le mode d'excitation correspondant.

Pour notre projet, on va utiliser deux moteurs pas à pas unipolaires qui seront commandés par
ordinateur via le port parallèle. Dans le chapitre suivant, on va voir l’étude d’une carte
d’interface entre le port parallèle et les moteurs.

Promotion 2010 Page 56


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

Chapitre 2 : ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION


SUR LE PORT PARALLELE DE L’ORDINATEUR

II.1- Aspect matérielle du port parallèle

II.1.1- Présentation du port parallèle

Les ports d'entrée-sortie sont des éléments matériels de l'ordinateur, permettant au


système de communiquer avec des éléments extérieurs, c'est-à-dire d'échanger des données, d'où
l'appellation d'interface d'entrée-sortie (notée parfois interface d'E/S). Le port parallèle est
présent sur la plupart des ordinateurs de type PC. Il a été au début destiné pour l’imprimante,
c’est pourquoi, la plupart de ses signaux ont un rapport avec ce périphérique. Mais plus tard,
d’autres périphériques ont utilisés ce port : disque dur, scanner… Il se présente sous la forme
d’un connecteur DB25 femelle sur le PC, alors que côté imprimante, un connecteur de type
Centronics à 36 broches est généralement utilisé.

Figure 2-15--a : Connecteur centronics

Figure 2-15--b : Connecteur DB 25

La transmission de données en parallèle consiste à envoyer des données simultanément


sur plusieurs canaux (fils). Les ports parallèles présents sur les ordinateurs personnels permettent
d'envoyer simultanément 8 bits (un octet) par l'intermédiaire de 8 fils. Dans notre projet, on va
utiliser les 8 bits de données pour commander deux moteurs pas à pas.

Promotion 2010 Page 57


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

II.1.2- Brochage et désignation

Broche Nom Description


DB25 Centronics
1 1 Strobe Un 0 logique (impulsion) doit être envoyé sur
cette ligne pour signaler à l'imprimante que
des données valides sont présentes sur les
lignes D0 à D7.
2-9 2-9 D0 – D7 C'est le bus de données sur lequel véhicule la
valeur à imprimer. Ces signaux désignent
respectivement l'information des bits 1 à 8 des
données parallèles. Chaque signal est au
niveau " haut " quand la donnée est un " 1 "
logique et au niveau " bas " quand la donnée
est un " 0 " logique.
10 10 Ack Un niveau " bas " signale que la donnée a été
reçue et que l'imprimante est prête à recevoir
d'autres données.
11 11 Busy Un niveau " haut " signale que l'imprimante
n'est pas en mesure de recevoir des données.
12 12 Paper Out Un niveau " haut " signale qu'il n'y a plus de
papier dans l'imprimante.
13 13 Select Ce signal indique que l'imprimante est
sélectionnée.
14 14 Autofeed Quand ce signal est " bas ", l'imprimante fait
un saut de ligne après impression.
15 32 Error Cette ligne indique à l'ordinateur que
l'imprimante a rencontré une erreur.
16 31 Reset Un 0 logique (impulsion) peut être envoyé sur
cette ligne pour réinitialiser l'imprimante.
17 36 Select Input L'ordinateur peut mettre l'imprimante hors
ligne en plaçant un 0 sur cette ligne.
18 - 25 16, 17, GND Masse du PC
19–30, 33
- 35 - Mis au +5[V] par l'imprimante, par
l'intermédiaire d'une résistance de 4,7 [kΩ].

Tableau 2-1 : Brochage et désignation de l’interface parallèle

Promotion 2010 Page 58


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

II.1.3- Caractéristiques électriques du port parallèle

Normalement, la logique est positive avec des niveaux TTL LS


 un 0 logique correspond à 0 [Volt] (masse)
 un 1 logique correspond à 5 [Volts]

Sur chaque sortie : courant entrant ≤ 24 [mA], courant sortant ≤ 10 [mA] . En réalité, ses valeurs
varient de port en port. Il faut prendre des mesures pour ne pas prélever beaucoup de courant du
port, par exemple utiliser un buffer.

Entrées :
en logique TTL :

• une entrée reliée au 5v par une résistance de rappel de 10[kΩ] retourne un 1 logique.
• une entrée reliée au 0 volt par une résistance de 1[kΩ] retourne un 0 logique.
• une entrée qui reste "en l’air" retourne un 1 logique.
Les entrées du port retournent donc un 1 par défaut si elles ne sont pas polarisées. Cet état
n’étant pas très stable, il est conseillé d’utiliser systématiquement des résistances de polarisation
(reliées au 5V de préférence).

Figure 2-16 : Polarisation de l’entrée du port parallèle

Dans le cas où le port doit travailler dans une ambiance "difficile", il est conseillé de protéger les
entrées avec des optocoupleurs :

Figure 2-17 : Entrée du port parallèle optocouplée

Promotion 2010 Page 59


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

Pour utiliser une entrée optocouplée, comme le montre la figure ci-dessus : quand l’interrupteur
se ferme ou quand le transistor conduit, la masse remonte, allume la diode de l’optocoupleur qui
devient passant et porte l’entrée au potentiel 0 (par défaut, une entrée débranchée est donc à 1).

Dans notre réalisation, ce sont les sorties du port de donnée qui nous intéressent le plus.

Sorties :

En théorie, une sortie TTL ne peut délivrer qu’un niveau logique. En pratique, cette
tension de sortie peut être chargée de façon à débiter un courant faible de l’ordre de 10 [mA]
maximum. Ce courant peut commander un transistor en commutation ou un optocoupleur.

II.2- Extrait de circuits intégrés pour la commande de l’étage de puissance

Il existe de nombreux C.I. proposés par différents constructeurs, regroupant une logique
de commande dont la fréquence détermine la fréquence de commutation des pas, et une
information logique supplémentaire qui impose le sens de rotation du moteur. Parfois, l’étage de
puissance (transistors et diodes de roue libre) est inséré dans ces C.I.

Ces C.I. gèrent eux-mêmes l’ordre de succession des informations pour les différentes phases du
moteur. Ils sont donc généralement spécifiques pour chaque type de moteur pas à pas
(unipolaire, bipolaire) et pour chaque mode de commande (plein pas, demi-pas, micropas …). Ils
ne nécessitent que quelques composants externes et simplifient au maximum l’envoi des
séquences de commande, c’est pourquoi nous avons choisi un de ces C.I. pour ce projet de
mémoire. Citons quelques-uns avec leurs caractéristiques générales :

 TEA 3717 :
Commande bipolaire
Mode demi-pas et pas entier
Diodes de protection interne
Large gamme du courant de sortie de 5[mA] à 1[A]
Tout particulièrement désigné pour une utilisation avec une tension d’alimentation du
moteur non stabilisée.
La valeur du courant d’alimentation du moteur peut être choisie par pas à l’aide
d’entrés logiques, ou varier d’une façon continue.
2 circuits sont nécessaires.
 MC3479C :
Commande bipolaire

Promotion 2010 Page 60


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

Tension d’alimentation simple comprise entre +7,2[V] et +16[V]


Courant de sortie de 350[mA] par enroulement
Diodes de protection internes intégrées dans le boîtier
Sélection du sens de rotation et du mode pas entier ou demi-pas
Possibilité de mise en haute impédance des sorties
Entrées de commande compatibles T.T.L. et CMOS
Sortie indiquant l’état de sortie de la phase A
 L297 et L298 :
Commande bipolaire
Mode demi-pas et pas entier
Possibilité de remettre le composant en état initial (RESET)
Protection de surintensité
Régulation de courant
 SAA 1042 :
Commande bipolaire
Mode demi-pas et pas entier
Tension maximum 40[V]
Courant / phase max 500[mA]
 PMH 8713 :
Commande unipolaire
Tension maximum 18[V]
Courant / phase max 20[mA]

Ce ne sont pas tous les C.I. spécialisés, il existe encore beaucoup d’autre qu’on ne va pas les
citer tous, mais ce sont les plus employés.

Il y a aussi le SAA 1027 que nous allons voir plus en détail car c’est ce que nous allons employer
dans notre circuit d’interface entre le port parallèle et le moteur pas à pas.

II.3- Utilisation d’un circuit intégré spécialisé SAA 1027 pour la commande
unipolaire.

II.3.1- Présentation du SAA 1027

Le SAA 1027 est un produit de RTC, conçu pour conduire un moteur 4 phases
unipolaire. Son schéma interne est donné en figure 2-18 (pour plus de détail, voir la data-sheet
du SAA 1027).
Promotion 2010 Page 61
ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

Figure 2-18 : Schéma interne du SAA 1027

Il dispose de 4 sorties Q1 ,Q2 ,Q3 et Q4 et de 3 broches de commande R , S, et T reliées à 3


étages d’entrées. Le SAA 1027 a une grande impédance d’entrée et l’immunité contre les bruits
sur ces entrées est très grande.

T, entrée trigger, broche 15 :

C’est l’entrée de l’étage de déclenchement, l’avance d’un pas se fera sur le front montant du
signal. Le diagramme de la figure 2-19 nous montre l’allure des signaux de sortie en fonction
des niveaux appliqués sur les 3 broches de commande.

Figure 2-19 : Diagramme des impulsions

Promotion 2010 Page 62


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

Ce diagramme indique qu’il s’agit d’une commande unipolaire en mode biphasé et en pas
entier. La vitesse de rotation du moteur est obtenue en fonction de la fréquence des
impulsions sur cette entrée.

R, sens de rotation, broche 3 :

C’est l’entrée de l’étage de configuration du sens de rotation. Cette entrée peut être positionnée
indépendamment des entrées S et T. Suivant qu’elle est à L ou à H, le moteur tournera dans un
sens ou dans l’autre selon la table de vérité ci-dessous.

S=H
Sens horaire Sens anti-horaire
R=L R=H
T Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
0 L H L H L H L H
1 H L L H L H H L
2 H L H L H L H L
3 L H H L H L L H
0 L H L H L H L H

Tableau 2-2 : Table de vérité du SAA 1027

Notations : L = niveau bas ; H = niveau haut.

S, mise en marche, broche 2 :

Un niveau H fait démarrer le moteur, un niveau L l’arrête et remet le compteur à zéro.

Quand S = L et T = H, les 4 sorties prennent les niveaux montrés dans la ligne supérieure et
inférieure de la table ci-dessus. Si S n’est pas employé, il devrait être relié à l’alimentation.

Broche 4 :

Une résistance de polarisation devra relier cette entrée au + de l’alimentation. C’est cette
résistance qui commande le courant de base des transistors de sortie. Sa valeur doit être choisie
selon le courant de sortie exigé et déterminée à partir des graphiques donnés dans le fiche
technique.

Promotion 2010 Page 63


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

Broche 14 :

Il est utilisé pour l’alimentation de toute la logique interne

Q1à Q4, sorties, broche 6, 8, 9, 11 :

Sorties du C.I. qui sont à collecteur ouvert. Les transistors de sortie sont protégés des surtensions
à l'aide de quatre diodes intégrées. Le point commun de ces diodes aboutit en broche 13.
Cependant, des diodes externes pourront être utilisées, la broche 13 étant alors laissée "en l'air".
Ces diodes devront être de type rapide.

Un extrait de la data-sheet (fiche technique) du SAA 1027 est donné en ANNEXE.

II.3.2- Etude de la carte d’interface

La carte d’interface que nous allons étudier et réaliser est basé sur 2 circuits SAA 1027 pour
commander 2 moteurs pas à pas unipolaire.

Caractéristiques des moteurs utilisés :

Type : SANYO-DENKI 103-546-5841

Angle de pas : 1,8[°]

Courant par phase : 0,5 [A]

Résistance par phase : 16 [Ω]

Nombre de fils : 8 fils

Masse : 200 [g]

Schéma de principe

Le schéma de principe de la carte est donné sur la figure suivante :

Promotion 2010 Page 64


Figure 2-20 : Schéma de principe de la carte
ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

a- Sortie du port parallèle

Les signaux à appliquer sur les 3 broches de commande du SAA 1027 sont obtenus à
partir d’un programme commandant le port parallèle que nous verrons dans le prochain chapitre.
On ne peut pas brancher directement ce C.I. à la sortie du port parallèle car il n’est pas
compatible TTL.

Pour une raison de sécurité du port parallèle, on va utiliser un optocoupleur sur chacune des
lignes de bus de données. L’optocoupleur assure une isolation galvanique entre le port parallèle
et le reste du circuit, de plus on l’emploi pour ne pas tirer beaucoup de courant sur le port.

L’optocoupleur est composé d’une diode émettrice d’un côté, d’un phototransistor de l’autre
côté. On constate que la sortie est à collecteur ouvert, ce qui signifie que nous devons placer une
résistance de Pull-up à la sortie de manière à traduire la sortie en signal 0-5V.

Figure 2-21 : Polarisation de l’optocoupleur

L’optocoupleur utilisé est du type PC 817 DUAL (double).

Extrait du data-sheet du PC 817 :

IDmax = 50 [mA] ; VCEsat = 0,1 [V] ; ICmax = 30 [mA] ; VLED(VF) = 1,2 [V] ; fréquence = 80 [kHz]

D’après une mesure effectuée sur les ports de donnée, on trouve VD = 4,18 [V] ; Vcc = 5 [V] ;
ID < 20 [mA].

=
VD RD .I D + VF

VD − VF
⇒ RD min =
I D max

Promotion 2010 Page 66


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

4,18 − 1, 2
A.N : ⇒ RD min
= = 149
0, 02

On prend la valeur normalisé supérieure, ce qui nous donne : RD = 180 [Ω]

=
Vcc RC .I C + VCEsat

Vcc − VCEsat
⇒ RC =
IC

5 − 0,1
A.N : prenons IC = 20mA =
=> RC = 245
0, 02

=> RC = 270 [Ω]

La relation entre les signaux de sortie du port et la sortie de l’optocoupleur est :

D = H => S = L;

D = L => S = H

Les signaux de sortie du port sont inversés.

b- Entrée du SAA 1027

Maintenant, pour avoir les mêmes états logiques entre les sorties D et les entrées du SAA
1027, et pour garantir les niveaux L et H sur ces 3 entrées, on se sert de 3 transistors NPN
montés en inverseur comme le montre la figure ci-dessous. Le problème d’incompatibilité entre
les sorties aux niveaux TTL du port et les entrées du C.I. sont ainsi résolu.

Les transistors employés sont des BC 547 dont voici quelques caractéristiques :

VCE0 = 45 [V] ; Icmax = 100 [mA] ; β min ( hFE min ) = 110 ; VCEsat = 0,2 [V] ; VBEsat = 0,7 [V]

Entrées R, S, T du SAA 1027 :

VIH > 7,5 [V] ; IIH = 1[μA] ; VIL < 4,5 [V] ; IIL = 30[μA]

Promotion 2010 Page 67


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

Figure 2-22 : Circuit de commande d’un entrée du SAA 1027

La relation entre les signaux de sortie du port et l’entrée du SAA 1027 est :

D = H => T = H;

D = L => T = L

Dimensionnement des résistances de polarisation :

V=
CC 2 R5 .I 5 + VCEsat

VCC 2 − VCEsat
⇒ R5min =
I 5max

12 − 0, 2
A.N=
: R5min = 118
0,1

Les entrées du SAA 1027 n’ont besoin qu’un très peu de courant (IIH = 1[μA]), on peut prendre
la valeur R5 = 1 [kΩ]

VCC 2 − VCEsat 12 − 0, 2
=
⇒ I5 =
R5 1000

⇒ I 5  12 [ mA]

I5 12
I= =
1min
β min 110
⇒ I Bsat =I1 =0, 2 [ mA]

Promotion 2010 Page 68


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

VCC1 = RC .I1 + R1.I1 + VBEsat

VCC1 − VBEsat − RC .I1


⇒ R1 =
I1

5 − 270.0, 2.10−3 − 0, 7
=
A.N : ⇒ R1 = 21230
0, 2.10−3

Prenons R1 = 18 [kΩ]

c- Polarisation du SAA 1027

Courant de sortie (Q1 à Q4) : IOL(max) = 350 [mA] ; IOH(max) = -50[μA]

Chaque sortie du SAA 1027 ne peut fournir qu’un courant maximal de IQmax = 350 [mA]
(IOL(max)). On ne pourra donc pas brancher directement notre moteur à la sortie du C.I. car il a
besoin de Iph = 500 [mA] par phase. C’est pourquoi nous avons employé à chaque sortie du C.I.,
des transistors de puissance BD 135 (NPN) pour conduire les courants nécessaire dans les phases
des moteurs. L’alimentation des moteurs est différente de celle des SAA 1027, nous n’avons
donc pas besoin de la broche 13 du C.I, on va laisser cette entrée en l’air et utiliser des diodes
externes.

Sur la broche 14 se trouve l’alimentation de toute la logique interne du C.I .Une cellule de
filtrage R-C (100 [Ω] et 100 [nF]) est nécessaire pour éviter les perturbations.

Sortie

Figure 2-23 : Polarisation du SAA 1027

Les sorties du SAA 1027 sont à collecteur ouvert, des résistances de tirage de 1 [kΩ] sont donc
utilisées pour garantir les niveaux H nécessaire à la sortie comme montré sur la figure ci-dessus.

Promotion 2010 Page 69


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

Détermination de RB

La valeur de la résistance RB sur la broche 4 est choisie en fonction du courant de sortie IQ.

Il faudra saturer les transistors de sortie pour garantir le niveau L.

Calcul de IQ :

La tension de saturation des transistors de sortie est : Vsat < 1 [V].

=
VCC 2 R8 .I Q + Vsat

VCC 2 − Vsat
⇒ IQ =
R8

12 − 1
A.N : ⇒ IQ =
1000

IQ = 11 [mA]

En traçant sur le graphique N°2 du data-sheet la courbe IQ = 11 [mA], VB = 12 [V], on trouve à


peu près la valeur de RB.

Figure 2-24 : Relation entre IQ, VB et RB

Source : Datasheet du SAA 1027

Promotion 2010 Page 70


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

Avec un coefficient de saturation, on pourra prendre RB = 560 [Ω]

La puissance nécessaire à la résistance RB est donnée par le graphique N°3. Dans notre cas,
1/4[W] suffit.

Figure 2-25 : Relation entre IQ, VB et PRB

Source : Datasheet du SAA 1027

La puissance totale consommée par le SAA 1027 est donnée par le graphique N°4, ce qui nous
donne à peu près Ptot (SAA 1027) = 100 mW.

d- Sortie du SAA 1027 et alimentation du moteur

Caractéristiques du transistor BD 135 :

VCE0 = 45 [V] ; ICmax = 1,5 [A] ; IBmax = 0,5 [A] ;

VCEsat = 0,5 [V] ; VBEsat = 1 [V] ; β = 63

La résistance R18 de la figure ci-dessous est nécessaire pour avoir dans chaque phase du moteur,
un courant Iph = 0,5 [A]. En même temps, il permet un établissement de courant plus rapide dans
les enroulements du moteur.

Comme le SAA 1027 commande le moteur en mode biphasé, le schéma de la figure 2-25 nous
permet de dimensionner la résistance R18.

Promotion 2010 Page 71


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

Figure 2-26 : Schéma des phases alimentés du moteur

D’après la loi des nœud, on a I18 = 2.Iph , avec Iph = 0,5 [A].

Nous avons Vccm = 16 [V] ; résistance des enroulements Rm = 16 [Ω ]; VCEsat = 0,5 [V].

VCCm = Rm .I ph + VCEsat + R18 .2.I ph

VCCm − VCEsat − Rm .I ph
⇒ R18 =
2.I ph

16 − 0,5 − 16.0,5
A.N : ⇒ R18 =
2.0,5

Prenons la valeur R18 = 8,2 [Ω]

Puissance de la résistance : PR18 = R18.(2.Iph)² = 7,5.1² = 7,5 [W]

 R18 = 8,2 [Ω] / 10 [W]

Résistances de base RB des transistors :

I ph
0,5
I Bsat > =
β 63

9.10−3
⇒ I Bsat =

VCC 2 = R8 .I B + RB. I B + VBEsat

Promotion 2010 Page 72


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

VCC 2 − R8 .I B − VBEsat
⇒ RB =
IB

12 − 1000.0, 009 − 1
A.N : ⇒ RB =
0, 009

 RB = 150 [Ω]

e- Amélioration du circuit

Quand les moteurs sont à l’arrêt mais alimentés, il conviendrait de diminuer le courant
traversant chaque bobinage afin de réduire l’échauffement du moteur et, évidemment, le courant
consommé. Pour cela, avec le bit de donnée D3, on va commander le transistor T4 (2N2222) qui
va déclencher ou non le relais placé dans son collecteur. Quand le relais n’est pas alimenté, le
contact au repos permet de connecter directement les moteurs à l’alimentation Vccm. Par contre,
quand il est alimenté, une résistance R16 = 100 [Ω] est placée entre l’alimentation et les moteurs,
qui limitera la dissipation de puissance.

N.B : Il faut remarquer que le couple de retenue va diminuer dans la même proportion que le
courant. Ceci conviendra pour les applications qui ne demandent pas beaucoup de couple
de retenue.

Relation entre D3 et le relais :

Comme l’optocoupleur inverse les signaux de sortie du port, nous avons :

D3 = H => relais au repos;

D3 = L => relais déclenché

Puissance dissipée par les 2 moteurs et les résistances de limitation de courant (en négligeant
les pertes dans les transistors) :

Sans la résistance R16 :

4 enroulements sont parcourus par le courant Iph = 0,5 [A] à tout instant.

Pmot= VCCm × 4 × I ph

Promotion 2010 Page 73


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

A.N : Pmot = 16 × 0,5 × 4 = 32

 Pmot = 32 [W]

Avec la résistance R16 :

Figure 2-27 : Alimentation des phases avec résistance de limitation de courant

Calcul de I’ph :

On a, d’après la loi des nœuds : I’18 = 2.I’ph ; I’16 = 2.I’18 = 4.I’ph

VCCm= R16 .4.I ph


'
+ R18 .2.I ph
'
+ Rm .I ph
'
+ VCEsat

V −V
⇒ I ph
'
= CCm CEsat
4.R16 + 2.R18 + Rm

16 − 0,5
A.N : ⇒ I ph
'
=
4.100 + 2.8, 2 + 16

 I’ph = 36 mA

'
Pmot =
4 × VCCm × I ph
'

A.N : Pmot =4 × 16 × 0, 036


'

 P’mot = 2,3 [W]

Promotion 2010 Page 74


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

C’est la puissance dissipée quand les moteurs ne tournent pas.

PR16 = R16 × ( 4 × I ph )
' 2
Puissance de la résistance R16 :

PR16 = 100 × ( 4 × 0, 036 )


2
A.N :

On va prendre PR16 = 5 [W]

Commande du relais :

Les caractéristiques des composants sont :

Relais : tension = 12 [V] ; courant maxi = 5 [A] ; résistance du bobinage Rrl = 400 [Ω]

LED : VLED = 1,6 [V] ; ILED = 10 [mA]

2N2222 : VCE0 = 30[V] ; ICmax = 800 [mA] ; IBmax = 200 [mA] ; βmin = 75

VCEsat = 0,4 [V] ; VBEsat = 1,3 [V]

Figure 2-28 : Commande du relais

La LED s’allume quand le relai est activé. La diode D1, diode de roue libre, assure la continuité
du courant lorsque le transistor T4 est bloqué, évitant ainsi une surtension qui pourra détruire le
transistor. Le port est toujours protéger par l’optocoupleur.

Calcul des résistances :

On a =
VCC 2 Rrl .I rl + VCEsat

Promotion 2010 Page 75


ETUDE D’UNE CARTE D’INTERFACE POUR LA CONNEXION SUR LE PORT PARALLELLE

VCC 2 − VCEsat
⇒ I rl =
Rrl

12 − 0, 4
I=
rl = 0, 029 ⇒ I=
rl 29 [ mA ]
400

I C=
4 I rl + I LED

I C 4= 0, 029 + 0, 01= 0, 039 ⇒ I C 4= 39 [ mA ]

I C 4 0, 039
I B= = = 5, 2.10−4
4 min
β min 75

−4 −4
Prenons un coefficient de saturation de 1,5 : I B=
4 sat 5, 2.10 ×=
1,5 7,8.10

VCC1 = RC .I B 4 sat + R4 .I B 4 sat + VBEsat

VCC1 − RC .I B 4 sat − VBEsat


⇒ R4 =
I B 4 sat

5 − 270.7,8.10−4 − 1, 3
A.N : R4 =
7,8.10−4

 R4 = 4,7 [kΩ]

VCC=
2 R17 .I LED + VLED + VCEsat

VCC 2 − VLED − VCEsat


⇒ R17 =
I LED

12 − 1, 6 − 0, 4
=
A.N : R17 = 1000
0, 01

 R17 = 1 [kΩ]

Promotion 2010 Page 76


PROGRAMMATION DU PORT PARALLELE PAR LE LANGAGE C++

Chapitre 3 : PROGRAMMATION DU PORT PARALLELE PAR LE


LANGAGE C++

III.1- Aspect logiciel du Port parallèle

III.1.1- Les modes de fonctionnement du port parallèle

Le port parallèle peut fonctionner selon différent modes. Les différentes modes avec leurs
principales caractéristiques sont :
• Le mode SPP (Standard Parallel Port):
C’est le protocole de base permettant l’envoi de données vers une imprimante.
Le SPP est devenu capable d’envoyer et de recevoir des données. Il peut donc être
bidirectionnel.
La vitesse de transmission maximale que l’on peut espérer obtenir avec ce port est de
l’ordre de 150[ko/s].
• Le mode EPP (Enhanced Parallel Port):
Il permet d’atteindre un débit de 2 [Mo/s].
Il est bidirectionnel.
• Le mode ECP (Extended Capacity Port):
C’est le plus récent. Il dérive du port EPP et possède les mêmes caractéristiques, avec des
possibilités supplémentaires :
« Plug and Play » (branchez et utilisez).
Il permet au périphérique de s’auto-identifier auprès de la machine dès le démarrage.
Il permet le Direct Memory Adress (DMA). Il est ainsi possible d’envoyer ou de
recevoir des données sans avoir besoin du processeur.
Généralement, sur les Bios modernes, les deux autres modes basculent automatiquement en SPP
quand ils reçoivent une commande destinée à un port SPP.
III.1.2- Adressage du port :

Le port parallèle occupe 3 adresses consécutives. Les valeurs de ces adresses, en


hexadécimal sont : 0x378 pour le port de donnée (ou DATA), 0x379 (adresse de base+1) pour le
port d’état (ou STATUS) et 0x37A (adresse de base +2) pour le port de contrôle. (les préfixes 0x
signifient qu’il s’agit d’une valeur en hexadécimal). La première adresse (0x378) désigne
l’adresse de base du port.

Promotion 2010 Page 77


PROGRAMMATION DU PORT PARALLELE PAR LE LANGAGE C++

L’adresse de base du port peut ne pas être 0x378, il peut varier d’un ordinateur à un autre,
il peut être 0x278 ou 0x03BC ou autre. Mais dans la plupart des cas, si l’ordinateur ne possède
qu’un seul port parallèle, ce port est appelé LPT1 et possède l’adresse de base 0x378. Un
ordinateur peut avoir jusqu’à 3 ports parallèles pour lui tout seul et sont appelés : LPT1, LPT2 et
LPT3. Dans la majorité des cas, leurs adresses de base sont respectivement : 0x378, 0x278 et
0x3BC.
Pour voir quelle est l’adresse de base du port parallèle sous Windows XP :
"démarrer/programmes/accessoires/outils systèmes/informations système". "Cliquer sur
Ressources matérielles", puis sur "E/S" et rechercher le port imprimante LPT1.

Figure 2-29 : Recherche de l’adresse de base du port LPT1

Ici, dans notre cas, il s’agit de 0x378. 0x378 à 0x37F est la plage d’adresse utilisée par LPT1.
a- Le port DATA
Appelé aussi registre de donnée, utilisé usuellement pour envoyer des caractères à
l’imprimante, ce port dispose d’un octet complet en sortie, et on y accède grâce à l’adresse de
base. Les bits sont nommés D0 à D7 (broche 2 à 9) et autorisent, évidement, une combinaison de
256 valeurs. Ce port est accessible en écriture seulement dans le cas du port parallèle standard,
c'est à dire qu'une lecture se traduira par la lecture des dernières données écrites. Cependant,
avec un port bidirectionnel, on peut lire des données sur cette adresse.
C’est le port que nous allons utiliser dans notre application.

Promotion 2010 Page 78


PROGRAMMATION DU PORT PARALLELE PAR LE LANGAGE C++

b- Le port STATUS
C’est le port d’entrée qui permet de connaître l’état de l’imprimante. Ce port peut
uniquement être lu, c'est à dire que toute écriture sera ignorée. II est accessible à l’adresse de
base +1. L’octet qui y est lu est shunté de ses trois bits de poids faible ; il reste donc cinq bits
d’entrée S0 à S4. Il est à noter que le bit S4 est câblé en inverse, et que le bit S3 peut être destiné
à détecter des interruptions matérielles selon un front descendant si celles-ci sont activées.
c- Le port CONTROL
Ce port, accessible à la fois en lecture et en écriture, est employé pour contrôler l'imprimante.
Les 4 premiers bits sont l'image des lignes STROBE, AUTOFEED, INIT et SELECT IN (voir
tableau 2-1). Le bit 4 autorise ou non le déclenchement d'une interruption lorsque ACK passe à
l'état bas (c'est à dire lorsque l'imprimante indique « a bien reçue l'octet envoyé »).

III.1.3- Programmation du Port parallèle sous Windows XP :

Dans DOS et les anciens systèmes d’exploitation (OS) Windows 95/Windows 98, la
communication avec le port parallèle était facile. Pour lire et écrire sur le port, en langage C, il
suffisait d’employer des fonctions outportb(adresse, valeur) ; et inportb(adresse) ;. Mais à partir
de Windows NT, 2000 ou XP, ces OS bloquent l’accès au port parallèle pour des raisons de
sécurité de celui-ci.

Pour contourner ce problème, il faut utiliser un driver qui autorise l’accès direct sur les ports.
Par exemple userport ou la librairie Inpout32.dll. Dans notre cas, on utilise Windows XP et on a
choisi d’utiliser Inpout32.dll qui se trouve à l’adresse http://www.logix4u.net pour les raisons
suivantes :

• On peut travailler sur le port parallèle avec toutes les versions de Windows
• Aucune installation de logiciel spécial ou driver n’est requise
• Le driver sera automatiquement installé et configuré quand le DLL est chargé
• Facilité d’emploi

Fonctionnement de Inpout32.dll :

Le DLL vérifiera la version de l’OS quand les fonctions (écriture ou lecture) sont
appelées, si l’OS est WIN 95 ou 98, le DLL emploiera les fonctions _inp() et outp pour
lire/écrire sur le port parallèle. Par contre, si l’OS est WIN NT , 2000 ou XP, il installera un
driver et communiquera au port parallèle par ce driver. L’organigramme du programme est
donné ci-dessous :
Promotion 2010 Page 79
PROGRAMMATION DU PORT PARALLELE PAR LE LANGAGE C++

Figure 2-30 : Organigramme du fonctionnement d’Inpout32.dll

Source : http://www.logix4u.net

Utilisation :
Pour pouvoir utiliser les deux fonctions d’écriture et de lecture sur le port, en langage C
(ou C++), il nous faut ce petit code pour charger la librairie et récupérer les adresses des
fonctions :

typedef short _stdcall (*inpfuncPtr)(short portaddr); Prototype des fonctions à


typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum); exporter de la DLL
HINSTANCE hLib;
inpfuncPtr inp32;
oupfuncPtr oup32;
hLib = LoadLibrary("inpout32.dll"); // Chargement de la librairie
if (hLib == NULL)
{
printf("LoadLibrary Failed.\n"); Vérification
return -1;
}

Promotion 2010 Page 80


PROGRAMMATION DU PORT PARALLELE PAR LE LANGAGE C++

/* Récupération de l'adresse de la fonction avec "GetProcAddress" */


inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");

if (inp32 == NULL)
{
printf("GetProcAddress for Inp32 Failed.\n"); Vérification que la fonction existe
return -1;
}
/* Récupération de l'adresse de la fonction avec "GetProcAddress" */
oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
if (oup32 == NULL)
{
printf("GetProcAddress for Oup32 Failed.\n"); Vérification que la fonction existe
return -1;
}
Après ce code, on peut utiliser les 2 fonctions. Pour libérer la librairie quand on en a plus besoin,
on utilise la fonction FreeLibrary(hLib);
Prototype
N.B : Pour que ce code fonctionne, il faudra placer le fichier « inpout32.dll » dans le même
répertoire que l’exécutable, ou le placer directement dans le répertoire système de
Windows C:\WINDOWS\system32.
Les 2 fonctions exportées sont :
 inp32(adresse) : lit des données à partir du registre du port parallèle dont l’adresse est
donnée en paramètre. Cette fonction retourne la valeur lue sur le port.
 oup32(adresse, données) : écrit des données au registre du port. Elle reçoit 2 paramètres :
l’adresse du port et la valeur à envoyer. Elle ne retourne rien.

III.2- Le langage C++

III.2.1- Introduction

Le langage C++ a été conçu dans les laboratoires AT&T Bell. Son concepteur, Bjarne
Stroustrup, désirait étendre les fonctionnalités du langage C afin d’y intégrer les concepts de la
programmation par objet. Il désirait en effet conserver les habitudes des programmeurs C, leur
permettre de récupérer une bonne partie des programmes qu’ils avaient développés, tout en

Promotion 2010 Page 81


PROGRAMMATION DU PORT PARALLELE PAR LE LANGAGE C++

intégrant les avantages de la programmation objet. Ceci a donné naissance en 1979 au langage
C++, qui intégrait quelques fonctionnalités objet, et en 1983 au langage C++, un peu plus
complet. Le langage C++ peut être considéré comme une extension de C, si bien que tout
programme C valide est un programme C++ valide.
Les principaux avantages du C++ qui nous ont amenés à choisir ce langage sont les suivants :

 grand nombre de fonctionnalités ;


 performances du C : offre des opérateurs qui sont très proches de ceux du langage
machine (bas niveau), en particulier les manipulations de bits, qui nous sont très utile
pour ce projet. Permet de développer des programmes rapides ;
 facilité d'utilisation des langages objets ;
 portabilité des fichiers sources ;
 facilité de conversion des programmes C en C++ ;
 contrôle d'erreurs accru.

Comme on en a parlé plus haut, le langage C++ possède les fonctionnalités du C. Or, dans
notre projet, nous avons besoin de beaucoup d’entre eux, ainsi, dans la suite, on ne parlera que
du C++ même si certain instructions sont issues du langage C.

III.2.2- Les spécificités de C++

 nouvelle forme de commentaire (en fin de ligne),


 plus grande liberté dans les emplacements des déclarations,
 notion de référence facilitant la mise en oeuvre de la transmission d'arguments par
adresse
 surdéfinition des fonctions: attribution d'un même nom à différentes fonctions, la
reconnaissance de la fonction réellement appelée se faisant d'après le type et le nombre
des arguments figurant dans l'appel (on parle parfois de signature),
 nouveaux opérateurs de gestion dynamique de la mémoire: new et delete,
 possibilité de définir des fonctions "en ligne"(inline), ce qui accroît la vitesse d'exécution.

III.2.3- Utilisation des fonctions d’écriture et lecture sur le port

On a dit que pour pouvoir employer les 2 fonctions, il fallait écrire le code ci-dessus.
Pour ne pas réécrire ce code dans chaque bloc de fonction qui l’utilise, on va créer une macro.

Les macros sont des bouts de code qui sont directement remplacés dans le code source
par le préprocesseur juste avant la compilation, elles permettent d’accélérer la vitesse
Promotion 2010 Page 82
PROGRAMMATION DU PORT PARALLELE PAR LE LANGAGE C++

d’exécution du programme. La macro que nous allons utilisée est sans paramètre, sinon,
l’utilisation de la fonction « inline » est la bonne solution. Pour la macro, si le code possède
plusieurs lignes, il faut mettre un antislash (\) avant chaque nouvelle ligne.

Création de la macro :

#define fonction() typedef short _stdcall (*inpfuncPtr)(short portaddr);\


typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);\
HINSTANCE hLib;\
inpfuncPtr inp32;\
oupfuncPtr oup32;\
hLib = LoadLibrary("inpout32.dll");\
inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");\
oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");

La portée des fonctions est réduite au fichier où elles sont définies. Par conséquent, cette
macro doit être écrite dans un fichier en-tête (fichier « .h ») appelé « fonction.h », qui doit être
inclus dans tous les fichiers comportant des appels de ces fonctions.

Utilisation dans une fonction:

Maintenant quand la macro est créée, au lieu de réécrire tous les codes, il suffit d’écrire
fonction()

Exemple dans un bloc de fonction quelconque :

{
fonction()
(oup32) (0x378,0x00) ; //écrit la valeur 0 à l’adresse 0x378
printf("lecture sur (% #X)= %#X\n",0x378,(inp32)(0x378)); /* affiche la valeur lue à
l’adresse 0x378*/

FreeLibrary(hLib);//libère la librairie
}
La spécification %#X amène printf à effectuer son affichage en hexadécimal.

Promotion 2010 Page 83


PROGRAMMATION DU PORT PARALLELE PAR LE LANGAGE C++

III.3- La programmation orientée objet (POO)

III.3.1- Introduction

La conception par objet trouve ses fondements dans une réflexion menée autour de la vie
du logiciel. D’une part, le développement de logiciels de plus en plus importants nécessite
l’utilisation de règles permettant d’assurer une certaine qualité de réalisation. D’autre part, la
réalisation même de logiciel est composée de plusieurs phases, dont le développement ne
constitue que la première partie. Elle est suivie dans la plupart des cas d’une phase dite de
maintenance qui consiste à corriger le logiciel et à le faire évoluer. On estime que cette dernière
phase représente 70 % du coût total d’un logiciel, ce qui exige plus encore que la phase de
développement de produire du logiciel de qualité.
La conception objet est issue des réflexions effectuées autour de cette qualité. Celle-ci peut-être
atteinte à travers certains critères :
– la correction ou la validité : c’est-à-dire le fait qu’un logiciel effectue exactement les tâches
pour lesquelles il a été conçu ;
– l’extensibilité : c’est-à-dire la capacité à intégrer facilement de nouvelles spécifications,
qu’elles soient demandées par les utilisateurs ou imposées par un événement extérieur ;
– la réutilisabilité : les logiciels écrits doivent pouvoir être réutilisables, complètement ou en
partie. Ceci impose lors de la conception une attention particulière à l’organisation du logiciel et
à la définition de ses composantes ;
– la robustesse : c’est-à-dire l’aptitude d’un logiciel à bien réagir lorsque l'on s'écarte des
conditions normales d'utilisation.
III.3.2- Objet

La POO est fondée sur le concept d’objet, à savoir une association des données (appelées
attributs) indépendante de tout programme et des procédures (qu'on appelle méthodes) agissant
sur ces données. L’équation de la POO est :

Méthodes + Données = Objet

III.3.3- Encapsulation

Dans la POO, on réalise ce que l'on nomme une encapsulation des données. Cela signifie
qu'il n'est pas possible d'agir directement sur les données d'un objet; il est nécessaire de passer
par l'intermédiaire de ses méthodes qui jouent ainsi le rôle d'interface obligatoire. On traduit
parfois cela en disant que l'appel d'une méthode est en fait l'envoi d'un "message" à l'objet.

Promotion 2010 Page 84


PROGRAMMATION DU PORT PARALLELE PAR LE LANGAGE C++

Le grand mérite de l'encapsulation est que, vu de l'extérieur, un objet se caractérise


uniquement par les spécifications (noms, arguments et rôles) de ses méthodes, la manière dont
sont réellement implantées les données étant sans importance. On décrit souvent une telle
situation en disant qu'elle réalise une "abstraction des données"(qui exprime bien que les détails
concrets d'implémentation sont cachés).

L'encapsulation des données facilite considérablement la maintenance: une modification


éventuelle de la structure de données d'un objet n'a d'incidence que sur l'objet lui-même; les
utilisateurs de l'objet ne seront pas concernés par la teneur de cette modification. De la même
manière, l'encapsulation des données facilite grandement la réutilisation d'un objet.

La règle d’encapsulation dit que : « tous les attributs (appelés aussi variables membres
ou données membres) d’une classe doivent toujours être privés ».

III.3.4- Classe

La définition d’un type objet s’appelle une classe. Ce dernier correspond à la


généralisation de la notion de type que l'on rencontre dans les langages classiques. Une classe, en
effet, n'est rien d'autre que la description d'un ensemble d'objets ayant une structure de données
commune et disposant des mêmes méthodes. Les objets apparaissent alors comme des variables
d'un tel type classe. En POO, on dit qu'un objet est une "instance" de sa classe.

On peut définir trois degrés d'accessibilité aux membres (arguments et méthodes) d'une classe :
 private (privé) : seuls les autres membres de la même classe peuvent y accéder. C'est
l'accès par défaut pour une classe.
 protected (protégé) : accès réservé aux membres de la classe, mais également aux classes
dérivées (ou classe fille).
 public : même accessibilité que toute déclaration globale
III.3.4- Héritage

Le concept d’héritage constitue l’un des fondements de la POO. Il va permettre de «


réutiliser » les « composants logiciels » que sont les classes, en offrant la possibilité de définir
une nouvelle classe, dite classe dérivée (ou classe fille), à partir d’une classe existante dite classe
de base (ou classe mère). Cette nouvelle classe « hérite » d’emblée des fonctionnalités de la
classe de base (attributs et méthodes) qu’elle pourra modifier ou compléter à volonté, sans qu’il
soit nécessaire de remettre en question la classe de base.

Promotion 2010 Page 85


PROGRAMMATION DU PORT PARALLELE PAR LE LANGAGE C++

Cette technique permet donc de développer de nouveaux outils en se fondant sur un certain
acquis, ce qui justifie le terme d’héritage. Comme on peut s’y attendre, il sera possible de
développer à partir d’une classe de base, autant de classes dérivées qu’on le désire. De même,
une classe dérivée pourra à son tour servir de classe de base pour une nouvelle classe dérivée.

III.4- Création d’une classe « ParallelPort » pour la gestion du port parallèle

Nous allons créer une classe appelée « ParallelPort » qui a pour but d'envoyer des
données (un octet) sur le registre de donnée du port parallèle, qui se trouve donc à l'adresse de
base de celui-ci. Elle aura la flexibilité d’indiquer des différentes adresses. Elle va aussi lire les
valeurs sur une adresse spécifiée du port. Si c'est l'adresse de base du port, elle affichera donc les
dernières données qui y sont écrites. Comme notre programme est écrit en « console », ces
valeurs seront affichées dans une console. Elle ne prendra qu'un seul attribut qui stockera
l'adresse de base du port.

III.4.1- Attribut

La classe que nous développons a besoin de l’adresse de base du port pour fonctionner.
Cette donnée doit être stockée dans un membre de donnée (attribut) que nous appellerons
BaseAddress. Comme on l’a dit plus haut, l’adresse de base du port peut être différente d’un
ordinateur à un autre. Pour être sûr de pouvoir stocker la valeur de cette adresse, on va utiliser le
type de donnée unsigned int pour l’attribut BaseAddress. Puisqu’il n’existe pas d’adresse
négative, on emploie le modificateur « unsigned » qui signifie « non signé » pour ne prendre en
compte que les entiers (int) positifs, codés sur 32 bits (ou 16 bits selon les machines), élargissant
ainsi la gamme de valeur possible.

N.B : La taille d’une variable n’est pas forcement la même pour chaque ordinateur. Pour la
connaitre, il suffit d’utiliser l’opérateur sizeof() de C.

III.4.2- Méthodes

Pour écrire un octet de donnée sur le port à l’adresse de base, on va créer une fonction
nommée WritePort(). Un octet est représenté par le type de donnée unsigned char. La fonction
ne fait qu’envoyer des données donc elle ne retourne rien, son type de retour est donc void .Elle
ne prend qu’un seul paramètre, nommée data de type unsigned char, c’est cette valeur qui va
être envoyée au port à l’adresse spécifiée par la valeur de BaseAddress.

Promotion 2010 Page 86


PROGRAMMATION DU PORT PARALLELE PAR LE LANGAGE C++

Pour lire et afficher la valeur sur une adresse spécifiée ou non, on utilise la fonction lecture().
Cette fonction va être surchargée. Si l’adresse n’est pas spécifiée, la lecture s’effectuera à
l’adresse de base par défaut, sinon l’adresse sera envoyer en paramètre de la fonction. Cette
fonction ne retourne rien.

Une autre fonction valPort() consiste à lire sur une adresse donnée en paramètre et à retourner
cette valeur. Son type de retour est donc unsigned char .

Dans notre cas, on utilise le port uniquement comme sortie. Les valeurs lues par les fonctions
sont donc les dernières valeurs écrites.

III.4.3- Définition de la classe

Pour la définition de la classe, on va séparer les méthodes en prototypes et définitions


dans 2 fichiers différents pour avoir un code plus modulaire :

Un fichier header nommé ParallelPort.h qui contiendra les attributs et les prototypes
de la classe.

class ParallelPort
{
private:
unsigned int BaseAddress; // attribut
public:
ParallelPort(); // constructeur par défaut
ParallelPort(unsigned int); // surcharge de constructeur
~ParallelPort(); // déstructeur
void razPort(); // initialisation du port
void WritePort(unsigned char); // écriture sur le port
void lecture(); // lecture sur le port
void lecture(unsigned int); // surcharge de la fonction lecture
unsigned char valPort(unsigned int);
};
Un fichier source nommé ParallelPort.cpp qui contiendra la définition des méthodes
et leurs implémentations.

Promotion 2010 Page 87


REALISATION DE LA CARTE D’INTERFACE

Chapitre 1 : REALISATION DE LA CARTE D’INTERFACE

I.1- Alimentation

I.1.1- Le courant que doit fournir l’alimentation

Le courant consommé est composée de :

• 2 moteurs pas à pas :


Consommant chacun Iph = 500[mA/phase], alimentés en biphasé donc les 2 moteurs
consomment : 2.Imoteur = 2×2×500 = 2000 [mA]
 2.Imoteur = 2[A]
• 2 C.I. SAA 1027 :
Pour un C.I. : I(SAA 1027) = Icc + IB + 2.IQ , avec Icc = 4,5 [mA] ; IB = 12 [mA] ; IQ = 11[mA]
I(SAA 1027) = 4,5 + 12 +2×11 = 38,5 [mA]
Pour les 2 C.I. : 2. I(SAA 1027) = 2×38,5 = 77
 2. I(SAA 1027) = 77 [mA]
• Polarisation de la sortie des 7 C.I. PC 817 :
En supposant que tous les bits de donnée à la sortie du port parallèle sont au niveau H, et
avec Ic = 20 [mA], on a : I(PC817) = 7×20 = 140
 I(PC817) = 140 [mA]
• 1 relais :
 Ic4 = Irelais = 39 [mA]

Au total, l’alimentation doit fournir :

Ialim = 2.Imoteur + 2. I(SAA 1027) + I(PC817) + Irelais

Ialim = 2 + 0,077 + 0,14 + 0,039

Il faut majorer cette valeur, soit :

 Ialim = 3 [A]

I.1.2- Transformateur

Le transformateur devra donc fournir un courant de 3[A].

La valeur efficace de la tension secondaire du transformateur est U2N = 12 [V].

Promotion 2010 Page 89


REALISATION DE LA CARTE D’INTERFACE

La puissance nominale (apparente) du transformateur est :

S = U2N × Ialim

S = 12 × 3 = 36 [VA]

Choix du transformateur : fréquence : 50 [Hz]

tension primaire : U1N = 220 [V]

tension secondaire : U2N = 12 [V]

puissance nominale : S = 46 [VA]

I.1.3- Redressement et filtrage

Le redressement est assuré par un pont redresseur B40C3700 (40[V]/3,7[A]) et le filtrage


sera assuré par un condensateur électrochimique.

En supposant que Ialim est constante, on a la relation suivante :

I alim .T
C= (III - 1)
∆U

Avec :

∆U = Umax – Umin : amplitude maximale de l’ondulation

U=
max U 2 m − 2.Vd ; U2m est la tension maximale du secondaire du

transformateur et 2.Vd représente la chute de tension dans le pont redresseur.

=
U max U 2 N . 2 − 2.Vd

soit : U max = 12. 2 − 2.0, 7 = 15,57V  16 [V ]


1
T : période de l’ondulation ; T = pour un redressement double alternance,
2. f
1
=
soit T = 0, 01s
2.50
Ialim : intensité maximal de sortie, Ialim = 3 [A]

Promotion 2010 Page 90


REALISATION DE LA CARTE D’INTERFACE

En utilisant un condensateur de C = 4700 [μF], on obtient une ondulation de :

I alim .T 3.0, 01
∆=
U = =−6
6, 4
C 4700.10
∆U = 6,4 [V]

Le condensateur devra supporter au moins 16 [V]. Pour la sécurité, on choisira une tension de
service de 63 [V].

 C : condensateur électrochimique 4700 [μF]/63 [V]

I.1.4- Alimentation du circuit

Nous avons besoin de 3 tensions différentes pour l’alimentation :

Vccm = 16 [V] :
C’est ce qu’on obtient aux bornes du condensateur de filtrage.
Cette tension sert à alimenter les moteurs à travers les résistances de limitation de
courant.
Vcc1 = 5 [V] :
Pour la polarisation des optocoupleurs qui sont à collecteur ouvert.
Pour avoir cette tension, nous utiliserons un régulateur de tension fixe 7805 :
- Tension de sortie = 5 [V]
- Courant de sortie maximal = 1 [A]. Ici, le régulateur ne débitera que 140 [mA] au
maximum, ce qui va très bien pour notre cas.
- La tension d’entrée doit être au moins égale à la tension de sortie +2V : 5+ 2=7V.
Cette différence de tension est appelée tension de déchet (Droupout voltage) qui
est donnée par le constructeur. Dans notre cas, la tension d’entrée est de 16 [V]
qui est bien supérieure à 7[V].
Vcc2 = 12 [V] :
Pour l’alimentation des 2 C.I. SAA 1027 et du relais, un régulateur de tension 7812
est utilisé :
- Tension de sortie = 12 [V]
- Courant de sortie maximal = 1 [A]. Notre régulateur devra débiter un courant de
2I(SAA 1027) + Irelais = 77 + 39 = 116 [mA] qui est bien inférieur à 1 [A].
- Tension de déchet = 2 [V]

Promotion 2010 Page 91


REALISATION DE LA CARTE D’INTERFACE

Figure 3-1 : Schéma géneral de l’alimentation

Les condensateurs à la sortie des régulateurs sont facultatifs. Ils servent à améliorer la
stabilité du régulateur et permet une meilleur réponse aux transitoires (appels de courant
important par exemple).

I.2- Radiateurs

Dans l’étage de puissance (transistor de puissance) et les régulateurs de tension, une


partie de la puissance est transformée en chaleur. Pour permettre aux composants en question de
se débarrasser facilement de cette chaleur, on fait appel, en générale à un ou plusieurs radiateurs.

Méthode de calcul des radiateurs :

Soit Rth j-mb [°C/W] : Résistance thermique entre la jonction et le boitier


Rth mb-h [°C/W] : Résistance thermique entre le boitier et le radiateur
Rth h-a [°C/W] : Résistance thermique entre le radiateur et son environnement
Les résistances thermiques fournies dans les fiches techniques des composants sont en
générales : Rth j-mb [°C/W] et Rth j-a [°C/W] : Résistance thermique entre la jonction et son
environnement.

Rth h-a est donnée par le fabricant du radiateur et c’est ce qu’il faut calculer.

Prenons un exemple de calcul avec le régulateur de tension 7812 :

Donnée : Rth j-mb = 5 [°C/W]


Rth j-a = 65 [°C/W]
Tj max = 125 [°C] : température maximale de la jonction
Ta = 25 [°C] : température ambiante
Pour un régulateur de tension fixe, la puissance maximale à transformer en chaleur est :
Promotion 2010 Page 92
REALISATION DE LA CARTE D’INTERFACE

Pmax = (Vi - Vo) × Io max

Avec Vi = 16 [V] : tension d’entrée


Vo = 12 [V] : tension de sortie
Io max = 120 [mA] : courant de sortie maximale
Pmax = (16 - 12) × 0,12 = 0,48 [W]

Dans la situation la plus critique, la différence de température entre la jonction et l’ambiante est :

∆T = Tj max – Ta = 125° - 25° = 100[°C]

La puissance maximale à dissiper correspond à Tj max et donnée par l’expression :

∆T
Pmax = (III - 2)
Rth
La somme de toutes les résistances thermiques, de la jonction à l’ambiant, doit être inférieure à
∆T 100
=
Rth = = 208 °C / W
Pmax 0, 48

Ici, Rth j-a = 65 [°C/W] < Rth , donc on n’a pas besoin d’un radiateur pour le 7812.

Sinon, il faudra calculer Rth h-a minimum du radiateur à utiliser comme suit :

La valeur de Rth mb-h dépend de l’absence ou de la présence d’un isolant (plaquette, pâte thermo
conductrice) entre le composant et le radiateur et, bien sur, du matériau dont est fait l’isolant.

Rth j-mb + Rth mb-h + Rth h-a ≤ Rth

 Rth h-a ≤ Rth – (Rth j-mb + Rth mb-h)

I.4- Réalisation pratique

On a utilisé un « circuit à bandes » pour souder les composants du circuit.


Les transistors de puissance seront munis d’un dissipateur thermique (radiateur) sur lequel ils
seront vissés. L’alimentation et les transistors de puissance sont soudés sur un circuit à part.

Un Centronics femelle à 36 broches est soudé sur le circuit pour les entrées de commande
venant du port parallèle. Le port parallèle et la carte sont liés par l’intermédiaire d’un câble
DB25 mâle vers Centronics. Les sorties vers les moteurs s’effectueront sur des dominos.

Les 2 SAA 1027 et les optocoupleurs sont placés sur des supports de C.I.
Promotion 2010 Page 93
REALISATION DE LA CARTE D’INTERFACE

Enfin, la carte est mise dans un boitier afin de la protéger contre les poussières et tout
objet extérieur qui peut provoquer un court-circuit, et aussi pour la protection de l’utilisateur. À
l’extérieur du boitier, on ne voit plus donc, que ceux qui sont nécessaires à son utilisation, ce
sont :

- Le connecteur Centronics à 36 broches pour la liaison sur le port parallèle ;


- La prise mâle à connecter sur le secteur 220[V]/50[Hz] ;
- L’interrupteur, pour l’alimentation de la carte ;
- Les différentes connexions des deux moteurs ;
- Les voyants (DEL) qui serviront à : savoir si la carte est alimentée ou non ; savoir
si le relais est alimenté ou non.

Câblage du moteur :

Le moteur est constitué de quatre bobines et comporte huit fils accessibles de l’extérieur
comme le montre le schéma ci-dessous. La configuration des connexions des bobines nous
permet de pouvoir choisir entre une commande de type bipolaire et une commande de type
unipolaire.

Notre choix est porté sur la commande unipolaire. Nous avons donc construit un point milieu
comme sur la figure. Quatre fils sont donc communs et reliés en permanence à l’alimentation.

Pour connaitre les extrémités de chaque bobine, il faut effectuer une mesure à l’aide d’un
ohmmètre pour trouver la valeur de 16 [Ω] (résistance par phase du moteur).

Il faut faire des essais pour connaitre l’ordre de succession des phases (a, b, c, d) en reliant un à
un les quatre fils à la masse.

Figure 3-2 : Configuration du moteur en mode unipolaire


Promotion 2010 Page 94
SYSTEME DE POSITIONNEMENT SUR UN PLAN (x,y)

Chapitre 2 : EXEMPLE D’APPLICATION : SYSTEME DE


POSITIONNEMENT SUR UN PLAN (X,Y)

II.1- But et limite

Notre but principal est de pouvoir positionner un porte-outil sur un plan et dans la suite,
pouvoir réaliser une perceuse de circuit imprimé. Nous allons considérer ce porte-outil comme
un point pour avoir plus de précision. Ce point est repéré à tout moment dans le plan par ces
coordonnées (x ; y), où x est l’abscisse et y l’ordonnée. Nous n’avons besoin que du premier
quadrant c'est-à-dire le plan où x et y sont positifs. x est compris entre 0 et 200 [mm]; y compris
entre 0 et 150 [mm].

Cette position est obtenue par la commande par programmation de deux moteurs pas à pas : un
moteur permet le positionnement sur l’axe ox et l’autre sur oy.

Avec ce système, en fonction de l’outil et de la programmation, on peut envisager plusieurs


applications possibles. Citons par exemples :

- Perceuse de circuit imprimé


- Traceur
- Cutteur
- Graveur
- Système à visser ou à dévisser …

Mais dans le cas général des applications, en particulier pour la perceuse de circuit
imprimé, on a besoin de déplacer l’outil suivant un axe oz perpendiculaire au plan, on a alors 3
axes. Pour contrôler ce déplacement, il faut évidemment un troisième moteur pas à pas. Pour la
perceuse de circuit imprimé, un autre moteur sera nécessaire pour faire tourner la forêt.

Nous nous limiterons au positionnement de l’outil dans le plan (x, o, y) à l’aide de deux
moteurs pas à pas. Nous allons donc réaliser un prototype pour présenter le fonctionnement de ce
système. Cette réalisation est donc loin d’être la version finale, mais dans le but de montrer
l’efficacité du programme à contrôler le positionnement du point dans le plan et de montrer la
précision des moteurs.

Promotion 2010 Page 95


SYSTEME DE POSITIONNEMENT SUR UN PLAN (x,y)

II.2- Réalisation du système mécanique

Nous allons désigner par M1 le premier moteur et M2 le second. M1 pour le déplacement


suivant l’axe des ordonnées, M2 pour celui des abscisses.

Pour transformer le mouvement de rotation du moteur en un mouvement de translation, la


solution la plus simple consiste à utiliser des poulies et courroies. Des courroies crantées sont
indispensables pour éviter tout glissement et tout déphasage entre l'entrée et la sortie.

La figure ci-dessous montre un croquis du système à réaliser. S1 représente le système de


guidage du porte-outil suivant la direction de y, il est encadré sur la figure.

Figure 3-3 : Système de guidage du porte-outil

Système S1 :

S1 est composé du moteur M1, du porte-outil, d’un système de guidage en translation, de


deux poulies et d’un courroie crantée.

Un poulie est fixé sur le moteur, un autre est mené par l’intermédiaire du courroie, c'est-à-dire
qu’il tourne librement autour de son axe central, c’est un « poulie folle ». Un des deux brins de la
courroie est fixé sur le porte-outil pour le faire déplacer. Quand le moteur M1 tourne dans le sens
horaire, le porte-outil se déplace dans le sens de y, sinon il se déplace dans l’autre sens.

Le guidage en translation est effectué par deux axes sur lesquels il peut coulisser.

Promotion 2010 Page 96


SYSTEME DE POSITIONNEMENT SUR UN PLAN (x,y)

Figure 3-4 : Système S1

Moteur M2 :

Pour que le porte-outil puisse se déplacer suivant les deux directions, il faut que le
système S1 en entier soit guidé suivant la direction de x. C’est le moteur M2 qui se chargera de
ce travail. Le principe est le même que pour S1, avec 2 poulies et une courroie crantée, mais
cette fois, c’est S1 qui sera fixé sur un des brins de la courroie. Le guidage en translation est
identique au premier.

II.3- Calcul du nombre de pas en fonction de la position du point

II.3.1- Théoriquement

Figure 3-5 : Déplacement du point pour un pas

Soit d le déplacement élémentaire c'est-à-dire le déplacement du point pour un pas effectué par le
moteur. En supposant que le système est parfait, on a la relation :

d = R× θ

où R : rayon du poulie
θ : angle de pas du moteur

1,8 × π
Nous avons θ = 1,8° = = 0,01.π [rad] ; R = 9 [mm]
180
Avec un pas, le déplacement est d = 9 × 0,01 × π

Promotion 2010 Page 97


SYSTEME DE POSITIONNEMENT SUR UN PLAN (x,y)

 d = 0,3 [mm]
Le nombre de pas nécessaire pour un déplacement de 1 [mm] est :

1 1
nbPas= = = 3,5
d 0, 283
nbPas = 3,5

II.3.2- Pratiquement

La machine n’étant pas parfaite, les erreurs sont inévitables lors de sa fabrication. Les
résultats seront donc légèrement différents de la théorie. Pour le calcul du nombre de pas, nous
allons utiliser une autre méthode plus pratique pour palier ces erreurs.

Méthode :

La méthode consiste à trouver le nombre de pas nécessaire pour effectuer un déplacement


de 200[mm] pour x, 150 [mm] pour y. On augmente peu à peu le nombre de pas et on mesure la
distance parcourue jusqu’à obtenir exactement 150 ou 200 [mm].

En faisant le rapport entre le nombre de pas et le déplacement, on trouve le nombre de pas pour
un déplacement de 1 [mm].

Sur x [0 ; 200] :
Le nombre de pas nécessaire pour un déplacement de 200 [mm] est : 756 pas
Pour 1 [mm], le nombre de pas est donc :

756
=
nbPas = 3, 78
200
nbPas = 3,78
Pour x [mm], nbPas = 3,78x
Sur y [0 ; 150] :
Le nombre de pas nécessaire pour un déplacement de 150 [mm] est : 568 pas
Pour 1 [mm], le nombre de pas est donc :

568
=
nbPas = 3, 78
150
nbPas = 3,78

Promotion 2010 Page 98


SYSTEME DE POSITIONNEMENT SUR UN PLAN (x,y)

Pour y [mm], nbPas = 3,78y

Le résultat est le même sur les deux axes. Ce nombre est un coefficient, le nombre de pas doit
être un nombre entier, il faut donc arrondir cette valeur à 4 pas pour 1 mm. Mais dans la
programmation, il ne faut arrondir aucune valeur que lorsqu’il s’agit du résultat final.

Résolution de la machine :
C’est le déplacement le plus petit que la machine peut effectuer c'est-à-dire le déplacement
effectué pour un pas du moteur.

1
d=
3, 78
 d = 0,3 [mm]
Cette résolution peut très bien être améliorée en utilisant un système de réducteur par
exemple ou en utilisant d’autre type de transmission que « poulies et courroie ». Bref, la partie
mécanique doit être étudiée convenablement pour atténuer les vibrations, diminuer les jeux et
augmenter la précision.

Figure 3-6 : Photo de la réalisation

Promotion 2010 Page 99


Programmation de LA COMMANDE DE POSITIONNEMENT

Chapitre 3 : PROGRAMMATION DE LA COMMANDE DE


POSITIONNEMENT

III.1- Introduction

Nous avons déjà vue au chapitre 3 de la partie II, la création d'une classe
appelée:"ParallelPort" pour la communication sur le port parallèle. Nous allons maintenant
utiliser cette classe pour contrôler notre système de positionnement sur deux axes, réalisé ci-
dessus. Nous allons donc programmer de manière orientée objet. Pour cela, il nous faut créer
d'autres classes pour gérer les besoins du système. Au besoin, les classes vont se communiquer
entre elles, c’est l’un des particularités de la POO. Comme on a déjà évoqué auparavant, en
POO, on a la possibilité d’intégrer facilement de nouvelles spécifications si nécessaire. Dans
notre cas, ces spécifications sont innombrables, nous n’allons développer que ce qui sont
essentiels, en particulier l’obtention de la position sur une coordonnées données.

III.2- Faire tourner le moteur avec une vitesse et un nombre de pas connus

M2

M1

Figure 3-7 : Diagramme des impulsions

La vitesse de rotation du moteur est obtenue en fonction de la fréquence f des impulsions à


envoyer sur D0 pour le moteur M2, sur D4 pour le moteur M1.
Comme T = 2t et f = 1/T => f = 1/2t [pas/s]
La vitesse de rotation du moteur est :

f
n= [tours / s ]
Np

Promotion 2010 Page 100


Programmation de LA COMMANDE DE POSITIONNEMENT

où Np est le nombre de pas par tour du moteur. Np = 200 [pas/tour]

La vitesse linéaire du point est v = f × d [mm/s], avec d = 0,3 [mm]

d
v= [ mm / s ]
2t

Le nombre de pas est égal au nombre d’impulsion envoyé sur D0 ou D4.

III.2.1- Ligne de programme utilisant la classe ParallelPort

Voici un programme lançant le moteur avec une vitesse v = d/2t et nbPas pas, en utilisant la
classe ParallelPort :

ParallelPort ourPort ; // création d’un objet ourPort


unsigned char val1=0xB, val2=0xA, val=0x28 ;
//Déclaration des variables
int t=1, nbPas=200 ;
for (int i = 0 ; i < nbPas ; i++)
{
ourPort.WritePort(val1 | val);
Sleep(t); // attente de t milliseconde
ourPort.WritePort(val2 | val);
Sleep(t);
}
Un seul octet est envoyé au port pour commander les deux moteurs, on ne peut donc pas
commander les deux moteurs indépendamment. Comme on voit sur la figure 3-7, les 3 premiers
bits de poids faible seront pour la commande de M2, le bit de rang 4 pour le relais et les bits de
rang 5, 6, 7 pour M1.

Le programme ci-dessus commande un moteur. Les valeurs val1 et val2 sont les octets à
envoyer pour faire avancer le moteur, les bits inutilisés sont mis à 0. val est la dernière valeur
utilisée pour la commande de l’autre moteur.

On utilise l’opérateur de manipulation de bit | qui signifie « OU inclusif bit à bit» entre la
valeur pour commander M1 et M2. Cet opérateur effectue, entre deux mots binaires, un OU
logique sur les bits de même rang. Sa table de vérité est donnée ci-dessous :

Promotion 2010 Page 101


Programmation de LA COMMANDE DE POSITIONNEMENT

X Y X|Y
0 0 0
0 1 1
1 0 1
1 1 1

Tableau 3-1 : Table de vérité de l’opérateur OU

Les différentes valeurs à envoyer au port pour faire tourner les moteurs sont listées dans le
tableau ci-dessous :

Moteur M2 Moteur M1
Sens horaire Sens anti-horaire Sens horaire Sens anti-horaire
bin hex déc bin hex déc bin hex déc bin hex déc
val1 1011 0xB 11 1111 0xF 15 111000 0x38 56 1111000 0x78 120
val2 1010 0xA 10 1110 0xE 14 101000 0x28 40 1101000 0x68 104

Tableau 3-2 : Liste des valeurs à envoyer au port

Le relais n’est alimenté que lorsque les deux moteurs sont à l’arrêt. Pour alimenter le
relais, il suffit de mettre à 0 le bit de rang 4 qui le commande, c'est-à-dire, envoyer 0 à D3. Tant
qu’il y a un moteur qui tourne, on envoi 1 à D3. C’est pourquoi dans le tableau ci-dessus, la
valeur de D3 est toujours 1.

III.2.2- Précision des attentes sous Windows

La fonction Sleep(t) permet de mettre en pause le programme pendant t millisecondes.


Elle détermine la vitesse de rotation du moteur.

La valeur minimale de t est de 1 ms, d’où :


Fréquence maximale : f = 1/2t = 1/(2×0,001) = 500 [pas/s]
Vitesse de rotation maximale : n = f/Np = 500 / 200 = 2,5 [tours/s]
Vitesse linéaire maximale : v = d / 2t = 0,265 / (2×0,001) = 132,5 [mm/s]

Promotion 2010 Page 102


Programmation de LA COMMANDE DE POSITIONNEMENT

Cette fonction Sleep(t) n’est cependant pas parfaite, c'est-à-dire qu’on ne peut pas avoir
exactement t millisecondes de pause à cause du système d’exploitation (O.S.) multitâche
Windows.

a- Notion de temps partagé et temps réel

La gestion du temps est l'un des problèmes majeurs des O.S. La raison est simple : les O.S.
modernes sont tous multitâche, or ils utilisent du matériel basé sur des processeurs qui ne le sont
pas, ce qui oblige le système à partager le temps du processeur entre les différentes tâches. Cette
notion de partage implique une gestion du passage d'une tâche à l'autre qui est effectuée par un
ensemble d'algorithmes appelé ordonnanceur.

Un O.S. classique comme Windows utilise la notion de temps partagé, par opposition au
temps réel. Dans ce type de système, le but de l'ordonnanceur est de donner à l'utilisateur une
impression de confort tout en s'assurant que toutes les tâches demandées sont finalement
exécutées. Ce type d'approche entraîne une grande complexité dans la structure même de
l'ordonnanceur qui doit tenir compte de notions comme la régulation de la charge du système ou
la date depuis laquelle une tâche donnée est en cours d'exécution.

Un système temps réel est une association logiciel/matériel où le logiciel permet, entre
autre, une gestion adéquate des ressources matérielles en vue de remplir certaines tâches ou
fonctions dans des limites temporelles bien précises. Voici quelques exemples de systèmes
d'exploitation temps réel :

- OS-9 ;
- RTlinux (RealTime Linux) ;
- ONX ;
- VxWorks.

Un système temps réel n'est pas forcément plus rapide qu'un système à temps partagé. Il devra
par contre satisfaire à des contraintes temporelles strictes, prévues à l'avance et imposées par le
processus extérieur à contrôler. Une confusion classique est de mélanger temps réel et rapidité de
calcul du système donc puissance du processeur.

b- Conclusion

Sous Windows, on ne peut pas obtenir exactement le temps d’attente d’une demi-période t =T/2.
La vitesse réellement obtenue par le moteur dépend donc de plusieurs paramètres, tels que : la

Promotion 2010 Page 103


Programmation de LA COMMANDE DE POSITIONNEMENT

vitesse du processeur, la charge du CPU c'est-à-dire du nombre de processus qui sont en train de
s’exécuter, de l’ordre de priorité des différentes tâches …

III.3- Création de classes pour contrôler le déplacement et la position du point


sur les deux axes

III.3.1- Introduction

Nous allons créer deux autres classes appelés Point et Moteur qui vont se communiquer
entre eux et avec la classe ParallelPort pour bien gérer le fonctionnement du système. Nous
n’allons voir que les prototypes des méthodes utilisées, expliquer leur fonction mais n’allant pas
voir tous leurs implémentation car c’est trop long. Enfin, nous allons utiliser ces classes dans la
fonction main() pour communiquer avec l’utilisateur via une console. On a choisi la console
pour notre programme car elle est plus simple à élaborer, elle suffit pour notre application et plus
rapide qu’un programme avec fenêtre. Mais comme le programme est écrit de manière objet, il
est plus facile de la modifier en créant des fenêtres. L’IDE utilisé est Code ::Blocks.

III.3.2- Classe Point

La classe Point va gérer le positionnement du point sur le plan (x, y).

Elle a pour attribut l’abscisse m_x, l’ordonnée m_y, la dernière abscisse m_x0 et la dernière
ordonnée m_y0 du point. Elles sont de type réel pour pouvoir stocker tous les coordonnées
compris dans les limites imposées.

Les méthodes de cette classe sont :

 Point() ;

Constructeur par défaut. Tous les attributs sont initialisés à 0 par défaut.

 Point(double,double);

Constructeur de la classe. Elle prend comme paramètres l’abscisse et l’ordonnée du point.

 ~Point();

Destructeur de la classe.

 double getX() const; double getY() const; double getX0() const; double getY0() const;

Ce sont des méthodes accesseurs qui servent à retourner les valeurs des attributs.
Promotion 2010 Page 104
Programmation de LA COMMANDE DE POSITIONNEMENT

 void recevoirX(double); void recevoirY(double);

Elles prennent comme paramètre l’abscisse ou l’ordonnée à affecter aux attributs m_x ou m_y.

Avant l’affectation, elles vérifient si le paramètre reçu est compris entre 0 et 200 pour x et entre
0 et 150 pour y.

 void afficher();

Affiche les valeurs actuelles des attributs dans la console.

 void enregX(); void enregY();

Affecte la valeur actuelle de l’abscisse m_x (respectivement m_y) à m_x0 (resp m_y0) et
d’enregistrer cette valeur dans un fichier. On enregistre cette valeur dans un fichier pour que,
même si on ferme le programme, il se souviendra toujours de la dernière position du point.

 void recupereX(); void recupereY();

Récupère la valeur de l’abscisse (respectivement de l’ordonnée) enregistrée dans le fichier et


réaffecte cette valeur dans m_x0 (resp m_y0).

III.3.3- Classe Moteur

La classe Moteur gère la rotation des moteurs en tenant compte de la position du point.

Les attributs de cette classe sont :

m_nbPasX et m_nbPasY : respectivement le nombre de pas à effectuer par M2 et le nombre de


pas à effectuer par M1. Ils sont de type entier.

m_point : C’est un objet de type Point donc contient tous les attributs de Point. Il sert à repérer le
point dans le plan.

m_valPortX et m_valPortY: Pour stocker les dernières valeurs envoyées au port pour la
commande de M2 et M1.

Les méthodes utilisées sont :

 int getPasX() const; int getPasY() const; unsigned char getValPortX() const; unsigned
char getValPortY() const;

Des accesseurs pour retourner les valeurs des attributs.

Promotion 2010 Page 105


Programmation de LA COMMANDE DE POSITIONNEMENT

 void motAbscPoint(double); void motOrdPoint(double);

Ces méthodes vont appeler les fonctions recevoirX et recevoirY de la classe Point pour stocker
les valeurs de l’abscisse et l’ordonnée du point m_point.

 void calculPasX(); void calculPasY();

Pour calculer le nombre de pas m_nbPasX et m_nbPasY.

756
- =
Sur x : m _ nbPasX × déplacement
200

déplacement = m_x – m_x0


Avant le calcul, il faut récupérer la valeur de m_x0 par la méthode recupereX();
si déplacement > 0 => rotation en sens horaire
si déplacement < 0 => rotation en anti-horaire
Il faut arrondir cette valeur à l’entier le plus proche car le nombre de pas doit être un entier.
- Sur y, la méthode est la même que sur x mais avec :

568
=
m _ nbPasY × déplacement
150

 bool horaireX();bool horaireY();

Ces sont des booléens, elles retournent vrai (true) si le nombre de pas est positif c'est-à-dire
rotation en sens horaire, sinon elles retournent faux (false).

 void lancer1Pas(unsigned char, unsigned char, unsigned char, int);

Cette fonction permet de lancer le moteur de 1 pas vers le sens voulu et avec une vitesse comme
nous avons déjà vue dans le paragraphe III-2-1.

Elle reçoit en paramètres : les valeurs val1, val2, val et t

 void enrX(); void enrY();

Appelle les méthodes enregX() et enregY() de Point.

 void enregValPortX(int); void enregValPortY(int);

Promotion 2010 Page 106


Programmation de LA COMMANDE DE POSITIONNEMENT

Servent à affecter, après chaque rotation du moteur les valeurs val1 et val2 dans respectivement
m_valPortX et m_valPortY. Ces valeurs sont aussi enregistrées dans des fichiers. Les valeurs
stockées dans les fichiers changent tous le temps pendant l’évolution du programme.

 void recupValPortX(); void recupValPortY();

Récupère les dernières valeurs enregistrées dans les fichiers en les réaffectant dans
m_valPortX et m_valPortY. Ces valeurs vont être le troisième paramètre val de la fonction
lancer1Pas c'est-à-dire, on effectuera l’operateur OU entre : val1|val et val2|val avec :

val = m_valPortY pour la commande de M2

val = m_valPortX pour la commande de M1

 void accel(unsigned char, unsigned char, unsigned char, int);

Cette fonction sert à accélérer le moteur avec au maximum 6 pas. On augmente petit à petit la
vitesse du moteur, c'est-à-dire on diminue progressivement la demi-période t.

 void decel(unsigned char, unsigned char, unsigned char, int);

Cette fonction sert à décélérer le moteur avec au maximum 6 pas. On diminue petit à petit la
vitesse du moteur, c'est-à-dire on augmente progressivement la demi-période t.

 void lancerX(int); void lancerY(int);

Ces fonctions gèrent toutes les données nécessaires avec les différentes méthodes pour faire
tourner les moteurs un à un. Elles reçoivent en paramètre la demi-période t qui déterminera la
vitesse.

 void lancerXY(int);

Cette fonction va gérer toutes les données avec les conditions nécessaires pour faire tourner les
deux moteurs en même temps. Elle reçoit en paramètre la demi-période t.

En fait, les deux moteurs ne tournent pas vraiment en même temps. Ils tournent avec un
certain nombre de pas un à un jusqu’à accomplir le nombre de pas qu’ils doivent chacun
effectuer. Voici la méthode utilisée pour cela :

Nous avons donc 2 différents nombres de pas à accomplir, l’un m_nbPasX, et l’autre
m_nbPasY.

Promotion 2010 Page 107


Programmation de LA COMMANDE DE POSITIONNEMENT

Désignons par P le plus petit des deux nombres et G le plus grand. Au total, il faut faire tourner
(P + G) pas, dont P pour un axe et G pour l’autre. Soit p et g les deux axes respectivement pour
P pas et pour G pas.

Soit n la division entière de G sur P, n = G/P et r le reste, on a :


G = n.P + r
r = G – n.P

Exemple : P = m_nbPasY, G = m_nbPasX, les deux moteurs en sens horaire

for (int i=0; i<P; i++) //boucle P fois


{
for (int j=0; j<n; j++) //boucle n fois
{
lancer1Pas(0xB,0xA,m_valPortY,1); //lancer M2 de 1pas
}
enregValPortX(0x2);
lancer1Pas(0x38,0x28,m_valPortX,1); //lancer M1 de 1pas
enregValPortY(0x20);
if (i<r) //on n’entre dans ce bloc que r fois
{
lancer1Pas(0xB,0xA,m_valPortY,1); //reste
}
}

III.3.4- Utilisation dans main()

On va utiliser cette fonction pour communiquer avec l’utilisateur via une console, c'est-à-
dire pour recevoir les données nécessaires au programme.

On va créer des menus avec la condition switch qui permettra à l’utilisateur de choisir entre
plusieurs options.

Promotion 2010 Page 108


Programmation de LA COMMANDE DE POSITIONNEMENT

switch(expression)
{
case constante_1 : [suite_d’instructions_1]
case constante_2 : [suite_d’instructions_2]
………………………………….
case constante_n : [suite_d’instructions_n]
default : [suite_d’instructions]
}
Figure 3-8 : Syntaxe de l’instruction switch

Les différents menus utilisés sont :

1- 1 point
2- sequence de points
3- remettre à zero
4- quitter

1 point :

Permet au système de se placer sur un seul point. Les instructions dans cette étiquette sont dans
l’ordre :

- Création d’un objet de type Moteur,


- Demande de l’abscisse du point,
- Affectation de cette abscisse à la variable m_x du point,
- Appel de la méthode calculPasX(),
- Demande de l’ordonnée du point,
- Affectation de cette l’ordonnée à la variable m_y du point,
- Appel de la méthode calculPasY(),
- Demande du mode de lancement des moteurs : un à un ou les deux à la fois.
- Demande de la vitesse : rapide ou lente. t varie en fonction du choix.
Si le choix est un à un :
. Appel de la méthode lancerX(t),
. Appel de la méthode lancerY(t).
Promotion 2010 Page 109
Programmation de LA COMMANDE DE POSITIONNEMENT

Si le choix est les deux à la fois :


Appel de la méthode lancerXY(t),

Sequence de points :

Permet au système de se placer sur une suite de points. Les instructions sont :
- Demande du nombre de point,
- Allocation dynamique d’un tableau de type Moteur pour stocker les données nécessaires pour
chaque objet. Le nombre de case correspond au nombre d’objet, donc au nombre de point.

- Pour chaque objet, donc pour chaque case du tableau :


. Demande de l’abscisse du point,
. Affectation de cette abscisse à la variable m_x du point,
. Appel de la méthode calculPasX(),
. Appel de la méthode enrX() pour affecter l’abscisse du point à m_x0,
. Demande de l’ordonnée du point,
. Affectation de cette ordonnée à la variable m_y du point,
. Appel de la méthode calculPasY(),
. Appel de la méthode enrY() pour affecter l’ ordonnée du point à m_y0,
- Demande du mode de lancement des moteurs : un à un ou les deux à la fois.
- Demande de la vitesse : rapide ou lente. t varie en fonction du choix.
Si le choix est un à un, pour chaque objet :
. Appel de la méthode lancerX(t),
. Appel de la méthode lancerY(t).
Si le choix est les deux à la fois, pour chaque objet :
Appel de la méthode lancerXY(t),
- Libération de la mémoire.
Remettre à zero :

Remet le point aux coordonnées (0, 0) :

- Création d’un objet de type Moteur,


- Affectation de 0 à la variable m_x du point,
- Appel de la méthode calculPasX(),

Promotion 2010 Page 110


Programmation de LA COMMANDE DE POSITIONNEMENT

- Affectation de 0 à la variable m_y du point,


- Appel de la méthode calculPasY(),
- Demande du mode de lancement des moteurs : un à un ou les deux à la fois.
- Demande de la vitesse : rapide ou lente. t varie en fonction du choix.
Si le choix est un à un :
. Appel de la méthode lancerX(t),
. Appel de la méthode lancerY(t).
Si le choix est les deux à la fois :
Appel de la méthode lancerXY(t),

Quitter :

Pour quitter le programme, l’instruction goto permet le branchement à la sortie du programme.

On utilise la structure de répétition while pour que le programme ne se ferme pas à chaque fin
d’exécution des suites d’instructions. On demande à l’utilisateur s’il veut continuer ou quitter le
programme. Tant que l’utilisateur fait le choix de continuer, le programme se remet au début
sinon on met fin au programme.

III.4- Utilisation de la console

L’utilisation de la console est facile puisqu’il suffit de suivre les instructions à l’écran. Voici ce
qui est affiché à l’écran lorsqu’on lance le programme.

Figure 3-9 : Affichage du menu dans la console

Il faut taper 1 pour 1 point, 2 pour séquence de points, 3 pour remettre à zéro et 4 pour quitter
puis taper entrée au clavier

Promotion 2010 Page 111


Programmation de LA COMMANDE DE POSITIONNEMENT

III.4.1- 1 point

- Saisir l’abscisse du point qui doit être compris entre 0 et 200 [mm] puis appuyer sur entrée : la
console affiche la dernière valeur de l’abscisse qui vient d’être récuperer et le nombre de pas à
effectuer. Si le nombre de pas est négatif, la rotation est dans le sens anti-horaire.

- Saisir l’ordonnée du point qui doit être compris entre 0 et 150 [mm] puis appuyer sur entrée :
la console affiche la dernière valeur de l’ordonnée qui vient d’être récuperer et le nombre de pas
à effectuer.

- Choisir entre les deux modes de lancement des moteurs : taper 1 pour lancer un à un, 2 pour les
deux à la fois puis appuyer sur entrée.

- Choisir la vitesse de lancement des moteurs : taper 1 pour lente, 2 pour rapide puis appuyer sur
entrée.

- Appuyer sur entrée pour lancer. Les valeurs envoyées au port sont affichées à l’écran.

L’affichage à l’écran est donné par la figure ci-dessous.

Figure 3-10 : Affichage à l’écran

Promotion 2010 Page 112


Programmation de LA COMMANDE DE POSITIONNEMENT

III.4.2- Séquence de points

- Entrer le nombre de points et appuyer sur entrée.


- Pour chaque point, entrer l’abscisse puis l’ordonnée.
- Choisir le mode de lancement suivi de la touche entrée.
- Choisir la vitesse suivi de la touche entrée.
- Appuyer sur entrée pour lancer.

III.4.3- Remettre à zéro

La console affiche les dernières valeurs de l’abscisse et de l’ordonnée qui viennent d’être
récuperer et les nombres de pas à effectuer.

- Choisir le mode de lancement suivi de la touche entrée.


- Choisir la vitesse suivi de la touche entrée.
- Appuyer sur entrée pour lancer.
Après le lancement des moteurs, taper 1 puis entrée pour revenir au menu principal ou 0 pour
sortir et mettre fin au programme.

III.5- Conclusion

Pour conclure, les résultats obtenus correspondent bien à ce qu’on attendait. En


travaillant avec une fréquence de pas maximale de 500 [pas/s], on n’observait aucun décrochage
du moteur. Avec la programmation, on peut gérer parfaitement la position du point. Par contre,
sous Windows, on ne pouvait pas avoir exactement la vitesse voulue.

Promotion 2010 Page 113


CONCLUSION

Conclusion

Ce mémoire nous a permis d’en savoir beaucoup plus sur les différents types et
commandes des moteurs pas à pas. Nous avons pu remarquer les problèmes liés aux
commandes et alimentations de ces moteurs et d’apporter les solutions nécessaires.

Dans la réalisation de ce projet, on a pu constater la précision de ces moteurs dans un


système de commande de positionnement en boucle ouverte. La POO, avec le langage C++
nous a permis de bien gérer la rotation des deux moteurs pas à pas. A travers le port parallèle
et la carte d’interface, le programme gère parfaitement le positionnement d’un point sur le
plan. On a vu aussi qu’avec la programmation, on peut facilement contrôler la vitesse du
moteur, générer une rampe d’accélération et de décélération.

La programmation devient plus facile en utilisant des circuits intégrés spécialisés tel
que le SAA 1027. En effet, on n’a besoin que de deux signaux numériques pour la commande
d’un moteur dont un pour l’avance et la vitesse, l’autre pour le sens de rotation.

Pour l’évolution et l’extension de ce projet, on pourra envisager de commander les


moteurs pas à pas en boucle fermé afin d’augmenter leurs performances. Améliorer la partie
mécanique et ajouter un troisième axe pour le rendre plus pratique.

Promotion 2010 Page 114


BIBLIOGRAPHIE ET WEBOGRAPHIE

BIBLIOGRAPHIE ET WEBOGRAPHIE

Livres et documents :

[1] Bernard Multon - Historique des machines électromagnétiques - Revue 3E.In°3 - juin
1995

[2] Jean-Marc Delaplace – « Les moteurs pas à pas. Fonctionnement et utilisation » - 20 juin
2008

[3] Bernard Multon – « Moteurs pas a pas.Structures électromagnétiques et alimentations » -


février 2006

[4] Tahar Neffati - L'électronique de A à Z - Dunod,Paris,2006 – 288p

[5] Kris Jamsa, Ph.D.Lars Klander - La bible du programmeur - Edition Eyrolles 1999

[6] Claude Delannoy - S'initier à la programmation - Edition Eyrolles 2008 - 338p

[7] Patrice Oguic - Moteurs pas-à-pas et PC - Dunod, 2ème édition - Paris,2004 - 173p

[8] Dhananjay Gadre - Programming the Parallel Port – Miller Freeman - 1998 - 285p

[9] Pierre Mayé - Aide-mémoire Electrotechnique - Dunod, Paris, 2006 - 302p

[10] J-C. Mauclerc, Y-Aubert, A. Domenach - "Guide du Technicien en électrotechnique" -


Edition Hachette technique 2003

[11] Michel ABIGNOLI, Clément GOELDEL – « Moteurs pas à pas » - Techniques de


l'Ingénieur - D3 690

[12] Robert CAEN, Michel LAJOIE-MAZENC – « Actionneurs en robotique » - Techniques


de l'Ingénieur - R7 760

Site web :

[13] http://www.otocoup.com/DocTech/alim_motpap_mm.htm

[14] http://www.senet.com.au/~cpeacock/Interfacing the Standard parallel Port.pdf

[15] http://www.sitelec.free.fr/cours

[16] http://vesta.homelinux.free.fr/site/wiki/cat_gorie_electronique

[17] http://www.datasheetcatalog.com

[18] http://www.logix4u.net

[19] http://www.Developpez.com

Promotion 2010 Page I


ANNEXE I

ANNEXE I
di
RESOLUTION DE L’EQUATION DIFFERENTIELLE : = r.i + L.
Vcc (1)
dt
Remarque préalable : - à l’instant initial t = 0, i(0) = 0

- en régime permanent, le courant est constant

di Vcc
i = cte ⇒ = 0 ⇒ i=
dt r
Sans second membre

di di r
r.i + L. =
0 ⇔ = − i
dt dt L
di r
= − dt
i L
En intégrant membre à membre

r
ln i =
− t+A
L
r
− t
i = A.e L
(2)

di dA − Lr t r − Lr t
= .e − A. .e
dt dt L

 dA − Lr t r − Lr t  r
− t
(1) ⇒ L  .e − A. .e  + r. A.e =
L
Vcc
 dt L 
dA − Lr t
L. .e = Vcc
dt
dA Vcc Lr t
= .e
dt L
Vcc Lr t
dA = .e .dt
L
Vcc L Lr t
= A . .e + B
L r
Vcc Lr .t
= A .e + B
r

Promotion 2010 Page II


ANNEXE I

 Vcc Lr t  − Lr t
(2) ⇒ i =  .e + B  .e
 r 
r
Vcc − t
L
i= +B.e
r
Or à t = 0, i(0) = 0

Vcc Vcc
⇒ 0= +B ⇒ B =

r r

Vcc  − t 
r
⇒ i (t ) = 1 − e 
L
r  

di
RESOLUTION DE L’EQUATION DIFFERENTIELLE : r.i + L. =0 (3)
dt
Remarque préalable : - à l’instant initial t = 0, i(0) = Vcc / r

- en régime permanent, le courant est nul


r
− t
(2) ⇒ i =A.e L

A t = 0,
r
Vcc − .0
i=
(0) = A.e L
r
Vcc
A=
r
Vcc − Lr .t
⇒ i (t ) =.e
r

Promotion 2010 Page III


ANNEXE II

ANNEXE II

EXTRAIT DU DATASHEET DU SAA 1027

Promotion 2010 Page IV


ANNEXE II

Typical application of the SAA 1027 as a stepping motor driver

Promotion 2010 Page V


ANNEXE III

ANNEXE III

LISTES DES COMPOSANTS ET MATERIELS UTILISES


 Résistances :
- Rd : 180 Ω, nombre : 7
- Rc : 270 Ω, nombre : 7
- R1 à R3, R19 à R21 : 18 kΩ
- R4 : 4,7 kΩ
- R5 à R11, R17, R22 à R28 : 1 kΩ
- RB : 560 Ω, nombre : 2
- R12 à R15, R29 à R32 : 150 Ω
- R18, R33 : 8,2 Ω/10W
- R16 : 100 Ω/5W
- 100 Ω, nombre : 2
 Condensateurs :
- C1, C2 : 1μF
- C3 : 4700 μF 63V
- C4, C5 : 100 nF
 Semi-conducteurs :
- T1 à T3, T9 à T11 : BC547
- T4 : 2N2222
- T5 à T8, T12 à T15 : BD135
- D1 à D9 : 1N4007
- LED rouge, nombre : 2
 Circuits intégrés :
- IC1 : optocoupleur PC817, nombre : 7
- IC2, IC3 : SAA 1027
- IC4 : pont redresseur B40C3700
- IC5 : régulateur de tension 7805
- IC6 : régulateur de tension 7812
 Divers :
- 4 supports pour C.I. 16 broches
- 8 dissipateurs thermiques
- 5 paires de dominos
- S1 : interrupteur
- 1 transformateur : 220V/12V 50Hz
- 1 prise secteur mâle
- 1 connecteur Centronics à 36 broches
- 1 prise DB 25 vers Centronics
- 1 relais 12V
- 2 moteurs pas à pas : SANYO-DENKI 103-546-5841
- Câbles et fils
- Poulies et courroies
- Axes en inox
- Roulements

Promotion 2010 Page VI


ANNEXE IV

ANNEXE IV

EXTRAIT DES LIGNES DE PROGRAMME


Implémentation de la méthode enregX de la classe Point :

void Point::enregX()
{
cout<<"enregistrer x"<<endl;
m_x0 = m_x;
FILE* fichierX = NULL;
fichierX = fopen("enregX.point", "w+");
if (fichierX != NULL)
{
fprintf(fichierX, "%lf", m_x0);
fclose(fichierX);
}
}

Implémentation de la méthode recupereX de la classe Point :

void Point::recupereX()
{
cout<<"recuperer x"<<endl;
FILE* fichierX = NULL;
double tabX[1]={0};
fichierX = fopen("enregX.point", "r");
if (fichierX != NULL)
{
fscanf(fichierX, "%lf", &tabX[0]);
printf("La variable x0 est : %lf \n", tabX[0]);

fclose(fichierX);
}
m_x0 = tabX[0];
}

Implémentation de la méthode lancer1Pas de la classe Moteur :

void Moteur::lancer1Pas(unsigned char val1, unsigned char val2, unsigned char val,int t)
{
ParallelPort ourPort;
ourPort.WritePort(val1|val); // | signifie OU inclusif (bit à bit)
ourPort.lecture();
Sleep(t);
ourPort.WritePort(val2|val);
ourPort.lecture();
Sleep(t);

Promotion 2010 Page VII


ANNEXE IV

Implémentation de la méthode accel et decel de la classe Moteur :

void Moteur::accel(unsigned char val1, unsigned char val2, unsigned char val, int nbPas)
{
{
if(nbPas<=0)goto sortie;
lancer1Pas(val1, val2, val, 100);
if(nbPas==1)goto sortie;
lancer1Pas(val1, val2, val, 50);
if(nbPas==2)goto sortie;
lancer1Pas(val1, val2, val, 25);
if(nbPas==3)goto sortie;
lancer1Pas(val1, val2, val, 12);
if(nbPas==4)goto sortie;
lancer1Pas(val1, val2, val, 6);
if(nbPas==5)goto sortie;
lancer1Pas(val1, val2, val, 3);
}
sortie:;
}
void Moteur::decel(unsigned char val1, unsigned char val2, unsigned char val, int nbPas)
{
if(nbPas>=6)
lancer1Pas(val1, val2, val, 3);
if(nbPas>=5)
lancer1Pas(val1, val2, val, 6);
if(nbPas>=4)
lancer1Pas(val1, val2, val, 12);
if(nbPas>=3)
lancer1Pas(val1, val2, val, 25);
if(nbPas>=2)
lancer1Pas(val1, val2, val, 50);
if(nbPas>=1)
lancer1Pas(val1, val2, val,100);
}

Implémentation de la méthode calculPasX de la classe Moteur :

void Moteur::calculPasX()
{
m_point.recupereX();
if((m_point.getX() - m_point.getX0())>=0)
{
m_nbPasX = (756*(m_point.getX() - m_point.getX0())/200)+0.5; //+ 0.5 pour arrondir
}
else

Promotion 2010 Page VIII


ANNEXE IV

m_nbPasX = (756*(m_point.getX() - m_point.getX0())/200)-0.5; //- 0.5 pour arrondir


}

Implémentation de la méthode lancerX de la classe Moteur :

void Moteur::lancerX(int t)
{
recupValPortY();
if(horaireX())
{
recupValPortX();
if(m_valPortX==0x6)
{
lancer1Pas(0x2,0x2,m_valPortY,1); //changement de rotation
}
if(t==1)
{
if(m_nbPasX<=12)
{
if(m_nbPasX & 1 ==1) //s'il est impaire
{
accel(0xB,0xA,m_valPortY,m_nbPasX/2);
decel(0xB,0xA,m_valPortY,(m_nbPasX/2)+1);
}
else
{
accel(0xB,0xA,m_valPortY,m_nbPasX/2);
decel(0xB,0xA,m_valPortY,m_nbPasX/2);
}
}
else
{
accel(0xB,0xA,m_valPortY,6);
for(int i=0;i<(m_nbPasX-12);i++) //rotation en sens horaire
{
lancer1Pas(0xB,0xA,m_valPortY,1);
}
decel(0xB,0xA,m_valPortY,6);
}
}
else
for(int i=0;i<m_nbPasX;i++) //rotation en sens horaire
{
lancer1Pas(0xB,0xA,m_valPortY,t);
}

Sleep(100);
enregValPortX(0x2);

Promotion 2010 Page IX


ANNEXE IV

}
else if (!horaireX())
{
m_nbPasX = -m_nbPasX;
recupValPortX();//vaovao
if(m_valPortX==0x2)
{
lancer1Pas(0x6,0x6,m_valPortY,1);
}
if(t==1)
{
if(m_nbPasX<=12)
{
if(m_nbPasX & 1 ==1) //s'il est impaire
{
accel(0xF,0xE,m_valPortY,m_nbPasX/2);
decel(0xF,0xE,m_valPortY,(m_nbPasX/2)+1);
}
else
{
accel(0xF,0xE,m_valPortY,m_nbPasX/2);
decel(0xF,0xE,m_valPortY,m_nbPasX/2);
}
}
else
{
accel(0xF,0xE,m_valPortY,6);
for(int i=0;i<(m_nbPasX-12);i++) //rotation en sens anti-horaire
{
lancer1Pas(0xF,0xE,m_valPortY,1);
}
decel(0xF,0xE,m_valPortY,6);
}
}
else
for(int i=0;i<m_nbPasX;i++) //rotation en sens anti-horaire
{
lancer1Pas(0xF,0xE,m_valPortY,t);
}
Sleep(100);
enregValPortX(0x6);
}
m_point.enregX();
}

Promotion 2010 Page X


Auteur : RANDRIAMIARISOA Haritiana Léonce
Tél : 032 44 281 72
e-mail : haritianaleonce@yahoo.fr
Adresse : Lot près 199 Cité Mandroseza, Antananarivo 101
Titre du mémoire : « Etude et commande de moteurs pas à pas par ordinateur pour un
positionnement sur le plan »
Nombre de pages : 114
Nombre de figures : 80
Nombre de tableaux : 8

RESUME
Lorsqu’un système mécanique a besoin d’être positionné avec précision, ou besoin d’une vitesse variable, on peut
recourir aux moteurs pas à pas. Ces moteurs ont besoin d’une électronique de commande pour fonctionner. Ce qui fait
que ces moteurs sont l’interface idéale entre l’électronique numérique et la mécanique.

Dans ce mémoire, on trouve l’étude des différents types de moteurs pas à pas, les différentes commandes et quelques
solutions pour l’amélioration de la performance de ces moteurs.

La réalisation d’un prototype dans ce travail, consistant en un système de commande de positionnement sur le plan a
permis de juger la précision de ces moteurs. Pour cela, deux moteurs sont commandés par ordinateur en concevant et
réalisant une carte d’interface.

Enfin, on a pu constater l’intérêt de la programmation orientée objet et le langage C++ en l’appliquant pour gérer la
commande du système. Beaucoup d’applications pourront être envisagées pour ce projet.

Abstract
When a mechanical system needs to be positioned with precision, or need a variable speed, we can resort to the
steppers motors. These motors need an electronical command to function. That way these motors are the ideal
interface between numerical electronics and mechanics.

In this memory, we find the study of the various types of steppers motors, the various commands and some solutions to
get better the motor’s performance.

The realization of a prototype in this work, which is consist in a system of positioning control on the plan made it
possible to judge the precision of these engines. For that, two motors are ordered by computer by designing and
carrying out an interface board.

Finaly, we could note the interest of the object-oriented programming and the C++language by applying it to manage
the system’s command. Many applications could be considered for this project.

Rubrique: électrique

Mots clés : moteur pas à pas, carte d’interface, port parallèle, POO, C++, positionnement, boucle
ouverte

Directeur de mémoire: Monsieur RAKOTOJAONA Andriamanantena

Vous aimerez peut-être aussi