Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Informatica


Index » educatie » Informatica
» Convertorul analog numeric


Convertorul analog numeric


Convertorul analog numeric

1. Prezentare generala

Multe dintre microcontrolerele familiei ATMEL AVR, ca si ale altor producatori, includ pe chip un convertor analog numeric (ADC) pentru cuplarea cu surse de semal analogice. Principalele caracteristici ale acestui bloc sunt urmatoarele:

  • Rezolutie 10 biti;
  • Acuratete ±2 LSB;
  • Neliniaritate integrala 0,5 LSB
  • Timp de conversie 65 - 260 µs;
  • Viteza de pana la 15 kSPS (mii de esantioane pe secunda)
  • 8 intrari analogice multiplexate
  • Mod Free Run sau Single Conversion
  • Intrerupere la terminarea conversiei
  • Reducere de zgomot prin intrare in modul Sleep.

Convertorul analog numeric este cu aproximatii succesive, de 10 biti. Intrarea sa este cuplata la un multiplexor analogic de 8 canale, care permite ca fiecare pin al portului A sa poata fi utilizat ca intrare pentru ADC. Este prevazut de asemenea un circuit Sample and Hold (esantionare si mentinere) care asigura ca tensiunea de intrare in ADC este mentinuta constanta pe durata unei conversii. Schema bloc a convertorului analog numeric este prezentata in figura 10.1



Sunt prevazuti doi pini de alimentare separati AVcc si AGND. AGND trebuie conectat cu GND (intr-un singur punct) iar AVcc nu trebuie sa difere de Vcc cu mai mult de ± 0,3 V. Detalii suplimentare despre conectarea acestor pini vor fi date la paragraful "Tehnici de reducere a zgomotului la ADC".

Pe pinul AREF trebuie aplicata o tensiune de referinta externa. Aceasta trebuie sa fie in domeniul AGND.. AVcc.

Figura 10.1 -Schema bloc a convertorului analog numeric

2. Functionarea ADC

Convertorul analog numeric poate functiona in doua moduri: 'Single Conversion' (o singura conversie) si 'Free Run' (Conversie continua). In modul Single Conversion, fiecare conversie trebuie sa fie initiata de utilizator. In modul Free Running convertotul analog numeric esantioneaza semnalul si reactualizeaza registrul de date al ADC in mod continuu. Selectia unuia din aceste doua moduri se face prin bitul ADFR din registrul ADCSR.

Figura 10.2 - Ciclul unei prime conversii in mod Single Conversion

Functionarea ADC este validata prin scrierea in 1 logic a bitului de validare ADEN din registrul ADCSR. Prima conversie care este pornita dupa validarea ADC va fi precedata de o conversie de initializare ('dummy conversion'), al carei rezultat nu va fi introdus in registrul de date (figura 10.2). Singura diferenta pentru utilizator va fi ca aceasta conversie va avea un timp mai lung cu 12 impulsuri de ceas decat o conversie normala.

Figura 10.3 - Ciclu de conversie normala in mod Single Conversion

O conversie este pornita prin scrierea unui 1 logic in bitul de start conversie, ADSC. Acest bit va sta in 1 logic pe toata perioada conversiei si va fi trecut in 0 logic prin hardware atunci cand conversia s-a terminat (figurile 10.3 si 10.4).

.

Figura 10.4 - Ciclu de conversie normala in modul Free Run

Deoarece convertorul genereaza un rezultat pe 10 biti, trebuiesc citite doua registre de date, ADCL si ADCH, pentru a obtine rezultatul conversiei. S-au prevazut circuite logice in mod special pentru a asigura ca in cele doua registre se afla rezultatul aceleiasi conversii atunci cand sunt citite. Acestea functioneaza in felul urmator:

Cand se citesc datele, se citeste mai intai ADCL. Din momentul in care s-a citit ADCL accesul ADC la registrele de date este blocat. Aceasta inseamna ca daca s-a citit ADCL si o noua conversie se termina inainte de a se citi ADCH, nici unul dintre aceste registre nu este reactualizat si rezultatul noii conversii este pierdut. Atunci cand este citit ADCH, se permite din nou accesul ADC la registrele ADCL si ADCH.

ADC are propria sa intrerupere, ADIF, care poate fi declansata atunci cand se termina o conversie. Atunci cand accesul ADC la registrele de date este blocat, intre citirea ADCL si ADCH, intreruperea se va declansa totusi, chiar daca rezultatul se pierde.

Convertorul analog-numeric are un prescaler, care divizeaza ceasul sistemului pana la o frecventa de ceas acceptabila pentru ADC, in domeniul 50-200 KHz (figura 10.5). Aplicarea unei frecvente de intrare mai mari conduce la o acuratete mai scazuta, cum se poate observa in paragraful 'Caracteristicile ADC'.

Bitii ADPS0-ADPS2 din registrul ADCSR sunt folositi pentru a selecta o frecventa convenabila pentru ADC, pornind de la orice cristal de cuart de minim 100 KHz. Prescalerul functioneaza atata timp cat bitul ADEN este in 1 logic si sta in reset atata timp cat bitul ADEN este in 0 logic.

Figura 10.5 - Prescalerul convertorului analog numeric

Atunci cand se comanda startul unei conversii prin punerea in 1 logic a bitului ADSC din registrul ADCSR, conversia porneste atunci cand apare urmatorul front crescator al ceasului ADC. Esantionarea si memorarea dureaza 1,5 cicluri de ceas al ADC dupa startul conversiei. Rezultatul este disponibil in registrul de rezultat al ADC dupa 13 cicluri de ceas. In modul de lucru Single Conversion ADC are in principiu nevoie de inca un ciclu inainte de a se da start pentru o noua conversie, conform figurii 10.3. Totusi , daca bitul ADSC este pus in 1 in aceasta perioada, o noua conversie va incepe imediat. In modul Free Running, o noua conversie incepe imediat dupa ce rezultatul este scris in registrele de rezultat ale ADC . Folosind modul Free Running si o frecventa de ceas de 200 KHz se obtine cea mai mica perioada de conversie - 65 µs echivalenta cu o viteza de conversie de 15,4 kSPS. Timpii de conversie sunt prezentati sintetic in tabelul 10.1.

Conditiile de

functionare

Ciclul in care se face

Esantionarea

Cicluri pana la obtinerea rezultatului

Timp total de conversie (cicluri)

Timp total de conversie (ms)

Prima conversie, Free run

14

25

25

125-500

Prima conversie Single

14

25

25

130-520

Free Run

2

13

13

65-260

Single Conv.

2

13

13

70-280

Tabelul 10.1 - Timpii de conversie ai ADC

3. Functia de reducere a zgomotului.

Convertorul analog numeric este prevazut cu un reducator de zgomot care permite efectuarea unei conversii atunci cand procesorul intra in modul idle, micsorand astfel zgomotele datorate functionarii nucleului procesor. Pentru a folosi aceasta facilitate, se procedeaza in modul urmator:

1. Se va avea grija ca ADC sa fie validat si sa nu se fie ocupat cu o conversie (trebuie deci sa fie selectat modul Single Conversion). Trebuie de asemenea sa fie validata intreruperea de sfarsit de conversie

ADEN=1

ADSC=1

ADFR=0

ADIE=1

2. Se va intra in modul Idle. ADC va incepe automat o conversie atunci cand nucleul procesor se opreste.

3. Daca nici o alta intrerupere nu apare inainte ca ADC sa termine conversia intreruperea ADC va reporni nucleul procesor si va executa rutina de conversie terminata.

4. Registrele asociate convertorului analog numeric

Registrul de selectie al multiplexorului convertorului - ADMUX

Bit

7

6

5

4

3

2

1

0

$07($27)

MUX2

MUX1

MUX0

Citeste/Scrie

C

C

C

C

C

C/S

C/S

C/S

Valoare initiala

0

0

0

0

0

0

0

0

  • Bit 2..0 - MUX2-MUX0 : Bitii de selectie a canalului de intrare.

Bitii MUX2-MUX0 ai acestui registru selecteaza de pe care dintre intrarile 7-0 se va citi semnalul analogic care va fi convertit numeric.

Registrul de stare si control al ADC - ADCSR

Bit

7

6

5

4

3

2

1

0

$06($26)

ADEN

ADSC

ADFR

ADIF

ADIE

ADPS2

ADPS1

ADPS0

Citeste/

Scrie

C/S

C/S

C/S

C/S

C/S

C/S

C/S

C/S

Valoare initiala

0

0

0

0

0

0

0

0

  • Bit 7 - ADEN : activarea ADC.

Punerea in 1 logic a acestui bit activeaza ADC. Prin punerea in 0 logic, acesta este oprit, chiar daca in acel moment este in curs de efectuare o conversie.

  • Bit 6 - ADSC: Startul unei conversii

In modul Single conversion se va scrie un 1 logic in acest bit pentru a porni o conversie. In modul Free Running, punerea in 1 logic a acestui bit va porni prima conversie. Prima oara cand este scris bitul ADSC dupa ce ADC a fost activat, sau daca aceste evenimente se petrec simultan, se va efectua mai intai o conversie de initializare ("dummy conversion") si abia dupa aceea conversiile normale.

ADSC ramane in 1 pe durata unei conversii si trece in 0 dupa ce conversia s-a terminat, dar inainte ca rezultatul sa fie scris in registrele de date. Aceasta permite ca o noua conversie sa fie initiata inainte ca prezenta conversie sa se termine. Noua conversie va porni astfel imediat ce se termina cea curenta. Cand se face conversia de initializare, bitul ADSC va ramane in 1 pana cand se va termina conversia reala care urmeaza automat.

Punerea in 0 a acestui bit nu are nici un efect.

  • Bit 5- ADFR: Selectarea modului Free Run

Punerea in 1 logic a acestui bit va face ca ADC sa functioneze in modul Free Run. In acest mod de lucru, ADC esantioneaza semanlul de intrare si reactualizeaza registrele de date in mod continuu. Punerea in 0 a acestui bit va trece ADC in modul Single Conversion.

  • Bit 4 - ADIF : Flagul de intrerupere al ADC

Acest bit este trecut in 1 logic atunci cand se termina o conversie si registrele de date sunt reactualizate. In continuare, daca bitul ADIE si bitul I din SREG sunt in 1 logic, se va executa o intrerupere de sfarsit de conversie. Cand se executa vectorul de intrerupere respectiv, acest bit este trecut automat in 0 logic prin hardware. Ca alternativa acest bit poate fi sters scriind un 1 peste el. Trebuie tinut seama ca daca se executa un ciclu citire-modificare-scriere a registrului ADCSR, o eventuala intrerupere an asteptare poate fi dezactivata. Acest lucru se poate intampla si daca se folosesc instructiunile SBI si CBI cu acest registru.

  • Bit 3 - ADIE : Activarea intreruperii ADC

Cand acest bit este in 1 logic si bitul I din SREG este tot in 1 logic va putea fi generata o intrerupere de sfarsit de conversie.

  • Bit 2..0 - ADPS2-ADPS0 : Bitii de selectie pentru prescalerul ADC

Acesti biti determina factorul de divizare a frecventei cristalului si frecventa de intrare a ADC, conform tabelului 10.2

ADPS2

ADPS2

ADPS2

Factor de divizare

0

0

0

2

0

0

1

2

0

1

0

4

0

1

1

8

1

0

0

16

1

0

1

32

1

1

0

64

1

1

1

128

Tabelul 10.2 - Factorul de divizare al prescalerului ADC

Registrele de date al ADC - ADCL si ADCH

Bit

15

14

13

12

11

10

9

8

$05($25)

ADC9

ADC8

$04($24)

ADC7

ADC6

ADC5

ADC4

ADC3

ADC2

ADC1

ADC0

Bit

7

6

5

4

3

2

1

0

Citeste/

Scrie

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

C

Valoare initiala

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Atunci cand se termina o conversie, rezultatul acesteia se afla in aceste doua registre. In modul Free Run este esential ca ambele registre sa fie citite si ca ADCL sa fie citit inaintea lui ADCH.

5. Scanarea mai multor canale

Deoarece schimbarea unui canal analogic poate avea loc numai dupa ce s-a terminat conversia curenta, modul Free Run poate fi utilizat pentru scanarea mai multor canale fara a se intrerupe convertorul. In mod normal, subrutina de tratare a intreruperii de sfarsit de conversie va face schimbarea canalului. Totusi, utilizatorul trebuie sa tina seama de urmatoarele consideratii:

Intreruperea se declanseaza atunci cand rezultatul este pregatit pentru a fi citit. In modul Free Run urmatoarea conversie va fi insa declansata in acelasi moment cu intreruperea. Daca ADMUX este schimbata dupa declansarea intreruperii, urmatoarea conversie a inceput deja cu vechiul canal. Prin urmare, va exista un decalaj de un canal de care trebuie sa se tina seama in algoritm.

6. Tehnici de reducere a zgomotului ADC

Circuitele digitale din interiorul si exteriorul microcontrolerului genereaza inductii electomagnetice care pot afecta acuratetea masuratorilor analogice. Daca acuratetea conversiei este critica, nivelul de zgomot poate fi redus prin aplicarea urmatoarelor tehnici:

  1. Partea analogica a microcontrolerului si toate componentele analogice ale aplicatiei trebuie sa aiba un plan de masa analogica separat pe placa de circuit imprimat. Acest plan de masa analogic va fi conectat cu cel digital intr-un singur punct pe placa.
  2. Traseele analogice trebuie sa fie cat mai scurte posibil. Trebuie ca aceste trasee analogice sa fie plasate deasupra planului de masa analogic si sa fie la o distanta cat mai mare fata de circuitele care comuta cu frecventa ridicata.
  3. Pinul Avcc trebuie conectat la pinul de alimentare digitala Vcc printr-o retea RC ca in figura 10.6
  4. Se va utiliza functia de reducere de zgomot pentru a micsora influenta nucleului procesor asupra ADC.
  5. Daca unii din pinii portului A sunt utilizati ca iesiri digitale, este esential ca acestea sa nu comute in timpul unei conversii.

Figura 10.6 - Conexiunile de alimentare ale ADC

Tabelul 10.3 - Caracteristicile ADC

7. Modul de lucru

  1. Se va scrie un program care sa porneasca ADC in modul single conversion si sa afiseze cei mai semnificativi 8 biti ai rezultatului la leduri. Conversia se va face comandata de intreruperea externa 0. Semnalul poate fi introdus din potentiometru si aplicat prin jumper pe pinii portului A. Se va selecta ca sursa un singur pin.
  2. Se va modifica programul de mai sus pentru ca fiecare conversie sa fie comandata de intreruperea de depasire a TC1.
  3. Se va modifica programul de mai sus pentru ca rezultatul conversiei sa fie transmis serial spre calculator si afisat cu aplicatia hyperterminal

Indicatii: Se va folosi partea de transmisie seriala de la lucrarea precedenta. Pentru fiecare conversie se va transmite o secventa formata din 4 caractere: octetul superior rezultat, octetul inferior rezultat, caracterul Carriage Return ($0A) si caracterul Line Feed ($0D).





Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate