Mundarija:
- 1 -qadam:
- 2 -qadam: Konfiguratsiya reestri
- 3 -qadam: Ma'lumotlarni ro'yxatga olish
- 4-qadam: Bir martali ADC rejimi
- 5 -qadam:
- 6 -qadam: Differentsial ADC rejimi
Video: Arduino va TI ADS1110 16 bitli ADC: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
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:
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
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:
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
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:
Arduino Nano-MMA8452Q 3 o'qli 12 bitli/8 bitli raqamli akselerometr bo'yicha qo'llanma: 4 qadam
Arduino Nano-MMA8452Q 3-o'qli 12-bitli/8-bitli raqamli akselerometr bo'yicha qo'llanma: MMA8452Q-bu 12 bitli, aqlli, kam quvvatli, uch o'qli, sig'imli, mikromaxinli akselerometr. Foydalanuvchilar tomonidan dasturlashtiriladigan moslashuvchan variantlar akselerometrga o'rnatilgan ikkita funktsiya yordamida ta'minlanadi, ular ikkita uzilishga o'rnatiladi
Raspberry Pi MMA8452Q 3 o'qli 12-bitli/8-bitli raqamli akselerometr Python qo'llanmasi: 4 qadam
Raspberry Pi MMA8452Q 3-o'qli 12-bitli/8-bitli raqamli akselerometr Python qo'llanmasi: MMA8452Q-bu 12 bitli aniqlikdagi aqlli, kam quvvatli, uch o'qli, sig'imli, mikromashinli akselerometr. Foydalanuvchilar tomonidan dasturlashtiriladigan moslashuvchan variantlar akselerometrga o'rnatilgan ikkita funktsiya yordamida ta'minlanadi, ular ikkita uzilishga o'rnatiladi
Nano pikselli 26 bitli Arduino -dan foydalanish: 4 qadam
Nano pikselli 26 bitli Arduino -dan foydalanish: Oldingi maqolamda men WS2812 Nano pikselli LEDni ishlatish bo'yicha ko'rsatma berganman. Ushbu maqolada men 16 Bit Ring Nano Pixel WS2812 dan foydalanardim. Va bu maqolada men sizga 26 bitli Nano Pixels WS2812 halqasidan qanday foydalanishni ko'rsataman. Uskuna bo'limida
8 bitli Arduino ikkilik hisoblagichi: 6 qadam
8 bitli Arduino ikkilik hisoblagichi: 8 bitli Arduino binary Counter mikroavtobuslari 0 dan 255 gacha Shunday qilib, u noldan 255 gacha kodlarni ishlab chiqarish orqali o'ngdan chapga hisoblaydi
Raspberry Pi MMA8452Q 3 o'qli 12-bitli/8-bitli raqamli akselerometrli Java darsligi: 4 qadam
Raspberry Pi MMA8452Q 3-o'qli 12-bitli/8-bitli raqamli akselerometr Java darsligi: MMA8452Q-bu 12 bitli aniqlikdagi aqlli, kam quvvatli, uch o'qli, sig'imli, mikromaxinli akselerometr. Foydalanuvchilar tomonidan dasturlashtiriladigan moslashuvchan variantlar akselerometrga o'rnatilgan ikkita funktsiya yordamida ta'minlanadi, ular ikkita uzilishga o'rnatiladi