CETSIS'2007, Bordeaux, 29-31 octobre 2007 Conception, réalisation et utilisatio

CETSIS'2007, Bordeaux, 29-31 octobre 2007 Conception, réalisation et utilisation d’une interface PC pour codeurs incrémentaux Dominique JACOB1, Patrick LAGONOTTE2 I.U.T. de Poitiers, 6 allée Jean MONNET 86010 Poitiers Cedex 1 Département Génie Electrique et Informatique Industrielle, site de Poitiers dominique.jacob@univ-poitiers.fr 2 Département Hygiène, Sécurité, Environnement, site de Niort lagonotte@let.ensma.fr RESUME : Pour disposer d’une mesure de position par un codeur incrémental, nous faisons réaliser par les étudiants une interface d’acquisition utilisant le port parallèle d’un PC. Le décodage de la position à partir des signaux bruts du codeur incrémental est réalisé par un circuit programmable (CPLD). Celui-ci effectue un décodage de quadrature à l’aide d’une machine synchrone et permet d’incrémenter ou de décrémenter le compteur de position. Le circuit programmable CPLD effectuant cette opération est configuré par un langage de description matériel (VHDL). Le port parallèle du PC est programmé avec une acquisition multiplexée de manière de pouvoir lire un mot de 16 bits à partir d’un registre 8 bits. Une application à l’identification des paramètres d’un pendule oscillant est effectuée à l’aide de l’ensemble, le PC étant programmé en langage C. La réalisation d'un prototype semble indispensable pour finaliser un travail technique, les seules conceptions logicielles ne permettant pas d'appréhender les réelles difficultés liées à sa concrétisation. Mots clés : codeur incrémental, décodeur de quadrature, VHDL, circuit programmable CPLD, Langage C. 1 INTRODUCTION La définition en modules, des programmes pédagogiques, conduit à une séparation artificielle des connaissances. Il importe de conduire des activités qui permettent de rassembler l'ensemble des compétences acquises. Dans cet esprit, on propose la réalisation et l’utilisation d’une interface entre un codeur incrémental et le port parallèle d’un PC. La carte électronique est à réaliser en utilisant un logiciel de CAO comporte un CPLD qui doit être configuré à l’aide du langage VHDL. Le PC, quant à lui, est programmé en C et une application d'identification est demandée. Ce travail rassemble ainsi quatre domaines de connaissances (CAO en électronique, VHDL, C, automatique) qui sont en général enseignés dans des modules distincts. Ce travail est exploité en DUT Dénie Electrique et Informatique Industrielle en 28 heures. A ce niveau et compte tenu du temps imparti, de nombreux problèmes ne sont pas abordés. Par exemple on ne prend pas en compte l’influence du système d’exploitation du PC sur l’échantillonnage, on se limite à l’identification d’un pendule autour de sa position stable, et le système d’acquisition est considéré comme très rapide devant le processus et on fixe d’emblée la résolution à 16 bits. Le but de ce travail est de rassembler différents problèmes techniques dans un même projet mais non de présenter une solution industrielle. 2 CONCEPTION DE L'INTERFACE On utilise un codeur incrémental pour mesurer la position angulaire d'un pendule simple et identifier ses paramètres, c'est à dire sa pulsation propre et son coefficient d'amortissement par un simple essai de lâcher. Le dispositif est présenté figure 1. Le pendule Codeur incremental Moteur brushless déplaçant le chariot via la courroie Chariot mobile en translation courroie Fig. 1 : Le pendule étudié Le pendule est mobile sur un chariot dont la position est commandée par un moteur brushless. La position angulaire du pendule est mesurée par un second codeur incrémental. 2.1 Schéma de principe On prévoit une interface pour deux codeurs incrémentaux. Selon la taille du circuit programmable on pourra même augmenter ce nombre. L’application présentée ici ne comporte qu’un seul codeur. Port parallèle Codeur N° 1 Codeur N° 2 A1 B1 A2 B2 Interface à réaliser Fig. 2 : L’interface à réaliser Chaque codeur comporte 500 points par tours, et délivre deux signaux A, B en quadrature (voir annexe). Le décodage de quadrature au quart de pas conduit à Article available at http://www.j3ea.org or http://dx.doi.org/10.1051/j3ea:2008003 CETSIS'2007, Bordeaux, 29-31 octobre 2007 500x4 = 2000 points par tour. Cela nécessite un comptage sur au moins 11 bits (211 = 2048). En pratique on adopte un comptage sur 16 bits (jusqu'à 216-1 = 65535) ainsi on pourra mesurer des positions correspondant à 16 5 11 2 32 2 2 = = tours de codeur environ. 2.2 Rappel sur le décodage de quadrature Le décodage de quadrature est obtenu par une machine d'état synchrone dont le diagramme est rappelé figure 3. Il faut disposer d'une horloge CLK dont la fréquence est toujours plus élevée que celle des signaux A et B. L'état des signaux A et B est pris en compte à chaque front montant de l'horloge CLK. Ces deux signaux permettent de coder 4 états S1 (si A=0 et B=0), S2 (si A=0 et B=1), S3 (si A=1 et B=1), S4 (si A=1 et B=0) et c'est l'ordre de passage d'un état à l'autre qui indique le sens de rotation. Pour un sens de déplacement on obtient la séquence S1 → S2 → S3 → S4 → S1 et à chaque transition il faut décrémenter une variable de comptage N. Pour l'autre sens de déplacement la séquence sera S1 → S4 → S3 → S2 → S1 et il faut incrémenter la même variable de comptage N. A cette description il faut ajouter la remise à 0 de la variable de comptage et l'initialisation de l'état en fonction de A et B, par exemple état S1 si A=0 et B=0. Condition sur la transition Action lors de la transition Fig. 3 : Graphe d'état pour la détection du quart de pas 2.3 Le port parallèle du PC Les signaux disponibles et leur utilisation sont décrits de manière exhaustive dans la référence [2]. On présente tableaux 1 et 2, un résumé. Physiquement l'interface est un connecteur DB25 et on utilisera le port LPT1 dont l'adresse de base est 0x378. L'état des signaux est alors contrôlé par le contenu des registres d'adresses 0x378, 0x379 et 0x37A. Ici on n'utilise que les deux registres 0x378 et 0x37A dont l'utilisation des signaux est rappelée dans les tableaux 1 et 2. N° bit Nom N° Pin Direction inversé sur le connecteur 0 D0 2 In-Out Non 1 D1 3 In-Out Non 2 D2 4 In-Out Non 3 D3 5 In-Out Non 4 D4 6 In-Out Non 5 D5 7 In-Out Non 6 D6 8 In-Out Non 7 D7 9 In-Out Non Tableau 1 : Registre d'adresse 0x378 (Donnée) Le registre des données ne comporte que 8 bits et le comptage est prévu sur 16 bits cela nécessite un multiplexage par un bit noté MSB. De plus il y a deux codeurs distingués par un bit N_Codeur. On a aussi besoin de 2 signaux de sortie, RAZ1, RAZ2, pour commander la remise à zéro du comptage pour chaque codeur. Ainsi les 4 bits du registre de commande seront utilisés. On a choisi, Strobe=N_Codeur, AutoLF = RAZ1, Init = RAZ2, SelectIn = MSB. On note N1 le résultat sur 16 bits du comptage du codeur N°1, les 8 bits de poids faibles de N1 sont notés LSB1 et les 8 bits de poids forts sont notés MSB1 (De même N2, MSB2, LSB2 pour le codeur N°2). N° bit Nom N° Pin Directi on inversé sur le connecteur 0 Strobe 1 Out Oui 1 AutoLF 14 Out Oui 2 Init 16 Out Non 3 SelectIn 17 Out Oui 4 EnIrq Non connecté 5 Dir Non connecté 6 Inutilisé Non connecté 7 Inutilisé Non connecté Dir = 1 ==> 0x378 en entrée Dir = 0 ==> 0x378 en sortie Tableau 2 : Registre d'adresse 0x37A (commande) Les 4 octets LSB1, MSB1, LSB2, MSB2 seront présents sur le registre de donnée en fonction des bits de commande N_Codeur et MSB selon le tableau 3. N_Codeur MSB Registre de donnée 0 0 LSB1 0 1 MSB1 1 0 LSB2 1 1 MSB2 Tableau 3 : Adressage des registres 2.4 Le circuit programmable (CPLD) On a utilisé trois circuits, un CPLD cypress CY37064 comportant 64 macrocellules et d'autre part un CPLD Altera Max7128S comportant 128 macrocellules et un FPGA Altera Flex 10k70 comportant 10 000 portes. Ces deux derniers circuits sont présents sur un kit de CETSIS'2007, Bordeaux, 29-31 octobre 2007 développement (University program Design Laboratory Package) ce qui simplifie la mise en œuvre. Pour chacun d'eux la programmation du circuit en VHDL est identique seule change l'affectation des signaux d'entrée-sorties. 2.5 Description VHDL du circuit Les signaux d'entrées-sorties sont précisés dans l'entity. L'architecture comprend 3 process concurrents, deux pour le décodage de quadrature associé à chaque codeur, et un pour gérer le registre de donnée de 8 bits. Les signaux nécessaires sont donnés ci-dessous. L'entity décrivant les signaux d'entrée-sortie Les signaux internes Le graphe d'état de la figure 3 conduit à la description VHDL suivante pour le comptage. On a utilisé deux fonctions INC et DEC pour réaliser l'incrémentation et la décrémentation. Deux fonctions auxiliaires Le process de gestion du registre de donnée Cette description conduit au fonctionnement donné par les chronogrammes des figures 4 et 5 (obtenus par simulation). Sur la figure 4, B1 est en avance sur A1, la variable de comptage est décrémentée et mise à 0 quand RAZ1 = 0. La durée d'activité des états 0 et 2 est uploads/S4/ codeur-et-cpld.pdf

  • 21
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Sep 29, 2021
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.5426MB