Mündəricat:

Arduino və TI ADS1110 16 bitlik ADC: 6 addım
Arduino və TI ADS1110 16 bitlik ADC: 6 addım

Video: Arduino və TI ADS1110 16 bitlik ADC: 6 addım

Video: Arduino və TI ADS1110 16 bitlik ADC: 6 addım
Video: Lesson 06: Arduino Variables Data Types | Robojax Arduino Step By Step Course 2024, Iyul
Anonim
Arduino və TI ADS1110 16 bitlik ADC
Arduino və TI ADS1110 16 bitlik ADC

Bu dərslikdə Texas Instruments ADS1110 ilə işləmək üçün Arduino istifadə etməyi araşdırırıq-inanılmaz dərəcədə kiçik, lakin faydalı 16 bitlik analoqdan rəqəmsal çevirici IC.

2.7 ilə 5.5 V arasında işləyə bilər, buna görə də Arduino Due və digər aşağı gərginlikli inkişaf lövhələri üçün yaxşıdır. Başqa bir işə davam etməzdən əvvəl, lütfən məlumat kitabçasını (pdf) yükləyin, çünki bu dərsdə faydalı olacaq və istinad ediləcəkdir. ADS1110, Arduinonun 10 bitlik ADC-lərindən daha dəqiq bir ADC seçimi təqdim edir və istifadəsi nisbətən asandır. Ancaq yalnız SOT23-6-da çılpaq bir hissə olaraq mövcuddur.

Addım 1:

Şəkil
Şəkil

Yaxşı xəbər odur ki, ADS1110 -u çox əlverişli bir lövhəyə quraşdıra bilərsiniz. ADS1110 ünsiyyət üçün I2C avtobusundan istifadə edir. Yalnız altı pin olduğu üçün avtobus ünvanını təyin edə bilməzsiniz - bunun əvəzinə hər birinin öz ünvanı olan ADS1110 -un altı variantından birini seçə bilərsiniz (məlumat vərəqinin ikinci səhifəsinə baxın).

Yuxarıdakı fotoda gördüyünüz kimi, bizimki 1001000 və ya 0x48h avtobus ünvanına uyğun gələn "EDO" ilə işarələnmişdir. Və nümunə sxemləri ilə I2C avtobusunda 10 kΩ çəkmə rezistorlarından istifadə etdik.

ADS1110-dan ya tək uclu, ya da diferensial ADC olaraq istifadə edə bilərsiniz-Ancaq əvvəlcə müxtəlif atributları idarə etmək üçün istifadə olunan konfiqurasiya reyestrini və məlumat qeydini araşdırmalıyıq.

Addım 2: Konfiqurasiya Qeydiyyatı

Məlumat vərəqinin on birinci səhifəsinə keçin. Konfiqurasiya reyestri bir bayt ölçüdədir və ADS1110 güc dövrəsində sıfırlandıqca-ehtiyaclarınız standartlardan fərqli olarsa, reyestri yenidən qurmalısınız. Məlumat vərəqi olduqca səliqəli şəkildə yazılır … 0 və 1 bitləri PGA (proqramlaşdırıla bilən qazanc gücləndiricisi) üçün qazanc parametrini təyin edir.

Yalnız gərginlik ölçürsünüzsə və ya sınayırsınızsa, 1V/V qazanc əldə etmək üçün bunları sıfıra qoyun. Sonra, ADS1110 üçün məlumat sürəti 2 və 3 -cü bitlərlə idarə olunur. Əgər davamlı nümunə götürmə aktivdirsə, bu, ADC tərəfindən alınan saniyədə nümunələrin sayını təyin edir.

Bir Arduino Uno ilə bir az təcrübə apardıqdan sonra, ADC -dən qaytarılmış dəyərlərin ən sürətli nisbətdən istifadə edərkən bir qədər kənar olduğunu gördük, buna görə başqa cür tələb olunmadığı təqdirdə 15 SPS olaraq buraxın. Bit 4 ya davamlı nümunə götürməyi (0) və ya birdəfəlik nümunəni (1) təyin edir. 5 və 6 bitlərinə məhəl qoymayın, lakin onlar həmişə 0 olaraq təyin olunur.

Nəhayət bit 7-birdəfəlik nümunə götürmə rejimindəsinizsə, onu 1 olaraq təyin etmək nümunə tələb edir və oxuduqda, qaytarılmış məlumatların yeni (0) və ya köhnə (1) olub olmadığını söyləyəcək. Ölçülən dəyərin yeni bir dəyər olduğunu yoxlaya bilərsiniz - məlumatlardan sonra gələn konfiqurasiya baytının ilk biti 0 olarsa, yenidir. 1 qaytararsa, ADC çevrilməsi başa çatmamışdır.

Addım 3: Məlumat Qeydiyyatı

ADS1110 16 bitlik bir ADC olduğundan, məlumatları iki bayt üzərində qaytarır və sonra konfiqurasiya qeydinin dəyəri ilə gəlir. Beləliklə, üç bayt tələb etsəniz, bütün lot geri qayıdır. Məlumat ikili ilə imzalanmış nömrələrin istifadəsi üsulu olan "ikisinin tamamlayıcısı" şəklindədir.

Bu iki baytı çevirmək bəzi sadə riyazi hesablamalarla aparılır. 15 SPS -də nümunə götürərkən, ADS1110 (gerilim deyil) tərəfindən qaytarılmış dəyər -32768 ilə 32767 aralığına düşür. Dəyərin daha yüksək baytı 256 ilə vurulur, sonra aşağı bayta əlavə olunur -daha sonra 2.048 ilə vurulur və nəhayət 32768 -ə bölündü. Panik etməyin, bunu qarşıdakı nümunə eskizində etdiyimiz kimi.

Addım 4: Tək uçlu ADC rejimi

Tək uçlu ADC rejimi
Tək uçlu ADC rejimi

Bu rejimdə sıfır ilə 2.048 V aralığına düşən bir gərginliyi oxuya bilərsiniz (bu da ADS1110 üçün quraşdırılmış istinad gərginliyi olur). Nümunə sxemi sadədir (məlumat vərəqindən).

I2C avtobusundakı 10kΩ çəkmə müqavimətini unutmayın. Aşağıdakı eskiz standart rejimdə ADS1110 -dan istifadə edir və sadəcə ölçülmüş gərginliyi qaytarır:

// Nümunə 53.1 - ADS1110 bir tərəfli voltmetr (0 ~ 2.048VDC) #"Wire.h" daxil edin #elanları təyin edin1110 0x48 float gərginliyi, məlumatlar; byte highbyte, lowbyte, configRegister; void setup () {Serial.begin (9600); Wire.begin (); } void loop () {Wire.requestFrom (ads1110, 3); while (Wire.available ()) // bütün məlumatların {highbyte = Wire.read () daxil olmasını təmin edin; // yüksək bayt * B11111111 lowbyte = Wire.read (); // aşağı bayt configRegister = Wire.read (); }

data = highbyte * 256;

data = data + lowbyte; Serial.print ("Məlumatlar >>"); Serial.println (data, DEC); Serial.print ("Gerilim >>"); gərginlik = məlumat * 2.048; gərginlik = gərginlik / 32768.0; Serial. çap (gərginlik, DEC); Serial.println ("V"); gecikmə (1000); }

Addım 5:

Şəkil
Şəkil

Yükləndikdən sonra serial monitoru ölçmək və açmaq üçün siqnalı bağlayın - bu addımda göstərilən serial monitor görüntüsünə bənzər bir şey sizə təqdim ediləcək.

ADC -nin daxili proqramlaşdırıla bilən qazanc gücləndiricisinin qazancını dəyişdirmək lazımdırsa - aşağıdakılardan istifadə edərək konfiqurasiya reyestrinə yeni bir bayt yazmalısınız.

Wire.beginTransmission (ads1110); Wire.write (konfiqurasiya baytı); Wire.endTransmission ();

ADC məlumatlarını tələb etməzdən əvvəl. Bu, müvafiq olaraq 2, 4 və 8 qazanc dəyərləri üçün 0x8D, 0x8E və ya 0x8F olardı və ADS1110 -u yenidən standart vəziyyətə gətirmək üçün 0x8C istifadə edin.

Addım 6: Diferensial ADC rejimi

Diferensial ADC rejimi
Diferensial ADC rejimi

Bu rejimdə hər sıfırdan 5 V -ə düşən iki gərginlik arasındakı fərqi oxuya bilərsiniz. Nümunə dövrə sadədir (məlumat vərəqindən).

Burada (və məlumat vərəqində) qeyd etməliyik ki, ADS1110 heç bir girişdə mənfi gərginliyi qəbul edə bilməz. Eyni nəticələr üçün əvvəlki eskizdən istifadə edə bilərsiniz- nəticədə ortaya çıxan gərginlik Vin-dən çıxarılan Vin-in dəyəri olacaq. Məsələn, Vin+ -da 2 V və Vin-də 1 V olsaydı, ortaya çıxan gərginlik 1 V olardı (qazanc 1 olaraq təyin olunarsa).

Bir daha ümid edirik ki, bu maraqlı və bəlkə də faydalı oldu. Bu yazı pmdway.com tərəfindən sizə gətirildi - istehsalçılar və elektronika həvəskarları üçün hər şey, bütün dünyada pulsuz çatdırılma.

Tövsiyə: