Cuprins:

Arduino și TI ADS1110 ADC pe 16 biți: 6 pași
Arduino și TI ADS1110 ADC pe 16 biți: 6 pași

Video: Arduino și TI ADS1110 ADC pe 16 biți: 6 pași

Video: Arduino și TI ADS1110 ADC pe 16 biți: 6 pași
Video: ADS1015 with ESP8266 NodeMCU for Multiple Analog Sensors Monitoring, Analog Extender, Arduino 2024, Iulie
Anonim
Arduino și TI ADS1110 ADC pe 16 biți
Arduino și TI ADS1110 ADC pe 16 biți

În acest tutorial examinăm utilizarea Arduino pentru a lucra cu Texas Instruments ADS1110 - un convertor analogic-digital de 16 biți incredibil de mic, dar util.

Poate funcționa între 2,7 și 5,5 V, deci este bine și pentru Arduino Due și alte plăci de dezvoltare de tensiune mai mică. Înainte de a continua, vă rugăm să descărcați fișa tehnică (pdf), deoarece va fi utilă și la care se face referire în timpul acestui tutorial. ADS1110 vă oferă opțiunea unui ADC mai precis decât cel oferit de ADC-urile Arduino pe 10 biți - și este relativ ușor de utilizat. Cu toate acestea, este disponibil doar ca piesă goală în SOT23-6.

Pasul 1:

Imagine
Imagine

Vestea bună este că puteți comanda ADS1110 montat pe o placă foarte convenabilă. ADS1110 utilizează magistrala I2C pentru comunicare. Și, deoarece există doar șase pini, nu puteți seta adresa autobuzului - în schimb, puteți selecta dintre șase variante ale ADS1110 - fiecare cu propria adresă (a se vedea pagina doi a fișei tehnice).

După cum puteți vedea în fotografia de mai sus, a noastră este marcată cu „EDO” care se potrivește cu adresa autobuzului 1001000 sau 0x48h. Și cu exemplele de circuite am folosit rezistențe de tracțiune de 10kΩ pe magistrala I2C.

Puteți utiliza ADS1110 ca ADC cu un singur capăt sau diferențial - Dar mai întâi trebuie să examinăm registrul de configurație care este utilizat pentru a controla diferite atribute și registrul de date.

Pasul 2: Configurare registru

Treceți la pagina unsprezece a fișei tehnice. Registrul de configurare are o dimensiune de un octet și, pe măsură ce ADS1110 se resetează pe un ciclu de alimentare - trebuie să resetați registrul dacă nevoile dvs. sunt diferite de valorile implicite. Foaia de date o explică destul de bine … biții 0 și 1 determină setarea câștigului pentru PGA (amplificator de câștig programabil).

Dacă măsurați doar tensiunile sau experimentați, lăsați-le la zero pentru un câștig de 1 V / V. Apoi, rata de date pentru ADS1110 este controlată cu biții 2 și 3. Dacă aveți activată eșantionarea continuă, aceasta determină numărul de eșantioane pe secundă luate de ADC.

După câteva experimente cu un Arduino Uno, am constatat că valorile returnate de la ADC au fost puțin oprite atunci când se utilizează cea mai rapidă rată, așa că lăsați-l ca 15 SPS, dacă nu este necesar altfel. Bitul 4 setează eșantionarea continuă (0) sau eșantionarea unică (1). Ignorați biții 5 și 6, totuși sunt întotdeauna setați ca 0.

În cele din urmă bitul 7 - dacă sunteți în modul de eșantionare unic, setarea acestuia la 1 solicită un eșantion - și citirea acestuia vă va spune dacă datele returnate sunt noi (0) sau vechi (1). Puteți verifica dacă valoarea măsurată este o valoare nouă - dacă primul bit al octetului de configurație care vine după date este 0, este nou. Dacă returnează 1, conversia ADC nu s-a încheiat.

Pasul 3: înregistrarea datelor

Deoarece ADS1110 este un ADC pe 16 biți, acesta returnează datele pe doi octeți - și apoi urmează cu valoarea registrului de configurare. Deci, dacă solicitați trei octeți, întregul lot revine. Datele sunt sub forma „complementului doi”, care este o metodă de utilizare a numerelor semnate cu binare.

Conversia celor doi octeți se face prin câteva matematici simple. La eșantionarea la 15 SPS, valoarea returnată de ADS1110 (nu tensiunea) se încadrează între -32768 și 32767. Octetul superior al valorii este înmulțit cu 256, apoi adăugat la octetul inferior - care este apoi înmulțit cu 2.048 și, în final, împărțit la 32768. Nu vă panicați, deoarece facem acest lucru în următoarea schiță de exemplu.

Pasul 4: modul ADC cu un singur capăt

Mod ADC cu un singur capăt
Mod ADC cu un singur capăt

În acest mod puteți citi o tensiune care se încadrează între zero și 2.048 V (care se întâmplă, de asemenea, să fie tensiunea de referință încorporată pentru ADS1110). Exemplul de circuit este simplu (din fișa tehnică).

Nu uitați rezistențele de tracțiune de 10kΩ de pe magistrala I2C. Următoarea schiță utilizează ADS1110 în modul implicit și pur și simplu returnează tensiunea măsurată:

// Exemplul 53.1 - Voltmetru ADS1110 cu o singură față (0 ~ 2.048VDC) #include "Wire.h" #define ads1110 0x48 tensiune plutitoare, date; octet highbyte, lowbyte, configRegister; void setup () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); while (Wire.available ()) // asigurați-vă că toate datele apar în {highbyte = Wire.read (); // high byte * B11111111 lowbyte = Wire.read (); // low byte configRegister = Wire.read (); }

date = highbyte * 256;

date = date + lowbyte; Serial.print ("Date >>"); Serial.println (date, DEC); Serial.print ("Voltage >>"); tensiune = date * 2.048; tensiune = tensiune / 32768.0; Serial.print (tensiune, DEC); Serial.println ("V"); întârziere (1000); }

Pasul 5:

Imagine
Imagine

După încărcare, conectați semnalul pentru a măsura și deschide monitorul serial - vi se va prezenta ceva similar cu imaginea monitorului serial prezentată în acest pas.

Dacă trebuie să modificați câștigul amplificatorului intern de câștig programabil al ADC - va trebui să scrieți un nou octet în registrul de configurare folosind:

Wire.beginTransmission (ads1110); Wire.write (octet de configurare); Wire.endTransmission ();

înainte de a solicita datele ADC. Acesta ar fi 0x8D, 0x8E sau 0x8F pentru valori de câștig de 2, 4 și respectiv 8 - și utilizați 0x8C pentru a reseta ADS1110 la valorile implicite.

Pasul 6: Mod diferențial ADC

Mod diferențial ADC
Mod diferențial ADC

În acest mod puteți citi diferența dintre două tensiuni care se încadrează între zero și 5 V. Circuitul de exemplu este simplu (din foaia de date).

Trebuie să menționăm aici (și în fișa tehnică) că ADS1110 nu poate accepta tensiuni negative pe oricare dintre intrări. Puteți utiliza schița anterioară pentru aceleași rezultate - iar tensiunea rezultată va fi valoarea lui Vin - scăzută din Vin +. De exemplu, dacă ați avea 2 V pe Vin + și 1 V pe Vin- tensiunea rezultată ar fi 1 V (cu câștigul setat la 1).

Încă o dată sperăm că ați găsit acest lucru de interes și, eventual, util. Această postare ți-a fost adusă de pmdway.com - totul pentru producătorii și pasionații de electronice, cu livrare gratuită în toată lumea.

Recomandat: