Sisukord:

Arduino ja TI ADS1110 16-bitine ADC: 6 sammu
Arduino ja TI ADS1110 16-bitine ADC: 6 sammu

Video: Arduino ja TI ADS1110 16-bitine ADC: 6 sammu

Video: Arduino ja TI ADS1110 16-bitine ADC: 6 sammu
Video: LDmicro 10: Регулятор температуры инкубатора (лестничное программирование ПЛК микроконтроллера с помощью LDmicro) 2024, Juuli
Anonim
Arduino ja TI ADS1110 16-bitine ADC
Arduino ja TI ADS1110 16-bitine ADC

Selles õpetuses uurime Arduino kasutamist tööks Texas Instruments ADS1110-ga-uskumatult pisike, kuid kasulik 16-bitine analoog-digitaalmuundur IC.

See võib töötada vahemikus 2,7 kuni 5,5 V, nii et see sobib ka Arduino Due ja muude madalama pingega arendusplaatide jaoks. Enne jätkamist laadige palun alla andmeleht (pdf), kuna see on kasulik ja sellele õpetuse ajal viidatakse. ADS1110 annab teile täpsema ADC võimaluse, kui seda pakuvad Arduino 10-bitised ADC-d-ja seda on suhteliselt lihtne kasutada. Kuid see on saadaval ainult SOT23-6 palja osana.

Samm 1:

Pilt
Pilt

Hea uudis on see, et saate tellida ADS1110 paigaldatuna väga mugavale plaadile. ADS1110 kasutab suhtlemiseks I2C -bussi. Ja kuna seal on ainult kuus tihvti, ei saa siiniaadressi määrata - selle asemel saate valida ADS1110 kuue variandi hulgast - igaühel on oma aadress (vt andmelehe teine lehekülg).

Nagu näete ülaltoodud fotol, on meie märge “EDO”, mis sobib bussi aadressiga 1001000 või 0x48h. Ja näiteahelate puhul oleme I2C siinil kasutanud 10 kΩ tõmbetakistit.

Saate kasutada ADS1110 kas ühe- või diferentsiaalse ADC-na-kuid kõigepealt peame uurima konfiguratsiooniregistrit, mida kasutatakse erinevate atribuutide juhtimiseks, ja andmeregistrit.

2. samm: seadistuste register

Pöörake andmelehe üheteistkümnendale lehele. Konfiguratsiooniregister on ühe baidi suurune ja kuna ADS1110 lähtestab töötsükli ajal-peate registri lähtestama, kui teie vajadused erinevad vaikeväärtustest. Andmeleht kirjeldab seda üsna korralikult … bitid 0 ja 1 määravad PGA (programmeeritava võimendusega võimendi) võimenduse.

Kui mõõdate lihtsalt pingeid või katsetate, jätke need 1V/V võimenduseks nulliks. Järgmisena juhitakse ADS1110 andmeedastuskiirust bittidega 2 ja 3. Kui teil on pidev proovivõtmine sisse lülitatud, määrab see kindlaks ADC võetud proovide arvu sekundis.

Pärast mõningast katsetamist Arduino Unoga leidsime, et ADC -lt tagastatud väärtused olid kiireima kiiruse kasutamisel pisut väljas, seega jätke see väärtuseks 15 SPS, kui ei nõuta teisiti. Bitt 4 määrab kas pideva proovivõtmise (0) või ühekordse proovivõtmise (1). Ignoreerige bitte 5 ja 6, kuid need on alati seatud väärtuseks 0.

Lõpuks bitt 7-kui olete ühekordses proovivõturežiimis, nõuab selle määramine väärtusele 1 proovi-ja selle lugemine ütleb teile, kas tagastatud andmed on uued (0) või vanad (1). Saate kontrollida, kas mõõdetud väärtus on uus väärtus - kui konfiguratsioonibaidi esimene bit, mis pärast andmeid on 0, on see uus. Kui see tagastab 1, pole ADC teisendamine lõppenud.

3. samm: andmeregister

Kuna ADS1110 on 16-bitine ADC, tagastab see andmed kahe baidi ulatuses ja järgneb seejärel konfiguratsiooniregistri väärtusele. Nii et kui taotlete kolme baiti, tuleb kogu partii tagasi. Andmed on vormis „kahe täiendus”, mis on meetod binaarsete allkirjastatud numbrite kasutamiseks.

Nende kahe baidi teisendamine toimub mõne lihtsa matemaatika abil. Proovi võtmisel 15 SPS -i korral jääb ADS1110 tagastatav väärtus (mitte pinge) vahemikku -32768 ja 32767. Väärtuse kõrgem bait korrutatakse 256 -ga, seejärel lisatakse see alumisele baidile -mis seejärel korrutatakse 2,048 -ga ja lõpuks jagatud 32768. Ärge paanitsege, sest me teeme seda eelseisva näite visandis.

Samm: ühepoolne ADC-režiim

Ühepoolne ADC-režiim
Ühepoolne ADC-režiim

Selles režiimis saate lugeda pinget, mis jääb nulli ja 2,048 V vahele (mis on ka ADS1110 sisseehitatud võrdluspinge). Näiteahel on lihtne (andmelehelt).

Ärge unustage I2C siinil olevaid 10 kΩ tõmbetakistusi. Järgmine visand kasutab vaikerežiimis ADS1110 ja tagastab lihtsalt mõõdetud pinge:

// Näide 53.1 - ADS1110 ühepoolne voltmeeter (0 ~ 2,048VDC) #sisaldab "Wire.h" #define ads1110 0x48 ujukpinge, andmed; bait suurbait, madalbait, configRegister; void setup () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); while (Wire.available ()) // veenduge, et kõik andmed oleksid {highbyte = Wire.read (); // kõrge bait * B11111111 lowbyte = Wire.read (); // madala baidiga configRegister = Wire.read (); }

andmed = highbyte * 256;

andmed = andmed + madalbait; Serial.print ("Andmed >>"); Serial.println (andmed, DEC); Serial.print ("Pinge >>"); pinge = andmed * 2,048; pinge = pinge / 32768.0; Seeriaprint (pinge, DEC); Serial.println ("V"); viivitus (1000); }

5. samm:

Pilt
Pilt

Pärast üleslaadimist ühendage signaal jadamonitori mõõtmiseks ja avage - teile esitatakse midagi sarnast selles etapis näidatud jadamonitori kujutisega.

Kui teil on vaja muuta ADC sisemise programmeeritava võimenduse võimendust - peate konfiguratsiooniregistrisse kirjutama uue baidi, kasutades järgmist:

Wire.beginTransmission (ads1110); Wire.write (konfiguratsioonibait); Wire.endTransmission ();

enne ADC andmete küsimist. See oleks 0x8D, 0x8E või 0x8F vastavalt võimendusväärtustele 2, 4 ja 8 - ning kasutage 0x8C, et lähtestada ADS1110 vaikimisi.

6. samm: diferentsiaalne ADC -režiim

Diferentsiaalne ADC -režiim
Diferentsiaalne ADC -režiim

Selles režiimis saate lugeda erinevust kahe pinge vahel, mis langevad nulli ja 5 V vahele. Näiteahel on lihtne (andmelehelt).

Peame siin (ja andmelehel) märkima, et ADS1110 ei saa kummagi sisendi puhul vastu võtta negatiivseid pingeid. Samade tulemuste saamiseks võite kasutada eelmist visandit- ja saadud pinge on Vin+väärtus, mis on lahutatud Vin+-st. Näiteks kui teil oli 2 V pingel Vin ja 1 V tootel Vin, oleks saadud pinge 1 V (võimendusega 1).

Loodame veel kord, et leidsite selle huvi ja võib -olla kasulikuks. Selle postituse tõi teile pmdway.com - kõik tegijatele ja elektroonikahuvilistele, tasuta kohaletoimetamine kogu maailmas.

Soovitan: