Isi kandungan:

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, November
Anonim
Arduino dan TI ADS1110 16-bit ADC
Arduino dan TI ADS1110 16-bit ADC

Dalam tutorial ini kita mengkaji menggunakan Arduino untuk bekerjasama dengan Texas Instruments ADS1110 - IC penukar analog-ke-digital 16-bit yang sangat kecil tetapi berguna.

Ia boleh beroperasi antara 2.7 dan 5.5 V, jadi juga baik untuk Arduino Due dan papan pengembangan voltan rendah yang lain. Sebelum meneruskan lebih jauh, sila muat turun lembaran data (pdf) kerana ia akan berguna dan dirujuk semasa tutorial ini. ADS1110 memberi anda pilihan ADC yang lebih tepat daripada yang ditawarkan oleh ADC 10-bit Arduino - dan agak mudah digunakan. Walau bagaimanapun, ia hanya tersedia sebagai bahagian kosong di SOT23-6.

Langkah 1:

Imej
Imej

Berita baiknya ialah anda boleh memesan ADS1110 yang dipasang pada papan pelarian yang sangat sesuai. ADS1110 menggunakan bas I2C untuk komunikasi. Oleh kerana hanya ada enam pin, anda tidak dapat menetapkan alamat bas - sebaliknya, anda boleh memilih dari enam varian ADS1110 - masing-masing dengan alamat mereka sendiri (lihat halaman dua helaian data).

Seperti yang anda lihat pada foto di atas, gambar kami ditandai sebagai "EDO" yang sesuai dengan alamat bas 1001000 atau 0x48j. Dan dengan litar contoh, kami telah menggunakan resistor penarik 10kΩ pada bas I2C.

Anda boleh menggunakan ADS1110 sebagai ADC ujung tunggal atau perbezaan - Tetapi pertama-tama kita perlu memeriksa daftar konfigurasi yang digunakan untuk mengawal pelbagai atribut, dan daftar data.

Langkah 2: Daftar Konfigurasi

Balik ke halaman sebelas helaian data. Daftar konfigurasi berukuran satu bait, dan ketika ADS1110 diset semula pada kitaran kuasa - anda perlu menetapkan semula daftar jika keperluan anda berbeza dengan lalai. Lembar data menyebutnya dengan cukup rapi … bit 0 dan 1 menentukan tetapan keuntungan untuk PGA (penguat keuntungan yang dapat diprogramkan).

Sekiranya anda hanya mengukur voltan atau bereksperimen, biarkan sebagai sifar untuk kenaikan 1V / V. Seterusnya, kadar data untuk ADS1110 dikendalikan dengan bit 2 dan 3. Sekiranya pensampelan berterusan dihidupkan, ini menentukan bilangan sampel sesaat yang diambil oleh ADC.

Setelah beberapa bereksperimen dengan Arduino Uno, kami mendapati nilai yang dikembalikan dari ADC sedikit menurun ketika menggunakan kadar terpantas, jadi biarkan sebagai 15 SPS kecuali jika diperlukan sebaliknya. Bit 4 menetapkan samada persampelan berterusan (0) atau persampelan satu kali (1). Abaikan bit 5 dan 6, namun ia selalu ditetapkan sebagai 0.

Akhirnya bit 7 - jika anda berada dalam mod pensampelan sekali, tetapkannya kepada 1 meminta sampel - dan membacanya akan memberitahu anda jika data yang dikembalikan itu baru (0) atau lama (1). Anda boleh memastikan bahawa nilai yang diukur adalah nilai baru - jika bit pertama dari bait konfigurasi yang muncul setelah data adalah 0, itu baru. Sekiranya mengembalikan 1, penukaran ADC belum selesai.

Langkah 3: Daftar Data

Oleh kerana ADS1110 adalah ADC 16-bit, ia mengembalikan data lebih dari dua bait - dan kemudian mengikuti dengan nilai daftar konfigurasi. Oleh itu, jika anda meminta tiga bait, keseluruhannya akan kembali. Data dalam bentuk "pelengkap dua", yang merupakan kaedah menggunakan nombor bertanda dengan binari.

Menukar kedua-dua bait itu dilakukan oleh beberapa matematik sederhana. Semasa mengambil sampel pada 15 SPS, nilai yang dikembalikan oleh ADS1110 (bukan voltan) jatuh antara -32768 dan 32767. Bait nilai yang lebih tinggi dikalikan dengan 256, kemudian ditambahkan ke bait yang lebih rendah - yang kemudian didarabkan dengan 2.048 dan akhirnya dibahagi dengan 32768. Jangan panik, seperti yang kita lakukan dalam contoh lakaran yang akan datang.

Langkah 4: Mod ADC hujung tunggal

Mod ADC hujung tunggal
Mod ADC hujung tunggal

Dalam mod ini, anda dapat membaca voltan yang turun antara sifar dan 2.048 V (yang juga merupakan voltan rujukan terbina dalam untuk ADS1110). Litar contohnya mudah (dari lembaran data).

Jangan lupa perintang penarik 10kΩ pada bas I2C. Sketsa berikut menggunakan ADS1110 dalam mod lalai, dan hanya mengembalikan voltan yang diukur:

// Contoh 53.1 - Volteter satu sisi ADS1110 (0 ~ 2.048VDC) #masuk "Wire.h" #tentukan iklan1110 0x48 voltan apungan, data; byte highbyte, lowbyte, configRegister; batal persediaan () {Serial.begin (9600); Wire.begin (); } gelung kosong () {Wire.requestFrom (ads1110, 3); sementara (Wire.available ()) // memastikan semua data masuk dalam {highbyte = Wire.read (); // byte tinggi * B11111111 lowbyte = Wire.read (); // rendah byte configRegister = Wire.read (); }

data = highbyte * 256;

data = data + lowbyte; Serial.print ("Data >>"); Serial.println (data, DEC); Serial.print ("Voltan >>"); voltan = data * 2.048; voltan = voltan / 32768.0; Serial.print (voltan, DEC); Serial.println ("V"); kelewatan (1000); }

Langkah 5:

Imej
Imej

Setelah dimuat naik, sambungkan isyarat untuk mengukur dan membuka monitor bersiri - anda akan diberikan sesuatu yang serupa dengan gambar monitor bersiri yang ditunjukkan dalam langkah ini.

Sekiranya anda perlu mengubah keuntungan penguat keuntungan dalaman yang dapat diprogramkan dari ADC - anda perlu menulis bait baru ke dalam daftar konfigurasi menggunakan:

Wire.beginTransmission (ads1110); Wire.write (konfigurasi byte); Wire.endTransmission ();

sebelum meminta data ADC. Ini adalah 0x8D, 0x8E atau 0x8F untuk nilai keuntungan masing-masing 2, 4 dan 8 - dan gunakan 0x8C untuk menetapkan semula ADS1110 ke lalai.

Langkah 6: Mod ADC berbeza

Mod ADC Pembezaan
Mod ADC Pembezaan

Dalam mod ini, anda dapat membaca perbezaan antara dua voltan yang masing-masing jatuh antara sifar dan 5 V. Litar contohnya mudah (dari lembaran data).

Kita mesti perhatikan di sini (dan dalam lembaran data) bahawa ADS1110 tidak dapat menerima voltan negatif pada salah satu input. Anda boleh menggunakan lakaran sebelumnya untuk hasil yang sama - dan voltan yang dihasilkan akan menjadi nilai Vin - ditolak dari Vin +. Sebagai contoh, jika anda mempunyai 2 V pada Vin + dan 1 V pada Vin - voltan yang dihasilkan adalah 1 V (dengan keuntungan ditetapkan ke 1).

Sekali lagi kami harap anda dapati ini menarik, dan mungkin berguna. Catatan ini disampaikan kepada anda oleh pmdway.com - semuanya untuk pembuat dan peminat elektronik, dengan penghantaran percuma ke seluruh dunia.

Disyorkan: