1
Microcontrôleurs
Chapitre 6:
PIC 18 : Convertisseur Analogique Numérique
Application : le PIC 18F4520 Marouane Marzouk
ISET Sousse
2021-2022
2
1. PRESENTATION Marouane Marzouk
▪ Le convertisseur analogique numérique (ADC) des microcontrôleurs PIC fonctionne selon
le principe des approximations successives avec une résolution de 10 bits.
▪ Le microcontrôleur PIC18F4520 possède un convertisseur analogique numérique avec
une résolution de 10 bits.
▪ Le microcontrôleur PIC18F4520 dispose de treize canaux d’entrées analogiques repartis
sur les ports A, B et E.
▪ Les tensions de référence 𝑉ref+ et 𝑉ref- du module ADC peuvent être choisies de manière
logicielle par combinaison des lignes VDD, VSS, RA2 et RA3.
▪ Le résultat de conversion de 10 bits est chargé dans deux registres de 8 bits ADRESL et
ADRESH.
3
1. PRESENTATION Marouane Marzouk
Schéma bloc de l’ADC
4
1. PRESENTATION Marouane Marzouk
▪ Le module ADC dispose de cinq registres :
➢ ADRESL (A/D RESult Low register)
➢ ADRESH (A/D RESult High register)
➢ ADCON0 (A/D CONtrol register 0)
➢ ADCON1 (A/D CONtrol register 1)
➢ ADCON2 (A/D CONtrol register 2)
5
2. CONVERSION ANALOGIQUE NUMERIQUE Marouane Marzouk
❖ La conversion d’un signal analogique en équivalent numérique passe par deux phases :
▪ L’échantillonnage blocage (sample and hold). Cette opération consiste à connecter
l’entrée à convertir à un condensateur, qui va se charger à travers une résistance
jusqu'à la tension appliquée.
➢ Le temps nécessaire au charge complet du condensateur est appelé temps
d’acquisition 𝑻𝑨𝑪𝑸.
▪ Une fois le condensateur est chargé, l’ordre de début de conversion permet de
déconnecter la tension appliquée, pour procéder à la phase de conversion.
6
2. CONVERSION ANALOGIQUE NUMERIQUE Marouane Marzouk
RIC : Résistance d'interconnexion SS : Commutateur d'échantillonnage
RSS : Résistance du commutateur d'échantillonnage CHOLD : Capacité d’échantillonnage blocage
7
2. CONVERSION ANALOGIQUE NUMERIQUE Marouane Marzouk
❑ Temps d’acquisition
▪ Le temps d’acquisition dépend de trois paramètres :
✓ Le temps de charge du condensateur de l’échantillonneur bloqueur à travers les
résistances internes et la résistance de la source.
✓ Le temps de stabilisation de l’amplificateur.
✓ Un temps qui dépend de la variation de la température.
𝑇𝐴𝐶𝑄 = 𝑇𝐴𝑀𝑃 + 𝑇𝐶 + 𝑇𝐶𝑂𝐹𝐹
𝑇𝐴𝑀𝑃 : temps de stabilisation de l’amplificateur
𝑇𝐶 : temps de charge du condensateur
𝑇𝐶𝑂𝐹𝐹 : temps dépendant du coefficient de température
8
2. CONVERSION ANALOGIQUE NUMERIQUE Marouane Marzouk
❑ Temps d’acquisition
▪ D’après le document du constructeur :
✓ 𝑇𝐴𝑀𝑃 = 0.2μs
✓ 𝑇𝐶𝑂𝐹𝐹 = 𝑇𝑒𝑚𝑝 − 25°C . 0.02μs/°C
Exemple : Pour Temp = 85°C, 𝑇𝐶𝑂𝐹𝐹 = 1,2μ𝑠
▪ La résistance interne totale (composée de 𝑅𝐼𝐶 𝑒𝑡 𝑅𝑆𝑆 )
✓ 𝑅𝐼𝐶 est limitée à 1𝑘Ω
✓ 𝑅𝑆𝑆 varie en fonction de la tension d’alimentation selon l’équation suivante :
𝑅𝑆𝑆 𝐾Ω = −𝑉𝐷𝐷 + 7
▪ Microchip recommande que la résistance de la source (𝑅𝑆 ) devra être inférieure ou
égale à 2,5 𝑘Ω.
9
2. CONVERSION ANALOGIQUE NUMERIQUE Marouane Marzouk
❑ Temps d’acquisition
▪ Le temps de charge du condensateur est :
𝑇𝐶 = 𝑅𝐼𝐶 + 𝑅𝑆𝑆 + 𝑅𝑠 . 𝐶𝐻𝑂𝐿𝐷 . 𝐿𝑛(2047)
▪ Dans les conditions normales et pour une tension d’alimentation de 5V, le temps
d’acquisition 𝑻𝑨𝑪𝑸 = 𝟐. 𝟒μs
10
2. CONVERSION ANALOGIQUE NUMERIQUE Marouane Marzouk
❑ Temps de conversion
▪ C’est le temps nécessaire pour convertir le signal analogique en équivalent numérique.
▪ Le temps de conversion dépend essentiellement de la période d’horloge du
convertisseur 𝑻𝑨𝑫 (Typiquement 0,7 μs).
❖ Le microcontrôleur PIC18 nécessite :
✓ un temps 𝑻𝑨𝑫 avant le démarrage effectif de la conversion.
✓ 10 ∙ 𝑻𝑨𝑫 pour la conversion (une période par bit).
✓ et un temps supplémentaire 𝑻𝑨𝑫 à la fin de la conversion.
➢ Soit au total 12 ∙ 𝑻𝑨𝑫 . 𝑻𝒄𝒐𝒏𝒗 = 𝟏𝟐 ∗ 𝑻𝑨𝑫
Donc dans les meilleures conditions : 𝑻𝒄𝒐𝒏𝒗 = 12 ∗ 0.7μs = 8.4μs
➢ Il faut bien noter qu’une attente à 𝟐𝑻𝑨𝑫 est nécessaire avant d’effectuer une nouvelle
conversion.
11
2. CONVERSION ANALOGIQUE NUMERIQUE Marouane Marzouk
❑ Cycle de conversion
12
3. Registre ADCON0 Marouane Marzouk
L’entée à convertir est sélectionnée par les bits CHS<3:0> du registre ADCON0
CHS<3:0> : Analog Channel Select bits
0000 = Channel 0 (AN0) 1000 = Channel 8 (AN8)
0001 = Channel 1 (AN1) 1001 = Channel 9 (AN9)
0010 = Channel 2 (AN2) 1010 = Channel 10 (AN10)
0011 = Channel 3 (AN3) 1011 = Channel 11 (AN11)
0100 = Channel 4 (AN4) 1100 = Channel 12 (AN12)
0101 = Channel 5 (AN5) 1101 = Unimplemented)
0110 = Channel 6 (AN6) 1110 = Unimplemented)
0111 = Channel 7 (AN7) 1111 = Unimplemented)
13
3. Registre ADCON0 Marouane Marzouk
▪ Après la mise sous tension, l’ADC est désactivé, ceci permet de réduire la consommation.
Le bit d’activation ADON doit être mis à 1 lorsque le module ADC est utilisé.
▪ La mise à 1 du bit 𝑮𝑶/𝑫𝑶𝑵𝑬 de manière logicielle, démarre la conversion.
▪ La fin de la conversion est signalée par le retour à zéro du bit 𝑮𝑶/𝑫𝑶𝑵𝑬 et la mise à 1 du
bit indicateur d’interruption ADIF (PIR1<6>).
➢ Une interruption pourra être générée si le bit ADIE (PIE1<6>) est défini.
▪ Le résultat de conversion est placé dans les registres ADRESH et ADRESL.
14
3. Registre ADCON0 Marouane Marzouk
Exemple : Le code suivant illustre un exemple de lancement d’une opération de
conversion analogique numérique :
ADCON0bits.GO = 1; // début de conversion
while(ADCON0bits.GO == 1) continue; // Attente de fin de conversion
AdcVal = ADRESH<<8 + ADRESL; // lecture de la valeur convertie
15
4. Registre ADCON1 Marouane Marzouk
• Par défaut l’ADC est configuré avec des tensions de référence internes (𝑉ref+ = 𝑉DD et
𝑉ref- = VSS) ne nécessite aucune liaison externe.
• les broches RA2 et RA3 peuvent être configurées en références externes. Les bits VCFG1
et VCFG0 permettent de sélectionner les références internes ou externes ou une
combinaison de deux.
VCFG1 : Voltage Reference Configuration bit (VREF- source)
1 = VREF- (AN2)
0 = VSS
VCFG0 : Voltage Reference Configuration bit (VREF+ source)
1 = VREF+ (AN3)
0 = VDD
16
4. Registre ADCON1 Marouane Marzouk
• Les quatre bits PCFG<3:0> du registre
ADCON1, permettent la configuration
des broches en analogique ou en
numérique.
PCFG<3:0> : A/D Port Configuration Control bits
Tableau 1
17
4. Registre ADCON1 Marouane Marzouk
• Pour les microcontrôleurs alimentés sous 5V, la différence entre les tensions de référence
doit être supérieure ou égale à 3V.
∆𝑉𝑟𝑒𝑓 = 𝑉𝑟𝑒𝑓+ − 𝑉𝑟𝑒𝑓− ≥ 3𝑉
Exemple
Supposons qu’une application a besoin de 4 entrées analogiques et une entrée de référence
positive externe. Quelle est la valeur à charger dans le registre ADCON1 ?
Solution
Un choix optimal nécessite
✓ l’utilisation des entrées AN0, AN1, AN2 et AN4 (combinaison : 1010);
✓ RA3 comme entrée de référence positive 𝑉𝐶𝐹𝐺1 = 0 et 𝑉𝐶𝐹𝐺0 = 1.
ADCON1 = 0b00011010.
18
5. Registre ADCON2 Marouane Marzouk
La fonction principale de ce registre est de permettre à l'utilisateur de programmer la source d'horloge et le
temps d'acquisition de l’ADC.
ADFM : A/D Result Format Select bit
1 = Right justified
0 = Left justified
ADCS<2:0> : A/D Conversion Clock Select bits
ACQT<2:0> : A/D Acquisition Time Select bits 111 = FRC (clock derived from A/D RC oscillator)
111 = 20 TAD 110 = FOSC/64
110 = 16 TAD 101 = FOSC/16
101 = 12 TAD 100 = FOSC/4
100 = 8 TAD 011 = FRC (clock derived from A/D RC oscillator)
011 = 6 TAD 010 = FOSC/32
010 = 4 TAD 001 = FOSC/8
001 = 2 TAD 000 = FOSC/2
000 = 0 TAD
19
5. Registre ADCON2 Marouane Marzouk
❑ Sélection de l’horloge de l’ADC
• La fréquence d’horloge de l’ADC 𝐹𝐴𝐷 est dérivée de la fréquence principale du
microcontrôleur 𝐹𝑂𝑆𝐶 .
• Pour des raisons électroniques, la période d’horloge de l’ADC, 𝑻𝑨𝑫 , est limitée à 0,7 μs,
soit une fréquence maximale 𝐹𝐴𝐷 = 1.428𝑀𝐻𝑧.
• Le diviseur intégré est programmé pour diviser la fréquence 𝐹𝑂𝑆𝐶 par 2, 4, 8, 16, 32 et
64.
• Lorsque la source d’horloge est un circuit RC, 𝑻𝑨𝑫 est typiquement égale à 1,2μs.
20
5. Registre ADCON2 Marouane Marzouk
❑ Sélection de l’horloge de l’ADC
Tableau 2 : Choix de 𝑻𝑨𝑫 en fonction de 𝑭𝑶𝑺𝑪
21
5. Registre ADCON2 Marouane Marzouk
❑ Sélection de l’horloge de l’ADC
Exemple
Déterminer la valeur à charger dans le champ de bits ADCS<2 :0> pour une fréquence
𝐹𝑂𝑆𝐶 = 8𝑀𝐻𝑧 .
Solution :
Cherchons la valeur de division 𝑵 la plus appropriée :
𝑁
𝑇𝐴𝐷 = 𝑁 ∗ 𝑇𝑂𝑆𝐶 𝐹𝑂𝑆𝐶 = 𝑁 ∗ 𝐹𝐴𝐷 = N = 𝐹𝑂𝑆𝐶 ∗ 𝑇𝐴𝐷
𝑇𝐴𝐷
Cherchons la valeur minimale 𝑁𝑚𝑖𝑛 pour la valeur limite 𝑇𝐴𝐷𝑚𝑖𝑛 = 0.7μs
𝑁𝑚𝑖𝑛 = 𝐹𝑂𝑆𝐶 ∗ 𝑇𝐴𝐷𝑚𝑖𝑛 = 8. 106 ∗ 0.7. 10−6 = 5.6
22
5. Registre ADCON2 Marouane Marzouk
❑ Sélection de l’horloge de l’ADC
Solution (suite) :
Toute valeur de 𝑁 supérieure à 5,6 est acceptable, cependant, la valeur optimale est celle la
plus proche de 𝑁𝑚𝑖𝑛 , d’après le Tableau2, 𝑁 = 8.
𝑁 8
La valeur de 𝑇𝐴𝐷 = 𝑁 ∗ 𝑇𝑂𝑆𝐶 = = = 1μ𝑠
𝐹𝑂𝑆𝐶 8.106
o Il était possible de déterminer la valeur de 𝑁 directement à partir du Tableau 2. La
fréquence 𝑭𝑶𝑺𝑪 = 𝟖𝑴𝑯𝒛 correspond à la ligne dont la fréquence maximale est
11,43MHz,
d’où 𝑻𝑨𝑫 = 𝟖 ∗ 𝑻𝑶𝑺𝑪
𝑇𝐴𝐷 = 8 ∗ 𝑇𝑂𝑆𝐶 alors 𝐴𝐷𝐶𝑆 <2 : 0> = 001
23
5. Registre ADCON2 Marouane Marzouk
❑ Programmation du temps d’acquisition
• Pour le PIC18F4520, un temps d’acquisition automatique peut être programmé à travers
les bits ACQT<2:0> (ADCON2<5:3>).
Exemple
Déterminer la valeur à charger dans le champ de bits ACQT<2 :0> pour un temps
d’acquisition de 2,4μs ; on admet que 𝑇𝐴𝐷 = 1μ𝑠
Solution :
Le temps d’acquisition est fonction de la période d’horloge de l’ADC :
𝑇𝐴𝐶𝑄 2.4μ𝑠
𝑇𝐴𝐶𝑄 = 𝐾 ∗ 𝑇𝐴𝐷 d’où K = = = 2.4
𝑇𝐴𝐷 1μ𝑠
d’après le datasheet du PIC18F4520 (diapo18), la valeur la plus proche 𝑇𝐴𝐶𝑄 = 4 ∗ 𝑇𝐴𝐷
d’où ACQT<2 :0> = 010.
24
5. Registre ADCON2 Marouane Marzouk
❑ Alignement des données
• Le module ADC a besoin de deux registres pour un résultat de conversion de 10 bits.
• La capacité totale des registres ADRESH : ADRESL étant de 16 bits,
• il existe deux manières d'aligner les dix bits selon la valeur du bit ADFM .