Obsah:
- Krok 1:
- Krok 2: Konfigurační registr
- Krok 3: Registrace dat
- Krok 4: Jednostranný režim ADC
- Krok 5:
- Krok 6: Diferenční režim ADC
Video: Arduino a 16bitový ADC TI ADS1110: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
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:
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
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:
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
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:
Jak vytvořit aktuální smysl ADC: 5 kroků
Jak vytvořit smysl pro proud ADC: V tomto Instructable popíšeme, jak implementovat 8bitový převodník analogově-digitálního signálu (ADC) do SLG46855V, který dokáže snímat proud zátěže a rozhraní s MCU přes I2C. Tuto konstrukci lze použít pro různé aplikace snímání proudu, jako je
7segmentové zobrazení hodnot ADC #Arduino, #Arduino: 4 kroky
7segmentové zobrazení hodnot ADC #Arduino, #Arduino: V tomto článku vytvořím projekt, který stále souvisí s předchozím článkem. Jmenovitě zpracování dat ADC. Takže nepotřebujete sériový monitor, abyste viděli hodnotu dat adc. v tomto článku udělám zobrazení prohlížeče hodnot ADC. takže ty
Arduino a PCF8591 ADC DAC IC: 7 kroků
Arduino a PCF8591 ADC DAC IC: Chtěli jste někdy na svém projektu Arduino více analogových vstupních pinů, ale nechtěli jste rozšířit Mega? Nebo chcete generovat analogové signály? Pak se podívejte na předmět našeho tutoriálu - NXP PCF8591 IC. Řeší oba tyto problémy
Dobíjecí digitální voltmetr pomocí ICL7107 ADC: 7 kroků (s obrázky)
Dobíjecí digitální voltmetr pomocí ICL7107 ADC: V tomto tutoriálu vám ukážu, jak vytvořit super jednoduchý digitální voltmetr, který dokáže měřit napětí od 20 mV do 200V. Tento projekt nebude používat žádný mikrokontrolér jako arduino. Místo toho bude použit ADC, tj. ICL7107 s některými
Úvod do ADC v mikrokontroléru AVR - pro začátečníky: 14 kroků
Úvod do ADC v mikrokontroléru AVR | pro začátečníky: V tomto tutoriálu se dozvíte vše o ADC v mikrokontroléru AVR