Cuprins:
- Pasul 1:
- Pasul 2: Configurare registru
- Pasul 3: înregistrarea datelor
- Pasul 4: modul ADC cu un singur capăt
- Pasul 5:
- Pasul 6: Mod diferențial ADC
Video: Arduino și TI ADS1110 ADC pe 16 biți: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Î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:
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
Î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:
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
Î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:
Raspberry Pi MMA8452Q 3-Axis Tutorial accelerator digital Python pe 12 biți / 8 biți: 4 pași
Raspberry Pi MMA8452Q 3-Axis 12-bit / 8-bit Accelerometru digital Python Tutorial: MMA8452Q este un accelerometru inteligent, de mică putere, cu trei axe, capacitiv, micromachined, cu 12 biți de rezoluție. Opțiuni flexibile programabile de utilizator sunt furnizate cu ajutorul funcțiilor încorporate în accelerometru, configurabile pentru două întreruperi
Nano Pixeli 26 de biți folosind Arduino: 4 pași
Nano Pixels 26 Bit Folosind Arduino: În articolul meu anterior, am făcut un tutorial despre cum să utilizez LED-ul WS2812 Nano Pixel. În acel articol, am folosit Nano Pixel WS2812 pe 16 biți. Și în acest articol, vă voi arăta cum să utilizați inelul de 26 biți Nano Pixeli WS2812. În secțiunea hardware
8 biți Arduino Binary Counter: 6 pași
8 Biti Arduino Binary Counter: 8 Bits Arduino Binary Counter van count from 0 to 255. Acest proiect este un contor cu 8 LED-uri pentru a fi conectat la pinul Arduino 5, 3, 4, 7, 10, 11, 12 & 13 astfel încât să se numere de la dreapta la stânga generând coduri de la zero la 255
Generator de sunet MIDI / Arduino controlat pe 8 biți (AY-3-8910): 5 pași
MIDI / Arduino Controled 8-Bit Sound Generator (AY-3-8910): Construiți un generator de sunet retro 8-Bit și controlați-l prin MIDI. Acest design este parțial inspirat de entuziaștii Chiptune care construiesc circuite Arduino pentru a reda fișiere Chiptune și unele dintre propriile mele idei de a integra sunetul dezavantajelor timpurii ale jocurilor video
Jocuri Arduino pe 8 biți: 4 pași
Jocuri Arduino pe 8 biți: Bună, băieți! Acesta va fi un tutorial simplu despre cum să construiți o configurație de jocuri pe 8 biți folosind un arduino