MCIL3 - C - Chapitre 7 - II
MCIL3 - C - Chapitre 7 - II
MCIL3 - C - Chapitre 7 - II
7.1. INTRODUCTION
Nous avons vu jusqu’à présent que nous pouvons entrer un signal sur les pins du PIC, qui détermine en
fonction du niveau de tension présente, si ce signal était considéré comme un 1 ou un 0 logique. Ceci
est suffisant pour tout signal binaire, c’est-à-dire ne présentant que deux valeurs possibles.
Supposons que nous désirons, avec le PIC, mesurer une valeur analogique, c’est-à-dire, connaître la
valeur de la tension présente sur un pin du PIC. Il existe plusieurs applications qui nécessitent une telle
possibilité, par exemple la mesure de la tension d’une batterie à l’aide d’un PIC. Comme l’électronique
interne du PIC ne comprend que les valeurs binaires, il faut donc transformer cette valeur analogique
en une représentation numérique. Ce procédé s’appelle numérisation, et pour l’effectuer, on a besoin
d’un convertisseur analogique/numérique.
Quantification
Il faut préciser que le PIC nécessite un temps Tad avant le démarrage effectif de la conversion, 10 *
Tad pour la conversion des 10 bits du résultat, et un temps supplémentaire Tad à la fin de la
conversion. Donc, le temps total de conversion est de : 12 Tad
En résumé, le temps nécessaire pour effectuer l’ensemble des opérations :
On charge le condensateur interne (nécessite le temps Tacq)
On effectue la conversion (nécessite le temps 12 * Tad)
On doit attendre 2 * Tad avant de pouvoir recommencer une autre conversion
Supposons donc que nous travaillions avec un PIC à 20MHz. Nous utilisons le diviseur par 32. Chaque
Tad vaut donc 32 Tosc. Notre temps de conversion effectif prend donc normalement 12 Tad, soit 12 *
32 Tosc, soit 19,2μs.
Si on accepte de limiter la précision à un nombre inférieur à 10 bits, et en constatant que la
numérisation s’effectue en commençant par les bits les plus significatifs, on peut se dire : N bits me
suffisent, on décide de stopper la conversion après que les bits en question aient été numérisés.
Donc, pour conserver N bits significatifs, on aurait :
Tacq pour charger le condensateur
Tad pour le démarrage
N * Tad pour la conversion
Remarque
La tension d’entrée ne peut être supérieure à la tension d’alimentation Vdd du PIC, ni inférieure à sa
tension Vss. Pour mesurer une tension supérieure, par exemple une tension de 15V maximum, il faut
Utilisation de Vss comme tension Vref- et de Vdd comme tension Vref+. Dans ce mode, les
tensions de références sont tirées en interne de la tension d’alimentation. Il n’y a donc pas
besoin de les fournir.
(a)
(b)
Fig 7.3. sauvegarde du résultat
(a) justification à droite (b) justification à gauche
La justification à droite sera principalement utilisée lorsque nous avons besoin de l’intégralité des 10
bits de résultat, tandis que la justification à gauche est très pratique lorsque 8 bits sont suffisants. Dans
ce cas, les deux bits de poids faibles se trouvent isolés dans ADRESL, il suffit donc de ne pas en tenir
compte. Le choix de la méthode s’effectue à l’aide du bit 7 de ADCON1.
PCFG AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 Vref- Vref A/D/R
3à0 RE2 RE1 RE0 RA5 RA3 RA2 RA1 RA0 +
0000 A A A A A A A A Vss Vdd 8/0/0
0001 A A A A Vref+ A A A Vss RA3 7/0/1
0010 D D D A A A A A Vss Vdd 5/3/0
0011 D D D A Vref+ A A A Vss RA3 4/3/1
0100 D D D D A D A A Vss Vdd 3/5/0
0101 D D D D Vref+ D A A Vss RA3 2/5/1
0110 D D D D D D D D - - 0/8/0
0111 D D D D D D D D - - 0/8/0
1000 A A A A Vref+ Vref- A A RA2 RA3 6/0/2
1001 D D A A A A A A Vss Vdd 6/2/0
1010 D D A A Vref+ A A A Vss RA3 5/2/1
1011 D D A A Vref+ Vref- A A RA2 RA3 4/2/2
1100 D D D A Vref+ Vref- A A RA2 RA3 3/3/2
1101 D D D D Vref+ Vref- A A RA2 RA3 2/4/2
1110 D D D D D D D A Vss Vdd 1/7/0
1111 D D D D Vref+ Vref- D A RA2 RA3 1/5/2
Tableau 7.2. Configuration des pins du convertisseur analogique/numérique
Lors d’une mise sous tension, les bits PCFGx contiennent 0000. Le PORTA et le PORTE seront donc
configurés par défaut comme ports complètement analogiques. Ceci explique pourquoi l’utilisation de
ces ports comme ports d’entrées/sorties classiques implique d’initialiser ADCON1, avec0110 ou 0111.
Les bits CHSx sont des bits qui permettent de sélectionner l’entrée analogique à convertir comme le
montre le tableau suivant :
CHS2 CHS1 CHS0 Canal Pin
0 0 0 0 AN0/RA0
0 0 1 1 AN1/RA1
0 1 0 2 AN2/RA2
0 1 1 3 AN3/RA3
1 0 0 4 AN4/RA5
1 0 1 5 AN5/RE0
1 1 0 6 AN6/RE1
1 1 1 7 AN7/RE2
Tableau. 7.4. Choix du canal
Le bit ADON permet de mettre en service le convertisseur. Si le canal a été correctement choisi, le
positionnement de ce bit permet de démarrer la charge du condensateur interne, et donc détermine le
début du temps d’acquisition.
Le bit Go/DONE, il sera placé à 1 par l’utilisateur. Cette action détermine le début de la conversion en
elle-même, qui dure 12 Tad.
Une fois la conversion terminée, ce bit est remis à 0 par l’électronique du convertisseur. Cette remise à
0 est accompagnée du positionnement du flag ADIF du registre PIR1. Ce bit permettra éventuellement
de générer une interruption. On dispose donc de deux façons pratiques de connaître la fin de la durée de
conversion :
Si le programme n’a rien d’autre à faire durant l’attente de la conversion, on boucle dans
l’attente du passage à 0 du bit GO/Done.
Si le programme continue son traitement, on peut utiliser l’interruption générée par le
positionnement du flag ADIF.