Mundarija:

Arduino va TI ADS1110 16 bitli ADC: 6 qadam
Arduino va TI ADS1110 16 bitli ADC: 6 qadam

Video: Arduino va TI ADS1110 16 bitli ADC: 6 qadam

Video: Arduino va TI ADS1110 16 bitli ADC: 6 qadam
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Iyul
Anonim
Arduino va TI ADS1110 16 bitli ADC
Arduino va TI ADS1110 16 bitli ADC

Ushbu qo'llanmada biz Texas Instruments ADS1110 bilan ishlash uchun Arduino-dan foydalanishni ko'rib chiqamiz-bu juda kichik, ammo foydali 16-bitli analog-raqamli IC konvertori.

U 2,7 dan 5,5 V gacha ishlashi mumkin, shuning uchun Arduino Due va boshqa past kuchlanishli platalar uchun ham yaxshi. Davom etishdan oldin, iltimos, ma'lumot varag'ini (pdf) yuklab oling, chunki bu qo'llanmada foydali bo'ladi. ADS1110 sizga Arduino-ning 10-bitli ADC-laridan ko'ra aniqroq ADC-ni tanlash imkoniyatini beradi-va undan foydalanish nisbatan oson. Biroq, u faqat SOT23-6-da yalang'och qism sifatida mavjud.

1 -qadam:

Rasm
Rasm

Yaxshi xabar shundaki, siz ADS1110 -ni juda qulay taxtaga o'rnatishingiz mumkin. ADS1110 aloqa uchun I2C avtobusidan foydalanadi. Va faqat oltita pin borligi sababli, siz avtobus manzilini o'rnatolmaysiz - buning o'rniga siz ADS1110 ning oltita variantidan birini tanlashingiz mumkin - ularning har biri o'z manziliga ega (ma'lumotlar varag'ining ikkinchi sahifasiga qarang).

Yuqoridagi rasmda ko'rib turganingizdek, bizniki "EDO" deb belgilanadi, u 1001000 yoki 0x48h avtobus manziliga to'g'ri keladi. Va misol sxemalari bilan biz I2C avtobusida 10 kΩ kuchlanishli rezistorlardan foydalanganmiz.

Siz ADS1110-ni bitta tugaydigan yoki differentsial ADC sifatida ishlatishingiz mumkin-Lekin oldin biz har xil atributlarni boshqarish uchun ishlatiladigan konfiguratsiya registrini va ma'lumotlar registrini o'rganishimiz kerak.

2 -qadam: Konfiguratsiya reestri

Ma'lumotlar varag'ining o'n birinchi sahifasiga qayting. Konfiguratsiya registri bir bayt hajmga ega va ADS1110 quvvat aylanishiga qaytganda-agar sizning ehtiyojlaringiz odatdagidan farq qilsa, registrni tiklashingiz kerak bo'ladi. Ma'lumotlar varaqasi juda aniq yozilgan … 0 va 1 bitlar PGA (dasturlashtiriladigan daromad kuchaytirgichi) uchun daromad parametrini aniqlaydi.

Agar siz faqat kuchlanishni o'lchayotgan bo'lsangiz yoki tajriba o'tkazayotgan bo'lsangiz, ularni 1V/V kuchlanishi uchun nol qilib qo'ying. Keyin, ADS1110 uchun ma'lumotlar tezligi 2 va 3 -bitlar bilan boshqariladi. Agar sizda doimiy namuna olish yoqilgan bo'lsa, bu ADC tomonidan olingan soniyalar sonini aniqlaydi.

Arduino Uno bilan bir oz tajriba o'tkazganimizdan so'ng, biz ADC -dan qaytarilgan qiymatlar eng yuqori tezlikda ishlatilganda biroz o'chirilganligini aniqladik, agar boshqacha talab qilinmasa, uni 15 SPS sifatida qoldiring. Bit 4 doimiy namuna olishni (0) yoki bir martalik namuna olishni (1) o'rnatadi. 5 va 6 -bitlarga e'tibor bermang, lekin ular har doim 0 ga o'rnatiladi.

Nihoyat, 7-bit-agar siz bir martalik namuna olish rejimida bo'lsangiz, uni 1 ga o'rnating, namuna so'raladi va uni o'qish sizga qaytarilgan ma'lumotlar yangi (0) yoki eski (1) ekanligini aytadi. Siz o'lchangan qiymat yangi qiymat ekanligini tekshirishingiz mumkin - agar ma'lumotdan keyin keladigan konfiguratsiya baytining birinchi biti 0 bo'lsa, u yangi. Agar u 1 qaytarsa, ADC konvertatsiyasi tugallanmagan.

3 -qadam: Ma'lumotlarni ro'yxatga olish

ADS1110 16-bitli ADC bo'lgani uchun, u ma'lumotlarni ikki baytdan qaytaradi va keyin konfiguratsiya registrining qiymatiga amal qiladi. Shunday qilib, agar siz uchta baytni so'rasangiz, hamma narsa qaytariladi. Ma'lumotlar "ikkitasini to'ldiruvchi" shaklda, bu ikkilik bilan imzolangan raqamlardan foydalanish usuli.

Bu ikki baytni aylantirish oddiy matematikalar yordamida amalga oshiriladi. 15 SPSda namuna olganda, ADS1110 qaytaradigan qiymat (kuchlanish emas) -32768 va 32767 orasida bo'ladi. Qiymatning yuqori bayti 256 ga ko'paytiriladi, so'ngra pastki baytga qo'shiladi -u 2.048 ga ko'paytiriladi va nihoyat bo'linadi 32768. Vahima qo'ymang, chunki biz buni yaqinlashib kelayotgan misol eskizida qilamiz.

4-qadam: Bir martali ADC rejimi

Bir martali ADC rejimi
Bir martali ADC rejimi

Bu rejimda siz noldan 2,048 V gacha bo'lgan kuchlanishni o'qishingiz mumkin (bu ham ADS1110 uchun o'rnatilgan mos yozuvlar kuchlanishidir). Misol sxemasi oddiy (ma'lumotlar varaqasidan).

I2C avtobusidagi 10 kΩ kuchlanishli rezistorlarni unutmang. Quyidagi eskizda ADS1110 standart rejimda ishlatiladi va o'lchangan kuchlanishni qaytaradi:

// 53.1 -misol - ADS1110 bir tomonlama voltmetr (0 ~ 2.048VDC) #"Wire.h" ni qo'shish #e'lonlarni belgilash1110 0x48 suzuvchi kuchlanish, ma'lumotlar; bayt yuqori bayt, past bayt, configRegister; void setup () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); while (Wire.available ()) // barcha ma'lumotlarning {highbyte = Wire.read () ga kirishini ta'minlang; // yuqori bayt * B11111111 lowbyte = Wire.read (); // past bayt configRegister = Wire.read (); }

ma'lumotlar = yuqori bayt * 256;

ma'lumotlar = ma'lumotlar + past bayt; Serial.print ("Ma'lumotlar >>"); Serial.println (ma'lumotlar, DEC); Serial.print ("Voltaj >>"); kuchlanish = ma'lumotlar * 2.048; kuchlanish = kuchlanish / 32768.0; Ketma -ket chop etish (kuchlanish, DEC); Serial.println ("V"); kechikish (1000); }

5 -qadam:

Rasm
Rasm

Yuklanganidan so'ng, ketma -ket monitorni o'lchash va ochish uchun signalni ulang - sizga bu bosqichda ko'rsatilgan ketma -ket monitor tasviriga o'xshash narsa taqdim etiladi.

Agar siz ADC ning ichki dasturlashtiriladigan kuchaytirgichining daromadini o'zgartirishingiz kerak bo'lsa - konfiguratsiya registriga yangi baytni quyidagicha yozishingiz kerak bo'ladi.

Wire.beginTransmission (ads1110); Wire.write (konfiguratsiya bayti); Wire.endTransmission ();

ADC ma'lumotlarini so'rashdan oldin. Bu mos ravishda 2, 4 va 8 qiymatlari uchun 0x8D, 0x8E yoki 0x8F bo'ladi va ADS1110 ni asl holatiga qaytarish uchun 0x8C dan foydalaning.

6 -qadam: Differentsial ADC rejimi

Differentsial ADC rejimi
Differentsial ADC rejimi

Bu rejimda har bir nol va 5 V gacha tushadigan ikkita kuchlanish orasidagi farqni o'qishingiz mumkin. Misol sxemasi oddiy (ma'lumotlar varag'idan).

Bu erda (va ma'lumotlar varag'ida) shuni ta'kidlash kerakki, ADS1110 har qanday kirishda salbiy kuchlanishni qabul qila olmaydi. Xuddi shu natijalar uchun siz avvalgi eskizdan foydalanishingiz mumkin- natijada paydo bo'lgan kuchlanish Vin+dan chiqariladi. Masalan, agar sizda Vin+ da 2 V va Vinda 1 V bo'lsa, natijada kuchlanish 1 V bo'ladi (daromad 1 ga o'rnatiladi).

Yana bir bor umid qilamizki, bu sizga qiziq va, ehtimol, foydali bo'ldi. Bu xabar sizga pmdway.com tomonidan olib kelingan - ishlab chiqaruvchilar va elektronika ixlosmandlari uchun hamma narsa, butun dunyo bo'ylab bepul etkazib berish.

Tavsiya: