Vous êtes sur la page 1sur 33

Ministère de l’Enseignement Supérieur et de la

Recherche Scientifique

Chapitre 5
Module de Conversion Analogique / Numérique
PIC18F4550
Principe de la Conversion Analogique / Numérique
La conversion Analogique / Numérique
Un convertisseur analogique - numérique transforme une grandeur physique
(tension, courant) en une valeur numérique.

Généralement, il possède:
Une entrée "début de conversion" qui permet de démarrer la conversion.
Une sortie "fin de conversion" qui indique que la conversion est terminée.
Une entrée analogique (courant ou tension).
Plusieurs sorties numériques, dont le nombre est fonction de la résolution.
Principe de la Conversion Analogique / Numérique
La conversion Analogique / Numérique
Exemple
Principe de la Conversion Analogique / Numérique
Le CAN au niveau du PIC18F4550

Conversion
Analogique /
Numérique

Sur 13 canaux
(AN0AN12)

CAN : Convertisseur Analogique Numérique


ADC : Analogue to Digital Converter
Principe de la Conversion Analogique / Numérique
Le CAN au niveau du PIC18F4550

 Convertir une tension analogique, comprise


entre deux tensions de référence Vref- et Vref+,
en une valeur numérique N sur n bits.

 Les tensions de références permettent de fixer la


dynamique du convertisseur. Elles peuvent être
choisies parmi Vdd, Vss, Vref+ ou Vref-.
Principe de la Conversion Analogique / Numérique
Le CAN au niveau du PIC18F4550

 Ce module est constitué d'un CAN à 10 bits dont


l'entrée analogique peut être connectée sur l'une des 13
entrées analogiques externes :
PORTA<RA0/AN0, RA1/AN1, RA2/AN2, RA3/AN3, RA5/AN4>
PORTB<RB0/AN12, RB1/AN10, RB2/AN8, RB3/AN9, RB4/AN11>
PORTE< RE0/AN5, RE1/AN6, RE2/AN7>
Principe de la Conversion Analogique / Numérique
Le CAN au niveau du PIC18F4550

 On dit qu'on a un CAN à 13 canaux. Les


entrées analogiques doivent être configurées en
entrée à l'aide des registres TRISA , TRISB
et/ou TRISE.
Principe de la Conversion Analogique / Numérique
Le CAN au niveau du PIC18F4550

 Le convertisseur possède 13 pins en entrée


permettant de sélectionner la voie sur laquelle
est effectuée la conversion (CHS0:CHS3) et
retourne le résultat sur 10 bits.
Principe de la Conversion Analogique / Numérique
Le Module de Conversion A/N

Le module A/D est configuré par les 5 registres (SFR) suivants :

A/D Result High Register (ADRESH)

A/D Result Low Register (ADRESL)

A/D Control Register 0 (ADCON0)

A/D Control Register 1 (ADCON1)

A/D Control Register 2 (ADCON2)


ADCON0 : A/D CONTROL REGISTER 0

 ADON : Ce bit permet de mettre le module AN en


service.

 GO/DONE : Une conversion démarre quand on place


ce bit à 1. A la fin de la conversion, il est remis
automatiquement à zéro. Ce bit peut aussi être positionné
automatiquement par le module CCP2.
ADCON0 : A/D CONTROL REGISTER 0

CHS3:CHS0 : choix de l'entrée analogique


0000 = channel 0, (RA0)
0001 = channel 1, (RA1)
0010 = channel 2, (RA2)
0011 = channel 3, (RA3)
0100 = channel 4, (RA5)
0101 = channel 5, (RE0)
0110 = channel 6, (RE1)
0111 = channel 7, (RE2)
1000 = channel 8, (RB2)
1001 = channel 9, (RB3)
1010 = channel 10, (RB1)
1011 = channel 11, (RB4)
1100 = channel 12, (RB0)
ADCON1 : A/D CONTROL REGISTER 1

PCFG3:PCFG0 : Configuration des E/S

 Les 5 broches du PORTA , les 5 broches du PORTB et


les 3 du PORTE peuvent être configurées soit en E/S
digitales, soit en entrées analogiques.
ADCON1 : A/D CONTROL REGISTER 1

RB0 RB4 RB1 RB3 RB2 RE2 RE1 RE0 RA5 RA3 RA2 RA1 RA0

PCGF AN12 AN11 AN10 AN9 AN8 AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0
(3…0)
0000 A A A A A A A A A A A A A
0001 A A A A A A A A A A A A A
0010 A A A A A A A A A A A A A
0011 D A A A A A A A A A A A A
0100 D D A A A A A A A A A A A
0101 D D D A A A A A A A A A A
0110 D D D D A A A A A A A A A
0111 D D D D D A A A A A A A A
1000 D D D D D D A A A A A A A
1001 D D D D D D D A A A A A A
1010 D D D D D D D D A A A A A
1011 D D D D D D D D D A A A A
1100 D D D D D D D D D D A A A
1101 D D D D D D D D D D D A A
1110 D D D D D D D D D D D D A
1111 D D D D D D D D D D D D D
ADCON1 : A/D CONTROL REGISTER 1

VCFG1:VCFG0 : configuration des tensions de références.


VCFG1(VREF- source) et VCFG0(VREF+ source)

 RA2(AN2) et RA3(AN3) peuvent aussi être configurées


en entrée de référence.
ADCON1 : A/D CONTROL REGISTER 1

VCFG1 VCFG0 VREF- VREF+


0 0 Vss VDD
0 1 Vss AN3(RB3)
1 0 AN2(RB2) VDD
1 1 AN2(RB2) AN3(RB3)
ADCON2 : A/D CONTROL REGISTER 2

Bits 0 à 2 ou Bits ADCS0 à ADCS2 pour A/D Clock Select


 Ces trois bits permettent de définir la fréquence de l’horloge de
conversion conformément aux indications du tableau :
ADCON2 : A/D CONTROL REGISTER 2
Le temps de conversion

 TAD est le temps de conversion d'un bit, il dépend de


l'horloge système et du prédiviseur (div) choisi.

 Les choix doivent être ajustés pour que TAD dépasse 0,8 μs.
 Le convertisseur nécessite 11 TAD pour la conversion de 10
bits.
ADCON2 : A/D CONTROL REGISTER 2
Le temps d’acquisition

Bits 3 à 5 ou Bits ACQT0 à ACQT2 pour ACQuisition Time


select:
 Ces trois bits permettent de définir le temps d’acquisition
conformément aux indications du tableau:

TAD :
La période de l’horloge de
conversion d’1 bit
ADCON2 : A/D CONTROL REGISTER 2
Le temps d’acquisition

Pendant la conversion, la tension Ve


à l'entrée du convertisseur A/N doit
être maintenue constante.

Le PIC dispose d’un échantillonneur


bloqueur intégré constitué d'un
interrupteur S et d'une capacité de
maintien de C=25pF.
ADCON2 : A/D CONTROL REGISTER 2
Le temps d’acquisition

S se ferme, la tension Ve rejoint la


tension analogique d'entrée Va au
bout d'un temps d'acquisition qui
dépend du temps du chargement de
la capacité C.
ADCON2 : A/D CONTROL REGISTER 2
Le temps d’acquisition

Pendant le temps de conversion, S


est maintenu ouvert, la capacité
bloque Ve à une valeur constante.

A la fin de la conversion, S se
ferme, nouvelle acquisition.
ADCON2 : A/D CONTROL REGISTER 2
Le temps d’acquisition

Le temps minimum d’acquisition est : TACQ = 2.45 μs


L'acquisition commence :
 Après la fin d’une conversion,
 au moment du choix d'un canal si
convertisseur validé (ADON=1),
 au moment de validation du
convertisseur si canal choisi.
ADCON2 : A/D CONTROL REGISTER 2
Le temps d’acquisition

• Le registre ADCON2 permet à l'utilisateur de configurer un


« temps d'acquisition ». Ce temps intervient entre le moment
où le bit GO/DONE (du registre ADCON0) est mis à 1 et le
moment où la conversion démarre réellement.
• Les bits ACQT2 à ACQT0 (ADCON2<5:3>) permettent de
configurer un temps d'acquisition compris entre 2 et 20 Tad .
• Il est possible de ne pas utiliser ce temps d'acquisition
(ACQT2:ACQT0= 000). Dans ce cas, la conversion démarre
immédiatement après que le bit GO/DONE ait été positionné
à 1.
• Dans tous les cas, lorsque la conversion est terminée, le bit
GO/DONE est remis à 0 et le bit ADIF (A/D Converter
Interrupt Flag bit) est positionné à 1.
ADCON2 : A/D CONTROL REGISTER 2
Exemple
ADCON2 : A/D CONTROL REGISTER 2
Le format du résultat de conversion obtenu
Le convertisseur donne un résultat sur 10 bits, et donc que ce
résultat devra obligatoirement être sauvegardé dans 2
registres.
Ces registres sont tout simplement les registres ADRESL et
ADRESH.
Comme ces 2 registres contiennent 16 bits, et que nous
utilisons que 10 bits, Microchip a laissé le choix sur la façon
dont est sauvegardé le résultat.

Bit 7 ou Bit ADFM pour AD result ForMat select:


ADCON2 : A/D CONTROL REGISTER 2
Le format du résultat de conversion obtenu

Bit 7 ou Bit ADFM pour AD result ForMat select:


• S’il est à 1, ce bit positionne le résultat contenu dans ADRESH et
ADRESL avec une justification a droite.
• S’il est à 0, ce bit positionne le résultat avec une justification a gauche.
Démarche de programmation

• Après que le module convertisseur ait été configuré, la voie


sélectionnée doit faire l'objet d'une acquisition avant que
la conversion démarre.

• Les lignes d'entrées analogiques doivent voir le bit TRIS


associé positionné à 1 (entrée).

• Le temps d'acquisition est programmable : Ce temps


correspond à un délai intervenant entre le positionnement du
bit GO/DONE à 1 (lancement de la conversion) et le début
de la conversion à proprement parler (au niveau du CAN).
Démarche de programmation
La procédure suivante est à suivre pour mettre en œuvre
correctement le convertisseur :
1. Configurer le module convertisseur :
– Configurer les lignes, les références.. (ADCON1)
– Choisir la voie à convertir (ADCON0)
– Choisir le temps d'acquisition (ADCON2)
– Choisir l'horloge de conversion (ADCON2)
– Activer le module CAN (ADON à 1 dans ADCON0)
2. Attendre une durée identique au temps d'acquisition (si nécessaire)
3. Lancer la conversion : GO/DONE = 1
4. Attendre la fin de la conversion :
1. Soit en surveillant le passage de GO/DONE à '0'
2. Interruption ADIF
5. Lire le résultat dans ADRESH:ADRESL, ou ADRES repositionner ADIF à 0 si
nécessaire
6. Retour à l'étape 1 ou 2 pour une nouvelle acquisition.
Un délai minimal correspondant à 2 Tad est nécessaire avant de relancer une
acquisition.
Démarche de programmation
Exercice 1
• Ecrire un programme qui permet de convertir
la tension qui varie entre 0V et 5V via le
PORTA0. si la tension est supérieur à 3V une
diode LED connectée à PORTB1( avec une
précision sur 8bits)

• Simuler le fonctionnement avec ISIS, la sortie


du PIC sera visualisée avec des diodes LEDs.
29
RV1(2)

U1
2 15
RA0/AN0 RC0/T1OSO/T1CKI
3 16
RA1/AN1 RC1/T1OSI/CCP2/UOE
4 17
RA2/AN2/VREF-/CVREF RC2/CCP1/P1A
5 23
RA3/AN3/VREF+ RC4/D-/VM
6 24
RA4/T0CKI/C1OUT/RCV RC5/D+/VP
7 25
RA5/AN4/SS/LVDIN/C2OUT RC6/TX/CK
14 26
RV1 RA6/OSC2/CLKO RC7/RX/DT/SDO
13
OSC1/CLKI
33 19
RB0/AN12/INT0/FLT0/SDI/SDA RD0/SPP0
34 20
RB1/AN10/INT1/SCK/SCL RD1/SPP1
35 21
RB2/AN8/INT2/VMO RD2/SPP2
36 22
RB3/AN9/CCP2/VPO RD3/SPP3
37 27
RB4/AN11/KBI0/CSSPP RD4/SPP4 VDD
1k 38 28
RV2 RB5/KBI1/PGM RD5/SPP5/P1B
MODFILE=POT_LIN 39 29
RB6/KBI2/PGC RD6/SPP6/P1C
40 30
RB7/KBI3/PGD RD7/SPP7/P1D
8
50%

RE0/AN5/CK1SPP
9
RE1/AN6/CK2SPP
10 R1
RE2/AN7/OESPP
18 1
VUSB RE3/MCLR/VPP
1k 10k
PIC18F4550

D1

LED-RED
30
Etape 1 : Configuration
a. Les lignes d'entrées analogiques doivent voir le bit TRIS associé positionné à 1
(entrée).
• BSF TRISA,0 ; mettre RA0 en entrée
• Clrf TRISB
b. On configure les entrées comme entrée de type analogique avec le registre spécial
ADCON1 Exemple : PCFG3:PCFG0 = 1110
• Choix des tensions de référence(ADCON1)
– VCFG1:VCFG0= 00 (Vref-=Vss et Vref+=Vdd)
• Donc : movlw b’0000 1110’ ;
• movwf ADCON1
c. CHS3:CHS0 : choix de l'entrée analogique
0000 = channel 0, (RA0)
• Donc : clrf ADCON0
e. Choisir l'horloge de conversion (ADCON2) : Tad=2*Tosc (or Fosc/2)
ADCS2:ADCS0=000. Puisque nous utilisons l'horloge interne par défaut de 1 Mhz, Tosc =
1/1,000,000 = 1us. Cela signifie que si Tadmin=0,8us, 2Tosc = 2us> 0,8 us
d. Choisir le temps d'acquisition (ADCON2) :
• ACQT0 à ACQT2= 001 (Tacq=2*Tad) 31
Etape 1 : Configuration
• Mettre la justification à gauche: ADFM=0
• Donc : movlw b’00001000’
• movwf ADCON2
f. Activer le module CAN (ADON à 1 dans ADCON0)
• bsf ADCON0,0

Etape 2 : Attendre une durée identique au temps d'acquisition:


pas nécessaire réalisée par configuration
Etape 3 : Lancer la conversion : GO/DONE = 1:
BSF ADCON0,ADON
Etape 4 : Attendre la fin de la conversion :
Etape 5 : Lire le résultat dans ADRESH:
MainLoop:
BSF ADCON0,GO_DONE ;Start A/D Conversion
BTFSC ADCON0,GO_DONE ;Loop here until A/D conversion completes
GOTO MainLoop
MOVF ADRESH,W ;R‚sultats H dans W 32
Valeur numérique obtenue
• Quelle est la relation entre la tension analogique convertie et
le nombre N recueilli dans le registre ADRES ?
• Si on note : Q = pas de quantification = (Vref+ - Vref-)/1024
• Va = tension analogique à convertir
• N = valeur numérique obtenue

• Avec Vref- = masse, on obtient N = int (Va / Q)


• exemple :
• Vref+ = Vdd = 5V, Vref- = 0, Vin = 3 V
• Q = 5V/1024 = 0,0048828125 V
• N = 3V / 0,0048828125 = 614 = 1001100110b

33

Vous aimerez peut-être aussi