Kazalo:

Arduino in 16-bitni ADC TI ADS1110: 6 korakov
Arduino in 16-bitni ADC TI ADS1110: 6 korakov

Video: Arduino in 16-bitni ADC TI ADS1110: 6 korakov

Video: Arduino in 16-bitni ADC TI ADS1110: 6 korakov
Video: Getting Started with ADC Functionality of ESP32 using MicroPython 2024, November
Anonim
Arduino in 16-bitni ADC TI ADS1110
Arduino in 16-bitni ADC TI ADS1110

V tej vadnici preučujemo uporabo Arduina za delo s Texas Instruments ADS1110-neverjetno majhnim, a uporabnim 16-bitnim analogno-digitalnim pretvornikom IC.

Deluje lahko med 2,7 in 5,5 V, zato je primeren tudi za Arduino Due in druge nizkonapetostne razvojne plošče. Preden nadaljujete, prenesite podatkovni list (pdf), saj bo koristen in nanj omenjen v tem vodiču. ADS1110 ponuja možnost natančnejšega ADC-ja, kot ga ponujajo 10-bitni ADC-ji Arduino-in je relativno enostaven za uporabo. Vendar je na voljo samo kot goli del v SOT23-6.

Korak 1:

Slika
Slika

Dobra novica je, da lahko naročite ADS1110, nameščen na zelo priročni odklopni plošči. ADS1110 za komunikacijo uporablja vodilo I2C. Ker samo šest zatičev ne morete nastaviti naslova vodila - namesto tega lahko izbirate med šestimi različicami ADS1110 - vsaka s svojim naslovom (glejte drugo stran podatkovnega lista).

Kot lahko vidite na zgornji fotografiji, je naš označen z "EDO", ki se ujema z naslovom avtobusa 1001000 ali 0x48h. Z vzorčnimi vezji smo na vodilu I2C uporabili 10 kΩ vlečne upore.

ADS1110 lahko uporabite kot enojni ali diferenčni ADC-najprej pa moramo pregledati konfiguracijski register, ki se uporablja za nadzor različnih atributov, in podatkovni register.

2. korak: Register konfiguracije

Pojdite na enajsto stran podatkovnega lista. Konfiguracijski register je velik en bajt in ker se ADS1110 ponastavi na cikel napajanja-morate ponastaviti register, če se vaše potrebe razlikujejo od privzetih. V podatkovnem listu je to zelo lepo zapisano … bita 0 in 1 določata nastavitev ojačanja za PGA (programabilni ojačevalnik ojačanja).

Če samo merite napetosti ali eksperimentirate, pustite te vrednosti nič za dobiček 1 V/V. Nato se hitrost prenosa podatkov za ADS1110 nadzira z bitoma 2 in 3. Če imate vklopljeno neprekinjeno vzorčenje, to določa število vzorcev na sekundo, ki jih sprejme ADC.

Po nekaj poskusih z Arduino Uno smo ugotovili, da so bile vrednosti, vrnjene iz ADC -ja, pri uporabi najhitrejše stopnje nekoliko onemogočene, zato pustite, da je 15 SPS, če ni zahtevano drugače. Bit 4 nastavi bodisi neprekinjeno vzorčenje (0) bodisi enkratno vzorčenje (1). Zanemarite bita 5 in 6, vendar sta vedno nastavljena na 0.

Končno bit 7-če ste v enkratnem načinu vzorčenja, nastavitev na 1 zahteva vzorec-in ob branju vam bo povedal, ali so vrnjeni podatki novi (0) ali stari (1). Lahko preverite, ali je izmerjena vrednost nova vrednost - če je prvi bit konfiguracijskega bajta, ki pride po podatkih 0, je nov. Če vrne 1, pretvorba ADC ni končana.

3. korak: Register podatkov

Ker je ADS1110 16-bitni ADC, podatke vrne v dveh bajtih-in nato sledi vrednost konfiguracijskega registra. Če torej zahtevate tri bajte, se celotna serija vrne. Podatki so v obliki "komplementa dveh", ki je metoda uporabe podpisanih številk z binarnim sistemom.

Pretvarjanje teh dveh bajtov poteka z nekaj preprostimi matematikami. Pri vzorčenju pri 15 SPS vrednost, ki jo vrne ADS1110 (ne napetost), pade med -32768 in 32767. Višji bajt vrednosti se pomnoži s 256, nato se doda spodnjemu bajtu -ki se nato pomnoži z 2,048 in na koncu deljeno z 32768. Brez panike, saj to počnemo v prihajajoči vzorčni skici.

4. korak: Enosmerni način ADC

Enosmerni način ADC
Enosmerni način ADC

V tem načinu lahko berete napetost, ki pade med ničlo in 2,048 V (kar je tudi vgrajena referenčna napetost za ADS1110). Primer vezja je preprost (iz podatkovnega lista).

Ne pozabite na 10 kΩ vlečne upore na vodilu I2C. Naslednja skica uporablja ADS1110 v privzetem načinu in preprosto vrne izmerjeno napetost:

// Primer 53.1 - enostranski voltmeter ADS1110 (0 ~ 2.048VDC) #include "Wire.h" #define ads1110 0x48 plavajoča napetost, podatki; byte highbyte, lowbyte, configRegister; void setup () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); while (Wire.available ()) // zagotovimo, da so vsi podatki v {highbyte = Wire.read (); // visoki bajt * B11111111 nizkobajt = Wire.read (); // nizkobajtni configRegister = Wire.read (); }

podatki = visoki bajt * 256;

podatki = podatki + nizkobajt; Serial.print ("Podatki >>"); Serial.println (podatki, DEC); Serial.print ("Napetost >>"); napetost = podatki * 2.048; napetost = napetost / 32768,0; Serijski.tisk (napetost, DEC); Serial.println ("V"); zamuda (1000); }

5. korak:

Slika
Slika

Ko naložite, priključite signal za merjenje in odprite serijski monitor - prikazano vam bo nekaj podobnega sliki serijskega monitorja, prikazani v tem koraku.

Če morate spremeniti ojačanje notranjega programabilnega ojačevalnika ojačevalnika ADC - morate vnesti nov bajt v konfiguracijski register z uporabo:

Wire.beginTransmission (ads1110); Wire.write (konfiguracijski bajt); Wire.endTransmission ();

preden zahtevate podatke ADC. To bi bilo 0x8D, 0x8E ali 0x8F za vrednosti ojačanja 2, 4 in 8 - in uporabite 0x8C za ponastavitev ADS1110 na privzeto.

Korak 6: Diferenčni način ADC

Diferenčni način ADC
Diferenčni način ADC

V tem načinu lahko preberete razliko med dvema napetostima, ki padeta med nič in 5 V. Primer tokokroga je preprost (iz podatkovnega lista).

Tukaj (in v podatkovnem listu) moramo opozoriti, da ADS1110 ne more sprejeti negativnih napetosti na nobenem od vhodov. Za iste rezultate lahko uporabite prejšnjo skico- nastala napetost bo vrednost Vin- odšteta od Vin+. Na primer, če bi imeli 2 V na Vin+ in 1 V na Vin- bi bila posledična napetost 1 V (z ojačitvijo nastavljeno na 1).

Še enkrat upamo, da vam je bilo to zanimivo in morda koristno. To objavo vam je predstavil pmdway.com - vse za ustvarjalce in navdušence nad elektroniko z brezplačno dostavo po vsem svetu.

Priporočena: