Studiem microcontrolere AVR. ADC, facem un voltmetru. Principiul general de funcționare al ADC

Scor 1 Scor 2 Scor 3 Scor 4 Scor 5

Chip PCF8591 are următoarele capacități:

Singura sursă de tensiune de alimentare;
- menținerea operabilității în domeniul de tensiune de alimentare de la 2,5 la 6 V;
- curent slab consum;
- trei iesiri pentru setarea adresei slave;
- patru intrari analogice cu comutare programabila (directa si diferentiala);
- utilizarea conversiei A/D cu aproximare succesivă și interval de numere de 8 biți;
- convertor D/A multiplexat cu o ieșire analogică.

Acest cip este realizat folosind tehnologia CMOS, are 4 intrări analogice și 1 ieșire analogică, controlat prin setarea datelor pe magistrala I2C. Biți A2...A0în adresa slave a microcircuitului sunt specificate semnale externe De mod tradițional: prin conectarea bornelor corespunzătoare fie la firul comun, fie la tensiunea de alimentare. Acest lucru vă permite să utilizați până la 8 jetoane de același tip. Inclus PCF8591 Există un singur convertor A/D, dar utilizarea metodelor de multiplexare extinde capacitățile de intrare ale cipului. Intrarea ADC este conectată în serie la 4 intrări de semnal, iar informațiile sunt citite din acestea. Din păcate, multiplexarea nu poate fi utilizată pentru conversia D/A, deci există o singură ieșire analogică. Viteza maxima conversia datelor este limitată performanță maximă Autobuze I2C.

Figura 1. Pinout PCF8591

Figura 2. Schema bloc care reflectă structura internă și interacțiunea elementelor de microcircuit

Tabelul 1. Atribuirea pinilor PCF8591

Simbol Concluzie Descriere
AIN0 1 Intrare analogică (A/D)
AIN1 2 Intrare analogică (A/D)
AIN2 3 Intrare analogică (A/D)
AIN3 4 Intrare analogică (A/D)
A0 5 Adresa de intrare 0
A1 6 Introducerea adresei 1
A2 7 Introducerea adresei 2
Vss 8 Sârmă comună microcircuite (putere)
S.D.A. 9 Autobuz I2C linie SDA
SCL 10 magistrală I2C linie SCL
O.S.C. 11 Terminal de conectare pentru generator extern
EXT 12 Generator extern/intern
AGND 13 Masă analogică
Vref 14 Tensiune de referință
AOUT 15 Ieșire analogică (D/A)
Vdd 16 Tensiune de alimentare „+”

Adresa slave a microcircuitului este setată așa cum se arată în Fig. 3. Conține o parte fixă ​​(biții 7...4) și o parte variabilă (biții 3...1). Bitul 0, ca întotdeauna, poartă atributul „R/W” (citire/scriere).

Figura 3. Adresa slave a cipului

Al doilea octet care urmează adresei slave este numit octet de monitorizare și control. Acest octet configurează cipul pentru sarcinile utilizatorului. În primul rând, poate fi folosit pentru a activa sau dezactiva ieșirea analogică. În al doilea rând, este posibilă configurarea intrărilor analogice atât în ​​modul direct, cât și în modul diferențial. În al treilea rând, este posibil să setați (în doi biți) numărul canalului A/D în care va avea loc conversia. Dacă este setat indicatorul de incrementare automată, după fiecare conversie A/D numărul canalului de intrare va crește cu unu. Este cel mai rațional să utilizați modul de auto-incrementare împreună cu generatorul intern, deoarece în acest mod va funcționa continuu. După cum se precizează în documentație, o întârziere în pornirea generatorului la schimbarea canalelor duce la erori de conversie a datelor. De asemenea, este recomandat să opriți ieșirea analogică (puneți-o în starea Z) dacă nu este utilizată. Această măsură va reduce consumul de curent al microcircuitului. În fig. Figura 4 prezintă stările posibile ale octetului de monitorizare și control.

Figura 4. Stări ale octetilor de control și management

Conversie D/A

Al treilea octet pe care trebuie să-l primească PCF8591 este octetul de date pentru convertorul digital-analogic. Desigur, în acest caz, ieșirea analogică trebuie să fie activată în octetul de monitorizare și control (Fig. 4).

Din punct de vedere fizic, convertorul D/A constă dintr-o matrice de rezistență, prezentată în Fig. 5. Punctele de conectare ale rezistențelor formează ramuri, care sunt conectate la linia de ieșire cu ajutorul comutatoarelor. Circuitul este controlat de un decodor de ramificație. Tensiunea de ieșire (L)AC out) este apoi alimentată la un amplificator cu câștig unitar auto-zero. Acest amplificator poate fi fie pornit (prin octetul de monitorizare și control) fie pus într-o stare de ieșire cu impedanță ridicată (2).

Figura 5. Convertor D/A

Este important de reținut că convertorul D/A este utilizat și în procedura de conversie A/D folosind metoda de aproximare succesivă. Aceasta metoda descrisă în detaliu în literatură și nu are rost să ne întoarcem la el în cadrul acestei cărți.

Figura 6. Procedura de conversie D/A

Procedura de conversie D/A este prezentată în Fig. 6. Orice punct din grafic din intervalul 00h...FFh poate fi determinat prin formula:

Unde VA0UT - tensiune de ieșire convertor D/A; VREF - tensiune de referință; VAGND- potenţialul de masă analogic; D- bitul corespunzător al octetului de date.

Vă rugăm să acordați atenție și Fig. 7. Este posibil să lucrați cu microcircuitul prin transmiterea unui lanț de octeți de date, urmând unul după altul. Un nivel de tensiune corespunzător celui specificat apare la ieșire în momentul emiterii semnalului ACK. În momentul emiterii semnalului ACK, confirmând primirea octetului de monitorizare și control (Fig. 4) la ieșirea microcircuitului, apar datele conținute în registrul DAC de la sfârșitul ciclului anterior de funcționare al microcircuitului. .

Figura 7.

Pentru a efectua o conversie A/D, trebuie mai întâi să transmiteți un octet de monitorizare și control cu ​​semnul R/W = 0. Apoi citiți datele conform Fig. 8.

Figura 10. Mod de măsurare diferențială

Pentru a asigura stabilitatea conversiilor A/D și D/A, este necesară o sursă specială de tensiune de referință, conectată la pinii Vref și AGND ai microcircuitului. Este necesar un oscilator încorporat pentru a asigura ciclul de conversie A/D și pentru a regla amplificatorul tampon cu ajustarea automată a zero.

Pentru a activa oscilatorul intern, pinul EXT trebuie scurtcircuitat la Vss. Apoi va apărea un semnal de frecvență de conversie la pinul OSC, care poate fi monitorizat. Dacă pinul EXT este conectat la VDD, oscilatorul intern va intra într-o stare de impedanță ridicată și pinul OSC poate fi alimentat cu un semnal de la un oscilator extern.

Literatură:
B. Yu. Semenov, „Autobuzul I2C ÎN PROIECTARE DE INGINERIE RADIO”

ADC - convertor analog-digital. Din nume puteți ghici că la intrare este furnizat un semnal analogic, care este convertit într-un număr.

Primul lucru care trebuie spus este că ADC-ul microcontrolerului poate măsura doar tensiunea. Pentru a măsura alte mărimi fizice, acestea trebuie mai întâi convertite în tensiune. Semnalul este întotdeauna măsurat relativ la un punct numit tensiune de referință, același punct fiind maximul care poate fi măsurat. Ca sursă de tensiune de referință (VS), se recomandă să alegeți o sursă de tensiune foarte stabilă, altfel toate măsurătorile vor dansa împreună cu referința.

Unul dintre cele mai importante caracteristici este rezoluția, care afectează acuratețea măsurării. Întregul domeniu de măsurare este împărțit în părți. Minim zero, tensiune maximă ION. Pentru un ADC de 8 biți, acesta este 2^8=256 de valori, pentru un ADC de 10 biți este de 2^10=1024 de valori. Astfel, cu cât adâncimea de biți este mai mare, cu atât semnalul poate fi măsurat mai precis.

Să presupunem că măsurați un semnal de la 0 la 10V. Microcontrolerul pe care îl folosim este Atmega8, cu un ADC de 10 biți. Aceasta înseamnă că domeniul de 10V va fi împărțit în 1024 de valori. 10V/1024=0,0097V - cu acest pas putem măsura tensiunea. Dar rețineți că microcontrolerul va lua în considerare valorile 0,0097, 0,0098, 0,0099... la fel.

Cu toate acestea, un pas de 0,01 este destul de bun. Cu toate acestea, există câteva recomandări fără de care această precizie nu va fi îndeplinită, de exemplu, pentru măsurători cu o precizie de 10 biți, frecvența la care funcționează ADC-ul ar trebui să fie de 50-200 kHz. Prima transformare durează 25 de cicluri și apoi 13 cicluri. Astfel, la o frecvență de 200 kHz putem strânge maximul
200.000/13 = 15.384 măsurători.

Îl puteți folosi ca sursă de tensiune de referință sursă internăși externă. Tensiunea sursă internă (2,3-2,7V) nu este recomandată a fi utilizată din cauza stabilității scăzute. Sursă externă se conectează la piciorul AVCC sau Aref, în funcție de setările programului.

Când utilizați un ADC, pinul AVCC trebuie conectat. Tensiunea AVCC nu trebuie să difere de tensiunea de alimentare a microcontrolerului cu mai mult de 0,3 V. După cum sa spus, tensiunea maximă măsurată este egală cu tensiunea de referință (Vref), este în domeniul 2V-AVCC. Deci microcontrolerul nu poate măsura mai mult de 5V.

Pentru a extinde domeniul de măsurare, trebuie să măsurați semnalul printr-un divizor de tensiune. De exemplu, tensiunea maximă măsurată este de 10V, tensiunea de referință este de 5V. Pentru a extinde domeniul de măsurare, trebuie să reduceți semnalul măsurat de 2 ori.

Formula de calcul a divizorului arată astfel:

U out = U in R 2 /(R 1 + R 2)

Să substituim valorile noastre în formula:

5 = 10*R2/(R1+R2)

acestea. puteți lua orice două rezistențe identice și le puteți conecta conform diagramei

Prin urmare, atunci când măsurăm tensiunea printr-un divizor, trebuie să înmulțim valoarea ADC rezultată cu coeficientul = Uout/Uin.

Formula completă pentru calcularea tensiunii măsurate va arăta astfel:
U=(tensiune de referință*valoare ADC*coeficient de divizor)/număr de biți ADC

Exemplu: referință 5V, valoare ADC măsurată = 512, factor divizor = 2, ADC 10 biți.

(5*512*2)/1024=5V - valoarea curentă măsurată a tensiunii.

Unii programatori scriu un program astfel încât microcontrolerul să calculeze automat coeficientul divizorului; pentru aceasta, semnalul de ieșire este măsurat cu un dispozitiv standard și această valoare este introdusă în program. Microcontrolerul însuși corelează tensiunea reală cu fiecare valoare ADC; procesul în sine este o singură dată și se numește calibrare.

Să trecem la implementare software. Cream un proiect cu parametri specificati. De asemenea, vom conecta un afișaj la portul D pentru a afișa informații.

Măsurarea se va face în mod automat, procesarea codului în întrerupere, tensiunea de referință este conectată la pinul AVCC. În esență, trebuie doar să procesăm datele primite. Datele măsurate sunt stocate în variabila adc_data. Dacă trebuie să scanați mai multe canale, atunci selectați ce canale să scanați, iar datele vor fi pentru pinul 0 din adc_data, pentru pinul 1 din adc_data etc.

În bucla principală, adăugați liniile:

rezultat=((5,00*adc_date)/1024,00); // convertiți valoarea ADC în volți
sprintf(lcd_buffer,"U=%.2fV",rezultat); //punem rezultatul într-o variabilă temporară
lcd_puts(lcd_buffer); //afişa

O mică notă: pentru a utiliza numere în virgulă mobilă, trebuie să modificați (s)printf Caracteristici: int, width to float, width, precizie în setările proiectului. Dacă nu se face acest lucru, nu vom vedea zecimi și sutimi.

Astfel, doar am convertit valoarea ADC în volți și am afișat-o pe afișaj. Rezultatul în Proteus arată astfel:

Rezistorul poate fi folosit pentru a schimba tensiunea; tensiunea măsurată este afișată pe afișaj. Când asamblați pe hardware real, trebuie să conectați un condensator de 0,1 µF la piciorul Aref. Lecția s-a dovedit a fi puțin dificilă, dar cred că o să-ți placă.

Fișier Proteus și firmware:

Actualizați:
Măsurarea curentului:

Acest articol discută principalele probleme privind principiul de funcționare al ADC. tipuri variate. În același timp, unele calcule teoretice importante privind descrierea matematică a conversiei analog-digitale au fost lăsate în afara domeniului articolului, dar sunt furnizate link-uri unde cititorul interesat poate găsi o considerație mai aprofundată. aspecte teoretice Funcționare ADC. Astfel, articolul este mai preocupat de înțelegerea principiilor generale de funcționare a ADC-urilor decât de o analiză teoretică a funcționării lor.

Introducere

La fel de punct de start Să definim conversia analog-digitală. Conversia analog-digitală este procesul de conversie a unei mărimi fizice de intrare în ea reprezentare numerică. Un convertor analog-digital este un dispozitiv care realizează o astfel de conversie. În mod formal, valoarea de intrare a ADC poate fi orice mărime fizică - tensiune, curent, rezistență, capacitate, rată de repetare a impulsului, unghi de rotație a arborelui etc. Cu toate acestea, pentru certitudine, în cele ce urmează, prin ADC vom înțelege exclusiv convertoare tensiune-cod.


Conceptul de conversie analog-digitală este strâns legat de conceptul de măsurare. Prin măsurare înțelegem procesul de comparare a valorii măsurate cu un anumit standard; cu conversia analog-digitală, valoarea de intrare este comparată cu o anumită valoare de referință (de obicei o tensiune de referință). Astfel, conversia analog-digitală poate fi considerată ca o măsurare a valorii semnalului de intrare și i se aplică toate conceptele de metrologie, cum ar fi erorile de măsurare.

Principalele caracteristici ale ADC

ADC-ul are multe caracteristici, principalele fiind frecvența de conversie și adâncimea de biți. Frecvența de conversie este de obicei exprimată în mostre pe secundă (SPS), iar adâncimea de biți este în biți. ADC-urile moderne pot avea o lățime de biți de până la 24 de biți și o viteză de conversie de până la unități GSPS (desigur, nu în același timp). Cu cât viteza și capacitatea de biți sunt mai mari, cu atât este mai dificilă obținerea caracteristicilor necesare, cu atât convertorul este mai scump și mai complex. Viteza de conversie și adâncimea de biți sunt legate între ele într-un anumit fel și putem crește adâncimea efectivă de biți de conversie prin sacrificarea vitezei.

Tipuri de ADC-uri

Există multe tipuri de ADC, dar în scopul acestui articol ne vom limita la a lua în considerare doar următoarele tipuri:

  • Conversie paralelă ADC ( conversie directă, ADC flash)
  • ADC de aproximare succesivă (SAR ADC)
  • ADC delta-sigma (ADC cu încărcare echilibrată)
Există, de asemenea, alte tipuri de ADC-uri, inclusiv tipuri pipeline și combinate, constând din mai multe ADC-uri cu arhitecturi (în general) diferite. Cu toate acestea, arhitecturile ADC enumerate mai sus sunt cele mai reprezentative datorită faptului că fiecare arhitectură ocupă o nișă specifică în intervalul general de biți de viteză.

ADC-urile de conversie directă (paralelă) au cea mai mare viteză și cea mai mică adâncime de biți. De exemplu, ADC de conversie paralelă TLC5540 de la Texas Instruments are o viteză de 40MSPS cu doar 8 biți. ADC de acest tip poate avea viteze de conversie de până la 1 GSPS. Se poate remarca aici că ADC-urile pipeline au o viteză și mai mare, dar sunt o combinație de mai multe ADC-uri cu viteză mai mică și luarea în considerare a acestora depășește scopul acestui articol.

Nișa de mijloc în seria de viteză de biți este ocupată de ADC-uri succesive de aproximare. Valori tipice este de 12-18 biți cu o frecvență de conversie de 100KSPS-1MSPS.

Cea mai mare precizie este obținută de ADC-urile sigma-delta cu o lățime de biți de până la 24 de biți inclusiv și o viteză de la unități SPS la unități KSPS.

Un alt tip de ADC care și-a găsit utilizare în trecutul recent este ADC-ul de integrare. ADC-urile integratoare sunt acum aproape complet înlocuite de alte tipuri de ADC-uri, dar pot fi găsite în mai vechi instrumente de masura.

Conversie directă ADC

ADC-urile cu conversie directă s-au răspândit în anii 1960-1970 și au început să fie produse sub formă circuite integrateîn anii 1980. Ele sunt adesea folosite ca parte a ADC-urilor „pipeline” (nu sunt discutate în acest articol) și au o capacitate de 6-8 biți la o viteză de până la 1 GSPS.

Arhitectura ADC cu conversie directă este prezentată în Fig. 1

Orez. 1. Schema structurala Conversie directă ADC

Principiul de funcționare al ADC este extrem de simplu: semnalul de intrare este furnizat simultan la toate intrările „pozitive” ale comparatoarelor, iar la cele „negative” sunt furnizate o serie de tensiuni, obținute din tensiunea de referință prin împărțirea lor cu rezistențe. R. Pentru circuitul din Fig. 1 acest rând va fi astfel: (1/16, 3/16, 5/16, 7/16, 9/16, 11/16, 13/16) Uref, unde Uref este tensiunea de referință ADC.

Dai drumul Intrare ADC se aplică o tensiune egală cu 1/2 Uref. Atunci primele 4 comparatoare vor funcționa (dacă numărați de mai jos), iar la ieșirile lor vor apărea cele logice. Codificatorul prioritar va forma o „coloană” de unități cod binar, care este captat de registrul de ieșire.

Acum, avantajele și dezavantajele unui astfel de convertor devin clare. Toate comparatoarele funcționează în paralel, timpul de întârziere al circuitului este egal cu timpul de întârziere dintr-un comparator plus timpul de întârziere din encoder. Comparatorul și codificatorul pot fi realizate foarte rapid, drept urmare întregul circuit are performanțe foarte ridicate.

Dar pentru a obține N biți, sunt necesari 2^N comparatori (și complexitatea codificatorului crește, de asemenea, cu 2^N). Schema din fig. 1. contine 8 comparatoare si are 3 biti, pentru a obtine 8 biti ai nevoie de 256 de comparatoare, pentru 10 biti - 1024 comparatoare, pentru un ADC pe 24 de biti ar avea nevoie de peste 16 milioane.Totusi tehnologia nu a atins inca astfel de inaltimi.

ADC de aproximare succesivă

Un convertor analog-digital de registru de aproximare succesiv (SAR) măsoară mărimea semnalului de intrare prin efectuarea unei serii de „ponderări” secvențiale, adică comparații ale valorii tensiunii de intrare cu o serie de valori generate după cum urmează:

1. în primul pas, ieșirea convertorului digital-analogic încorporat este setată la o valoare egală cu 1/2Uref (în continuare presupunem că semnalul este în intervalul (0 – Uref).

2. dacă semnalul este mai mare decât această valoare, atunci este comparat cu tensiunea situată la mijlocul intervalului rămas, adică în în acest caz,, 3/4Uref. Dacă semnalul este mai mic nivel stabilit, atunci următoarea comparație se va face cu mai puțin de jumătate din intervalul rămas (adică cu un nivel de 1/4Uref).

3. Pasul 2 se repetă de N ori. Astfel, N comparații („ponderări”) produc N biți ai rezultatului.

Orez. 2. Schema bloc a unui ADC de aproximare succesivă.

Astfel, ADC de aproximare succesivă constă din următoarele noduri:

1. Comparator. Compară valoarea de intrare și valoarea curentă a tensiunii de „ponderare” (în Fig. 2, indicată printr-un triunghi).

2. Convertor digital-analogic(Convertor digital în analog, DAC). Acesta generează o „greutate” de tensiune pe baza codului digital primit la intrare.

3. Registrul de aproximare succesivă (SAR). Implementează un algoritm de aproximare succesivă, generând valoarea curentă a codului alimentat la intrarea DAC. Întreaga arhitectură ADC poartă numele acesteia.

4. Schema Sample/Hold (Sample/Hold, S/H). Pentru funcționarea acestui ADC, este esențial important ca tensiunea de intrare să rămână constantă pe tot parcursul ciclului de conversie. Cu toate acestea, semnalele „reale” tind să se schimbe în timp. Circuitul de eșantionare și menținere „îți amintește” valoarea curentă a semnalului analogic și o menține neschimbată pe parcursul întregului ciclu de funcționare al dispozitivului.

Avantajul dispozitivului este viteza de conversie relativ mare: timpul de conversie al unui ADC de N biți este de N cicluri de ceas. Precizia conversiei este limitată de precizia DAC-ului intern și poate fi de 16-18 biți (ADC-urile SAR de 24 de biți au început să apară acum, de exemplu, AD7766 și AD7767).

ADC Delta-Sigma

În cele din urmă, cel mai interesant tip de ADC este ADC sigma-delta, uneori numit în literatură ADC cu sarcină echilibrată. Diagrama bloc a ADC sigma-delta este prezentată în Fig. 3.

Fig.3. Diagrama bloc a unui ADC sigma-delta.

Principiul de funcționare al acestui ADC este ceva mai complex decât cel al altor tipuri de ADC. Esența sa este că tensiunea de intrare este comparată cu valoarea tensiunii acumulată de integrator. Impulsurile de polaritate pozitivă sau negativă sunt furnizate la intrarea integratorului, în funcție de rezultatul comparației. Astfel, acest ADC este un sistem simplu de urmărire: tensiunea de la ieșirea integratorului „urmărește” tensiunea de intrare (Fig. 4). Rezultatul acestui circuit este un flux de zerouri și unu la ieșirea comparatorului, care este apoi trecut printr-un filtru digital trece-jos, rezultând un rezultat de N biți. LPF din fig. 3. Combinat cu un „decimator”, un dispozitiv care reduce frecvența citirilor prin „decimarea” acestora.

Orez. 4. Sigma-delta ADC ca sistem de urmărire

Din motive de rigoare a prezentării, trebuie spus că în Fig. Figura 3 prezintă o diagramă bloc a unui ADC sigma-delta de ordinul întâi. ADC sigma-delta de ordinul doi are doi integratori și două bucle părere, dar nu vor fi luate în considerare aici. Cei interesați de acest subiect se pot referi la.

În fig. Figura 5 arată semnalele din ADC la nivelul de intrare zero (sus) și la nivelul Vref/2 (jos).

Orez. 5. Semnale în ADC la diferite niveluri de semnal de intrare.

Acum, fără a deveni prea complicat analiză matematică, să încercăm să înțelegem de ce ADC-urile sigma-delta au foarte nivel scăzut propriul zgomot.

Să luăm în considerare schema bloc a modulatorului sigma-delta prezentat în Fig. 3 și prezentați-l sub această formă (Fig. 6):

Orez. 6. Schema bloc a unui modulator sigma-delta

Aici comparatorul este reprezentat ca un sumator care adaugă semnalul dorit continuu și zgomotul de cuantizare.

Fie ca integratorul să aibă o funcție de transfer 1/s. Apoi, reprezentând semnalul util ca X(s), ieșirea modulatorului sigma-delta ca Y(s) și zgomotul de cuantizare ca E(s), obținem funcția de transfer ADC:

Y(s) = X(s)/(s+1) + E(s)s/(s+1)

Adică, de fapt, modulatorul sigma-delta este un filtru frecvente joase(1/(s+1)) pentru semnalul util și un filtru frecvente inalte(s/(s+1)) pentru zgomot, ambele filtre având aceeași frecvență de tăiere. Zgomotul concentrat în regiunea de înaltă frecvență a spectrului este ușor îndepărtat de un filtru digital trece-jos, care este situat după modulator.

Orez. 7. Fenomenul de „deplasare” a zgomotului în partea de înaltă frecvență a spectrului

Cu toate acestea, trebuie înțeles că aceasta este o explicație extrem de simplificată a fenomenului de modelare a zgomotului într-un ADC sigma-delta.

Așadar, principalul avantaj al ADC sigma-delta este precizia sa ridicată, datorită nivelului extrem de scăzut al propriului zgomot. Cu toate acestea, pentru a obține o precizie ridicată, este necesar ca frecvența de tăiere a filtrului digital să fie cât mai mică posibil, de multe ori mai mică decât frecvența de funcționare a modulatorului sigma-delta. Prin urmare, ADC-urile sigma-delta au viteză de conversie scăzută.

Ele pot fi utilizate în ingineria audio, dar utilizarea lor principală este în automatizarea industrială pentru conversia semnalelor senzorilor, în instrumente de măsură și în alte aplicații în care este necesară o precizie ridicată. dar viteza mare nu este necesară.

Puțină istorie

Cea mai veche mențiune a unui ADC din istorie este probabil brevetul Paul M. Rainey, „Facsimile Telegraph System”, U.S. Brevet 1.608.527, depus la 20 iulie 1921, eliberat la 30 noiembrie 1926. Dispozitivul descris în brevet este de fapt un ADC cu conversie directă de 5 biți.

Orez. 8. Primul brevet pentru ADC

Orez. 9. Conversie directă ADC (1975)

Dispozitivul prezentat în figură este un ADC MOD-4100 cu conversie directă fabricat de Computer Labs, fabricat în 1975, asamblat folosind comparatoare discrete. Există 16 comparatoare (acestea sunt amplasate într-un semicerc pentru a egaliza întârzierea de propagare a semnalului către fiecare comparator), prin urmare, ADC-ul are o lățime de doar 4 biți. Viteza de conversie 100 MSPS, consum de energie 14 wați.

Următoarea figură prezintă o versiune avansată a ADC cu conversie directă.

Orez. 10. Conversie directă ADC (1970)

VHS-630 din 1970, fabricat de Computer Labs, conținea 64 de comparatoare, avea 6 biți, 30MSPS și consuma 100 wați (versiunea din 1975 VHS-675 avea 75 MSPS și consuma 130 wați).

Literatură

W. Kester. Arhitecturi ADC I: Convertorul Flash. Dispozitive analogice, MT-020 Tutorial.


Salutare tuturor. Astăzi vom atinge un subiect serios numit ADC. Ca întotdeauna, voi începe cu caracteristicile ADC, folosind ATmega8 ca exemplu. Și așa la bord există un convertor analog-digital (ADC) cu 6 canale care are 4 canale cu precizie de 10 biți și 2 canale cu precizie de 8 biți.
Deci, ce înseamnă „precizie de 10 biți”? Aceasta înseamnă că măsurarea va fi împărțită în 2 10 părți, iar pentru a determina pasul de măsurare trebuie să împărțiți tensiunea ADC la 2 10 = 1023 (deoarece numărul este de la 0), de exemplu, dacă tensiunea măsurată este 2.56V, atunci pasul nostru va fi 2.56/1023=0.0025V. În continuare, va trebui pur și simplu să înmulțiți pasul cu valoarea registrelor ADCH (bitul cel mai semnificativ) și ADCL (bitul scăzut), unde este stocat rezultatul conversiei.


Acum mai detaliat:
Pentru a controla ADC-ul trebuie să scriem numerele de care ai nevoie la registrele de control ADC numite ADMUX și ADCSRA(ADCSR)
ADMUX – Registrul multiplexor ADC.

Biți 7:6 (REFS1:REFS0) - biți de selecție a tensiunii de referință. Dacă modificăm acești biți în timpul unei conversii, modificările vor avea efect numai după conversia curentă. Tensiunea de referință poate fi selectată dintre AVcc (tensiune de alimentare), AREF sau tensiunea de referință internă de 2,56 V.

Batai 7:6
REFS1:REFS0
00 AREF
01 AVcc, cu condensator extern pe AREF
10 Rezervă
11 Sursă internă de 2,56V, cu condensator extern pe AREF

Bit 5 – ADLAR. Determină modul în care rezultatul va fi scris în registre

Biți 3:0 – MUX3:MUX0 – Biți de selecție a canalului.
MUX3:0
0000ADC0
0001ADC1
0010ADC2
0011ADC3
0100ADC4
0101ADC5
0110ADC6
0111ADC7

Următorul registru este ADCSRA unde sunt stocate setările ADC principale

Bit 7 – ADEN. Rezoluție ADC.
0 – ADC dezactivat
1 – ADC activat

Bit 6 – ADSC. Pornirea unei conversii (în modul de conversie unică)
0 – conversia finalizată
1 – începe conversia

Bit 5 – ADFR. Selectarea modului de operare ADC
0 – mod de conversie unică
1 – modul de conversie continuă

Bit 4 – ADIF. Indicator de întrerupere ADC. Bitul este setat când conversia este completă.

Bit 3 – ADIE. Activați întreruperea ADC
0 – întrerupere dezactivată
1 – întrerupere activată
O întrerupere ADC este generată (dacă este activată) la finalizarea conversiei.

Biți 2:1 – ADPS2:ADPS0. Frecvența ceasului ADC, sau mai degrabă divizorul frecvența ceasului Ministerul Căilor Ferate
ADPS2:0
000 2
001 2
010 4
011 8
100 16
101 32
110 64
111 128

Cu cât frecvența este mai mare, cu atât conversia este mai rapidă, dar eroarea este mai mare.

Așa se întâmplă transformarea

Ei bine, ca exemplu, să facem un voltmetru de 10V.
Partea de calcul va arăta astfel:
Vom folosi octetul mare ADCH, astfel încât numărul de măsurători va fi 2 8 = 255. Tensiunea de referință este o sursă internă de 2,56 V. Apoi calculăm pasul 2,56/255=1mV. Pentru a măsura 10V, trebuie să instalăm un divizor de tensiune, folosind calcule simple, selectăm cele mai plauzibile rezistențe la 56KOhm și 15KOhm, apoi coeficientul nostru este 4,73. Formula finală arată așa
Valoarea în Volți = ADCH*0,01*4,73;


Există o eroare de o zecime pentru că... Divizorul nu este ales ideal (dacă cineva dorește să asambleze circuitul, puteți instala un trimmer). Doar nu uitați să instalați un filtru capacitiv-inductiv.

Acum partea de software:
Ca întotdeauna, creăm un proiect în CodeVision, ștergem totul și scriem:
// totul este clar cu bibliotecile #include #include #include #include #include //variabilele noastre char result; nesemnat char volt; //selectați un port pentru portul LCD B #asm .equ __lcd_port=0x18 ; #endasm //Funcția de inițializare void ADC_init() ( ADMUX = 0xf0; //dacă este mai clar scriem 0b11110000 ADCSRA = 0x8d; //0b10001101 ) //Funcția de măsurare unsigned char ADC_result(unsigned) (adc_unsigned | ADMUX & 0xF0); //setează canalul delay_us(30); //întârziere pentru stabilizare ADCSRA |= 0x40; while((ADCSRA & 0x10)==0); //Așteptați sfârșitul indicatorului de măsurare ADCSRA|=0x10 ; return ADCH;// Returnează octetul înalt) // Funcția noastră principală void main() ( ADC_init(); volt=ADC_result(0)*0,01*4,73*10; //înmulțire cu 10 pentru precizie la zecimi sprintf(rezultat ,"V=%i. %u",volt/10,volt%10); lcd_init(16); lcd_gotoxy(0,0); lcd_puts(rezultat); )

Du-te!
Dacă doriți mai multe detalii, citiți fișa de date sau accesați forum.

Să ne uităm la gama principală de probleme care pot fi atribuite principiului de funcționare tipuri diferite. Numărătoare secvențială, echilibrare pe biți - ce se ascunde în spatele acestor cuvinte? Care este principiul de funcționare al unui microcontroler ADC? Vom lua în considerare acestea, precum și o serie de alte întrebări, în cadrul articolului. Vom dedica primele trei părți teorie generală, iar de la a patra subtitlu vom studia principiul funcționării lor. Puteți întâlni termenii ADC și DAC în diferite literaturi. Modul în care funcționează aceste dispozitive este ușor diferit, așa că nu le confundați. Deci, articolul va analiza de la forma analogică la cea digitală, în timp ce DAC-ul funcționează invers.

Definiție

Înainte de a lua în considerare principiul de funcționare al unui ADC, să aflăm ce fel de dispozitiv este acesta. Convertoarele analog-digitale sunt dispozitive care convertesc o cantitate fizică într-o reprezentare numerică corespunzătoare. Parametrul inițial poate fi aproape orice - curent, tensiune, capacitate, rezistență, unghi de rotație a arborelui, frecvență a impulsurilor și așa mai departe. Dar, pentru a fi sigur, vom lucra doar cu o singură transformare. Acesta este „codul de tensiune”. Alegerea acestui format de lucru nu este întâmplătoare. La urma urmei, ADC (principiul de funcționare al acestui dispozitiv) și caracteristicile sale depind în mare măsură de conceptul de măsurare utilizat. Acesta este înțeles ca procesul de comparare a unei anumite valori cu un standard stabilit anterior.

Caracteristicile ADC

Principalele sunt adâncimea de biți și frecvența de conversie. Primul este exprimat în biți, iar al doilea în numărătoare pe secundă. Modern convertoare analog-digitale poate avea o capacitate de 24 de biți sau o viteză de conversie care ajunge la unitățile GSPS. Vă rugăm să rețineți că ADC vă poate oferi doar o caracteristică la un moment dat. Cu cât indicatorii lor sunt mai mari, cu atât este mai dificil să lucrezi cu dispozitivul, iar dispozitivul în sine costă mai mult. Dar, din fericire, puteți obține indicatorii necesari pentru adâncimea de biți sacrificând viteza dispozitivului.

Tipuri de ADC-uri

Principiul de funcționare variază în funcție de diverse grupuri dispozitive. Ne vom uita la următoarele tipuri:

  1. Cu conversie directă.
  2. Cu aproximări succesive.
  3. Cu conversie paralelă.
  4. Convertor analog-digital cu echilibrare a încărcăturii (delta-sigma).
  5. Integrarea ADC-urilor.

Există multe alte tipuri de transportoare și combinații care au propriile lor caracteristici speciale cu arhitectură diferită. Dar acele mostre care vor fi luate în considerare în cadrul articolului sunt de interes datorită faptului că joacă un rol indicativ în nișa lor de dispozitive cu acest specific. Prin urmare, să studiem principiul de funcționare al ADC, precum și dependența acestuia de dispozitivul fizic.

Convertoare directe analog-digitale

Au devenit foarte populare în anii 60 și 70 ai secolului trecut. Au fost produse în această formă încă din anii 80. Acestea sunt dispozitive foarte simple, chiar primitive, care nu se pot lăuda cu performanțe semnificative. Lățimea lor de biți este de obicei de 6-8 biți, iar viteza depășește rar 1 GSPS.

Principiul de funcționare al acestui tip de ADC este următorul: intrările pozitive ale comparatoarelor primesc simultan un semnal de intrare. La bornele negative se aplică o tensiune de o anumită mărime. Și apoi dispozitivul își determină modul de funcționare. Acest lucru se realizează datorită tensiunii de referință. Sa zicem ca avem un aparat cu 8 comparatoare. Când se aplică ½ tensiune de referință, doar 4 dintre ele vor fi pornite. Codificatorul prioritar va fi generat și înregistrat în registrul de ieșire. În ceea ce privește avantajele și dezavantajele, putem spune că munca vă permite să creați dispozitive de mare viteză. Dar pentru a obține adâncimea de biți necesară, trebuie să munciți din greu.

Formula generală pentru numărul de comparatori arată astfel: 2^N. Sub N trebuie să puneți numărul de cifre. Exemplul discutat mai devreme poate fi folosit din nou: 2^3=8. În total, pentru a obține a treia cifră sunt necesare 8 comparatoare. Acesta este principiul de funcționare al ADC-urilor care au fost create mai întâi. Nu este foarte convenabil, așa că au apărut ulterior alte arhitecturi.

Convertoare analog-digitale de aproximare succesivă

Acesta folosește un algoritm de „ponderare”. Pe scurt, dispozitivele care funcționează folosind această tehnică sunt numite pur și simplu ADC-uri de numărare în serie. Principiul de funcționare este următorul: dispozitivul măsoară valoarea semnalului de intrare și apoi este comparat cu numerele care sunt generate folosind o anumită metodă:

  1. Jumătate din tensiunea de referință posibilă este setată.
  2. Dacă semnalul a depășit limita valorii de la punctul nr. 1, se compară cu numărul care se află la mijloc între valoarea rămasă. Deci, în cazul nostru, va fi ¾ din tensiunea de referință. Dacă semnalul de referință nu ajunge la acest indicator, atunci se va face o comparație cu o altă parte a intervalului după același principiu. ÎN în acest exemplu aceasta este ¼ de tensiune de referință.
  3. Pasul 2 trebuie repetat de N ori, ceea ce ne va oferi N biți din rezultat. Acest lucru se datorează efectuării unui număr N de comparații.

Acest principiu de funcționare face posibilă obținerea de dispozitive cu relativă de mare viteză transformări, care sunt ADC-uri de aproximare succesivă. Principiul de funcționare, după cum puteți vedea, este simplu, iar aceste dispozitive sunt perfecte pentru diverse cazuri.

Convertoare paralele A/D

Ele funcționează similar cu dispozitivele seriale. Formula de calcul este (2^H)-1. Pentru cazul considerat mai devreme, vom avea nevoie de (2^3)-1 comparatori. Pentru a funcționa, este utilizată o serie specifică a acestor dispozitive, fiecare dintre acestea putând compara tensiunea de intrare și tensiunea de referință individuală. Convertoarele paralele analog-digitale sunt dispozitive destul de rapide. Dar principiul de proiectare al acestor dispozitive este de așa natură încât este necesară o putere semnificativă pentru a le menține funcționalitatea. Prin urmare, nu este recomandabil să le folosiți cu alimentarea bateriei.

Convertor analog-digital cu echilibrare de biți

Funcționează într-un mod similar cu dispozitivul anterior. Prin urmare, pentru a explica funcționarea unui ADC de echilibrare pe biți, principiul de funcționare pentru începători va fi discutat literal dintr-o privire. Aceste dispozitive se bazează pe fenomenul dihotomiei. Cu alte cuvinte, se realizează comparație secvențială cantitate măsurată cu o anumită parte valoare maximă. Pot fi luate valori de ½, 1/8, 1/16 și așa mai departe. Prin urmare, un convertor analog-digital poate finaliza întregul proces în N iterații (pași succesivi). Mai mult, H este egal cu capacitatea de biți a ADC (uitați-vă la formulele date anterior). Astfel, avem un câștig semnificativ în timp, dacă viteza echipamentelor este deosebit de importantă. În ciuda vitezei lor considerabile, aceste dispozitive se caracterizează și printr-o eroare statică scăzută.

Convertoare analog-digitale cu echilibrare a încărcăturii (delta-sigma)

Acesta este cel mai interesant tip de dispozitiv, nu în ultimul rând datorită principiului său de funcționare. Constă în compararea tensiunii de intrare cu ceea ce a fost acumulat de integrator. Impulsurile cu polaritate negativă sau pozitivă sunt furnizate la intrare (totul depinde de rezultatul operației anterioare). Astfel, putem spune că un astfel de convertor analog-digital este un simplu sistem de urmărire. Dar acesta este doar un exemplu pentru comparație, astfel încât să puteți înțelege ADC. Principiul de funcționare este sistemic, dar pentru funcționarea eficientă a acestui convertor analog-digital nu este suficient. Rezultatul final este un flux nesfârșit de unu și zero care curge prin filtrul digital trece-jos. Din ele se formează o anumită secvență de biți. Se face o distincție între convertoarele ADC de ordinul întâi și de ordinul doi.

Integrarea convertoarelor analog-digitale

Acesta este ultimul caz special care va fi luat în considerare în articol. În continuare, vom descrie principiul de funcționare al acestor dispozitive, dar deja pornite nivel general. Acest ADC este un convertor analog-digital cu integrare push-pull. Întâlni dispozitiv similar posibil în multimetru digital. Și acest lucru nu este surprinzător, deoarece oferă o precizie ridicată și, în același timp, suprimă bine interferența.

Acum să ne concentrăm asupra principiului său de funcționare. Constă în faptul că semnalul de intrare încarcă condensatorul pentru un timp fix. De regulă, această perioadă este o unitate a frecvenței rețelei care alimentează dispozitivul (50 Hz sau 60 Hz). Poate fi și multiplu. Astfel, interferența de înaltă frecvență este suprimată. În același timp, influența tensiunii instabile este echilibrată sursa rețelei primirea energiei electrice pe acuratețea rezultatului obținut.

Când timpul de încărcare al convertorului analog-digital se termină, condensatorul începe să se descarce la o anumită rată fixă. Contorul intern al dispozitivului numără numărul de impulsuri de ceas care sunt generate în timpul acestui proces. Astfel, cu cât perioada de timp este mai lungă, cu atât indicatorii sunt mai semnificativi.

ADC-urile de integrare push-pull au precizie ridicatăȘi datorită acestui fapt, precum și structurii de construcție relativ simplă, acestea sunt proiectate ca microcircuite. Principalul dezavantaj al acestui principiu de funcționare este dependența sa de indicatorul de rețea. Amintiți-vă că capacitățile sale sunt legate de durata perioadei de frecvență a sursei de alimentare.

Așa funcționează un ADC cu dublă integrare. Principiul de funcționare a acestui dispozitiv deși destul de complex, oferă indicatori calitativi. În unele cazuri, acest lucru este pur și simplu necesar.

Alegem un APC cu principiul de funcționare de care avem nevoie

Să presupunem că ne confruntăm cu o anumită sarcină. Ce dispozitiv ar trebui să alegem pentru a ne satisface toate nevoile? Mai întâi, să vorbim despre rezoluție și precizie. Foarte des sunt confuzi, deși în practică depind foarte slab unul de celălalt. Rețineți că un convertor A/D pe 12 biți poate avea o precizie mai mică decât un convertor A/D pe 8 biți. În acest caz, rezoluția este o măsură a câte segmente pot fi alocate domeniul de intrare semnal măsurat. Astfel, ADC-urile pe 8 biți au 2 8 = 256 de astfel de unități.

Precizia este abaterea totală a rezultatului conversiei rezultat de la valoarea ideală care ar trebui să fie la o anumită tensiune de intrare. Adică, primul parametru caracterizează capabilitățile potențiale pe care le are ADC-ul, iar al doilea arată ce avem în practică. Prin urmare, un tip mai simplu (de exemplu, convertoare directe analog-digitale) poate fi potrivit pentru noi, care va satisface nevoile datorită preciziei ridicate.

Pentru a avea o idee despre ceea ce este necesar, mai întâi trebuie să calculați parametrii fizici și să construiți formula matematica interacțiuni. Erorile statice și dinamice sunt importante în ele, deoarece atunci când se utilizează diferite componente și principii pentru construirea unui dispozitiv, acestea vor avea efecte diferite asupra caracteristicilor acestuia. Mai mult informatii detaliate poate fi găsit în documentatie tehnica, care este oferit de producătorul fiecărui dispozitiv specific.

Exemplu

Să aruncăm o privire la SC9711 ADC. Principiul de funcționare al acestui dispozitiv este complex datorită dimensiunii și capacităților sale. Apropo, vorbind despre acestea din urmă, trebuie remarcat că sunt cu adevărat diverse. Deci, de exemplu, frecvența lucru posibil variază de la 10 Hz la 10 MHz. Cu alte cuvinte, poate lua 10 milioane de mostre pe secundă! Și dispozitivul în sine nu este ceva solid, ci are o structură modulară. Dar este folosit, de regulă, în tehnologia complexă, cu care este necesar să se lucreze o cantitate mare semnale.

Concluzie

După cum puteți vedea, ADC-urile se bazează pe diverse principii muncă. Acest lucru ne permite să selectăm dispozitive care vă vor satisface nevoile și, în același timp, vă permite să gestionați cu înțelepciune fondurile disponibile.

  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva