În timp ce semnalele analogice pot fi continue și pot furniza un număr infinit de valori diferite de tensiune, circuitele digitale pe de altă parte funcționează cu semnal binar care are doar două stări discrete, un „1” logic (HIGH) sau un „0” logic (LOW). Deci, este necesar să aveți un circuit electronic care să poată converti între cele două domenii diferite de semnale analogice în continuă schimbare și semnale digitale discrete, iar aici intervin convertoarele analogic-digitale (A/D).
Convertorul analogic-digital, sau ADC, este un convertor de date care permite circuitelor digitale să interfațeze cu lumea reală prin codificarea unui semnal analogic într-un cod binar.Convertoarele analog-digitale (ADC) permit circuitelor controlate de microprocesor, Arduino, Raspberry Pi și alte astfel de circuite logice digitale să comunice cu lumea reală. În lumea reală, semnalele analogice au valori în continuă schimbare, care provin din diverse surse și senzori care pot măsura sunetul, lumina, temperatura sau mișcarea, iar multe sisteme digitale interacționează cu mediul lor prin măsurarea semnalelor analogice de la astfel de traductoare.
Practic, un convertor analogic-digital ia un instantaneu al unei tensiuni analogice la un moment dat și produce un cod de ieșire digitală care reprezintă această tensiune analogică. Numărul de cifre binare sau biți utilizați pentru a reprezenta această valoare de tensiune analogică depinde de rezoluția unui convertor A/D.
De exemplu, un ADC de 4 biți va avea o rezoluție de o parte din 15, (24 - 1), în timp ce un ADC de 8 biți va avea o rezoluție de o parte din 255, (28 - 1). Astfel, un convertor analog în digital preia un semnal analog necunoscut continuu și îl convertește într-un număr binar pe „n”-biți de 2n biți.
Dar mai întâi să ne reamintim diferențele dintre un semnal analogic și un semnal digital:
Semnale analogice și digitale
Aici putem vedea că, deoarece terminalul cursorului potențiometrului este rotit între 0 volți și VMAX, el produce un semnal de ieșire continuu (sau tensiune) care are un număr infinit de valori de ieșire în raport cu poziția cursorului. Deoarece cursorul potențiometrelor este reglat de la o poziție la alta, nu există nicio schimbare bruscă sau treaptă între cele două nivele de tensiune, producând astfel o tensiune de ieșire variabilă continuu. Exemple de semnale analogice includ temperatura, presiunea, nivelele de lichid și intensitatea luminii.
Pentru un circuit digital cursorul potențiometrului a fost înlocuit de un singur comutator rotativ care este conectat la rândul său la fiecare joncțiune a lanțului de rezistoare în serie, formând o rețea de bază de divizare a potențialului. Pe măsură ce comutatorul este rotit de la o poziție (sau nod) la următoarea tensiunea de ieșire, VOUT se schimbă rapid în trepte de tensiune discrete și distincte reprezentând multipli de 1,0 volt pe fiecare acțiune de comutare sau treaptă, cum se arată.
De exemplu, tensiunea de ieșire va fi de 2 volți, 3 volți, 5 volți etc., dar NU 2,5 V, 3,1 V sau 4,6 V. Nivele mai fine de tensiune de ieșire ar putea fi produse cu ușurință prin utilizarea unui comutator cu mai multe poziții și creșterea numărului de elemente rezistive în rețeaua divizoare de potențial, crescând astfel numărul de trepte de comutare discrete.
Atunci putem vedea că diferențele majore dintre un semnal analogic și un semnal digital este că o cantitate „analogică” se schimbă continuu în timp, în timp ce o cantitate „digitală” are valori discrete (treaptă cu treaptă): „LOW” la „HIGH” sau „HIGH” la „LOW”.
Deci, cum putem converti un semnal în continuă schimbare cu un număr infinit de valori într-unul care are valori distincte sau trepte pentru utilizarea de către un circuit digital.
Convertor analogic-digital
Procesul de a lua un semnal analogic de tensiune și de a-l converti într-un semnal digital echivalent poate fi realizat în multe moduri diferite și, deși există multe cipuri convertor analogic-digital, cum ar fi seria ADC08xx disponibile de la diferiți producători, este posibil să construiți un ADC simplu folosind componente discrete. O modalitate simplă și ușoară este utilizarea codificării paralele, cunoscută și sub numele de convertoare flash, simultane sau multiple comparatoare, în care comparatoarele sunt utilizate pentru a detecta diferite nivele de tensiune și a transmite starea lor de comutare la un codificator.
În paralel, convertoarele A/D „Flash” utilizează o serie de comparatoare interconectate, dar egal distanțate și referințe de tensiune generate de o rețea serie de rezistoare de precizie pentru a genera un cod de ieșire echivalent pentru o anumită rezoluție de n-biți. Avantajul convertoarelor paralele sau flash este că sunt ușor de construit și nu necesită ceasuri de sincronizare, deoarece în momentul în care se aplică o tensiune analogică la intrările comparatorului, este comparată cu o tensiune de referință. Luați în considerare circuitul comparator de mai jos.
Circuit Comparator
Un comparator analogic, cum ar fi LM339N, are două intrări analogice, una pozitivă și una negativă, și poate fi utilizat pentru a compara magnitudinile a două nivele de tensiune diferite. O intrare de tensiune, semnal (VIN) este aplicată unei intrări a comparatorului, în timp ce o tensiune de referință, (VREF) la cealaltă. O comparație a celor două nivele de tensiune la intrarea comparatorului se face pentru a determina starea de ieșire logică digitală a comparatorului, fie un „1”, fie un „0”. Tensiunea de referință, VREF este comparată cu tensiunea de intrare, VIN aplicată celeilalte intrări. Pentru un comparator LM339, dacă tensiunea de intrare este mai mică decât tensiunea de referință, (VIN < VREF) ieșirea este „OFF”, iar dacă este mai mare decât tensiunea de referință, (VIN > VREF) ieșirea va fi „ON". Astfel, un comparator compară două nivele de tensiune și determină care dintre cele două este mai mare. În exemplul nostru simplu de mai sus, VREF este obținută din configurarea rețelei divizorului de tensiune prin R1 și R2. Dacă cele două rezistoare au valori egale, adică R1 = R2, atunci în mod clar nivelul de tensiune de referință va fi egal cu jumătate din tensiunea de alimentare sau V/2. Deci, pentru un comparator cu o ieșire colector-deschis, dacă VIN este mai mic decât V/2, ieșirea este HIGH, iar dacă VIN este mai mare decât V/2, ieșirea este LOW acționând ca un ADC de 1-bit.
Dar prin adăugarea mai multor rezistoare la rețeaua de divizare a tensiunii putem efectiv „împărți” tensiunea de alimentare cu o cantitate determinată de rezistențele rezistoarelor. Dar, cu cât folosim mai multe rezistoare în rețeaua de divizare a tensiunii, cu atât vor fi necesare mai multe comparatoare.
În general, 2n- 1 comparatoare ar fi necesare pentru conversia unei ieșiri binare pe „n”-biți, unde „n” este în mod obișnuit în intervalul de la 8 la 16. În exemplul nostru de mai sus, ADC pe un singur bit a folosit 21 - 1, care este egal cu „1” comparator pentru a determina dacă VIN a fost mai mare sau mai mică decât tensiunea de referință V/2.
Dacă acum creăm un ADC pe 2 biți, atunci vom avea nevoie de 22 - 1, care sunt „3” comparatoare, deoarece avem nevoie de patru nivele de tensiune diferite care să corespundă celor 4 valori digitale necesare pentru un circuit de codificare de 4- la-2 biți, așa cum se arată.
Circuit convertor analogic-digital pe 2 biți
Acest lucru ne va oferi un cod de ieșire pe 2 biți pentru toate cele patru valori posibile ale intrării analogice:
Ieșire convertor A/D pe 2 biți
unde: „X” este „nu-mi pasă”, adică este fie o condiție „0” logic, fie o condiție „1” logic.
Deci, cum funcționează acest convertor analog-digital. Pentru ca un convertor A/D să fie util, trebuie să producă o reprezentare digitală semnificativă a semnalului de intrare analogic. Aici, în acest exemplu simplu de ADC pe 2 biți, am presupus, pentru simplitate, că tensiunea de intrare VIN este între 0 și 4 volți, așa că am setat VREF și rețeaua rezistivă de divizare a tensiunii să cadă 1 volt pe fiecare rezistor.
Când VIN este între 0 și 1 volt, (< 1V) intrarea pe toate cele trei comparatoare va fi mai mică decât tensiunea de referință, deci ieșirile lor vor fi LOW și codificatorul va emite o stare de zero binar (00) pe pinii Q0 și Q1. Când VIN crește și depășește 1 volt, dar este mai mic de 2 volți, (1V < VIN < 2V) comparatorul U1 care are o intrare de tensiune de referință setată la 1 volt, va detecta această diferență de tensiune și va produce o ieșire HIGH. Codificatorul prioritar care este utilizat pentru codare 4-la-2 biți detectează schimbarea intrării la D1 și produce o ieșire binară de „1” (01).
Rețineți că un encoder prioritar, cum ar fi TTL 74LS148, alocă un nivel de prioritate fiecărei intrări individuale. Ieșirea codificatoarelor prioritare corespunde intrării active curente care are cea mai mare prioritate. Deci, atunci când este prezentă o intrare cu o prioritate mai mare (D1 comparativ cu D0), toate celelalte intrări cu o prioritate mai mică vor fi ignorate. Deci, dacă există două sau mai multe intrări la nivel logic „1” în același timp, codul de ieșire real de pe D0 și D1 ar corespunde doar intrării cu cea mai mare prioritate desemnată.
Deci, acum, deoarece VIN crește peste 2 volți, următorul nivel de tensiune de referință, comparatorul U2 detectează schimbarea și produce o ieșire HIGH. Dar deoarece intrarea D2 are o prioritate mai mare decât intrările D0 sau D1, codificatorul prioritar emite un cod „2” binar (10) și așa mai departe, atunci când VIN depășește 3 volți, producând o ieșire de cod binar „3” (11). În mod clar, pe măsură ce VIN se reduce sau se modifică între fiecare nivel de tensiune de referință, fiecare comparator va emite fie o condiție HIGH, fie LOW către codificator, care produce un cod binar de 2 biți între 00 și 11 în raport cu VIN.
Totul este bine, dar codificatoarele prioritare nu sunt disponibile ca dispozitive 4-la-2 biți și, dacă folosim unul disponibil comercial, cum ar fi TTL 74LS148 sau echivalentul său CMOS 4532, care sunt ambele dispozitive pe 8 biți, atunci șase dintre biții binari nu ar fi folosiți. Dar un circuit de codificare simplu poate fi realizat folosind porți digitale Ex-OR și o matrice de diode de semnal ca mai jos.
ADC pe 2 biți folosind diode
Aici ieșirile comparatoarelor sunt codificate folosind porți Exclusive-OR înainte de a fi trimise la diode. Două rezistoare pull-down externe sunt folosite la ieșirile lor și la masă (0V) pentru a asigura o stare LOW și a opri ieșirile de la flotare atunci când diodele sunt polarizate invers. La fel ca în cazul circuitului anterior, în funcție de valoarea lui VIN determină care comparator produce un semnal de ieșire HIGH (sau LOW) la porțile exclusive-OR, care produc o ieșire HIGH dacă o intrare sau cealaltă intrare este HIGH, dar nu ambele. Expresia booleană este
Aceste porți Ex-OR ar putea fi, de asemenea, construite folosind porți AND–OR–NAND de logică combinațională.
Problema aici cu ambele modele de convertoare 4-la-2 este că rezoluția acestui convertor A/D simplu pe 2 biți este de 1 volt, deoarece, așa cum am văzut, tensiunea de intrare analogică la VIN trebuie să se schimbe cu un volt complet pentru ca codificatorul să-și schimbe codul de ieșire. O modalitate de a îmbunătăți rezoluția ieșirii este să o creșteți la un convertor A/D de 3 biți folosind mai multe comparatoare.
Convertor analogic-digital pe 3 biți
ADC-ul paralel de mai sus convertește tensiunea de intrare analogică în intervalul de la 0 la peste 3 volți pentru a produce un cod binar de 2 biți. Deoarece un sistem logic digital pe 3 biți poate genera 23 = 8 ieșiri digitale diferite, tensiunea de intrare analogică poate fi, prin urmare, comparată cu opt nivele de tensiune de referință, fiecare nivel de tensiune fiind egal cu o optime (V/8) din tensiunea de referință. Astfel, am putea măsura acum o rezoluție de 0,5 (4/8) volți și am avea nevoie de 23 - 1 comparatoare pentru o ieșire de cod binar de 3 biți între 000 (0) și 111 (7) așa cum se arată.
Circuit convertor analogic-digital pe 3 biți
Acest lucru ne va oferi un cod de ieșire pe 3 biți pentru toate cele opt valori posibile ale intrării analogice:
Ieșire convertor A/D pe 3 biți
În care din nou „X” este „nu-mi pasă”, aceasta este fie o condiție logică de intrare „0”, fie un „1” logic.
Atunci putem vedea că, prin creșterea rezoluției ADC, nu numai că crește numărul de biți binari de ieșire, dar crește și numărul de comparatoare și nivelele de tensiune necesare. Astfel, o rezoluție de 4 biți necesită 15 (24 - 1) comparatoare, o rezoluție de 8 biți necesită 255 (28 - 1) comparatoare, în timp ce un convertor analogic-digitalde 10 biți ar necesita 1023 comparatoare etc. Pentru acest tip de circuit convertor analogic-digital, cu cât este mai mare numărul biților de ieșire necesari, cu atât circuitul devine mai complex.
Dar, avantajul acestui tip de convertor A/D paralel sau flash este că rata sa de conversie în timp real este relativ rapidă și poate fi ușor construit ca parte a unui proiect, dacă sunt necesari doar câțiva biți binari pentru a produce o citire pe un afișaj digital pentru a arăta valoarea tensiunii unui semnal de intrare analogic.
Pe lângă preluarea unui semnal analogic de intrare de la un senzor sau traductor și convertirea acestuia utilizând un convertor analogic-digital într-un cod binar digital ca parte a unui circuit de interfață de intrare, putem lua și un cod binar și îl putem converti într-o cantitate analogică echivalentă utilizând un convertor digital-analogic pentru interfața de ieșire pentru a controla un motor sau un actuator sau, de obicei, în aplicații audio.
În următorul tutorial despre circuite digitale, ne vom uita la un convertor digital-analogic, sau pur și simplu DAC, care este exact opusul convertoarelor analogic-digitale prezentate aici. DAC utilizează amplificatoare operaționale și rețele rezistive de divizare pentru a converti un număr binar „n”-biți într-o tensiune de ieșire analogică echivalentă sau un semnal de curent.