Sunteți pe pagina 1din 16

CONVERTORUL ANALOG-DIGITAL

170


10. CONVERTORUL ANALOG-DIGITAL



Cuprins
Introducere
Obiective
10.1 PRINCIPIUL DE FUNCIONARE AL CONVERTORULUI
ANALOG-DIGITAL
10.2 CONFIGURAREA MODULULUI DE CONVERSIE A/D
10.2.1 Rolul i structura regitrilor de control
10.2.2 Etapa de configurare
Concluzii
ntrebri de autoevaluare
Termeni eseniali
















SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
171

Introducere
Microcontrolerele au fost concepute pentru a interaciona cu mediul
exterior, care, n esena lui, este alctuit din semnale analogice (sunet,
cldur, iluminare etc). Astfel, comunicarea dintre microcontroler i
lumea exterioar nu se poate realiza doar prin intermediul unor canale cu
dou nivele de tensiune (porturile de intrare-ieire digitale). Exist
numeroase situaii n care date de natur analogic, preluate de la diverse
dispozitive sau senzori, necesit o prelucrare digital. ntr-un asemenea
context se utilizeaz convertoarele analog-digitale (A/D) care transform
nivelele de tensiune analogice n echivalentul lor digital (secvene de bii)
care poate fi utilizat cu uurin n prelucrrile ulterioare.
Majoritatea microcontrolerelor PIC au n dotare convertoare analog-
digitale multicanal, iar n acest capitol ne vom opri asupra aspectelor
specifice utilizrii acestor module.

Obiective
Dup parcurgerea acestui capitol cursantul va trebui:
- s neleag principiul de realizare al conversiilor analog-digitale
- s neleag diferena ntre eantionare i conversie
- s poat configura modulul de conversie analog-digital al
microcontrolerului PIC18F4455
- s poat citi date analogice din program prin interogare sau
ntrerupere.


10.1 PRINCIPIUL DE FUNCIONARE AL CONVERTORULUI A/D

Microcontrolerul PIC18F4455 este dotat cu un convertor analog-digital cu aproximri
succesive, cuprins n cadrul unui modul intern legat la magistrala de adrese i de date.
Modulul de conversie dispune de 13 canale de intrare multiplexate cu pinii
microcontrolerului, iar rezoluia convertorului este de 10 bii.
Structura unui convertor analog-digital cu aproximri succesive (Fig. 10.1) cuprinde,
n general, urmtoarele blocuri:
1. Un circuit de eantionare-memorare utilizat pentru achiziionarea i meninerea
constant pe durata conversiei a tensiunii analogice V
in
.
2. Un comparator de tensiune. Acesta compar tensiunea de intrare V
in
cu ieirea
furnizat de convertorul digital-analogic i trimite rezultatul ctre un registru de
aproximri succesive (RAS)
CONVERTORUL ANALOG-DIGITAL
172
3. Un registru de aproximri succesive (RAS) care va furniza convertorului digital-
analogic aproximri digitale ale tensiunii de intrare V
in

4. Un convertor digital-analogic care furnizeaz ctre comparator un semnal analogic
echivalent codului binar provenit de la registrul de aproximri succesive.[13]


Fig. 10.1. Convertor analog-digital cu aproximri succesive

Principiul de funcionare al unui asemenea convertor analog-digital se desfoar dup
cum urmeaz. Registrul de aproximri sucesive este iniializat astfel nct bitul cel mai
semnificativ (MSB) s aib valoarea 1, ceilali bii fiind 0. Codul rezultat se va converti n
tensiune (V
ref
/2) i se va compara cu V
in
. Dac tensiunea analogic produs de convertorul
digital analogic este mai mic dect V
in
atunci bitul (MSB) rmne setat. n caz contrar acest
bit va fi resetat. Acelai proces se repet pentru fiecare bit n parte, pn la testarea fiecrui bit
al registrului RAS. Codul astfel rezultat reprezint aproximarea digital a semanlului de
analogic de intrare.
Procesul de conversie analog-digital prin aproximri succesive este pus n eviden n
Fig. 10.2 pentru cazul unei rezoluii de 4 bii.[13]

Fig. 10.2. Principiul aproximrilor succesive pentru un RAS de 4 bii
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
173
Dup cum s-a putut observa pn acum, obinerea rezultatului conversiei este un
proces secvenial a crui durat depinde de numrul de bii necesar pentru reprezentarea
digital, dar i de frecvena de lucru. Timpul alocat conversiei unui bit se noteaz cu T
AD
, iar
pentru realizarea unei conversii complete de 10 bii este necesar un timp egal cu 11T
AD
.
Pentru a obine rezultate corecte, pe durata timpului de conversie tensiunea V
in
trebuie s
rmn constant. De acest lucru se ocup circuitul de eantionare-memorare (Fig. 10.3)
prezent n structura modulului de conversie.


Fig. 10.3. Versiunea simplificat a unui circuit de eantionare-memorare

Circuitul de eantionare-memorare menine constant tensiunea de intrare V
in
cu
ajutorul unui condensator, care necesit un timp de ncrcare. Acest timp de ncrcare
intervine n proporie semnificativ i caracterizeaz timpul de achiziie T
AQ
al tensiunii care
urmeaz a fi convertit cu ajutorul convertorului A/D. n Fig. 10.4 se evideniaz timpii care
intervin n procesul de conversie analog-digital.


Fig. 10.4. Timpii care intervin n procesul de conversie A/D

Astfel, naintea realizrii conversiei propriu-zise, convertorul analog-digital trebuie
lsat ntr-o stare de achiziie a semnalului de intrare un timp minim:
CONVERTORUL ANALOG-DIGITAL
174
T
AQ
= T
AMP
+ T
C
+ T
COFF
(10.1)
unde:
- T
AQ
reprezint timpul de achiziie
- T
AMP
reprezint timpul de stabilizare a amplificatorului intern / ntreruptorului
comandat
- T
C
reprezint timpul de ncrcare al condensatorului
- T
COFF
reprezint un coeficient datorat temperaturii de lucru
Conform specificaiilor din foaia de catalog, T
AMP
= 0.2s, T
C
=1.2s, iar pentru
temperaturi mai mari de 25C T
COFF
minim este 1.2s crescnd cu temperatura (se poate
aduga la acest coeficient cte 0.02s pentru fiecare C peste temperature de 25C). n aceste
condiii timpul de achiziie minim la temperaturi normale de lucru este T
AQ
= 2.4s.
Pe lng timpul de achiziie i timpul de conversie se recomand ateptarea unui timp
egal cu 3T
AD
pn la realizarea urmtoarei achiziii.


10.2 CONFIGURAREA MODULULUI DE CONVERSIE A/D

10.2.1 Rolul i structura regitrilor de control

Modulul poate fi configurat prin simpla modificare a unor regitri speciali, iar citirea
datelor se rezum la citirea a doi regitri (ADRESH:ADRESL) care vor conine rezultatul
conversiei. Modulul de conversie A/D dispune de 3 regitri de configurare (ADCON0,
ADCON1, ADCON2), a cror structur se prezint n continuare.
Cu toate c n structura microcontrolerului exist un singur convertor A/D, prin
utilizarea unui multiplexor analogic se pot selecta din program, cu ajutorul biilor
CHS3:CHS0 din registrul ADCON0[5:2], pe rnd, pn la 13 canale de intrare analogice
distincte. Conversia este declanat prin setarea bitului DONE GO/

din registrul ADCON0[1],
care ndeplinete i rolul unui bit de stare care indic prin resetarea sa automat terminarea
conversiei i disponibilitatea rezultatului de 10 bii n regitrii ADRESH:ADRESL. De
asemenea, modulul de conversie analog digital poate genera o ntrerupere, terminarea
conversiei fiind semnalizat i prin setarea bitului indicator de ntrerupere ADIF din registrul
PIR1.
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
175
Dup cum s-a vzut i n cazul altor module componente ale microcontrolerului, i
convertorul A/D dispune de un bit de validare ADON n registrul ADCON0[0] care are rolul
de a activa (ADON = 1) sau dezactiva (ADON = 0) modulul de conversie.
n Fig. 10.5 se prezint schema bloc simplificat a modulului de conversie A/D, iar n
Fig. 10.6 se prezint structura registrului ADCON0 urmat de descrierea biilor disponibili.


Fig. 10.5. Schema bloc simplificat a modulului de conversie A/D

7 0
- - CHS3 CHS2 CHS1 CHS0
DONE GO/
ADON
Fig. 10.6. Registrul ADCON0: A/D Control Register 0

Biii 7-6
Neutilizai
Biii 5-2



CHS3:CHS0 Bii de selecie ai canalului de intrare A/D utilizat la conversie
0000 = Canal 0 (pin AN0)
0001 = Canal 1 (pin AN1)
...
1100 = Canal 12 (pin AN12)
1101 = Neimplementai
111x = Neimplementai
Bit 1
DONE GO/ Bit status conversie A/D
cnd ADON = 1 (convertor A/D activat)
1 = start conversie / conversie A/D n desfurare
0 = conversie A/D finalizat
Bit 0 ADON Activare / Dezactivare convertor A/D
1 = activare convertor A/D
0 = dezactivare convertor A/D

CONVERTORUL ANALOG-DIGITAL
176
Dup cum s-a amintit i n capitolul dedicat porturilor, canalele de intrare analogice
sunt multiplexate cu porturile de intrare-ieire digitale. Astfel, pinul corespunztor canalului
selectat ca intrare n convertor trebuie s fie configurat ca pin de intrare (prin registrul TRIS
corespunztor) i ca intrare analogic (prin biii PCFG3:PCFG0 ai registrului
ADCON1[3:0]).
Canalele analogice 2 (AN2) i 3 (AN3) ndeplinesc un dublu rol, prin faptul c pot fi
utilizate (opional) pentru a specifica tensiuni de referin externe pentru realizarea conversiei
A/D. De regul, tensiunile de referin corespund tensiunilor de alimentare ale
microcontrolerului (V
dd
i V
ss
), dar exist situaii cnd referinele externe ofer o alternativ
mai puin zgomotoas, mai exact, dar i perspectiva unei precizii mai ridicate cnd semnalul
de intrare are o variaie mult mai mic dect plaja de alimentare de 0-5V. Dac se opteaz
pentru referine externe, atunci V
REFH
ar trebui s fie cuprins ntre V
dd
/2 i V
dd
+0.6V, iar
V
REFL
ntre V
dd
-3V i Vss-0.3V. Indiferent de situaie, diferena ntre tensiunile de referin
utilizate V
REFH
-V
REFL
ar trebui s fie nu mai puin de 3V pentru V
dd
3V i 1.8V pentru
V
dd
<3V.
n Fig. 10.7 se prezint structura registrului ADCON1 urmat de descrierea biilor
disponibili.

7 0
- - VCFG1 VCFG0 PCFG3 PCFG2 PCFG1 PCFG0
Fig. 10.7. Registrul ADCON1: A/D Control Register 1

Biii 7-6
Neutilizai
Biii 5-4 VCFG1:VCFG0 Bii de configurare pentru tensiunile de referin
00 : V
REF+
= V
dd
= 5V, V
REF-
= V
ss
= 0V
01 : V
REF+
= extern (pin AN3), V
REF-
= V
ss
= 0V
10 : V
REF+
= V
dd
= 5V, V
REF-
= extern (pin AN2)
11 : V
REF+
= extern (pin AN3), V
REF-
= extern (pin AN2)
Biii 3-0 PCFG3:PCFG0 Bii de configurare a funcionalitii porturilor
PCFG3:
PCFG0
AN12 AN11 AN10 AN9 AN8 AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0
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
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
177
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
A = intrare analogic D = intrare / ieire digital

Configurarea convertorului A/D poate fi vzut ca un proces n dou etape: o
configurare iniial n care se alege canalul de intrare, tensiunile de referi i o configurare a
conversiei care presupune alegerea tactului de conversiei, stabilirea timpilor de achiziie i a
modului realizare a conversiei.
Registrul de control ADCON2 are rolul de a selecta sursa tactului de conversie A/D, de
a alege durata ntrzierii necesare nainte conversiei i modul n care rezultatul de 10 bii se va
regsi n regitrii ADRESH:ADRESL.
Pentru a putea realiza procesul secvenial necesar conversiei, ilustrat n Fig. 10.2,
modulul de conversie A/D necesit un semnal de tact. Pentru a realiza conversii A/D corecte,
se recomand ca perioada acestui semnal de tact (T
AD
) s fie ct mai scurt posibil, dar mai
mare dect T
AD
=0.7s.
n mod obinuit, tactul de conversie se obine prin divizarea frecvenei de lucru a
microcontrolerului. Prin intermediul biilor ADCS2:ADCS0 din registrul ADCON2[2:0] se
pot obine rapoarte de divizare de 2 pn la 64. Alegerea acestui raport de divizare se face
astfel nct s se asigure condiia (T
AD
)
min
> 0.7s. n Tabelul 10.1 se prezint fercvenele
maxime de lucru corespunztoare diferitelor rapoarte de divizare necesare pentru obinerea
tactului de conversie.
Tabel 10.1. Alegerea tactului de conversie n funcie de frecvena de lucru
ADCS2:ADCS0
Tact de conversie T
AD
Frecvena maxim de lucru F
OSC

000 2T
OSC
2.86 MHz
100 4T
OSC
5.71 MHz
001 8T
OSC
11.43 MHz
101 16T
OSC
22.86 MHz
010 32T
OSC
45.71 MHz
110 64T
OSC
48.0 MHz
111 RC (osc. intern
1
) T
AD
4ms 1.00 MHz

1
Aceste cazuri sunt prevzute pentru funcionarea n regim SLEEP (cu consum redus de energie), tactul de
conversie provenind de la oscilatorul intern.
CONVERTORUL ANALOG-DIGITAL
178
Pentru a permite funcioarea n condiii cu consum redus de energie, de exemplu
atunci cnd se utilizeaz oscilatorul de 32.768kHz, microcontrolerul este prevzut cu un
oscilator RC intern. Avnd n vedere c acest oscilator furnizeaz un tact independent de
tactul sistem, se pot realiza conversii A/D n timp ce microcontrolerul este n modul SLEEP.
n acest situaie ntreruperea aprut ca urmare a finalizrii unei conversii A/D poate fi
utilizat pentru a trezi procesorul. Realizarea conversiilor A/D n timp ce tactul sistem este
dezactivat reprezint o alegere logic deoarece n acest fel se asigur un mediu de lucru cu
zgomot digital mai redus. Dac se opteaz pentru utilizarea oscilatorului RC intern pentru
obinerea tactului de conversie n cazul unui micrcontroler cu o frecven de lucru mai mare
de 1MHz, Microchip recomand utilizarea modului SLEEP pe durata conversiei, deoarece
lipsa de sincronizare dintre cele dou surse de tact crete zgomotul indus n circuitul analogic.

S-a amintit n paragraful anterior c este necesar un timp T
AQ
pentru stabilizarea
tensiunii de intrare n circuitul de eantionare memorare. n acest context, modulul de
conversie A/D ofer posibilitatea ca respectarea timpului de achiziie T
AQ
s fie lsat la
latitudinea utilizatorului prin introducerea unei ntrzieri sau s se produc automat.
n primul caz (Fig. 10.8-a), dup alegerea canalului de intrare dorit, utilizatorul trebuie
s asigure scurgerea timpului minim de achiziie (2.4s3s la 25C) nainte de declanarea
unei conversii A/D prin setarea bitului GO.
n cea de-a doua situaie (Fig. 10.8-b), dup setarea bitului GO se va atepta un timp
cuprins ntre 2T
AD
i 20T
AD
(n funcie de configurare) nainte de a ncepe conversia
propriuzis care va dura 11T
AD
. Dup calcularea ultimului bit (LSB) n T
AD11
, bitul GO este
ters i bitul indicator de ntrerupere ADIF este setat pentru a indica sfritul conversiei i
disponibilitatea rezultatului n regitrii ADRESH:ADRESL.
Indiferent de modul ales pentru implementarea achiziiei, naintea declanrii unei noi
conversii este necesar ateptarea unui timp de descrcare (vezi Fig. 10.4) de aproximativ
3T
AD
.
Cele dou situaii, exemplificate n Fig. 10.8, pot fi configurate prin intermediul biilor
ACQT2:ACQT0 din registrul ADCON2[5:3]. Condiia impus pentru alegerea unei variante
de configurare este aceea c trebuie s se asigure un timp minim de achiziie mai mare de
2.4s3s.

SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
179

Fig. 10.8. Asigurarea timpului de achiziie
a) manual; b) automat

Rezultatul conversiei A/D este reprezentat pe 10 bii, n consecin acesta necesit doi
regitri pentru a fi stocat. Deoarece capacitatea total a celor doi regitri ADRESH:ADRESL
este de 16 bii, rezultatul conversiei poate fi aliniat la stnga sau la dreapta. n Fig. 10.9 se
prezint modul de aliniere al rezultatului n funie de starea bitului ADFM din registrul
ADCON2[7].

9 8 7 0
0 0 0 0 0 0
Rez. conv.
A/D MSb
Rezultat conversie A/D octetul inferior
ADRESH ADRESL
a)
9 2 1 0
Rezultat conversie A/D octetul superior
Rez. conv.
A/D LSb
0 0 0 0 0 0
ADRESH ADRESL
b)
Fig. 10.9. Rezultatul conversiei A/D
a) aliniere la dreapta ADFM = 1 b) aliniere la stnga ADFM = 0

Exist aplicaii n care 8 bii de date sunt suficieni pentru a reprezenta rezultatul
conversiei. n aceste cazuri se recomand alinierea rezultatului la stnga (ADFM=0), utilizarea
datelor din registrul ADRESH i ignorarea celor doi bii mai nesemnificativi din registrul
CONVERTORUL ANALOG-DIGITAL
180
ADRESL. Cnd este necesar un rezultat al conversiei pe 10 bii se recomand alinierea
rezultatului la dreapta (ADFM=1), biii ADRESH[7:2] fiind toi zero.
Cunoscnd codul de 10 bii obinut n urma conversiei A/D se poate determina
valoarea efectiv a tensiunii analogice de intrare pe baza formulei urmtoare:
( ) nversie rezultatCo
V V
V
REF REF
in

=
+
1024
(10.2)

n Fig. 10.10 se prezint structura registrului ADCON2 urmat de descrierea biilor
disponibili.

7 0
ADFM - ACQT2 ACQT1 ACQT0 ADCS2 ADCS1 ADCS0
Fig. 10.10. Registrul ADCON2: A/D Control Register 2

Bit 7 ADFM Formatare rezultat conversie A/D
1 = aliniere rezultat la dreapta
0 = aliniere rezultat la stnga (vezi Figura 9.6)
Bit 6
Neimplementat
Biii 5-3 ACQT2:ACQT0 Configurare timp de achiziie
111 : T
AQ
= 20T
AD
110 : T
AQ
= 16T
AD
101 : T
AQ
= 12T
AD
100 : T
AQ
= 8T
AD
011 : T
AQ
= 6T
AD
010 : T
AQ
= 4T
AD
001 : T
AQ
= 2T
AD
000 : T
AQ
= 0T
AD
(Achiziie manual. T
AQ
trebuie asigurat prin program)
Biii 2-0 ADCS2:ADCS0 Configurare tact de conversie
111 : T
AD
= RC(oscilator intern)4ms
110 : T
AD
= 64T
OSC
101 : T
AD
= 16T
OSC
100 : T
AD
= 4T
OSC
011 : T
AD
= RC(oscilator intern)4ms
010 : T
AD
= 32T
OSC
001 : T
AD
= 8T
OSC
000 : T
AD
= 2T
OSC
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
181
10.2.2 Etapa de configurare

Pentru iniializarea modulului de conversie A/D utilizatorul trebuie s asigure
rspunsul la urmtoarele ntrebri:
1. Cum activez modulul?
2. Am nevoie de tensiuni de referin externe?
3. Ce canale voi folosi?
4. Cum asigur tactul de conversie?
5. Cum asigur timpul de achiziie?
6. Cum citesc rezultatul?

n acest context, etapa de configurare a modulului de conversie A/D n vederea
realizrii unei conversii presupune parcurgerea urmtorilor pai:
configurarea pinilor ANx utilizai ca pini de intrare, prin setarea biilor corespunztori
n regitrii TRIS;
configurare pini analogici utilizai (biii PCFG3:PCFG0, registrul ADCON1[3:0]);
configurare tensiuni de referin (biii VCFG1:VCFG0, registrul ADCON1[5:4]);
selectare canal de intrare utilizat pentru achiziie i conversie (biii CHS3:CHS0,
registrul ADCON0[5:2]);
configurare timp de achiziie (biii ACQT2:ACQT0, registrul ADCON2[5:3]);
configurare tact de conversie (biii ADCS2:ADCS0, registrul ADCON2[2:0]);
formatare rezultat conversie (bitul ADFM, registrul ADCON2[7]);
pornire modul de conversie (bitul ADON, registrul ADCON0[0]);
ateptarea expirrii timpului de achiziie (n cazul funcionrii n mod manual
ACQT2:ACQT0=000)
start conversie (bitul DONE GO/ , registrul ADCON0[1])
2
;
ateptarea terminrii conversiei. Terminarea conversiei este indicat de resetarea
bitului DONE GO/ i de setarea flagului indicator de ntrerupere ADIF din registrul
PIR1[6];
citirea rezultatului (regitrii ADRESH:ADRESL);
tergerea flagului indicator de ntrerupere (bitul ADIF, registrul PIR1[6]);

2
ATENIE se recomand ca bitul DONE GO/

s nu fie setat n aceeai instruciune n care se pornete modulul
de conversie A/D
CONVERTORUL ANALOG-DIGITAL
182
nainte ca urmtoarea achiziie s nceap se recomand o ateptare minim de 3T
AD,
necesar descrcrii condensatorului din circuitul de eantionare-memorare.[8]


Exemplu
n continuare se prezint codul corespunztor configurrii modulului de
conversie A/D n vederea realizrii unei achiziii automate, pentru cazul unui
microcontroler cu o frecven de lucru de 20MHz care recepioneaz pe canalul
0 un semnal analogic cuprins ntre 05V.

CONFIGURARE_CONVERTOR_AD:
BSF TRISA, TRISA0 ;pin RA0/AN0 de intrare
MOVLW b00001110 ;pin AN0 intrare analogic
MOVWF ADCON1 ;tens. de referi interne
BCF ADCON0,CHS3 ;selectare canal 0
BCF ADCON0,CHS2
BCF ADCON0,CHS1
BCF ADCON0,CHS0
MOVLW b00010101 ;aliniat stnga, TAQ=4TAD
MOVWF ADCON2 ;TAD = 16TOSC
BCF PIR1,ADIF ;terg flag ntrerupere
BSF ADCON0,ADON ;pornire modul
BSF ADCON0,GO ;start conversie

LOOP_TESTARE:
BTFSS PIR1, ADIF ;sau BTFSC ADCON0, GO
GOTO LOOP_TESTARE

;Cnd se ajunge n acest punct, conversia s-a terminat
;se citete rezultatul
MOVF ADRESH, W ;citire date


n loc de utilizarea interogrii pentru testarea sfritului de conversie se poate genera o
ntrerupere. n cazul n care conversia se realizeaz n modul SLEEP, atunci aceast
ntrerupere poate fi utilizat pentru a trezi UCP. Dup cum s-a amintit n paragraful anterior,
modulul de conversie A/D poate funciona n modul SLEEP deoarece dispune de un oscilator
propriu care permite generarea tactului de conversie, chiar dac tactul sistem este dezactivat.
Aceast soluie vine cu avantajele i dezavantjele ei. Ca principal avanataj se poate meniona
faptul c prin oprirea oscilatorului principal se asigur un mediu de conversie lipsit de
zgomote. Pe de alt parte, conversia va dura mai mult timp, iar ieirea din modul SLEEP este
i ea ndelungat.
Oscilatorul intern RC poate fi utilizat pentru generarea tactului de conversie i fr a
pune sistemul n modul SLEEP. Totui, deoarece nu exist o sincronizare ntre oscilatorul
intern i oscilatorul sistem, zgomotele introduse de semnalul de tact fac problematic
utilizarea modulului pentru frecvene de lucru mai mari de F
OSC
>1MHz.

SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
183

Exemplu
n acest exemplu se pune n eviden realizarea conversiei A/D n modul
SLEEP. Se consider cazul configurrii modulului de conversie A/D n
vederea realizrii unei achiziii pentru cazul unui microcontroler cu o
frecven de lucru de 20MHz care recepioneaz pe canalul 0 un semnal
analogic cuprins ntre 05V.
Pe lng etapele de iniilizare amintite i n exemplul anterior, utilizarea
modului SLEEP presupune:
- Selectarea oscilatorului intern ca surs a tactului de conversie
(ADCS2:ADCS0 = x11)
- tergerea bitului indicator de ntrerupere ADIF pentru a evita intrarea
imediat n ntrerupere
- Activarea ntreruperii provenite de la modulul de conversie A/D
(ADIE=1) i activarea ntreruperilor provenite de la periferice (PEIE
= 1) pentru a permite ieirea din SLEEP
- Bitul GIE trebuie pus pe 0 pentru a evita execuia automat a unei
rutine de tratare a ntreruperii la ieirea din SLEEP
- Setarea bitului GO pentru pornirea conversiei A/D, trebuie urmat
imediat de instruciunea SLEEP
- La ieirea din modul SLEEP rezultatul conversiei va fi disponibil n
regitrii ADRESH:ADRESL.

CONFIGURARE_CONVERTOR_AD:
BSF TRISA, TRISA0 ;pin RA0/AN0 de intrare
MOVLW b00001110 ;pin AN0 intrare analogic
MOVWF ADCON1 ;tens. de referi interne
BCF ADCON0,CHS3 ;selectare canal 0
BCF ADCON0,CHS2
BCF ADCON0,CHS1
BCF ADCON0,CHS0
MOVLW b00010011 ;aliniat stnga, TAQ=4TAD
MOVWF ADCON2 ;TAD de la RC
BCF PIR1,ADIF ;terg flag ntrerupere
BSF INTCON, PEIE ;activare ntr. periferice
BSF PIE1,ADIE ;activare ntr. conv A/D
BCF INTCON, GIE ; GIE = 0
BSF ADCON0,ADON ;pornire modul
BSF ADCON0,GO ;start conversie

SLEEP ;conversie in mod SLEEP

;Cnd se ajunge n acest punct, conversia s-a terminat
;se citete rezultatul
MOVF ADRESH, W ;citire date


CONVERTORUL ANALOG-DIGITAL
184

Concluzii
Modulul de conversie A/D permite microcontrolerului s interacioneze
cu lumea exterioar i prin intermediul semnalelor analogice. Spre
deosebire de utilizarea porturilor digitale, n cazul convertorului A/D
accesul la datele analogice nu se realizeaz instantaneu. n utilizarea
acestui modul trebuie s se in cont de restriciile de timp impuse de
achiziia semnalului analogic i de conversia sa nainte de a putea accesa
rezultatul.


1. Ce nelegei prin alinierea rezultatului conversiei A/D?
2. Care este principiul de funcionare al unui convertor A/D cu
aproximri succesive?
3. Ce rol ndeplinete timpul de achiziie T
AQ
i care sunt variantele de
implementare care asigur acest timp?
4. Explicai funcionarea convertorului A/D n modul SLEEP.

ntrebri de
autoevaluare
5. Care sunt restriciile privind nivelul tensiunilor de referin externe?



Termeni
eseniali
Convertor Analog-Digital
Circuit care are la intrare o mrime analogic (curent, tensiune) i
furnizeaz la ieire un numr (reprezentat binar) care constituie o
aproximare (mai mult sau mai puin exact) a valorii analogice a
semnalului de intrare
LSB
En. Least Significant Bit. Bitul cel mai nesemnificativ. ntr-un octet
acesta este bitul 0.
MSB
En. Most Significant Bit. Bitul cel mai semnificativ. ntr-un octet acesta
este bitul 7.
Timp de achiziie
Timpul necesar pentru circuitul de eantionare s ncarce condensatorul de
meninere la nivelul tensiunii analogice de intrare. Timpul necesar
stabilizrii tensiunii de intrare n vederea realizrii conversiei.
Timp de conversie
Timpul necesar convertorului A/D s realizeze conversia semnalului
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
185
analogic eantionat n echivalentul digital
RAS
Registru de aproximri succesive
Rezoluie
Numrul de valori discrete pe care convertorul poate s le furnizeze la
ieirea sa n intervalul de masura.
SLEEP
Mod de funcionare cu consum redus caracterizat prin oprirea
oscilatorului principal al microcontrolerului.

S-ar putea să vă placă și