İçindekiler:

Arduino ve TI ADS1110 16-bit ADC: 6 Adım
Arduino ve TI ADS1110 16-bit ADC: 6 Adım

Video: Arduino ve TI ADS1110 16-bit ADC: 6 Adım

Video: Arduino ve TI ADS1110 16-bit ADC: 6 Adım
Video: Getting Started with ADC Functionality of ESP32 using MicroPython 2024, Temmuz
Anonim
Arduino ve TI ADS1110 16-bit ADC
Arduino ve TI ADS1110 16-bit ADC

Bu eğitimde, inanılmaz derecede küçük ama kullanışlı bir 16-bit analog-dijital dönüştürücü IC olan Texas Instruments ADS1110 ile çalışmak için Arduino'yu kullanmayı inceliyoruz.

2,7 ile 5,5 V arasında çalışabilir, bu nedenle Arduino Due ve diğer düşük voltajlı geliştirme kartları için de uygundur. Daha fazla devam etmeden önce, faydalı olacağı ve bu eğitim sırasında atıfta bulunulacağı için lütfen veri sayfasını (pdf) indirin. ADS1110, Arduino'nun 10-bit ADC'leri tarafından sunulandan daha doğru bir ADC seçeneği sunar ve kullanımı nispeten kolaydır. Ancak SOT23-6'da yalnızca çıplak parça olarak mevcuttur.

Aşama 1:

resim
resim

İyi haber şu ki, ADS1110'u çok uygun bir devre kartına monte edilmiş olarak sipariş edebilirsiniz. ADS1110, iletişim için I2C veri yolunu kullanır. Ve sadece altı pin olduğu için bus adresini ayarlayamazsınız - bunun yerine, her biri kendi adresine sahip altı ADS1110 varyantı arasından seçim yapabilirsiniz (veri sayfasının ikinci sayfasına bakın).

Yukarıdaki fotoğrafta da görebileceğiniz gibi, bizimki 1001000 veya 0x48h otobüs adresine uyan “EDO” olarak işaretlenmiştir. Ve örnek devrelerde I2C veriyolunda 10kΩ pull-up dirençleri kullandık.

ADS1110'u tek uçlu veya diferansiyel ADC olarak kullanabilirsiniz - Ama önce çeşitli öznitelikleri kontrol etmek için kullanılan konfigürasyon kaydını ve veri kaydını incelememiz gerekiyor.

Adım 2: Yapılandırma Kaydı

Veri sayfasının on birinci sayfasına dönün. Yapılandırma kaydı bir bayt boyutundadır ve ADS1110 bir güç döngüsünde sıfırlandığından, ihtiyaçlarınız varsayılanlardan farklıysa kaydı sıfırlamanız gerekir. Veri sayfası oldukça düzgün bir şekilde açıklıyor… bit 0 ve 1, PGA (programlanabilir kazanç amplifikatörü) için kazanç ayarını belirler.

Sadece voltajları ölçüyor veya deney yapıyorsanız, 1V/V kazanç için bunları sıfır olarak bırakın. Ardından, ADS1110 için veri hızı bit 2 ve 3 ile kontrol edilir. Sürekli örnekleme açıksa, bu, ADC tarafından saniyede alınan örnek sayısını belirler.

Arduino Uno ile yapılan bazı deneylerden sonra, en hızlı hızı kullanırken ADC'den döndürülen değerlerin biraz kapalı olduğunu gördük, bu nedenle aksi gerekmedikçe 15 SPS olarak bırakın. Bit 4, sürekli örnekleme (0) veya bir kerelik örnekleme (1) ayarlar. Bit 5 ve 6'yı yoksayın, ancak bunlar her zaman 0 olarak ayarlanır.

Son olarak bit 7 – tek seferlik örnekleme modundaysanız, 1 olarak ayarlamak bir örnek ister – ve onu okumak, döndürülen verilerin yeni (0) veya eski (1) olup olmadığını size söyleyecektir. Ölçülen değerin yeni bir değer olup olmadığını kontrol edebilirsiniz – veriden sonra gelen konfigürasyon baytının ilk biti 0 ise, bu yenidir. 1 döndürürse, ADC dönüşümü bitmemiştir.

3. Adım: Veri Kaydı

ADS1110 16 bitlik bir ADC olduğundan, verileri iki bayt üzerinden döndürür ve ardından yapılandırma kaydının değeriyle devam eder. Yani üç bayt talep ederseniz, tüm parti geri gelir. Veriler, ikili ile imzalı sayıları kullanma yöntemi olan “ikinin tümleyeni” biçimindedir.

Bu iki baytı dönüştürmek bazı basit matematik işlemleriyle yapılır. 15 SPS'de örnekleme yapılırken, ADS1110 tarafından döndürülen değer (voltaj değil) -32768 ile 32767 arasında düşer. Değerin yüksek baytı 256 ile çarpılır, ardından daha düşük bayta eklenir - bu daha sonra 2.048 ile çarpılır ve son olarak 32768'e bölünür. Panik yapmayın, bunu bir sonraki örnek çizimde yapıyoruz.

Adım 4: Tek uçlu ADC Modu

Tek uçlu ADC Modu
Tek uçlu ADC Modu

Bu modda, sıfır ile 2.048 V arasında düşen bir voltajı okuyabilirsiniz (bu, ADS1110 için dahili referans voltajıdır). Örnek devre basittir (veri sayfasından).

I2C veriyolundaki 10kΩ pull-up dirençlerini unutmayın. Aşağıdaki çizim, varsayılan modda ADS1110'u kullanır ve basitçe ölçülen voltajı döndürür:

// Örnek 53.1 - ADS1110 tek taraflı voltmetre (0~2.048VDC) #include "Wire.h" #define ads1110 0x48 kayan voltaj, veri; bayt yüksek bayt, düşük bayt, configRegister; geçersiz kurulum() { Serial.begin(9600); Wire.begin(); } void loop() { Wire.requestFrom(ads1110, 3); while(Wire.available()) // tüm verilerin { highbyte = Wire.read(); // yüksek bayt * B11111111 lowbyte = Wire.read(); // düşük bayt configRegister = Wire.read(); }

veri = yüksek bayt * 256;

veri = veri + düşük bayt; Serial.print("Veri >> "); Seri.println(veri, Aralık); Serial.print("Voltaj >> "); voltaj = veri * 2.048; voltaj = voltaj / 32768.0; Serial.print(voltaj, DEC); Serial.println("V"); gecikme(1000); }

Adım 5:

resim
resim

Yüklendikten sonra, seri monitörü ölçmek ve açmak için sinyali bağlayın - bu adımda gösterilen seri monitör görüntüsüne benzer bir şeyle karşılaşacaksınız.

ADC'nin dahili programlanabilir kazanç yükselticisinin kazancını değiştirmeniz gerekirse, aşağıdakileri kullanarak yapılandırma kaydına yeni bir bayt yazmanız gerekir:

Wire.beginTransmission(ads1110);Wire.write(yapılandırma baytı); Wire.endTransmission();

ADC verilerini istemeden önce. Bu, sırasıyla 2, 4 ve 8 kazanç değerleri için 0x8D, 0x8E veya 0x8F olacaktır - ve ADS1110'u varsayılana sıfırlamak için 0x8C kullanın.

Adım 6: Diferansiyel ADC Modu

Diferansiyel ADC Modu
Diferansiyel ADC Modu

Bu modda, her biri sıfır ile 5 V arasında olan iki voltaj arasındaki farkı okuyabilirsiniz. Örnek devre basittir (veri sayfasından).

Burada (ve veri sayfasında) ADS1110'un girişlerden herhangi birinde negatif voltaj kabul edemeyeceğini belirtmeliyiz. Aynı sonuçlar için önceki taslağı kullanabilirsiniz - ve ortaya çıkan voltaj, Vin+'dan çıkarılan Vin- değeri olacaktır. Örneğin, Vin+'da 2 V ve Vin-'de 1 V olsaydı, elde edilen voltaj 1 V olurdu (kazanç 1'e ayarlanmış olarak).

Bir kez daha umarız bunu ilginizi çekmiş ve muhtemelen faydalı bulmuşsunuzdur. Bu gönderi size pmdway.com tarafından getirildi - dünya çapında ücretsiz teslimat ile üreticiler ve elektronik meraklıları için her şey.

Önerilen: