Daftar Isi:

Arduino dan TI ADS1110 16-bit ADC: 6 Langkah
Arduino dan TI ADS1110 16-bit ADC: 6 Langkah

Video: Arduino dan TI ADS1110 16-bit ADC: 6 Langkah

Video: Arduino dan TI ADS1110 16-bit ADC: 6 Langkah
Video: Getting Started with ADC Functionality of ESP32 using MicroPython 2024, Juli
Anonim
Arduino dan TI ADS1110 16-bit ADC
Arduino dan TI ADS1110 16-bit ADC

Dalam tutorial ini kami memeriksa penggunaan Arduino untuk bekerja dengan Texas Instruments ADS1110 – IC konverter analog-ke-digital 16-bit yang sangat kecil namun berguna.

Ini dapat beroperasi antara 2,7 dan 5,5 V sehingga juga baik untuk Arduino Due dan papan pengembangan tegangan rendah lainnya. Sebelum melanjutkan lebih jauh, silakan unduh lembar data (pdf) karena akan berguna dan dirujuk selama tutorial ini. ADS1110 memberi Anda pilihan ADC yang lebih akurat daripada yang ditawarkan oleh ADC 10-bit Arduino – dan itu relatif mudah digunakan. Namun itu hanya tersedia sebagai bagian kosong di SOT23-6.

Langkah 1:

Gambar
Gambar

Kabar baiknya adalah Anda dapat memesan ADS1110 yang dipasang pada papan breakout yang sangat nyaman. ADS1110 menggunakan bus I2C untuk komunikasi. Dan karena hanya ada enam pin, Anda tidak dapat mengatur alamat bus – sebagai gantinya, Anda dapat memilih dari enam varian ADS1110 – masing-masing dengan alamatnya sendiri (lihat halaman dua lembar data).

Seperti yang Anda lihat pada foto di atas, milik kami bertanda “EDO” yang cocok dengan alamat bus 1001000 atau 0x48h. Dan dengan contoh rangkaian kami telah menggunakan resistor pull-up 10kΩ pada bus I2C.

Anda dapat menggunakan ADS1110 sebagai ADC ujung tunggal atau diferensial – Tetapi pertama-tama kita perlu memeriksa register konfigurasi yang digunakan untuk mengontrol berbagai atribut, dan register data.

Langkah 2: Daftar Konfigurasi

Buka halaman sebelas lembar data. Register konfigurasi berukuran satu byte, dan saat ADS1110 direset pada siklus daya – Anda perlu mereset register jika kebutuhan Anda berbeda dengan default. Lembar data menjelaskannya dengan cukup rapi… bit 0 dan 1 menentukan pengaturan penguatan untuk PGA (penguat gain yang dapat diprogram).

Jika Anda hanya mengukur tegangan atau bereksperimen, biarkan ini sebagai nol untuk penguatan 1V/V. Selanjutnya, kecepatan data untuk ADS1110 dikontrol dengan bit 2 dan 3. Jika pengambilan sampel kontinu diaktifkan, ini menentukan jumlah sampel per detik yang diambil oleh ADC.

Setelah beberapa percobaan dengan Arduino Uno, kami menemukan bahwa nilai yang dikembalikan dari ADC sedikit berbeda saat menggunakan kecepatan tercepat, jadi biarkan sebagai 15 SPS kecuali diperlukan sebaliknya. Bit 4 menetapkan pengambilan sampel kontinu (0) atau pengambilan sampel satu kali (1). Abaikan bit 5 dan 6, namun selalu disetel sebagai 0.

Akhirnya bit 7 – jika Anda berada dalam mode pengambilan sampel satu kali, menyetelnya ke 1 meminta sampel – dan membacanya akan memberi tahu Anda apakah data yang dikembalikan baru (0) atau lama (1). Anda dapat memeriksa apakah nilai yang diukur adalah nilai baru – jika bit pertama dari byte konfigurasi yang muncul setelah data adalah 0, itu baru. Jika mengembalikan 1 konversi ADC belum selesai.

Langkah 3: Daftar Data

Karena ADS1110 adalah ADC 16-bit, ia mengembalikan data lebih dari dua byte – dan kemudian mengikuti nilai register konfigurasi. Jadi jika Anda meminta tiga byte, semuanya akan kembali. Data dalam bentuk “pelengkap dua”, yaitu metode menggunakan bilangan bertanda dengan biner.

Mengonversi dua byte itu dilakukan dengan beberapa matematika sederhana. Saat pengambilan sampel pada 15 SPS, nilai yang dikembalikan oleh ADS1110 (bukan tegangan) turun antara -32768 dan 32767. Nilai byte yang lebih tinggi dikalikan dengan 256, kemudian ditambahkan ke byte yang lebih rendah – yang kemudian dikalikan dengan 2,048 dan terakhir dibagi 32768. Jangan panik, seperti yang kita lakukan dalam sketsa contoh yang akan datang.

Langkah 4: Mode ADC ujung tunggal

Mode ADC ujung tunggal
Mode ADC ujung tunggal

Dalam mode ini Anda dapat membaca tegangan yang turun antara nol dan 2,048 V (yang juga merupakan tegangan referensi bawaan untuk ADS1110). Contoh rangkaian sederhana (dari lembar data).

Jangan lupa resistor pull-up 10kΩ pada bus I2C. Sketsa berikut menggunakan ADS1110 dalam mode default, dan hanya mengembalikan tegangan yang diukur:

// Contoh 53.1 - voltmeter satu sisi ADS1110 (0~2.048VDC) #include "Wire.h" #define ads1110 0x48 tegangan float, data; byte byte tinggi, byte rendah, configRegister; void setup() { Serial.begin(9600); Kawat.mulai(); } void loop() { Wire.requestFrom(ads1110, 3); while(Wire.available()) // memastikan semua data masuk { highbyte = Wire.read(); // byte tinggi * B11111111 byte rendah = Wire.read(); // byte rendah configRegister = Wire.read(); }

data = byte tinggi * 256;

data = data + byte rendah; Serial.print("Data>>"); Serial.println(data, DES); Serial.print("Tegangan >> "); tegangan = data * 2,048; tegangan = tegangan / 32768.0; Serial.print (tegangan, DEC); Serial.println("V"); penundaan (1000); }

Langkah 5:

Gambar
Gambar

Setelah diunggah, sambungkan sinyal untuk mengukur dan membuka monitor serial – Anda akan disajikan sesuatu yang mirip dengan gambar monitor serial yang ditunjukkan pada langkah ini.

Jika Anda perlu mengubah penguatan penguat penguatan internal yang dapat diprogram dari ADC – Anda harus menulis byte baru ke dalam register konfigurasi menggunakan:

Wire.beginTransmission(ads1110);Wire.write(byte konfigurasi); Kawat.endTransmisi();

sebelum meminta data ADC. Ini akan menjadi 0x8D, 0x8E atau 0x8F untuk nilai gain masing-masing 2, 4 dan 8 – dan gunakan 0x8C untuk mereset ADS1110 kembali ke default.

Langkah 6: Mode ADC Diferensial

Mode ADC Diferensial
Mode ADC Diferensial

Dalam mode ini Anda dapat membaca perbedaan antara dua tegangan yang masing-masing jatuh antara nol dan 5 V. Contoh rangkaian sederhana (dari lembar data).

Kami harus mencatat di sini (dan di lembar data) bahwa ADS1110 tidak dapat menerima tegangan negatif pada salah satu input. Anda dapat menggunakan sketsa sebelumnya untuk hasil yang sama – dan tegangan yang dihasilkan akan menjadi nilai Vin- dikurangi dari Vin+. Misalnya, jika Anda memiliki 2 V pada Vin+ dan 1 V pada Vin- tegangan yang dihasilkan akan menjadi 1 V (dengan penguatan disetel ke 1).

Sekali lagi kami harap Anda menemukan ini menarik, dan mungkin berguna. Posting ini dipersembahkan oleh pmdway.com - semuanya untuk pembuat dan penggemar elektronik, dengan pengiriman gratis ke seluruh dunia.

Direkomendasikan: