Sunteți pe pagina 1din 16

SISTEME CU MICROPROCESOARE note de curs

10. CONVERTORUL ANALOG-DIGITAL

Introducere
Obiective
Cuprins

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

Microcontrolerele au fost concepute pentru a interaciona cu mediul


exterior, care, n esena lui, este alctuit din semnale analogice (sunet,
Introducere

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 analogdigitale multicanal, iar n acest capitol ne vom opri asupra aspectelor
specifice utilizrii acestor module.
Dup parcurgerea acestui capitol cursantul va trebui:

Obiective

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)
2

SISTEME CU MICROPROCESOARE note de curs

3. Un registru de aproximri succesive (RAS) care va furniza convertorului digitalanalogic 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


3

CONVERTORUL ANALOG-DIGITAL

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:
4

SISTEME CU MICROPROCESOARE note de curs

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

GO/

DONE

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

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

CHS3

CHS2

CHS1

CHS0

GO/

DONE

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

GO/DONE 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

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<3V.
n Fig. 10.7 se prezint structura registrului ADCON1 urmat de descrierea biilor
disponibili.
7

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 : VREF+ = Vdd = 5V, VREF- = Vss = 0V
01 : VREF+ = extern (pin AN3), VREF- = Vss = 0V
10 : VREF+ = Vdd = 5V, VREF- = extern (pin AN2)
11 : VREF+ = extern (pin AN3), VREF- = 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
0001
0010
0011
0100
0101
0110
0111

A
A
A
D
D
D
D
D

A
A
A
A
D
D
D
D

A
A
A
A
A
D
D
D

A
A
A
A
A
A
D
D

A
A
A
A
A
A
A
D

A
A
A
A
A
A
A
A

A
A
A
A
A
A
A
A

A
A
A
A
A
A
A
A

A
A
A
A
A
A
A
A

A
A
A
A
A
A
A
A

A
A
A
A
A
A
A
A

A
A
A
A
A
A
A
A

A
A
A
A
A
A
A
A

CONVERTORUL ANALOG-DIGITAL

1000 D
D
D
1001 D
D
D
1010 D
D
D
1011 D
D
D
1100 D
D
D
1101 D
D
D
1110 D
D
D
1111 D
D
D
A = intrare analogic

D
D
D
D
D
D
D
D

D
D
D
D
D
D
D
D

D A A A A A
D D A A A A
D D D A A A
D D D D A A
D D D D D A
D D D D D D
D D D D D D
D D D D D D
D = intrare / ieire digital

A
A
A
A
A
A
D
D

A
A
A
A
A
A
A
D

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

Aceste cazuri sunt prevzute pentru funcionarea n regim SLEEP (cu consum redus de energie), tactul de
conversie provenind de la oscilatorul intern.
8

SISTEME CU MICROPROCESOARE note de curs

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

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

0
0
ADRESH

Rez. conv.
A/D MSb

Rezultat conversie A/D octetul inferior

ADRESL
a)

Rez. conv.
A/D LSb

Rezultat conversie A/D octetul superior

ADRESH

0
0
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

10

SISTEME CU MICROPROCESOARE note de curs

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:
Vin =

VREF + VREF
(rezultatConversie )
1024

(10.2)

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


disponibili.
7

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
11

CONVERTORUL ANALOG-DIGITAL

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)
, registrul ADCON0[1])2;

start conversie (bitul

ateptarea terminrii conversiei. Terminarea conversiei este indicat de resetarea


bitului

GO/ DONE

GO/ DONE

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]);

ATENIE se recomand ca bitul GO/ DONE s nu fie setat n aceeai instruciune n care se pornete modulul
de conversie A/D
12

SISTEME CU MICROPROCESOARE note de curs

nainte ca urmtoarea achiziie s nceap se recomand o ateptare minim de 3TAD,


necesar descrcrii condensatorului din circuitul de eantionare-memorare.
n continuare se prezint codul corespunztor configurrii modulului de
conversie A/D n vederea realizrii unei achiziii automate, pentru cazul unui

Exemplu

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
MOVLW b00001110
MOVWF ADCON1
BCF
ADCON0,CHS3
BCF
ADCON0,CHS2
BCF
ADCON0,CHS1
BCF
ADCON0,CHS0
MOVLW b00010101
MOVWF ADCON2
BCF PIR1,ADIF
BSF
ADCON0,ADON
BSF
ADCON0,GO
LOOP_TESTARE:
BTFSS PIR1, ADIF
GOTO LOOP_TESTARE

;pin RA0/AN0 de intrare


;pin AN0 intrare analogic
;tens. de referi interne
;selectare canal 0

;aliniat stnga, TAQ=4TAD


;TAD = 16TOSC
;terg flag ntrerupere
;pornire modul
;start conversie
;sau

BTFSC ADCON0, GO

;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.

13

CONVERTORUL ANALOG-DIGITAL

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
Exemplu

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
MOVLW b00001110
MOVWF ADCON1
BCF
ADCON0,CHS3
BCF
ADCON0,CHS2
BCF
ADCON0,CHS1
BCF
ADCON0,CHS0
MOVLW b00010011
MOVWF ADCON2
BCF PIR1,ADIF
BSF INTCON, PEIE
BSF PIE1,ADIE
BCF INTCON, GIE
BSF
ADCON0,ADON
BSF
ADCON0,GO
SLEEP

;pin RA0/AN0 de intrare


;pin AN0 intrare analogic
;tens. de referi interne
;selectare canal 0

;aliniat stnga, TAQ=4TAD


;TAD de la RC
;terg flag ntrerupere
;activare ntr. periferice
;activare ntr. conv A/D
; GIE = 0
;pornire modul
;start conversie
;conversie in mod SLEEP

;Cnd se ajunge n acest punct, conversia s-a terminat


;se citete rezultatul
MOVF ADRESH, W

14

;citire date

SISTEME CU MICROPROCESOARE note de curs

Modulul de conversie A/D permite microcontrolerului s interacioneze


cu lumea exterioar i prin intermediul semnalelor analogice. Spre
Concluzii

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.

Teste de
autoevaluare

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.

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

Bibliografie

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

[5]

www.microchip.com

15

CONVERTORUL ANALOG-DIGITAL

Convertor Analog-Digital
Circuit care are la intrare o mrime analogic (curent, tensiune) i
Dicionar

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.

16

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