Obsah:

Arduino a 16bitový ADC TI ADS1110: 6 kroků
Arduino a 16bitový ADC TI ADS1110: 6 kroků

Video: Arduino a 16bitový ADC TI ADS1110: 6 kroků

Video: Arduino a 16bitový ADC TI ADS1110: 6 kroků
Video: Getting Started with ADC Functionality of ESP32 using MicroPython 2024, Červenec
Anonim
Arduino a 16bitový ADC TI ADS1110
Arduino a 16bitový ADC TI ADS1110

V tomto tutoriálu zkoumáme použití Arduina pro práci s Texas Instruments ADS1110-neuvěřitelně malý, ale užitečný 16bitový IC analogově-digitální převodník.

Může pracovat mezi 2,7 a 5,5 V, takže je také vhodný pro Arduino Due a další vývojové desky s nižším napětím. Než budete pokračovat, stáhněte si datový list (pdf), protože bude užitečný a bude na něj odkazováno během tohoto tutoriálu. ADS1110 vám nabízí možnost přesnějšího ADC, než jaké nabízejí 10bitové ADC Arduina-a jeho použití je relativně snadné. Je však k dispozici pouze jako holý díl v SOT23-6.

Krok 1:

obraz
obraz

Dobrou zprávou je, že si můžete objednat ADS1110 namontovaný na velmi pohodlné desce. ADS1110 používá ke komunikaci sběrnici I2C. A protože existuje pouze šest pinů, nemůžete nastavit adresu sběrnice - místo toho si můžete vybrat ze šesti variant ADS1110 - každý s vlastní adresou (viz druhá strana datového listu).

Jak vidíte na výše uvedené fotografii, naše je označena „EDO“, což odpovídá adrese sběrnice 1001000 nebo 0x48h. A v příkladných obvodech jsme použili sběrnicové odpory 10 kΩ na sběrnici I2C.

ADS1110 můžete použít buď jako jednostranný nebo diferenciální ADC-Nejprve ale musíme prozkoumat konfigurační registr, který slouží k ovládání různých atributů, a datový registr.

Krok 2: Konfigurační registr

Přejděte na stranu jedenáct datového listu. Konfigurační registr má velikost jeden bajt a jak se ADS1110 resetuje při cyklu napájení-pokud se vaše potřeby liší od výchozích hodnot, musíte resetovat registr. Datový list to vysvětluje docela úhledně … bity 0 a 1 určují nastavení zesílení pro PGA (programovatelný zesilovač zisku).

Pokud právě měříte napětí nebo experimentujete, nechte je na nule pro zisk 1 V/V. Dále je rychlost dat pro ADS1110 řízena bity 2 a 3. Pokud máte zapnuté kontinuální vzorkování, určuje to počet vzorků za sekundu odebraných ADC.

Po několika experimentech s Arduino Uno jsme zjistili, že hodnoty vrácené z ADC byly při použití nejrychlejšího kurzu trochu mimo, takže ponechte 15 SPS, pokud není požadováno jinak. Bit 4 nastavuje buď kontinuální vzorkování (0), nebo jednorázové vzorkování (1). Ignorujte bity 5 a 6, ale vždy jsou nastaveny jako 0.

Nakonec bit 7-pokud jste v jednorázovém režimu vzorkování, jeho nastavení na 1 vyžaduje vzorek-a jeho čtení vám řekne, zda jsou vrácená data nová (0) nebo stará (1). Můžete zkontrolovat, že naměřená hodnota je nová hodnota - pokud je první bit konfiguračního bajtu, který přichází po datech, 0, je to nové. Pokud vrátí hodnotu 1, převod ADC nebyl dokončen.

Krok 3: Registrace dat

Protože je ADS1110 16bitový ADC, vrací data přes dva bajty-a poté následuje s hodnotou konfiguračního registru. Pokud tedy požadujete tři bajty, celá šarže se vrátí. Data jsou ve formě „dvojkového doplňku“, což je metoda použití podepsaných čísel s binárními čísly.

Převod těchto dvou bajtů se provádí jednoduchou matematikou. Při vzorkování při 15 SPS klesne hodnota vrácená ADS1110 (nikoli napětí) mezi -32768 a 32767. Vyšší bajt hodnoty se vynásobí 256, poté se přičte k nižšímu bajtu -který se pak vynásobí 2,048 a nakonec děleno 32768. Nepropadejte panice, protože to děláme v nadcházejícím příkladu skici.

Krok 4: Jednostranný režim ADC

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

V tomto režimu můžete číst napětí, které klesá mezi nulou a 2,048 V (což je shodou okolností také vestavěné referenční napětí pro ADS1110). Příklad obvodu je jednoduchý (z datového listu).

Nezapomeňte na 10kΩ výsuvné odpory na sběrnici I2C. Následující skica používá ADS1110 ve výchozím režimu a jednoduše vrací naměřené napětí:

// Příklad 53.1 - jednostranný voltmetr ADS1110 (0 ~ 2,048VDC) #include "Wire.h" #definovat ads1110 0x48 plovoucí napětí, data; byte highbyte, lowbyte, configRegister; neplatné nastavení () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); while (Wire.available ()) // zajistí, aby všechna data přišla v {highbyte = Wire.read (); // vysoký byte * B11111111 lowbyte = Wire.read (); // low byte configRegister = Wire.read (); }

data = vysoký byt * 256;

data = data + lowbyte; Serial.print ("Data >>"); Serial.println (data, DEC); Serial.print ("Napětí >>"); napětí = data * 2,048; napětí = napětí / 32768,0; Serial.print (napětí, DEC); Serial.println ("V"); zpoždění (1000); }

Krok 5:

obraz
obraz

Po nahrání připojte signál k měření a otevřete sériový monitor - zobrazí se vám něco podobného obrazu sériového monitoru zobrazeného v tomto kroku.

Pokud potřebujete změnit zesílení interního programovatelného zesilovače zisku ADC - budete muset zapsat nový bajt do konfiguračního registru pomocí:

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

před vyžádáním dat ADC. To by bylo 0x8D, 0x8E nebo 0x8F pro hodnoty zisku 2, 4 a 8 - a pomocí 0x8C resetujte ADS1110 zpět na výchozí hodnoty.

Krok 6: Diferenční režim ADC

Diferenční režim ADC
Diferenční režim ADC

V tomto režimu můžete přečíst rozdíl mezi dvěma napětími, která se pohybují mezi nulou a 5 V. Příklad obvodu je jednoduchý (z datového listu).

Zde (a v datovém listu) musíme poznamenat, že ADS1110 nemůže přijímat záporná napětí na žádném ze vstupů. Pro stejné výsledky můžete použít předchozí skicu- a výsledné napětí bude hodnotou Vin- odečteno od Vin+. Pokud byste například měli 2 V na Vin+ a 1 V na Vin-, výsledné napětí by bylo 1 V (se ziskem nastaveným na 1).

Ještě jednou doufáme, že vás to zaujalo a možná bude užitečné. Tento příspěvek vám přinesl web pmdway.com - vše pro výrobce a nadšence do elektroniky s doručením zdarma po celém světě.

Doporučuje: