Telechargé par روح الكتب

report

publicité
Rapport de Stage
Conception de cartes à microcontrôleurs PIC®
Romain Garcin
Maître de stage :
Christian Olivetto, Ingénieur de Recherche.
Université de la Méditerranée
2000
MPLAB, PIC, PICMaster et Promate sont des marques déposées par Microchip Technology, Inc. Modbus est
une marque déposée par Modicon, Inc., Industrial Automation Systems. Windows est une marque déposée par
Microsoft Corporation. Labview et National Instruments sont des marques déposées par National Instruments
Corp.
Les autres marques sont la propriété de leur détenteurs respectifs.
Vous pouvez vous procurez librement ce document en vous connectant sur http://rgarcin.free.fr
Pour tout contact : [email protected]
released 06-19-2000
Remerciements
Je tiens tout d’abord à remercier René Nacasch pour m’avoir permis de réaliser ce stage au
sein du C.P.P.M.
Je remercie également toute l’équipe du laboratoire d’électronique du C.P.P.M. pour leur
accueil et leur aide, et plus particulièrement Messieurs Christian Olivetto et Rémy Potheau
pour leur conseils et leur soutien.
Enfin j’aimerais remercier Auguste Le Van Suu qui travaille sur le projet ANTARES pour
m’avoir fait part des bugs du logiciel de la carte interface.
Conception de cartes à microcontrôleur PIC
i
Sommaire
1. Introduction
1
2. Présentation du lieu de stage
2
2.1. Le Centre de Physique des Particules de Marseille……………………………………………… 2
2.2. Le Département d’Electronique…………………………………………………………………………… 2
3. Le châssis modulaire
3
4. Présentation du protocole Modbus®
5
5. Les outils de développement
7
5.1. L’émulateur PICmaster………………………………………………………………………………………… 7
5.2. Le programmateur Promate …………………………………………………………………………………. 8
6. Carte d’Alimentation
9
6.1. L’aspect matériel …………………………………………………………………………………………………. 10
6.2. Le logiciel…………………………………………………………………………………………………………….. 10
6.3. Conclusion …………………………………………………………………………………………………………... 12
7. Carte Contrôle
13
7.1. Les menus déroulants…………………………………………………………………………………………... 14
7.2. L’étage d’entrée…………………………………………………………………………………………………… 15
7.3. Le prototype…………………………………………………………………………………………………………. 16
8. Carte Interface
17
8.1. Présentation du projet ANTARES……………………………………………………………………….. 17
8.2. La carte interface ………………………………………………………………………………………………… 17
9. Conclusion
19
10. Références
20
Conception de cartes à microcontrôleur PIC
ii
Introduction
1
Le département électronique du Centre de Physique des Particules de Marseille [2] prend en
charge l’aspect acquisition et traitement des données lors des expériences de physique des
particules. Cette tâche inclue le développement de cartes électronique et de composants VLSI1
spécifiques.
Le processus de mise au point de tels systèmes nécessite l’utilisation simultanée d’un grand
nombre d’appareils différents (e.g. besoin de plusieurs tensions et intensités différentes).
Pour simplifier cela, le laboratoire a mis au point un système intégré à base de châssis
modulaires pouvant accueillir différentes cartes en fonction des besoins (e.g. alimentation,
générateur de courant, etc.). Ces châssis peuvent, le cas échéant, être reliés à un ordinateur
afin de centraliser le contrôle.
Ce concept c’est révélé très efficace et apprécié puisque le C.P.P.M. partage cet outil avec les
laboratoires avec lesquels il coopère comme, par exemple, le Fermilab aux Etats-Unis.
Dans le cadre du développement et de l’amélioration de ces châssis, mon travail a consisté
dans un premier temps à la mise à jour d’une carte d’alimentation en remplaçant son
microcontrôleur par un modèle plus récent : un PIC de Microchip [5].
J’ai par la suite développé un nouvelle version d’une carte de contrôle, elle aussi équipée d’un
microcontrôleur PIC.
Enfin dans le cadre de l’expérience ANTARES [1], j’ai procédé à la modification d’une carte
universelle (toujours à base de PIC) développée lors d’un stage précédent [14] en vue d’y
interfacer une boussole/inclinomètre numérique.
1
Very Large Scale Integration, i.e. intégration à très grande échelle.
Conception de cartes à microcontrôleur PIC
1
Présentation
2
2.1. Le Centre de Physique des Particules de Marseille
Le Centre de Physique des Particules de Marseille [2] (C.P.P.M.) est implanté sur le site
scientifique et universitaire de Luminy.
Le C.P.P.M. est l’un des dix-huit laboratoires de l’Institut National de Physique Nucléaire et
de Physique des Particules (IN2P3) [4], institut du C.N.R.S. qui regroupe les moyens lourds
de la physique des particules. Le laboratoire est une unité mixte qui relève à la fois de l’IN2P3
et de l’Université de la Méditerranée (Aix-Marseille II).
Le laboratoire compte un centaine de personnes : chercheurs et enseignants-chercheurs,
ingénieurs, techniciens, ainsi que des doctorants et visiteurs étrangers.
La vocation du C.P.P.M. est la recherche fondamentale en physique des particules. Il participe
à des expériences dans le cadre de collaborations internationales et coopère avec une trentaine
de centres de recherche européens.
Le laboratoire est actuellement engagé dans deux expériences du C.E.R.N. de Genève :
ALEPH et CPLEAR. Ainsi que dans le développement des projets ATLAS et ANTARES [1].
Le développement et la mise en œuvre des moyens nécessaires à de tels projets nécessite des
savoir-faire de pointe, notamment dans les domaines de l’informatique et de l’électronique.
2.2. Le Département Electronique
Le service électronique du C.P.P.M. a en charge la réalisation des modules d’acquisition et de
traitement pour les expériences de physique des particules. Il est composé d’une quinzaine de
personnes : ingénieurs et techniciens.
Dans le domaine de la conception et réalisation des cartes électroniques, le laboratoire
d’électronique est équipé :
d’un outil IAO/CAO (CADENCE) complet permettant la saisie de schéma, la
simulation logique et analogique ainsi que le placement routage des cartes.
de logiciels permettant la réalisation de circuits programmables (EPLD, FPGA,
PAL/PROM).
d’analyseurs logiques, oscilloscopes numériques rapides, analyseurs de spectres, etc.
Le laboratoire dispose également d’une salle blanche avec plate-forme d’analyse sous pointes
des tranches de silicium, table de déplacement micrométrique et machine de micro-cablâge.
2
Conception de cartes à microcontrôleurs PIC
Le Châssis Modulaire
3
Les ingénieurs électroniciens ont souvent besoin d’avoir à leur disposition plusieurs sources
de tension et de courant, (ou d’autres fonctions telles que la mesure de température, des
entrées/sorties numériques, ou des acquisitions de données, etc.) leur de procédures de test de
cartes ou de composants VLSI par exemple.
Toutes ce fonctions doivent pouvoir être simples d’utilisation et hautement intégrées afin de
réduire l’encombrement de l’espace de travail.
Le laboratoire d’électronique a donc développé un concept de châssis universel modulaire
afin de satisfaire ces besoins.
Figure 1 : Le Châssis universel.
Figure 2 : Le châssis monté.
Ce châssis (Crate Power) ce compose primordialement d’un rack pouvant accueillir six cartes
plus une carte de contrôle. Chaque carte est connectée en fond de panier à plusieurs tensions
d’alimentations (+5V, ±15V), ainsi qu’à un bus série bifilaire au standard RS485. L’intérêt
d’un tel bus est la possibilité de pouvoir communiquer avec les cartes depuis un ordinateur,
afin de les commander à distance.
Sur chacun des connecteurs du châssis peut accueillir une des cartes mises au point par le
laboratoire. A l’heure actuelle, la gamme compte une dizaine de membres parmi lesquels on
peut citer :
Une alimentation deux voies (cf. p.9).
Un générateur de courant variable.
Une carte d’acquisition de température à 10 voies.
Un contrôleur GPIB.
Une carte universelle.
Le laboratoire travaille actuellement sur une carte de développement pour transmission
optique bidirectionnelle mono-fibre.
Pour permettre la commande par ordinateur de chacune de ces cartes, des pilotes spécifiques
ont été développé sous Labview [9]. Dans la majorité des cas, l’utilisateur final n’a donc pas
Conception de cartes à microcontrôleur PIC
3
Le Châssis Modulaire.
besoin de concevoir de driver personnel, ce qui facilite grandement la prise en main et réduit
les délais pour rendre une application opérationnelle.
Figure 3 : Le driver Labview de la carte alimentation.
Enfin, un dernier avantage de ce châssis est son prix de revient largement en dessous de ses
équivalents commerciaux. Ce facteur est d’importance quand on sait que les budgets de
recherche sont très souvent calculés au plus juste.
4
Conception de cartes à microcontrôleurs PIC
Présentation du Protocole Modbus®
4
A l’origine, le protocole Modbus® [6] fut développé par la société Modicon pour permettre
l’automatisation de processus industriels. Il permet en effet à des contrôleurs et des
ordinateurs de dialoguer entre eux sur un réseau. Le protocole Modbus est un protocole de
slow control et ne permet par conséquent pas des échanges en temps réel.
Ce protocole définie la structure des messages transitant sur le réseau (des trames), quelque
soit le type de réseau utilisé et le mode de transport physique des données. Il décrit le
processus à utiliser pour demander l’accès à un contrôleur, comment celui-ci devra répondre,
et comment les erreurs seront détectées et traitées.
Il est important de noter que le protocole Modbus est du type Maître-Esclave : seul le Maître
(dans notre cas un ordinateur) peut prendre la parole sur le réseau. I.e. les esclaves ne peuvent
que répondre à des commandes qui leur sont envoyées.
Esclave
Esclave
Esclave
Ordinateur
Maître
Esclave
Esclave
Figure 4 : Réseau Maître-Esclave.
Le protocole Modbus possède deux modes de transmissions :
- le mode ASCII2 : les messages sont codés sur des caractères ASCII (7 bits).
- le mode RTU3 : les messages sont codés sur des octets de 8 bits.
Aucune carte évoquée dans ce rapport n’utilisant le mode ASCII, nous ne nous étendrons pas
dessus, mais une description très complète en est faite dans le Modbus Protocol Reference
Guide [6].
Dans le mode RTU (celui utilisé par les cartes du C.P.P.M.), chaque message est précédé et
suivi d’un silence (Silent Interval) d’au moins 3.5 caractères (e.g. environ 3ms à 9600bds). De
plus, si un intervalle de plus de 1.5 caractère se produit entre deux caractères consécutifs, la
trame entière est considérée nulle et effacée (flushed).
2
3
ASCII : American Standard Code for Information Interchange.
RTU : Remote Terminal Unit.
Conception de cartes à microcontrôleur PIC
5
Présentation du Protocole Modbus..
Requête du Maître
Adresse Carte
Adresse Carte
Code Fonction
Code Fonction
Octets
de
Données
Octets
de
Données
Contrôle d’Erreur
Contrôle d’Erreur
Réponse de l’Esclave
Figure 5 : Cycle Requête-Réponse.
A chaque appareil est assignée une adresse qui sera toujours indiquée en début de trame (cf.
Fig. 5). Cette adresse se retrouvera dans la réponse de l’Esclave afin que le Maître puisse
identifier l’origine de la trame.
Il est de plus possible au Maître d’envoyer la même trame à tous les esclaves simultanément
en utilisant l’adresse 0 (Broadcast).
La détection d’éventuelles erreurs de transmission se fait par l’ajout d’un CRC (Cyclical
Redundancy Check) codé sur 16 bits calculé selon un algorithme spécifique à partir de tous
les octets de la trame. Une erreur de CRC entraîne la non prise en compte de la trame.
Enfin le corps d’une trame est constitué du code de la commande à exécuter et des éventuelles
données nécessaires. Il existe d’ailleurs de puissantes commandes de diagnostic qui peuvent
se révéler utiles lors de problèmes sur un Esclave.
6
Conception de cartes à microcontrôleurs PIC
Les outils de développement
5
Pour mener à bien un projet à base de microprocesseur ou de microcontrôleur, il est
indispensable d’utiliser des outils spécialisés que sont un émulateur et un programmateur.
L’émulateur permet la mise au point du logiciel à partir d’un ordinateur hôte sans nécessité la
programmation du composant qui peut être fastidieuse et coûteuse à cause de la durée de
l’effaçage du composant, voire de son remplacement lorsque l’effaçage est impossible.
La programmation ne se fera que lorsque que le logiciel sera opérationnel, grâce au
programmateur.
Les émulateurs et programmateurs sont spécifiques au type de microcontrôleur utilisé. Pour la
famille PIC ce sont le PICmaster (émulateur) et le Promate (programmateur).
4.1. L’émulateur PICmaster
L’émulateur PICmaster se compose de deux parties distinctes : le boîtier principal et la sonde.
Cette dernière doit être changée suivant le type de PIC à émuler et être implantée à sa place
dans le système hôte.
Le boîtier principal, quant à lui, est relié à un PC par l’intermédiaire d’une carte interface.
Figure 6 : L’émulateur PICmaster.
Sur le PC nous utilisons le logiciel MPLAB [7] sous Windows pour la commande de
l’émulateur. Ce logiciel permet l’exécution en mode pas à pas, le dumping de la mémoire,
l’insertion de points d’arrêts, et bien d’autres options offertes par le PICmaster. MPLAB
intègre en outre un assembleur et un compilateur C dédié.
Conception de cartes à microcontrôleur PIC
7
Les Outils de Développement.
4.2. Le programmateur Promate
Le programmateur possède lui aussi une zone modulaire afin de pouvoir programmer
plusieurs types de PIC. Il se connecte à un PC par l’intermédiaire d’un port série, et se
commande simplement grâce à MPLAB.
Figure 7 : Le programmateur Promate.
8
Conception de cartes à microcontrôleurs PIC
Carte Alimentation
6
La carte tension VOLS2P [15] fait partie des cartes développées
par le C.P.P.M. pour le châssis universel. C’est une
alimentation à deux voies commandée par microcontrôleur :
tension : 0 à ±12V, sortie symétrique (tracking).
intensité : 250mA max. avec limitation réglable.
visualisation de l’intensité par barre de LEDs.
commande manuel, ou par port RS485.
Le microcontrôleur actuellement utilisé, un membre de la
famille 8 bits de Texas Instrument, le TMS370, arrive
malheureusement dans sa phase d’obsolescence. Sa production
a en effet été arrêté, rendant l’approvisionnement de plus en
Figure 8 : La carte VOLS2P.
plus problématique.
Il a donc été décidé de le remplacer par un circuit plus récent,
en l’occurrence le PIC16F877 [10] de Microchip. Ce dernier se
présente en effet sous le même packaging, à savoir un boîtier
PLCC (Plastic Leaded Chip Carrier) de 48 broches, et surtout
dispose des périphériques intégrés nécessaires :
des entrées/Sorties logiques,
8 convertisseurs Analogique/Numérique (ADC),
des ports séries (USART4, SPI5 et I²C 6 [3]),
des timers.
Le 16F877 intègre en outre une mémoire Flash qui permet la reprogrammation in situ par interface série, et la sauvegarde
éventuelle de données en cas de mise hors tension.
Autre point important, alors que le TMS était programmé en
assembleur, le PIC le sera en C pour facilité la portabilité du
code en cas de nouveau changement de microcontrôleur.
Figure 9 : La face avant de la
carte.
Du point de vue matériel, la principale difficulté de changer de
microcontrôleur tient au fait que les brochages ne sont pas compatibles. Il convient donc, dans
un premier temps, de réaliser une platine d’adaptation permettant d’insérer le PIC sur le
support prévu pour le TMS. Ceci afin de développer un nouveau programme et de le tester
avec l’émulateur.
Dans un deuxième temps, lorsque que le programme est au point, il faut réaliser un nouveau
circuit imprimé pour la carte.
4
USART : Universal Synchronous Asynchronous Receiver Transmitter.
SPI : Serial Peripherial Interface.
6
I²C : Inter-Integrated Circuit.
5
Conception de cartes à microcontrôleur PIC
9
Carte Alimentation.
6.1. L’aspect matériel
La carte s’articule autour du microcontrôleur. Tout
d’abord celui-ci commande les deux régulateurs de
tension (un pour chaque voie) par l’intermédiaire de
convertisseurs
numérique/analogique
(DAC)
contrôlés par le port SPI.
Le microcontrôleur supervise également l’intensité
débitée par chaque voie, et veille à ce qu’elle ne
dépasse pas les limites fixées par le trimmers de la
face avant (ou par Modbus). Tout ceci grâce à ses
huit voies analogiques.
Figure 10 : Diagramme fonctionnel de la
Dans le même temps il s’occupe de rafraîchir les carte VOLS2P.
LEDs de la face avant au moyen de convertisseurs
série/parallèle connectés sur le port SPI. Enfin le microcontrôleur est à l’écoute du bus RS485
et exécute les commandes Modbus qui pourraient lui être adressées.
6.2. Le logiciel
Le programme développé pour le PIC, en langage C, se compose de plusieurs parties :
Une routine de gestion des interruptions provenant de l’USART.
Une routine de gestion des interruptions provenant d’une action sur les boutons de la
face avant.
Une boucle principale réagissant aux drapeaux (flags) gérés par les routines
d’interruptions et mettant à jour les registres Modbus et les LEDs de la face avant.
L’utilisation des interruptions permet de
réaliser plusieurs modules au maximum
indépendants les uns de autres. Cela facilite
grandement la mise au point du programme
dans la mesure où chaque module peut être
testé séparément.
De plus la gestion des évènements
extérieurs par interruption rend la réponse
du programme à ceux-ci plus rapide.
Figure 11 : La boucle principale du programme.
10
La boucle principale du programme assure
surtout un rôle de mise à jour et de test.
Elle met à jour les registres Modbus en
scannant les ADCs pour mesurer les
intensités, ainsi que les limites en courants.
Elle s’occupe aussi de rafraîchir les LEDs
de la face avant. Ensuite les flags indiquant
un changement d’état des boutons, ou une
trame reçue, sont testés. Des routines
spécifiques de gestion sont alors appelées
en fonction de l’état de ces flags, ou si les
Conception de cartes à microcontrôleurs PIC
intensités mesurées excèdent les limites fixées.
La fréquence de mesure n’est par conséquent pas fixée explicitement, mais dépend de la durée
de cette boucle logicielle. Cela ne pose cependant aucun problème étant donné que cette
méthode assure une fréquence de mesure maximale.
Lorsqu’un caractère est reçu sur le port
série (USART1), la routine d’interruption
lance un timer afin de détecter la fin de la
trame. Ensuite l’octet reçu est stocké dans
un buffer, et la routine rend la main au
programme principal.
Si le timer à le temps de lancer une
interruption, cela signifie que le silent
interval de fin de trame a été atteint. Dans
ce cas le timer est arrêté, et un flag est mis
pour prévenir le programme principal
qu’une trame Modbus viens d’être reçue.
A lui de la décoder.
Figure 12 : Gestion des interruptions du port série.
Pour la gestion des quatre boutons de la face
avant, une caractéristique du microcontrôleur
a été mise à profit. En effet, il est possible de
lancer une interruption lors du changement
d’état de l’un des quatre bits de poids faible du
port B [10].
Lorsqu’un de ces boutons change d’état (i.e.
appuyé ou relâché) le PIC lance une
interruption. Cette interruption se contente de
lancer un timer avant de rendre la main. Ce
système joue le rôle de dispositif anti-rebond.
La routine d’interruption du timer sauve l’état
des boutons puis relance le timer.
Ensuite si c’est la première fois que
l’interruption se produit un flag est positionné
et la main est rendue.
Mais si cela fait plusieurs fois que
l’interruption est lancée, le traitement est
Figure 13 : Gestion des interruptions des boutons.
différent :
L’état des boutons est testé pour vérifier qu’il
n’a pas changé (l’interruption du port B étant coupée). Si l’état des boutons a changé,
autrement dit le bouton est relâché, le timer est désactivé et le processus se termine.
Si l’état n’a pas changé, le flag est positionné comme dans le cas d’une première interruption,
mais le pas est également augmenté.
Conception de cartes à microcontrôleur PIC
11
Carte Alimentation.
Tout ce dispositif a pour but de gérer à la fois une pression sur un bouton, mais également le
maintien de cette pression sur le bouton. En effet, lorsque le bouton est maintenu appuyé,
l’interruption du timer va se déclencher plusieurs fois de suite, et parallèlement le pas va
augmenter. De ce fait la variation de la tension va s’accélérer (jusqu’à une certaine vitesse
maximale). Cela de la même manière que, par exemple, le son d’un téléviseur varie tant que le
bouton correspondant de la télécommande reste enfoncé.
6.3. Conclusion
Bien que ce projet soit quasiment entièrement consacré à la partie logicielle, il n’en demeure
pas moins délicat. En effet, avant de s’attaquer au développement du programme, il a d’abord
fallu bien comprendre le fonctionnement de la partie matérielle. Cela comprend également le
microcontrôleur PIC sur lequel je n’avais jamais travaillé. D’ailleurs son architecture RISC7
est plutôt différente des microcontrôleurs traditionnels (CISC8).
Ensuite, la prise en main du C demande elle aussi un (cours) temps d’adaptation, ce langage
ayant été adapté spécialement pour le microcontrôleur.
Finalement le temps passé pour penser l’architecture porte ses fruits lors du débuggage et des
inévitables modifications à réaliser pendant son développement.
Le programme est dès à présent au point, et le nouveau circuit imprimé pour la carte à été
réaliser.
La prochaine étape est donc de monter entièrement une nouvelle carte avec un PIC
programmé et de vérifier que tout fonctionne correctement. Cette dernière étape devrait être
réalisée très prochainement.
7
8
RISC : Reduced Instrunction Set Computing.
CISC : Complex Instruction Set Computing.
12
Conception de cartes à microcontrôleurs PIC
Carte Contrôle
7
La carte de contrôle du châssis universel tiens un double rôle :
Elle permet de visualiser une tension en provenance de n’importe qu’elle carte du
châssis (voie).
Elle sert d’alimentation +5V et ±15V.
Dans sa version actuelle la sélection de la voie se fait par relais commandés à l’aide d’une
roue codeuse, et la visualisation par l’intermédiaire d’un module voltmètre à cristaux liquides.
Figure 14 : La première version de la carte contrôle.
Bien qu’ayant l’avantage de la simplicité, cette configuration présente néanmoins quelques
inconvénients :
Le module LCD et les relais ont un prix de revient élevé.
L’affichage se fait de manière brute (i.e. pas d’unité, pas de conversion possible, etc.).
Aucune évolutivité.
Afin de résoudre ces problèmes, il a été entrepris de développer une nouvelle version de la
carte de contrôle. Cette nouvelle version est basée sur un microcontrôleur PIC17C756 [11] (le
même que pour la carte universelle) qui sera utilisé au maximum de ses possibilités.
L’utilisation d’un microcontrôleur permet
d’introduire une certaine intelligence et surtout
une plus grande souplesse d’utilisation de la
carte.
Les caractéristiques de cette nouvelle version
sont les suivantes :
Acquisition numérique des mesures.
Menus déroulants sur écran LCD 2x12
caractères rétroéclairé.
Connexion au bus RS485.
Sauvegarde de la configuration sur
Figure 15 : Diagramme fonctionnel de la carte de
EEPROM.
contrôle.
Conception de cartes à microcontrôleur PIC
13
Carte Contrôle.
A noter que les modulateurs en largeur d’impulsion dont dispose le PIC ont été mis à profit
pour permettre le réglage du contraste et de l’intensité du rétroéclairage de l’écran LCD.
7.1. Les Menus Déroulants
La principale difficulté du développement du programme pour cette carte à résidé dans la
mise au point des menus déroulants. En effet, sans un algorithme efficace l’implémentation de
menus peut vite se transformer en une tâche inextricable.
Après mures réflexions et recherches, j’ai opté pour la représentation des menus sous forme
d’un arbre binaire [8]. Cette solution a le mérite d’être indépendante du contenu des menus, ce
qui permet l’ajout, la modification, ou la suppression de ceux-ci de manière aisée.
Figure 16 : Structure de l’arbre binaire.
Cependant, cette structure intégrant à la fois des menus, de sous-menus, et des fonctions à
exécuter, le codage des trois champs de chaque nœud doit être plus complexe que la simple
adresse du nœud suivant.
Figure17 : Format d’un nœud de l’arborescence.
En effet, il doit être possible de savoir si un nœud est le premier ou le dernier d’un menu
déroulant (afin d’inhiber la possibilité de faire défiler le menu vers le haut ou vers le bas) et si
le champ Enter pointe sur un sous-menu ou sur une fonction.
Finalement, la structure de chaque nœud de l’arbre binaire est celle exposée par la Figure 17.
Le champ Niveau indique quelle est la profondeur du menu : 0 pour le menu principal, 1 pour
un de ses sous-menu, etc.
14
Conception de cartes à microcontrôleurs PIC
Le champ Parent contient l’adresse de l’élément précédent du menu, ou 1 si cet élément est le
premier du menu.
Le champ Gauche contient l’adresse du sous-menu de cet élément, une valeur 0 indiquant une
fonction et non pas un menu. Dans ce cas le code de la fonction est stocké dans le champ
Commande.
De plus, lorsque les deux champs Gauche et Droite contiennent 0, l’élément est un élément de
retour : le champ Commande contient l’adresse de l’élément parent de ce sous-menu.
Figure 18 : Copies d’écrans de la carte contrôle.
Enfin, dans tous les cas, le champ Commande peut contenir le code d’une fonction qui a pour
rôle de rajouter un élément graphique sur le titre de l’élément (e.g. un tick devant la langue
sélectionnée).
7.2. L’étage d’entrée
Le PIC16C756 dispose d’un convertisseur analogique/numérique (ADC) 10bits à 12 voies, ou
10 si la conversion se fait à partir d’une référence de tension externe.
Sur la carte contrôle, le microcontrôleur dispose d’une tension de référence de 4.096V. Il est
donc capable de fonctionner correctement sur la plage 0-4.096V. Cependant la plage des
tensions à mesurer s’étend de –15 à +15V. Il est par conséquent nécessaire de réaliser un
étage d’entrée se chargeant de convertir cet intervalle de tensions dans celui approprier pour
le PIC.
Figure 19 : Schéma de l’étage d’entrée.
La première partie de l’étage d’entrée, les résistances R10 et R7, constituent un diviseur de
tension chargé de convertir le ±15V en (approx.) ±2V. Cette tension est ensuite décalée par le
premier ampli-op pour se situer dans la zone des 0-4.096V adéquate pour l’ADC. Le
Conception de cartes à microcontrôleur PIC
15
Carte Contrôle.
deuxième ampli-op joue, quant à lui, le rôle d’amplificateur à gain variable dans le cas ou la
tension de sortie du premier ampli-op serait trop faible.
La variabilité du gain est assurée par R11, en fait un potentiomètre numérique commandé par
le microcontrôleur, par l’intermédiaire de son port SPI.
7.3. Le Prototype
A l’heure actuelle, seule une carte prototype en wrapping a été réalisée. Elle fonctionne de
manière tout à fait satisfaisante, mais les étages d’entrées sont toujours en développement afin
d’en améliorer la précision.
Figure 20 : Le prototype de la carte de contrôle.
16
Conception de cartes à microcontrôleurs PIC
Carte Interface
8
8.1. Présentation du projet ANTARES
L’expérience ANTARES [1] (Astronomy with a Neutrino
Telescope and Abyss environmental RESearch) est une
collaboration internationale dont le but est la détection de
neutrinos cosmiques de haute énergie. Les neutrinos interagissent
très faiblement avec la matière et les champs magnétiques et
permettent pas conséquent de sonder plus profondément les objets
cosmiques, ainsi que plus loin dans l’univers.
La détection des neutrinos cosmiques de haute énergie se fait par
l’intermédiaire du muon issus de l’interaction des neutrinos avec
les nucléons de la matière terrestre. La détection de ces muons
nécessite un détecteur de grand volume, à cause du faible flux de
muons, placé à grande profondeur sous la mer(2500-4000m), afin
Figure 21 : Vue d’artiste du
de réduire le flux de muons atmosphériques.
détecteur ANTARES.
Le détecteur consiste en plusieurs lignes composées de photodétecteurs (Fig. 21). Pour
déterminer la direction des muons, et donc des neutrinos, il est nécessaire de connaître
l’orientation et l’inclinaison de chaque photodétecteur. C’est pourquoi ceux-ci seront équipés
de boussoles/inclinomètres numériques [13]. L’interface entre le réseau de communication
des lignes (Modbus®) et ce capteur se fait par une version modifiée de la carte universelle.
8.2. La carte interface
La carte interface met à profit les deux USARTs du
PIC17C756 pour mener à bien son rôle. Le premier
USART est branché sur le bus RS485 et permet la
réception et l’émission de trames Modbus. Le
deuxième USART, quant à lui, sert à communiquer
avec le capteur.
Ce capteur, une boussole/inclinomètre fabriquée par Figure 22 : Diagramme fonctionnel de la
Precision Navigation Inc. [12] permet une carte interface.
connexion directe sur un terminal informatique. Il
utilise par conséquent une interface série RS232 par laquelle les requêtes et les réponses
transitent sous forme de caractères ASCII.
Conception de cartes à microcontrôleurs PIC
17
Carte Interface.
La tâche assignée au PIC est donc de réaliser un tampon entre le bus RS485 et le capteur. Le
microcontrôleur devra en effet gérer deux buffers constitués de registres Modbus :
Un buffer d’émission dans lequel seront écrites les commandes à envoyer vers le
capteur.
Un buffer de réception dans lequel seront écrit tous les caractères en provenance de la
boussole.
Il devra aussi comporter un registre supplémentaire d’état (Status Register) permettant de
surveiller l’état des communications entre le capteur et lui-même.
Pour envoyer une commande au capteur, il faut l’écrire dans le buffer d’émission au moyen
d’une trame Modbus. Le PIC se charge alors de la transmettre.
Pour lire la réponse de la boussole, on procède de la même manière en lisant le buffer de
réception.
Le registre d’état constitue un composant important du système. Il indique en effet toute
erreur de communication survenant entre le microcontrôleur et le capteur. Soulignons que si
une erreur importante survient, de telle sorte que l’USART ‘plante’, celui-ci sera
automatiquement re-initialisé par le PIC. Ceci facilite les choses lorsqu’on se trouve à
plusieurs kilomètres du capteur, lui-même à plusieurs milliers de mètres sous la mer !
En plus de ce rôle de supervision, le registre d’état indique aussi la présence de nouvelles
données dans le buffer de réception. La boussole peut en effet être configurée en mode
continu. C’est à dire qu’elle envoie les données sélectionnées à intervalles réguliers, sans
nécessité d’être interrogée.
Il est donc plus économique de lire simplement un bit du registre d’état, et au besoin le buffer,
que le buffer en entier à chaque fois.
Figure 23 : Le prototype de la carte interface.
18
Conception de cartes à microcontrôleurs PIC
Conclusion
9
Bien que fonctionnant, les cartes présentées dans ce présent rapport sont toujours à l’état de
prototype.
On peut néanmoins noter que le processus d’acquisition de la carte de contrôle a encore
besoin d’être amélioré, étant donné que les mesures de tensions effectuées jusqu’à lors se sont
révélées peu précises.
Pour ce qui est de la carte tension, un nouveau circuit imprimé a été réalisé, la réalisation
d ‘une version quasi-définitive devrait donc se faire sous peu.
Enfin le logiciel de la carte universelle devrait sans doute encore être modifié suite aux
demandes répétées d’utilisateurs pour de nouvelles possibilités.
Les microcontrôleurs de la famille PIC se sont montrés aisément programmables grâce à des
outils de développement puissants (émulateur, compilateur C, etc.). On regrettera cependant
la documentation parfois succincte fournie par Microchip.
Dans tous les cas ce stage fut très enrichissant dans plusieurs domaines.
Tout d’abord il m’a permis de connaître le fonctionnement d’un laboratoire d’électronique et
d’un centre de recherche. J’ai pu également mieux cerner les responsabilités de chacun, que
ce soit à propos des techniciens ou des ingénieurs.
Ensuite le fait d’avoir à développer la partie matérielle de certaines cartes, en particulier la
carte de contrôle, m’a permis de développer mes connaissances en électronique… Et je doit le
dire en techniques de recherche de Data Sheets fabricant sur Internet.
Enfin, j’ai beaucoup appris sur la programmation en C que je connaissais mais sans trop avoir
approfondi. De plus, la conception de ces logiciels m’a donné la possibilité de m’enrichir dans
le domaine de l’algorithmique et des structures de données (e.g. arbres binaires).
Conception de cartes à microcontrôleurs PIC
19
Références
10
[1]
ANTARES Home Page.
antares.in2p3.fr
[2]
C.P.P.M. Home Page.
marwww.in2p3.fr
[3]
The I²C-Bus Specification Version 2.0.
www-us.semiconductors.philips.com/i2c/facts/#specification
[4]
Institut National de Physique Nucléaire et de Physique des Particules.
www.in2p3.fr
[5]
Microchip Techonology Inc.
www.microchip.com
[6]
Modbus Protocol Reference Guide.
www.modicon.com/openmbus
[7]
MPLAB-C17 Compiler User’s Guide, Microchip Technology, Inc., 1998.
[8]
National Institute of Standards and Technology.
Dictionary of Algorithms, Data Structures, and Problems.
hissa.nist.gov/dads
[9]
National Instruments Corp.
www.natinst.com
[10] PIC16F877 Data Sheet.
www.microchip.com/10/Lit/PICmicro/16F87X/index.htm
[11] PIC17C756 Data Sheet.
www.microchip.com/10/Lit/PICmicro/17C75X/index.htm
[12] Precision Navigation Inc.
www.precisionnav.com
[13] TCM2 Manual.
www.precisionnav.com/tcmtocb.html
[14] UNIV1 User’s Manual / M. Lesens, Rapport de Stage de Maîtrise, Université de la
Méditerranée, 1999.
[15] VOLS2P User’s Manual.
20
Conception de cartes à microcontrôleurs PIC
MPLAB, PIC, PICMaster et Promate sont des marques déposées par Microchip Technology, Inc. Modbus est
une marque déposée par Modicon, Inc., Industrial Automation Systems. Windows est une marque déposée par
Microsoft Corporation. Labview et National Instruments sont des marques déposées par National Instruments
Corp.
Les autres marques sont la propriété de leur détenteurs respectifs.
Vous pouvez vous procurez librement ce document en vous connectant sur http://rgarcin.free.fr
Pour tout contact : [email protected]
released 06-19-2000
EOF
Printed in France
Téléchargement