of 16
SISTEME CU MICROPROCESOARE note de curs
1
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
Teste de autoevaluare
Bibliografie
Dicionar
Teste de evaluare
CONVERTORUL ANALOG-DIGITAL
2
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 achiziie 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 Vin.
2. Un comparator de tensiune. Acesta compar tensiunea de intrare Vin cu ieirea
furnizat de convertorul digital-analogic i trimite rezultatul ctre un registru de
aproximri succesive (RAS)
SISTEME CU MICROPROCESOARE note de curs
3
3. Un registru de aproximri succesive (RAS) care va furniza convertorului digital-
analogic aproximri digitale ale tensiunii de intrare Vin
4. Un convertor digital-analogic care furnizeaz ctre comparator un semnal analogic
echivalent codului binar provenit de la registrul de aproximri succesive.
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 (Vref/2) i se va compara cu Vin. Dac tensiunea analogic produs de convertorul
digital analogic este mai mic dect Vin 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.
Fig. 10.2. Principiul aproximrilor succesive pentru un RAS de 4 bii
CONVERTORUL ANALOG-DIGITAL
4
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 TAD, iar
pentru realizarea unei conversii complete de 10 bii este necesar un timp egal cu 11TAD. Pentru a obine rezultate corecte, pe durata timpului de conversie tensiunea Vin 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 Vin cu
ajutorul unui condensator, care necesit un timp de ncrcare. Acest timp de ncrcare
intervine n proporie semnificativ i caracterizeaz timpul de achiziie TAQ 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:
SISTEME CU MICROPROCESOARE note de curs
5
TAQ = TAMP + TC + TCOFF (10.1)
unde:
- TAQ reprezint timpul de achiziie - TAMP reprezint timpul de stabilizare a amplificatorului intern / ntreruptorului
comandat
- TC reprezint timpul de ncrcare al condensatorului - TCOFF reprezint un coeficient datorat temperaturii de lucru
Conform specificaiilor din foaia de catalog, TAMP = 0.2s, TC=1.2s, iar pentru
temperaturi mai mari de 25C TCOFF 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 TAQ = 2.4s.
Pe lng timpul de achiziie i timpul de conversie se recomand ateptarea unui timp
egal cu 3TAD 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 DONEGO/ 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.
CONVERTORUL ANALOG-DIGITAL
6
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 DONEGO/ 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 DONEGO/ 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
SISTEME CU MICROPROCESOARE note de curs
7
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 (Vdd i Vss), 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 VREFH ar trebui s fie cuprins ntre Vdd/2 i Vdd+0.6V, iar
VREFL ntre Vdd-3V i Vss-0.3V. Indiferent de situaie, diferena ntre tensiunile de referin
utilizate VREFH-VREFL ar trebui s fie nu mai puin de 3V pentru Vdd3V i 1.8V pentru
Vdd
CONVERTORUL ANALOG-DIGITAL
8
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 (TAD) s fie ct mai scurt posibil, dar mai
mare dect TAD=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 (TAD)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 TAD Frecvena maxim de lucru FOSC 000 2TOSC 2.86 MHz
100 4TOSC 5.71 MHz
001 8TOSC 11.43 MHz
101 16TOSC 22.86 MHz
010 32TOSC 45.71 MHz
110 64TOSC 48.0 MHz
111 RC (osc. intern1) TAD4ms 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.
SISTEME CU MICROPROCESOARE note de curs
9
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 TAQ 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 TAQ 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 2TAD i 20TAD (n funcie de configurare) nainte de a ncepe conversia
propriuzis care va dura 11TAD. Dup calcularea ultimului bit (LSB) n TAD11, 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
3TAD.
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.
CONVERTORUL ANALOG-DIGITAL
10
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
SISTEME CU MICROPROCESOARE note de curs
11
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:
( )nversierezultatCoVVV REFREFin = +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 : TAQ = 20TAD 110 : TAQ = 16TAD 101 : TAQ = 12TAD 100 : TAQ = 8TAD 011 : TAQ = 6TAD 010 : TAQ = 4TAD 001 : TAQ = 2TAD 000 : TAQ = 0TAD (Achiziie manual. TAQ trebuie asigurat prin program)
Biii 2-0 ADCS2:ADCS0 Configurare tact de conversie 111 : TAD = RC(oscilator intern)4ms
110 : TAD = 64TOSC 101 : TAD = 16TOSC 100 : TAD = 4TOSC 011 : TAD = RC(oscilator intern)4ms
010 : TAD = 32TOSC 001 : TAD = 8TOSC 000 : TAD = 2TOSC
CONVERTORUL ANALOG-DIGITAL
12
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 DONEGO/ , registrul ADCON0[1])2; ateptarea terminrii conversiei. Terminarea conversiei este indicat de resetarea
bitului DONEGO/ 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 DONEGO/ s nu fie setat n aceeai instruciune n care se pornete modulul de conversie A/D
SISTEME CU MICROPROCESOARE note de curs
13
nainte ca urmtoarea achiziie s nceap se recomand o ateptare minim de 3TAD, necesar descrcrii condensatorului din circuitul de eantionare-memorare.
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 FOSC>1MHz.
CONVERTORUL ANALOG-DIGITAL
14
Exemplu
n acest exemplu urmtor 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
SISTEME CU MICROPROCESOARE note de curs
15
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 TAQ i care sunt variantele de
implementare care asigur acest timp?
4. Explicai funcionarea convertorului A/D n modul SLEEP.
Teste de autoevaluare
5. Care sunt restriciile privind nivelul tensiunilor de referin externe?
[1] Sid Katzen The Essential PIC18 Microcontroller, Springer Verlag
London, 2010
[2] Genge Bela, Haller Piroska Proiectarea sistemelor dedicate i
ncorporate cu microcontrolerul PIC, Editura universitii Petru
Maior din Tg. Mure, 2008
[3] Microchip Analog-to-Digital Converter Design Guide
[4] Microchip PIC18F2455/2550/4455/4550 Data Sheet, Microchip
Technology Inc. 2006
Bibliografie
[5] www.microchip.com
CONVERTORUL ANALOG-DIGITAL
16
Dicionar
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
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.