Obsah:

Arduino a 16-bitový ADC TI ADS1110: 6 krokov
Arduino a 16-bitový ADC TI ADS1110: 6 krokov

Video: Arduino a 16-bitový ADC TI ADS1110: 6 krokov

Video: Arduino a 16-bitový ADC TI ADS1110: 6 krokov
Video: Getting Started with ADC Functionality of ESP32 using MicroPython 2024, November
Anonim
Arduino a 16-bitový ADC TI ADS1110
Arduino a 16-bitový ADC TI ADS1110

V tomto návode sa pozrieme na použitie Arduina na prácu s Texas Instruments ADS1110-neuveriteľne malý, ale užitočný 16-bitový IC analógovo-digitálny prevodník.

Môže pracovať medzi 2,7 a 5,5 V, takže je vhodný aj pre Arduino Due a ďalšie vývojové dosky s nižším napätím. Predtým, ako budete pokračovať, stiahnite si údajový list (pdf), pretože bude užitočný a bude sa naň odkazovať počas tohto tutoriálu. ADS1110 vám ponúka možnosť presnejšieho ADC, ako ponúkajú 10-bitové ADC Arduina-a jeho použitie je relatívne jednoduché. Je však k dispozícii iba ako holá časť v SOT23-6.

Krok 1:

Obrázok
Obrázok

Dobrou správou je, že si môžete objednať ADS1110 namontovaný na veľmi praktickej odpočinkovej doske. ADS1110 používa na komunikáciu zbernicu I2C. A pretože existuje iba šesť kolíkov, nemôžete nastaviť adresu zbernice - namiesto toho si môžete vybrať zo šiestich variantov ADS1110 - každý so svojou vlastnou adresou (pozri stranu dva údajového listu).

Ako vidíte na vyššie uvedenej fotografii, náš je označený „EDO“, ktorý sa zhoduje s adresou autobusu 1001000 alebo 0x48h. A v príkladoch obvodov sme na zbernici I2C použili zdvíhacie odpory 10 kΩ.

ADS1110 môžete používať ako jednostranný alebo diferenciálny ADC-Najprv však musíme preskúmať konfiguračný register, ktorý sa používa na ovládanie rôznych atribútov, a dátový register.

Krok 2: Konfiguračný register

Prejdite na stranu jedenásť údajového listu. Konfiguračný register má veľkosť jeden bajt a pretože sa ADS1110 resetuje pri napájacom cykle-register musíte resetovať, ak sa vaše potreby líšia od predvolených hodnôt. Dátový list to vysvetľuje celkom úhľadne … bity 0 a 1 určujú nastavenie zosilnenia pre PGA (programovateľný zosilňovač zisku).

Ak práve meriate napätie alebo experimentujete, nechajte ich na nule, aby ste získali zisk 1 V/V. Ďalej je dátová rýchlosť pre ADS1110 riadená bitmi 2 a 3. Ak máte zapnuté nepretržité vzorkovanie, toto určuje počet vzoriek za sekundu odobratých ADC.

Po nejakom experimentovaní s Arduino Uno sme zistili, že hodnoty vrátené z ADC boli pri použití najrýchlejšej rýchlosti trochu mimo, takže ak nie je požadované inak, nechajte to na 15 SPS. Bit 4 nastavuje buď nepretržité vzorkovanie (0), alebo jednorazové vzorkovanie (1). Ignorujte bity 5 a 6, ale vždy sú nastavené na 0.

Nakoniec bit 7-ak ste v jednorazovom režime vzorkovania, jeho nastavenie na 1 požaduje vzorku-a jeho prečítanie vám povie, či sú vrátené údaje nové (0) alebo staré (1). Môžete skontrolovať, či je nameraná hodnota novou hodnotou - ak je prvý bit konfiguračného bajtu, ktorý nasleduje za údajmi, 0, je to nové. Ak vráti hodnotu 1, konverzia ADC sa nedokončila.

Krok 3: Register údajov

Pretože je ADS1110 16-bitový ADC, vracia údaje cez dva bajty-a potom nasleduje s hodnotou konfiguračného registra. Ak teda požadujete tri bajty, celá dávka sa vráti. Údaje sú vo forme „dvojkového doplnku“, čo je spôsob použitia podpísaných čísel s binárnymi číslami.

Konverzia týchto dvoch bajtov sa vykonáva jednoduchou matematikou. Pri vzorkovaní pri 15 SPS klesne hodnota vrátená ADS1110 (nie napätie) medzi -32768 a 32767. Vyšší bajt hodnoty sa vynásobí 256, potom sa pridá k dolnému bajtu -ktorý sa potom vynásobí 2,048 a nakoniec delené 32768. Neprepadajte panike, pretože to robíme v nadchádzajúcom ukážkovom náčrte.

Krok 4: Jednostranný režim ADC

Jednostranný režim ADC
Jednostranný režim ADC

V tomto režime môžete čítať napätie, ktoré klesá medzi nulou a 2,048 V (čo je zhodou okolností aj zabudované referenčné napätie pre ADS1110). Príklad obvodu je jednoduchý (z technického listu).

Nezabudnite na výsuvné odpory 10 kΩ na zbernici I2C. Nasledujúca skica používa ADS1110 v predvolenom režime a jednoducho vracia namerané napätie:

// Príklad 53.1 - Jednostranný voltmetr ADS1110 (0 ~ 2,048VDC) #include "Wire.h" #define ads1110 0x48 plávajúce napätie, údaje; byte highbyte, lowbyte, configRegister; void setup () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); while (Wire.available ()) // zaistí, aby všetky údaje boli v {highbyte = Wire.read (); // vysoký bajt * B11111111 nízky bajt = Wire.read (); // low byte configRegister = Wire.read (); }

údaje = vysoký bajt * 256;

data = data + lowbyte; Serial.print ("Údaje >>"); Serial.println (údaje, DEC); Serial.print ("Napätie >>"); napätie = údaje * 2,048; napätie = napätie / 32768,0; Serial.print (napätie, DEC); Serial.println ("V"); oneskorenie (1000); }

Krok 5:

Obrázok
Obrázok

Po nahraní pripojte signál k meraniu a otvorte sériový monitor - zobrazí sa vám niečo podobné obrázku sériového monitora zobrazeného v tomto kroku.

Ak potrebujete zmeniť zosilnenie interného programovateľného zosilňovača zosilnenia ADC - budete musieť zapísať nový bajt do konfiguračného registra pomocou:

Wire.beginTransmission (ads1110); Wire.write (konfiguračný bajt); Wire.endTransmission ();

pred vyžiadaním údajov ADC. To by bolo 0x8D, 0x8E alebo 0x8F pre hodnoty zisku 2, 4 a 8 - a pomocou 0x8C resetujte ADS1110 späť na predvolené hodnoty.

Krok 6: Diferenciálny režim ADC

Diferenciálny režim ADC
Diferenciálny režim ADC

V tomto režime môžete čítať rozdiel medzi dvoma napätiami, z ktorých každé klesá medzi nulou a 5 V. Príklad obvodu je jednoduchý (z technického listu).

Tu (a v dátovom liste) musíme poznamenať, že ADS1110 nemôže akceptovať záporné napätie na žiadnom zo vstupov. Na rovnaké výsledky môžete použiť predchádzajúcu skicu- a výsledné napätie bude hodnotou Vin- odpočítanou od Vin+. Ak by ste napríklad mali 2 V na Vin+ a 1 V na Vin-, výsledné napätie by bolo 1 V (so ziskom nastaveným na 1).

Ešte raz dúfame, že vás to zaujalo a možno bude užitočné. Tento príspevok vám prináša pmdway.com - všetko pre výrobcov a nadšencov elektroniky s bezplatným doručením do celého sveta.

Odporúča: