LAKI PINGVINI
Nuts and bolts (11): Analog-to-Digital
Prevod na silicijumski
Dejan PETROVIĆ
1. maj 2020.

Iako nam je na početku ideja bila da se držimo sirovih integralnih kola u DIP pakovanju, da bismo vam ih na taj način više približili, to jednostavno nije moguće. Neka u DIP pakovanju nisu dostupna, dok neka druga nismo uspeli da nabavimo. SMD integralna kola nisu podesna za primere na prototipskoj ploči. Iz tog razloga smo išli linijom manjeg otpora, te smo neka nabavili u formi modula, poput DAC-a MCP4725 iz prošlog broja. Slična rešenja su i u tekstu koji sledi, a verovatno će tako biti i u budućnosti.

U ovoj priči biće reči o analogno-digitalnim konverterima čiji je zadatak da analogne vrednosti prevedu u digitalne, odnosno, u vrednosti koje mikrokontroleri mogu da „razumeju”. Prvi među jednakima na ovoj stranici nam dolazi iz Microchipa sa oznakom MCP3421 i, s obzirom na to da je SOT pakovanje, uzeli smo ga u formi modula. MCP3421 je jednokanalni, visokoprecizni, delta-sigma ADC (analogno-digitalni konverter) sa veoma niskim šumom i diferencijalnim ulazom. ADC je 18-bitne rezolucije i dolazi sa referentnim naponom od ±2,048 volti. Za komunikaciju sa mikrokontrolerom koristi I2C interfejs i radi na naponima od 2,7 do 5,5 volti. MCP3421 koristi konverziju u jednom od četiri različita koraka uzimanja uzoraka (SPS), a odabir koraka se podešava kroz I2C. Od zanimljivosti, pomenućemo programabilno pojačanje snage (PGA) pre same konverzije. Zatim, tu su dva režima konverzije: Continous i One-Shot. MCP3421 možemo naći u prenosnim uređajima, raznim analognim skalama i kazaljkama, kao i kod upotrebe termistora, termopar elemenata, senzora pritiska, naprezanja i snage.

Sam čip ima šest izvoda, dva za I2C komunikaciju, dva naponska i po jedan VIN+ i VIN-. Ovi poslednji su diferencijalni analogni ulazi gde se diferencijalni napon konvertuje prema jednačini VIN=(VIN+ – VIN-). Ulazni signal se pojačava pre konverzije, a treba znati da diferencijalni ulazni napon ne sme biti veći od apsolutne vrednosti (2* VREF/PGA), gde je referentni napon 2,048 volti, a pojačanje biramo programski. Modul dolazi sa svih pomenutih šest izvoda, a na sebi, osim ADC, ima još i pull-up otpornike na I2C linijama, kao i par kondenzatora radi stabilnosti. Test sketch možete preuzeti odavde: i.sk.rs/357457. U pitanju je blago modifikovani primer sa Adafruit foruma koji pruža sav odabir postavki ovog ADC preko terminala, a može se koristiti i za bilo koji drugi iz MCP342x porodice. Dovoljno je plus i minus izvode povezati sa baterijom da bismo dobili ispravna očitavanja u milivatima.

Microchipov MCP3208 je još jedan 12-bitni analogno-digitalni konverter sa ugrađenim strujnim kolom koje mu omogućava da uzme i sačuva uzorak. Čip se može programirati tako da omogući dva pseudo-diferencijalna ulaza, od četiri samostalna ulaza. Serija MCP320x sadrži četvorokanalne i osmokanalne ADC-ove i, za razliku od prethodno opisanog, ovi za komunikaciju sa mikrokontrolerom koriste SPI interfejs. MCP3208 je sposoban za konverziju do 100 kilosemplova u sekundi (ksps). Pritom radi na naponima od 2,7 do 5,5 volti.

MCP3208 dolazi i u PDIP-16 pakovanju i takav smo i nabavili. Svih osam izvoda sa leve strane su kanali CH0-CH7, to jest, analogni ulazi gde se bilo koji par može postaviti kao diferencijalni ulaz i gde je prvi IN+ a drugi IN-. VDD i DGND su naponski izvodi preko kojih se čip napaja. CLK, DOUT i DIN su izvodi SPI interfejsa preko kojih ADC ostvaruje komunikaciju sa mikrokontrolerom. CS/SHDN je izvod koji se koristi da započne komunikaciju sa čipom kada na njemu ispišemo logičku nulu, Sa HIGH prekidamo konverziju i ovaj postupak se mora ponoviti prilikom uzimanja svakog uzorka. AGND je analogni GND i koristi se samo unutar internog analognog strujnog kola. MCP3208 nema svoj interni referentni napon, već se u tu svrhu koristi VREF izvod. Koristimo primer MCP3208.h biblioteke koji nećemo dodatno da pojašnjavamo, a biblioteku možete preuzeti odavde: i.sk.rs/357458. Povezujemo prema priloženoj šemi, gde VREF vezujemo na 5V Arduina. Za naš test sa AA R6 baterijom od 1,2 volta, dobili smo očekivane rezultate.

MCP3008 je još jedan Microchipov analogno-digitalni konverter koji sa mikrokontrolerom komunicira preko SPI interfejsa, ali sa desetobitnom rezolucijom. Ovaj ADC ima osam kanala koji se mogu programirati tako da ih bude četiri diferencijalna u paru. Postoji i MCP3004 sa dvostruko manje ulaza. Konverter ima određene DNL i INL od po ±1 LSB (least significant bit). Uvrstili smo ga u ovaj tekst zato što je, za razliku od čipa MCP3208, sposoban za mnogo veći broj uzoraka po sekundi, čak do 200 ksps. Osmokanalni MCP3008 ima identičan pinout kao i MCP3208, a vrlo zgodna biblioteka (koju je potpisao naš Uroš Petrevski) može se preuzeti odavde: i.sk.rs/357459. Primer je ispod.

#include <MCP3008.h>

#define CS_PIN 12

#define CLOCK_PIN 9

#define MOSI_PIN 11

#define MISO_PIN 10

MCP3008 adc(CLOCK_PIN, MOSI_PIN, MISO_PIN, CS_PIN);

void setup() {

Serial.begin(9600);

}

void loop() {

int val = adc.readADC(0); // read Chanel 0 from MCP3008 ADC

Serial.println(val);

}

Da ne bude da smo na platnom spisku Microchipa, za kraj ostavljamo ADC koji dolazi iz Texas Instrumentsa sa oznakom ADS1115. Ovaj šesnaestobitni analogno-digitalni konverter sa mikrokontrolerom komunicira putem I2C interfejsa. U sebi ima ugrađene referentni napon i kristal, kao i programabilni pojačivač snage i digitalni komparator. ADS1115 ima konverziju do 860 semplova u sekundi (sps). PGA nudi inpute od ±256 milivolti do ±6,144 volta, što omogućava velika i mala merenja ulaznog signala. Ono što može biti glavna razlika u odnosu na ADC je MUX, to jest, ulazni multiplekser koji omogućava diferencijalna i jednostrana očitavanja odjednom. Kao i MCP3421, i ADS1115 ima dva režima rada: Continous i One-Shot. Sam čip dolazi sa deset izvoda, gde su AIN0-4 kanali, ADDR je izvod za odabir I2C adrese gde povezivanjem na GND, VDD, SDA ili SCL možemo birati između četiri. ALERT/READY je izvod izlaza komparatora ili conversion ready u zavisnosti od potrebe. GND i VDD su naponski izvodi i na njih možemo dovesti napone između dva i 5,5 volti. SCL i SDA su, naravno, I2C izvodi.

ADC dolazi u X2QFN i VSSOP pakovanjima i za razvoj je bolje pribeći nekom modulu, što smo i mi uradili. Naš modul ima sve izvode konvertera, uz neophodne komponente, gde proizvođač preporučuje samo pull-up otpornike od 1-10K na I2C i ALERT/READY linijama, uz kondenzator na naponskim izvodima. Povezujemo naponske i I2C izvode sa Arduinom, a ADDR sa GND, što nam daje 0x48 I2C adresu. Vrlo dobra biblioteka dolazi iz Adafruita, a možete je preuzeti ovde: i.sk.rs/357460. Biblioteka nudi tri primera, komparator, diferencijal i jednostrani ulaz. Mi opet merimo napon naše baterije primerom ispod.

#include <Wire.h>

#include <Adafruit_ADS1015.h>

Adafruit_ADS1115 ads;

void setup(void){

Serial.begin(9600);

ads.setGain(GAIN_TWOTHIRDS);

ads.begin();

}

void loop(void){

int16_t results;

float multiplier = 0.1875F;

results = ads.readADC_Differential_0_1();

Serial.print("Differential: ");

Serial.print(results);

Serial.print("(");

Serial.print(results * multiplier);

Serial.println("mV)");

delay(1000);

}

Svaki od ovih ADC-ova je samo deo većih porodica koje nema smisla sve nabrajati. SPI (ili I2C) interfejs sa analogno-digitalnih konvertera može biti slamka spasa za, recimo, ESP8266. Uz pomoć samo jedne komponente možemo dodati više analognih senzora ovom mikrokontroleru, a podatke zatim prebaciti na neki server. Mogućnost diferencijalnih ulaza omogućava širem krugu MCU-a da dobije precizne vrednosti, recimo, nivoa napunjenosti baterije. Od pobrojanih ADC u ovom tekstu, uzevši u obzir broj komponenata, lakoću povezivanja i integraciju u projekat, naš izbor bio bi MCP3008. Pritom, imajte na umu da ADC i dupont žice znače sigurno dobijanje nesigurnih vrednosti. Razvoj je jedno, a projekat, naravno, nešto potpuno drugo.


PRETHODNI TEKST
SLEDEĆI TEKST
Najčitanije
Igre
Telefoni
Hardver
Softver
Nauka
Aktuelno štampano izdanje
JUN 2025
Doom: The Dark Ages
Doom iz mračnog doba drugačiji je od svih drugih Doomova, jer je Slayer koncipiran kao tenk sa štitom...
Clair Obscur: Expedition 33
Estetika Belle Époquea, gameplay u skladu sa kanonima JRPG-a, vrhunsko pripovedanje i ljubav prema igrama...
Computex 2025, Tajpej, Tajvan
AI NEXT
Ovaj, nekada ultra-PC-specifični sajam, odavno se proširio na srodne tehnologije, biznis rešenja i digitalne usluge, postavši varijanta azijskog C...
Gigabyte GeForce RTX 5070 Gaming OC 12G
Višak samopouzdanja
Kartica je sa hardverske strane vrlo kvalitetna, ali ništa ne može da nadomesti nedostatak snage „pod haubom”...
Asus ProArt P16 (H7606WP)
Pronalazak neverovatnog
Novi ProArt P16 donosi moderna rešenja, u dobro usaglašenom odnosu gabarita i performansi – alatka koju ćete sa ponosom nosati sa sobom...
Logitech ProX Superlight 2
Sve udvostručeno
Ovaj miš predstavlja jasnu indikaciju da najveći proizvođač ne želi da napusti nijedan segment tržišta...
Winhance 25.05
Popravka Prozora
U pitanju je alatka koja omogućava da se brzo rešite (većine) bloatwarea, ali i da obavite optimizaciju rada Windowsa...
TCL NXTPAPER 11 Plus
Momak za sve
Ovo bi bio najbolji tablet „za te pare” i da košta 100 evra više...
.rs: Beogradski prevoz na Yandexu • Srbija u SEPA • Loši primeri digitalizacije
Unapređeno e Zakazivanje
Beogradski prevoz na Yandexu • Srbija u SEPA • Loši primeri digitalizacije
Google Mariner, Google Astra i AI autonomni agenti
Uspon tihog softvera
Umesto kliktanja stručnog lica, softver će, već ove godine, u tihom, gotovo nečujnom načinu rada - završavati posao...
Fatal Fury: City of the Wolves
Fatal Fury je oduvek bio čudna cvećka u svetu borilačkih igara; takav je i ostao...
Arc Raiders
Novi extraction shooter iz pera autora dobrih delova franšize Battlefield (i potcenjenog The Finals)...
© 2025 Svet kompjutera. Sva prava zadrzana.
Novi broj - Arhiva - Forum - O nama