Paper

publicité
‫اﻟﺟﻣـﮭورﯾــﺔ اﻟﺟزاﺋرﯾــﺔ اﻟدﯾﻣﻘراطﯾــﺔ اﻟﺷﻌﺑﯾــﺔ‬
REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE
‫وزارة اﻟﺗﻌﻠﯾــم اﻟﻌﺎﻟــﻲ و اﻟﺑﺣــث اﻟﻌﻠﻣـﻲ‬
MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA
RECHERCHE SCIENTIFIQUE
1 ‫ﺟﺎﻣﻌـــــــﺔ ﻗﺳﻧطﯾﻧـــــــــﺔ‬
UNIVERSITE CONSTANTINE I
‫ﻛﻠـﯾــﺔ ﻋﻠوم اﻟﺗﻛﻧوﻟوﺟﯾﺎ‬
FACULTE DES SCIENCES DE LA
TECHNOLOGIE
DEPARTEMENT : ELECTROTECHNIQUE
‫اﻟﻛﺗروﺗﻘﻧﻲ‬: ‫ﻗﺴﻢ‬
……………………………………………………………………….……………………………………………………………
…
N° d’ordre : ….
Série : ….
Mémoire
Présenté en vue de l’obtention du
Diplôme de Master en Electrotechnique
Option
Electrotechnique
Thème
DECODEUR DE VITESSE A L’AIDE
D’ARDUINO
Présenté par:
BOUCHOUKH FAYSSAL
Encadreur:
DR. MEHAZZEM FATEH
Promotion 2013/2014
Dédicace
A ma très chère mère.
A mon très cher père.
A mes frères et à mes sœurs.
A tous mes amis, surtout Amine, Abderrahim Djeddi, Najib, Boubaker.
A tous ceux qui ont partagé mes tous les beaux moments pendant cinq ans.
Je dédie ce mémoire
Fayssal
i
Remerciements
Avant tout nous remercions ALLAH le tout puissant qui nous a
donné La force et la volonté pour qu’on puisse accomplir ce travail.
Après, j'adressé mes vifs remerciements à : Mr A. Khezzar chef de
laboratoire D’Electrotechnique de Constantine (LEC), qui m’aider et
suivi l’élaboration de ce mémoire. Il est toujours disponible pour répondre à
mes questions. Tout mon respect et ma profonde reconnaissance.
Nous remercions particulièrement notre encadreur Dr F. Mehazzem, pour
son dévouement exceptionnel, sa précieuse directive et son suivi constant.
Nous tenons également à remercier le président et les membres du jury pour
nous avoir fait l’honneur d’évaluer ce travail.
Que tous les professeurs ayant contribué à notre formation trouvent ici
notre profonde reconnaissance.
ii
Sommaire
Dédicace ………….…………………..………………………...................................................................................i
Remerciements ………………………………………………………………………………………….……………….…….ii
Liste des figures et tableaux …...…………………………………………………………………..iii
Introduction générale …………………………………………………….…………………………1
CHAPITRE I
Présentation d’une carte arduino
I.1. Introduction ………………………...…………………………..…………….……...4
I.2. L’arduino UNO ………………………….………………………………………….………4
I.2.1. Dimensions et organisation ……………………….……………………………...……5
I.2.2. Alimentation …………………………………………………….……………….........5
I.2.3 Mémoire ……………………………………………………………………….……….6
I.2.2. Horloge ……………………….………………………………………...…..……..7
I.2.3.2. Entrées et sorties ………………….…………………………………….……...….7
I.2.4. Communication ……………………………………………………………....………..8
I.2.5. Programmation ………………………………………………………………….……..9
I.2.5.1. Reset automatique ….………………………………………………………...……9
I.2.5.2. Protection de surintensité USB ….…………………………………………...……9
I.3. Présentation de l’Espace de développement Intégré (EDI) Arduino ………………...…...…9
I.3.1. Description de la barre des boutons …………………………………………….........11
I.3.2. Description de la structure d’un programme ……………………………...………....11
I.4. Conclusion ………………………………………………………….……………...….…..12
CHAPITRE II
Capteur de Vitesse
II.1. Introduction …………………………………………………………………...……..……14
II.2. Le codeur incrémental ……………….…………………………………………………...14
II.2.1. Principe du codeur incrémental ………………….……………………….……….……15
II.2.2. Caractéristique principales d'un codeur incrémental ……………….….…....................16
iii
II.2.3 Raccordement d’un codeur incrémental …………………………..…………..…..…….16
II.2.3.1. A une moteur électrique ………….……………………………...……………….16
II.2.3.2. A une carte arduino ..……………………………………………………...…..….17
II.2.4. Calcul de la fréquence de sortie (f) des impulsions du codeur …………......………….17
II.2.5. Les principaux avantages et inconvénients de codeur incrémental …………...……….18
II.2.5.1. Les avantages …………………………..…………………………………………18
II.2.5.2. Les Inconvénients ………….………………………………………………..……18
II.2.6. Principaux types d’unités de traitement utilisées dans l’industrie et le codeur qui leur
sont généralement associés ……………………………………………………………....….19
II.3. Carte Dspace 1104 ………………………………………………………….…………....19
II.3.1. Présentation …………………………………………………………….……….......19
II.3.2. Processeur Maitre PPC ……………….……………………….…………...…….....20
II.3.3. Processeur esclave DSP …………………………….………………….……...……20
II.3.4. Contrôleur d’interruption ………………………..…………………….……...…….20
II.3.5. Mémoires ………………………………………………………………….…...…...21
II.3.6. Temporisateurs ………………………………………………………………….…..21
II.4. Conclusion ..…………………..…………………………………….…….……………...21
CHAPITRE III
Partie expérimentale
III.1. Introduction ………………………………………………………………………...……23
III.2. Présentation du banc d’essai …………………………………………………………….23
III.3. Rôle des différentes parties de la chaine d’acquisition ..………...……………………...24
III.3.1. Carte Dspace ………………………………………………………………...……..24
 Présentation de dSPACE ControlDesk …………………….……………..………24
III.3.2. Carte Arduino.. ……………………………………………….…………….………26
 Algorithme du prétraitement………...…………………………………………….28
III.3.3. Les résultats obtenus …………………….………………………........….….……..28
 Commentaires sur les résultats ……………………………………………………29
III.4. Conclusion ……………………………………………...……………………………….30
Conclusion générale ……………………………………………………….……...………………31
Bibliographe ………………………………………………………………………………………32
iii
Liste des figures et tableaux
Figure I.1 : Résumé des caractéristiques de la carte Arduino Uno………………………..……….4
Figure I.2 : Interface de carte Arduino Uno…………………………………………….…...……..5
Figure I.3 : Communication vers l’ordinateur……………………………………….………..……8
Figure I.4 : espace de développement intégré……………………………………………...…..…10
Figure I.5 : la structure d’un programme……………………………………….…………..…..…12
Figure II.1 : Description d’un codeur…………………………………………………...…..…….15
Figure II.2 : Codeur incrémental GI355………………………………………………….…...…..15
Figure II.3 : Le disque rotatif……………………………………………………………………..15
Figure II.4 : Diagrammes de sorties………………………………………………………...…….15
Figure II.5 : Raccordement moteur/codeur……………………………………………………….17
Figure II.6: Raccordement codeur/arduino…………………………………………………….….17
Figure III.1 : Banc d’essai………………………………………………………………….……..23
Figure III.2 : Circuit de communication ………………………………………………......….….23
Figure III.3 : interface de ControlDesk……………………………………………………….......24
Figure III.4 : Control Panel……………………………………………………………………….25
Figure III.5 : model en MATLAB………………………………………………………..……….25
Figure III.6 : Signal A et B d’un codeur…………………………………………………….……26
Figure III.7 : Signal A…………………………..…………………………………………..….…26
Figure III.8 : Algorithme de fonctionnement ……………………………………………..……. 27
Figure III.9 : la vitesse de rotation (dSPACE)……………………………..………………..……27
Figure III.10 : la vitesse de rotation (Arduino)…………………………… …………………..…28
Figure III.11 : Comparaison entre les deux vitesses…………………………………..…….....…28
Tableau II.7 : Différentes unités de traitement utilisées…………………………………...…..…19
iii
INTRODUCTION GENERALE
Le système Arduino est une plateforme open-source d'électronique programmée qui est
basée sur une simple carte à microcontrôleur (de la famille AVR), et un logiciel, véritable
environnement de développement intégré, pour écrire, compiler et transférer le programme
vers la carte à microcontrôleur.
Arduino peut être utilisé pour développer des objets interactifs, pouvant recevoir des
entrées d'une grande variété d'interrupteurs ou de capteurs, et pouvant contrôler une grande
variété de lumières, moteurs ou toutes autres sorties matérielles. Les projets Arduino peuvent
être autonomes, ou bien ils peuvent communiquer avec des logiciels tournant sur votre
ordinateur.
Les applications dans le domaine d’entrainements des machines électriques à vitesse
variable dépendent principalement de la vitesse de rotation. Cette dernière est mesurée grâce à
un capteur de vitesse, qui ne nous permet pas souvent d’avoir de bons résultats avec précision.
Cela est du principalement aux unités de traitement (dans ce travail, nous allons parler de la
carte Dspace) utilisées dans le domaine industriel ou dans la recherche scientifique liée à la
mesure de la vitesse. Afin d’améliorer la qualité de cette mesure, nous proposons dans le cadre
de ce projet l’utilisation de la carte Arduino, afin de faire un prétraitement avant l’exploitation
directe de la mesure issue du capteur de vitesse dans des applications d’entrainements
électriques.
Ce travail est structuré comme suit :
Le premier chapitre, présente des généralités sur la carte Arduino, ainsi qu’une description
détaillée de son fonctionnement.
Le deuxième chapitre, présente le principe du codeur incrémental et son utilisation dans
notre projet.
1
Le troisième chapitre, est consacré à la présentation de la réalisation. Dans un premier
temps, nous allons utiliser la carte dspace pour traité les signaux délivrés par le codeur
incrémental. Dans un second temps nous allons traiter les mêmes signaux au moyen d’un
circuit de communication via la carte Arduino.
Enfin, nous terminons ce mémoire par une conclusion générale.
2
Chapitre I
Présentation d’une
carte Arduino
Chapitre I
Présentation d’une carte Arduino
I.1. Introduction
Le système Arduino est une solution simple et abordable pour développer des montages
électroniques numériques programmables à base de microcontrôleurs.
C’est une plateforme open-source qui est basée sur une simple carte à microcontrôleur (de la
famille AVR), et un logiciel, véritable environnement de développement intégré, pour écrire,
compiler et transférer le programme vers la carte à microcontrôleur.
Arduino peut être utilisé pour développer des applications matérielles industrielles légères ou
des objets interactifs (création artistiques par exemple). Les cartes Arduino peuvent recevoir sur
les broches d’entrées une très grande variété de capteurs et contrôler sur les broches de sortie une
grande variété d’actionneurs (lumières, moteurs ou toutes autres sorties matériels).
Les projets Arduino peuvent être autonomes, ou communiquer avec des logiciels sur un
ordinateur.
Les cartes électroniques peuvent être fabriquées manuellement ou bien être achetées pré
assemblées ; le logiciel de développement open-source est téléchargeable gratuitement [1].
I.2. L’arduino UNO
Figure I.1 : Résumé des caractéristiques
de la carte Arduino Uno
Microcontrôleur
ATmega328
Tension d'alimentation interne
5V
Tension d'alimentation externe
7 à 12V
Entrées/sorties numériques
14 dont 6 sorties PWM
Entrées analogiques
6
Courant max par broches E/S
40 mA
Courant max sur sortie 3,3V
50mA
Mémoire Flash
32 Ko
Mémoire SRAM
2 Ko
mémoire EEPROM
1 Ko
Fréquence horloge
16 MHz
4
Chapitre I
Présentation d’une carte Arduino
I.2.1. Dimensions et organisation
 Dimensions = 68.6mm x 53.3mm
 La carte s'interface au PC par l'intermédiaire de sa prise USB.
 La carte s'alimente par le jack d'alimentation (utilisation autonome) mais peut être
alimentée par l'USB (en phase de développement par exemple).
Entrées/Sorties digitales 0-13
Bouton Reset
Microcontrôleur ATmega328
Connecteur USB
Jack d’alimentation externe
Broches d’alimentations
Entrées/Sorties digitales 14 -19
Entrées analogiques 0-5
5v etI.2
3.3v
GND de carte Arduino Uno.
Figure
: Interface
I.2.2. Alimentation
La carte Arduino UNO peut être alimentée par l’USB ou par une alimentation externe. La
source est sélectionnée automatiquement.
La tension d’alimentation extérieure (hors USB) peut venir soit d’un adaptateur AC-DC ou de
piles. L’adaptateur peut être connecté grâce à un ‘jack’ de 2.1mm positif au centre.
Le raccordement vers un bloc de piles peut utiliser les bornes GND et VIN du connecteur
d’alimentation (POWER). La carte peut fonctionner à l’aide d’une tension extérieure de 7 à 12
volts. Les broches (pins) d’alimentation sont les suivantes :
 VIN : La tension d’entrée positive lorsque la carte Arduino est utilisée avec une source de
tension externe (à distinguer du 5V de la connexion USB ou autre source 5V régulée).
Vous pouvez alimenter la carte à l’aide de cette broche, ou, si l’alimentation est fournie
par le jack d’alimentation, accéder à la tension d’alimentation sur cette broche [3].
5
Chapitre I
Présentation d’une carte Arduino
 5V : La tension régulée utilisée pour faire fonctionner le microcontrôleur et les autres
composants de la carte (pour info : les circuits électroniques numériques nécessitent une
tension d’alimentation parfaitement stable dite « tension régulée » obtenue à l’aide d’un
composant appelé un régulateur et qui est intégré à la carte Arduino). Le 5V régulé
fourni par cette broche peut donc provenir soit de la tension d’alimentation VIN via le
régulateur de la carte, ou bien de la connexion USB (qui fournit du 5V régulé) ou de tout
autre source d’alimentation régulée [3].
 3. 3V : Une alimentation de 3.3V fournie par un régulateur 3.3v LP2985 est disponible
sur la carte. Ceci est intéressant pour certains circuits externes nécessitant cette tension
au lieu du 5V. L’intensité maximale disponible sur cette broche est de 50mA
 GND : Broche de masse (ou 0V).
I.2.3. Mémoire
L'ATmega 328 dispose de 32 kilo-octets de mémoire de programme. Cette mémoire est de
type Flash, analogue à celle que l'on trouve par exemple dans les clés USB.
L'ATmega 328 contient aussi de la mémoire vive ou RAM, analogue dans son principe à la
mémoire vive de vos PC, mais en beaucoup plus petite quantité puisque l'on ne dispose ici que
de 2 kilo-octets (contre plusieurs Giga octets dans un PC par exemple). Cette mémoire est
généralement utilisée pour les variables employées dans les programmes, pour stocker des
résultats temporaires lors de calculs, etc. Elle présente la particularité de pouvoir être lue et écrite
à tout instant par le microcontrôleur mais elle « oublie » son contenu dès qu'il n'est plus alimenté.
L’ATmega 328 dispose également de mémoire EEPROM, acronyme qui signifie mémoire
programmable et effaçable électriquement. La taille de cette EEPROM est seulement de 1 kilooctet. Cette mémoire EEPROM est une mémoire dans laquelle le microcontrôleur peut lire à
tout instant. Il peut aussi y écrire et effacer son contenu, avec plus de facilité comme dans la
mémoire Flash de programme, mais avec moins de facilité que dans la mémoire vive. En
contrepartie, et comme c'est le cas pour la mémoire flash de programme, le contenu de
l'EEPROM est conservé même lorsqu'elle n'est plus alimentée. C'est donc une mémoire qui sera
utilisée pour conserver des données ou des paramètres que l'on doit pouvoir retrouver d'une
utilisation à l'autre de l'Arduino [2].
6
Chapitre I
Présentation d’une carte Arduino
I.2.3.1. Horloge
L’horloge est pilotée par quartz et fonctionne à la fréquence de 16 MHz.
Ainsi par exemple, la fonction delay(xxx), qui génère un délai de xxx ms, sait que l'horloge
fonctionne à 16 MHz et fait donc automatiquement appel aux instructions nécessaires pour
générer le délai que vous avez réellement demandé dans votre programme.
I.2.3.2. Entrées et sorties
Chacune des 14 broches numériques de la carte Uno peut être utilisée en entrée (input) ou
en sortie (output), en utilisant les fonctions pinMode(), digitalWrite(), et digitalRead().
Elles fonctionnent en logique TTL (0V-5V) ; chacune pouvant fournir (source) ou recevoir un
courant maximal de 40 mA et dispose si besoin est d’une résistance interne de ‘pull-up’.
En outre, certaines broches ont des fonctions spécialisées [3] :
 Serial : broche 0 (RX) et broche1 (TX). Permet de recevoir (RX) et de transmettre (TX)
des données séries TTL. Ces broches sont raccordées à leurs homologues sur le chip
Atmega16U2 spécialisé dans la conversion USB-to-TTL série.
 Interruptions externes 2 et 3 : Ces broches peuvent être configurées pour déclencher
une interruption sur une valeur LOW, sur un front montant ou descendant, ou encore sur
le changement de valeur. (voir la fonction attachInterrupt() pour des détails).
 PWM : 3, 5, 6, 9, 10, and 11 : Output 8-bit de PWM avec la fonction analogWrite().
 SPI : 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ces broches fournissent le support de
communication SPI en utilisant la ‘librairie’ spécialisée.
 LED : Il y a une LED repérée L connectée à la broche digitale 13.
La carte Uno à 6 broches d’entrée analogiques, A0 à A5, chacune avec 10 bits de résolution
(1024 valeurs différentes).
Par défaut les mesures sont effectuées de la masse à 5V (valeur de référence), mais il est possible
de spécifier la valeur de référence en utilisant la broche VREF et la fonction analogReference().
En outre, certaines broches ont des fonctions spécialisées :
 I2C : 4 (SDA) and 5 (SCL). Permettent le support du bus I2C (TWI) en utilisant le
‘library’ Wire.
7
Chapitre I
Présentation d’une carte Arduino
Autres broches sur la carte :
 AREF : Tension de référence déjà mentionnée.
 Reset : Permet au niveau bas (LOW de faire un reset du contrôleur. Elle est utilisée
typiquement pour monter un bouton ‘reset’ aux cartes additionnelles (‘shields’) bloquant
celui de la carte principale.
I.2.4. Communication
La carte Arduino Uno a de nombreuses possibilités de communications avec l’extérieure.
L’Atmega328 possède une communication série UART TTL (5V), grâce aux broches
numériques 0 (RX) et 1 (TX).
Figure I.3: Communication vers l’ordinateur.
Un contrôleur Atmega16U2 sur la carte, gère cette communication série vers l’USB et
apparaît comme un port de communication virtuel pour le logiciel sur l’ordinateur.
Le firmware de l’16U2 utilise le protocole USB, et aucun driver externe n’est nécessaire.
Windows a cependant besoin d’un fichier .inf, à l’installation. Le logiciel Arduino possède un
logiciel série (Telnet) intégré permettant l’envoi et la réception de texte. Les DELs RX et TX sur
la carte clignoteront pour indiquer la transmission de données vers l’ordinateur.
Une librairie ‘SoftwareSerial’ permet la transmission de données série à partie de chacune des
broches numériques du Uno.
L’Atmega328 supporte le bus I2C (TWI) et le protocole de communication synchrone maîtreesclave SPI. Le logiciel Arduino inclut un ensemble de fonctions pour mettre en œuvre l’un ou
l’autre.
8
Chapitre I
Présentation d’une carte Arduino
I.2.5. Programmation
La carte Arduino Uno peut être programmée directement avec « l’Arduino software ».
L’Atmega328 sur la carte Uno est pré programmé avec un ‘bootloader’ qui permet de charger le
code d’une nouvelle application sans utiliser un programmateur hardware externe.
Il communique avec un ordinateur en utilisant le protocole STK500 d’ATMEL.
Mais vous pouvez programmer le contrôleur de la carte en utilisant le port ICSP (In-Circuit
Serial Programming).
Le code source du firmware du contrôleur auxiliaire Atmega16U2 est disponible.
I.2.5.1. Reset automatique
Toutes les cartes Arduino actuelles sont équipées d'un poussoir de reset manuel. Un
appui sur celui-ci permet donc de relancer l'exécution d'un programme si nécessaire, soit parce
qu'il s'est « planté » soit tout simplement parce que l'on souhaite le faire repartir de son début.
Mais il existe aussi sur les cartes Arduino une autre source de reset.
Un reset automatique à la mise sous tension qui permet ainsi au programme contenu en
mémoire du microcontrôleur de démarrer automatiquement dès que la carte Arduino est
alimentée.
I.2.5.2 Protection de surintensité USB
La carte Arduino Uno possède une protection par fusible pour le port USB si un courant
de plus de 500mA est demandé. La déconnexion durera tant que la source de consommation
excessive n’aura pas cessé.
I.3. Présentation de l’Espace de développement Intégré (EDI) Arduino
Le logiciel Arduino a pour fonctions principales :
 de pouvoir écrire et compiler des programmes pour la carte Arduino
 de se connecter avec la carte Arduino pour y transférer les programmes
 de communiquer avec la carte Arduino
Cet espace de développement intégré (EDI) dédié au langage Arduino et à la programmation des
cartes Arduino comporte :
9
Chapitre I
Présentation d’une carte Arduino
 Une BARRE DE MENUS comme pour tout logiciel une interface graphique (GUI),
 Une BARRE DE BOUTONS qui donne un accès direct aux fonctions essentielles du
logiciel et fait toute sa simplicité d'utilisation,
 Un EDITEUR (à coloration syntaxique) pour écrire le code de vos programmes, avec
onglets de navigation,
 Une ZONE DE MESSAGES qui affiche indique l'état des actions en cours,
 Une CONSOLE TEXTE qui affiche les messages concernant le résultat de la
compilation du programme
Le logiciel Arduino intègre également :
Barre de menus
Barre de boutons
Onglets des fichiers
ouverts
Fenêtre d’édition des
programmes
Zone de messages
des actions en cours
Console d’affichage des
messages de compilation
Figure I.4: espace de développement intégré.
10
Chapitre I
Présentation d’une carte Arduino
 Un TERMINAL SERIE (fenêtre séparée) qui permet d'afficher des messages textes
reçus de la carte Arduino et d'envoyer des caractères vers la carte Arduino.
Cette fonctionnalité permet une mise au point facilitée des programmes, permettant
d'afficher sur l'ordinateur l'état de variables, de résultats de calculs ou de conversions
analogique-numérique : un élément essentiel pour améliorer, tester et corriger ses
programmes.
I.3.1. Description de la barre des boutons
Vérifier/compiler : Vérifie le code à la recherche d'erreur.
Transférer vers la carte : Compile votre code et le transfère vers la carte Arduino.
Nouveau : Crée un nouveau code (ouvre une fenêtre d'édition vide)
Ouvrir : Ouvre la liste de tous les programmes dans votre "livre de programmes". Cliquer
sur l'un des programmes l'ouvre dans la fenêtre courante.
Enregistrer : Enregistre votre programme.
Moniteur Série : Ouvre la fenêtre du moniteur (ou terminal) série.
I.3.2. Description de la structure d’un programme
Le langage Arduino est basé sur les langages C/C++.
Un programme utilisateur Arduino est une suite d’instructions élémentaires sous forme
textuelle, ligne par ligne. La carte lit puis effectue les instructions les unes après les autres, dans
l’ordre défini par les lignes de code, comme lors d’une programmation classique. Cette structure
se décompose en trois parties :
11
Chapitre I
Présentation d’une carte Arduino
Définition des constantes et variables globales
Directive de compilation ; Define, Include, etc
Fonction principale : VOID SETUP()
Initialisation des ressources de la carte
Configuration des entrées/sorties
Définition de la vitesse de fonctionnement
du port série, etc.
Cette partie ne sera exécutée qu’une seule fois
Fonction boucle : VOID LOOP()
Description du fonctionnement général
du programme
Gestion des interactions entre les entrées/sorties
Cette partie sera exécutée en boucle
La structure d’un programme Arduino
Doit toujours comporter les fonctions
Setup( ) et loop ( )
Figure I.5: la structure d’un programme.
I.4. Conclusion
Arduino est un kit de développement et de prototypage très adapté pour une large gamme
d’applications dans le domaine de l'électrotechnique. Cela revient à sa facilité d'utilisation, sa
grande capacité à traiter l'information, et son faible cout.
12
Chapitre II
Capteur de Vitesse
Chapitre II
Capteur de Vitesse
II.1. Introduction
Dans le domaine industriel, le positionnement est une information absolument nécessaire.
Il ne suffit pas de connaître une position définie par un endroit prédéterminé mais plutôt la
position du mobile au moment où cela est nécessaire.
Le codeur rotatif est le capteur qui permet d’obtenir une position angulaire dans les machines
électriques. Il offre également la possibilité du réglage de la vitesse.
Le capteur ou codeur optique rotatif, introduit dans les années 1970, est aujourd’hui très répandu
et remplace souvent les génératrices tachymétriques, les résolveurs et les capteurs résistifs.
Le codeur optique, le plus répandu, est lié mécaniquement à un arbre qui l’entraîne. Il est
constitué d’un système mécanique qui comporte un disque en verre portant des gravures opaques
dont l’écartement est fonction du pas angulaire que l’on veut obtenir. Le faisceau lumineux,
traversant le disque, est la plupart du temps généré par une diode électroluminescente et le
faisceau modulé est capté par une photodiode ou un phototransistor.
Le signal électrique recueilli, en signal carré plus facile à traiter.
Il existe deux types de capteurs rotatifs : le codeur incrémental et le codeur absolu.
II.2 Le codeur incrémental
Le codeur incrémental est un générateur d’impulsions, il est destiné au contrôle de
déplacement. Il est généralement constitué de trois pistes : deux pistes externes divisées en
intervalles d’angles égaux de telle sorte que les signaux carrés obtenus soient déphasés de 90°,
ce qui informe sur le sens de rotation du codeur. La troisième piste ne comporte qu’une seule
fenêtre transparente dont la durée électrique est de 90°. Ce signal permet de définir un zéro de
comptage et une position de référence. La résolution dépend du comptage des fronts.
Elle est multipliée par deux en comptant les fronts montants et descendants d’une piste et par
quatre en comptant tous les fronts des deux pistes.
Le codeur incrémental présente des limites, il est sensible aux coupures de l’alimentation, il en
suffit d’une pour que le codeur perde sa position réelle. Il est alors nécessaire de le réinitialiser.
Il est sensible aux parasites qui peuvent être comptabilisés comme des impulsions lorsque les
signaux complémentaires ne sont pas pris en compte.
Une erreur de positionnement peut survenir lorsque la fréquence de comptage est élevée.
Enfin, si le codeur ne fonctionne que pour une fraction de tour, cas de mouvements oscillants, le
recalage par le top zéro n’est pas possible [4] [5] [6].
14
Chapitre II
Capteur de Vitesse
Figure II.1: Description d’un codeur
Figure II.2: Codeur incrémental GI355
II.2.1. Principe du codeur incrémental
Le disque rotatif comporte au maximum trois pistes.
 Une ou deux pistes extérieures divisées en n intervalles d'angles égaux, alternativement
opaques et transparents.
 Pour un tour complet de l'axe du codeur, le faisceau lumineux est interrompu n fois et
délivre n signaux carrés (A et B) en quadrature.
Figure II.3: Le disque rotatif
Figure II.4: Diagrammes de sorties
15
Chapitre II
Capteur de Vitesse
 Le déphasage (90° électrique) des signaux (A er B) permet de déterminer le sens de
rotation :
- Dans un sens, pendant le front montant du signal A, le signal B est au niveau logique zéro.
- Dans l'autre sens, pendant le front montant du signal A, le signal B est au niveau logique 1.
Le front montant de la voie verte se présente
Le front montant de la voie rouge se présente
avant celui de la voie rouge.
avant celui de la voie verte.
 La piste extérieure (Z : top zéro) comporte une seule fenêtre transparente et délivre un
seul signal par tour.
 Le signal Z (d'une longueur de T/4 électrique) détermine une position de référence qui
permet la réinitialisation à chaque tour.
 Le comptage-décomptage des impulsions par l'unité de traitement permet de définir
la position du mobile.
II.2.2. Caractéristiques principales d'un codeur incrémental
 Nombre de points par tour ou nombre d'impulsions par tour.
 nombre de voies ou nombre de pistes (exemple: 6 pistes A, B, Z, A inv, B inv, Z inv).
 tension d'alimentation.
 vitesse maximale de rotation.
II.2.3. Raccordement d’un codeur incrémental
II.2.3.1 à un moteur électrique
L’axe du codeur est lié mécaniquement à l’arbre de la machine qui l’entraine.
Cet axe fait tourner un disque qui lui est solidaire.
16
Chapitre II
Capteur de Vitesse
Diode
électroluminesce
nte
Disque gradué
Phototransistor
Traitement de
l’information
Signal
MACHINE
ASYNCHRONE
Codeur
Accouplement
Figure II.5: Raccordement moteur/codeur
II.2.3.2. à une carte arduino
 Le raccordement des sorties du codeur aux entrées de la carte arduino.
 Voie A on peut connaître les caractéristiques de déplacement d’un mobile et voie B
permettent de déterminer le sens de rotation.
Voie A
Codeur
Voie B
Compteur
d’impulsion
Calcule des
Caractéristique
du déplacement
Sens de Rotation
Vitesse
Fréquence
Base de
temps
Carte arduino
Figure II.6: Raccordement codeur/arduino
II.2.4. Calcul de la fréquence de sortie (f) des impulsions du codeur
Pour un codeur incrémental, il est indispensable de calculer la fréquence maximale
d'utilisation afin de s'assurer des compatibilités des caractéristiques électriques avec les entrées
du système de traitement.
Le codeur incrémental fournit deux types de signaux. Les signaux d’incrémentation (A, A inv,
B, B inv) et d’initialisation (Z, Z inv) peuvent être exploités.
17
Chapitre II
Capteur de Vitesse
Signal d’incrémentation (A) :
Ce signal carré est généralement de fréquence élevée. La formule de calcul de la fréquence
(f en Hz) est :
avec : N= vitesse d’utilisation de l’axe entraînant (en tr/mn).
et
R = résolution souhaitée en période par tour (p/tr).
Pour le codeur incrémental GI355 et le moteur asynchrone utilisé dans ce projet :
N=1500 tr/mn
R=1024 p/tr
Donc la fréquence : f = 25600 Hz.
II.2.5 Les principaux avantages et inconvénients de codeur incrémental
II.2.5.1. Les avantages :
 Le codeur incrémental est de conception simple (son disque ne comporte que deux
pistes) donc plus fiable et moins onéreux.
 Économique
II.2.5.2. Les Inconvénients:
 II est sensible aux coupures du réseau : chaque coupure du courant peut faire perdre
la position réelle du mobile à l'unité de traitement. Il faudra alors procéder à la
réinitialisation du système automatisé.
 Il est sensible aux parasites en ligne, un parasite peut être comptabilisé par le
système de traitement comme une impulsion délivrée par le codeur.
 Les fréquences des signaux A et B étant généralement élevées, il faudra vérifier que
le système de traitement est assez rapide pour prendre en compte tous les
incréments (impulsions) délivrés par le codeur. Le non comptage d’une impulsion
induit une erreur de position qui ne peut être corrigée que par la lecture du « top
zéro» [7] [9].
18
Chapitre II
Capteur de Vitesse
II.2.6. Principaux types d’unités de traitement utilisées dans l’industrie et le
codeur qui leur sont généralement associés [8]
Codeur incrémental
Fréquence du signal (kHz)
< 200 Hz
< 40 kHz
> 40 kHz
Unités de traitement
Entrées TOR

Cartes de comptage
rapide ou cartes
d’axes









Automates
programmables
Commandes numériques
Micro-ordinateurs Entrées parallèles
Cartes spécifiques (la carte arduino)
Tableau. II.7 : Différentes unités de traitement utilisées
II.3. Carte Dspace 1104
La carte DS1104 joue un rôle principal dans l’étude pour contrôler les machines électriques,
pour cela, nous allons donner quelques caractéristiques.
II.3.1. Présentation
La carte DSPACE assure les aspects logiciels et numériques de la commande, depuis
l'acquisition numérique des signaux d'entrées jusqu'aux signaux (MLI/PWM) de commandes des
bras de pont (signaux de sorties).
La carte DS1104 contenant les éléments suivants [10]:
 Deux processeurs (Maitre, Esclave).
 Contrôleurs d’interruption.
 Des mémoires.
 Des temporisateurs.
 Des interfaces.
19
Chapitre II
Capteur de Vitesse
II.3.2. Processeur Maitre PPC
L’unité principale de traitement, Motorola MPC8240, se compose :
 Un noyau Power PC 603 (Horloge interne à 250 MHZ).
 Un contrôleur d’interruption.
 Contrôleur synchrone de la mémoire DRAM.
 Plusieurs temporisateurs.
 Une interface PCI.
Le maitre PPC contrôle les unités entrées/sorties suivantes :
 Unité de ADC (Analog Digital Converter) : comportant (8) convertisseurs analogique /
numérique (4 en 16bits, 4 en 12 bits).
 Unité de DAC (Digital AnalogConverter) :
 comportant (8) convertisseurs numérique/ analogique (16 bits).
 Unité entrée / sortie numérique (20 bits).
 Interface d’encodeur incrémental.
 Interface série.
II.3.3. Processeur esclave DSP
Se compose un DSP (Digital Signal Processor), processeur TMS 320F240 de Texas
instruments, ses caractéristiques principales sont :
 Fonctionnement à 25 MHz.
 Une mémoire utilisée pour la communication avec le maitre PPC.
L’esclave DSP fournit les dispositifs entrées/sorties suivants :
 Unité entrée /sortie numérique de synchronisation : qui permet de générer et mesurer des
signaux PWM (Pulse Width Modulation) et des signaux carrés.
 Unité entrée /sortie numérique.
 Interface Périphérique Série (SPI : Serial Peripheral Interface).
II.3.4. Contrôleur d’interruption
Le processeur ne peut pas traiter plusieurs informations à la fois, mais grâce aux interruptions
Le processeur peut exécuter ou suspendre un programme donné selon la priorité des Interruption.
20
Chapitre II
Capteur de Vitesse
II.3.5. Mémoires
La carte DS1104 est équipée de deux mémoires :
 Mémoire Global.
 Mémoire Flash.
II.3.6. Temporisateurs
Un temporisateur (Timer) est un circuit logique qui permet d’effectuer du comptage de Temps,
pour la génération de signaux.
La carte DS1104 est équipée de 6 temporisateurs, ils sont pilotés par l’horloge.
II.4. Conclusion
Dans ce chapitre nous avons présenté le mécanisme du codeur incrémental, ses différentes
composantes, ses caractéristiques, ainsi que son raccordement au moteur. Nous avons présenté également
la chaine d’acquisition qui vient en aval de ce codeur, et qui représente la carte Arduino, ainsi que la carte
dspace 1104.
21
Chapitre III
Partie expérimentale
Chapitre III
Partie expérimentale
III.1. Introduction
Dans ce chapitre, Nous traitons les signaux issus du codeur incrémental via une carte Arduino
afin d’extraire la vitesse et le sens de rotation. Un prétraitement est réalisé au niveau de la carte
Arduino. Le signal obtenu de cette dernière sera comparé avec le signal obtenu directement du
codeur incrémental. Les résultats de cette comparaison seront obtenus via la carte Dspace 1104.
III.2. Présentation du banc d’essai
Notre banc d’essai est composé d’une machine asynchrone, d’un capteur de vitesse GI355,
d’une carte Arduino et des circuits électroniques dédiés pour la communication entre les
différents composants (codeur incrémentale, carte arduino, carte Dspace).
Moteur
asynchrone
Codeur
incrémental
Carte dSPACE
Figure III.1 : Banc d’essai
23
Carte arduino
Chapitre III
Partie expérimentale
À la carte dSPACE
Figure III.2 : Circuit de communication
III.3. Rôle des différentes parties de la chaine d’acquisition
III.3.1. Carte Dspace
Nous avons choisi de mettre en place une carte Dspace 1104 afin d'offrir une meilleur
robustesse.
De plus, le contrôleur est entièrement programmable à partir de l’environnement
Matlab/Simulink en utilisant des libraires spécifiques.
L'entreprise fournit également un logiciel d'interface graphique -ControlDesk- pour commander
et superviser le système en temps réel.
 Présentation de Dspace ControlDesk
ControlDesk est un logiciel d’instrumentation et d’expérimentation qui nous permet lors de
ce projet de développer des interfaces graphiques pour la commande en temps réel du système
géré par le contrôleur Dspace. En effet l’interface développée nous permet à la fois d’envoyer
des consignes directement au système et de visualiser les différentes grandeurs mesurées et tout
cela en temps réel [10].
24
Chapitre III
Partie expérimentale
Figure III. 3 : interface de ControlDesk
Carte Dspace contient une entrée privée avec codeur incrémental, en plus du modèle est prêt à
gérer des signaux entrants à la carte.
Entre d’un codeur incrémental
Entre digital pour la carte arduino
Figure III.4 : Control Panel
25
Chapitre III
Partie expérimentale
Modèle prêt pour codeur incrémental
Conversion numérique analogique
Figure III.5 : model en MATLAB
III.3.2. Carte Arduino
Comme nous l'avons mentionné plus tôt, Le codeur incrémental fournit deux signaux
carrés en quadrature, comme sur la capture ci-dessous :
Figure III.6 : Signal A et B d’un codeur
26
Chapitre III
Partie expérimentale
Nous utilisons une signal A pour déterminer la vitesse du moteur et le signal B pour
déterminer le sens de rotation, avant de traiter le signal A et B, On utilise un inverseur pour
améliorer la sortie de signal de la capteur.
Signal A avant
d'utiliser l’inverseur
Signal A après
d'utiliser l’inverseur
Figure III.7 : Signal A
Compter le nombre d’impulsions du codeur revient à compter le nombre de fronts montants et
descendants des signaux A et B représentés sur l’image ci-dessus. Mais ce n'est pas suffisant
pour obtenir des valeurs précises pour la vitesse de rotation du moteur, Donc, en plus de compter
le nombre d'impulsions, on a mesuré la période de ce signal, Pour ce faire, la seule méthode
viable consiste à brancher les deux signaux (les deux fils sur le codeur utilisé) sur deux entrées
« interruption » de la carte Arduino. Les deux autres fils (les fils d’alimentation) seront
respectivement branchés sur le 5 V et sur la masse de la carte d’alimentation.
Sur une carte Arduino Uno (comme sur un Arduino Mega), il y a deux lignes d’interruption
(numérotées 0 et 1), qui correspondent aux broches digitales 2 et 3. L’intérêt d’une ligne
d’interruption est qu’elle permet, comme son nom l’indique, d’interrompre le déroulement des
calculs sur le microcontrôleur pour effectuer un traitement spécifique, en l’occurrence la mise à
jour du compteur d’impulsions et mesure la période, avant de rendre la main à la boucle
principale.
27
Chapitre III
Partie expérimentale
 Algorithme du prétraitement
Figure III.8 : Algorithme de fonctionnement
III.3.3. Les résultats obtenus
Figure III.9 : la vitesse de rotation (dSPACE)
28
Chapitre III
Partie expérimentale
Figure III.10 : la vitesse de rotation (Arduino)
Figure III.11 : Comparaison entre les deux vitesses
 Commentaires sur les résultats
La première courbe représente la vitesse de rotation issue directement du codeur incrémental
via la carte dSPACE. La vitesse de rotation est variable et présente une bande bruitée. On peut
remarquer même après l’utilisation d’un filtrage que la courbe de vitesse manque de précision.
29
Chapitre III
Partie expérimentale
La deuxième courbe représente la vitesse de rotation après un prétraitement via la carte arduino.
La vitesse est constante et précise avec une faible variation, même sous des facteurs externes
comme la vibration ou la source d’alimentation.
Dans la troisième figure, on représente les deux courbes précédentes dans le même repère.
III.4. Conclusion
Après avoir présenté le banc d’essais de notre application, ainsi que le rôle des ces différentes
parties et les résultats obtenus, on peut conclure que ces résultats ont montrés l’efficacité de
l’utilisation de la carte arduino dans l’amélioration de la qualité de mesure de la vitesse par le
codeur incrémental.
30
CONCLUSION GENERALE
Dans le cadre de ce travail, on a présenté une nouvelle alternative pour le problème de la
mauvaise qualité du signal de vitesse issue d’un codeur incrémental et exploité par une carte
dspace. Cette alternative repose principalement sur l’utilisation d’une carte Arduino afin
d’assurer un prétraitement adéquat. Les résultats expérimentaux ont montrés l’efficacité de
cette alternative dans l’amélioration de la qualité du signal du codeur incrémental, qui
représente la vitesse d’une machine asynchrone.
Ce présent travail peut contribuer par l’amélioration de la qualité de mesure de la vitesse
dans différentes applications liées principalement à la commande et au diagnostic des
machines électriques.
Par cette étude j’ai acquis une expérience qui m’a permis d’approfondir mes connaissances
techniques et de me préparer à la vie professionnelle dans le domaine d’électrotechnique.
31
Bibliographie
[1] http://www.mon-club-elec.fr
[2] http://fr.wikipedia.org/wiki/Arduino
[3] http://www.arduino.cc
[4] http://stielec.ac-aix-marseille.fr/cours/abati/captvit.htm
[5] Bernard Reeb - Positionnement numérique par codeur incrémental - GMP Mulhouse
[6] Mr BENGMAIH - Les Capteurs
[7] Philippe HOARAU - Le codeur optique Incrémental
[8] Nicolas - Capteurs rotatifs
[9] Amaury BOURBON Marie JOUBARD - Le codeur incrémental
[10] khelifi mustapha, sekour ahmed - Etude de la carte Dspace1104
32
Téléchargement