Mündəricat:
- Addım 1:
- Addım 2: Konfiqurasiya Qeydiyyatı
- Addım 3: Məlumat Qeydiyyatı
- Addım 4: Tək uçlu ADC rejimi
- Addım 5:
- Addım 6: Diferensial ADC rejimi
Video: Arduino və TI ADS1110 16 bitlik ADC: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
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:
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
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:
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
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ə:
4 bitlik İkili Kalkulyator: 11 addım (şəkillərlə)
4 bitlik İkili Kalkulyator: Kompüterlərin təməl səviyyədə işləməsi ilə maraqlandım. Ayrı -ayrı komponentlərin istifadəsini və daha mürəkkəb vəzifələri yerinə yetirmək üçün lazım olan sxemləri başa düşmək istədim. CPU -da vacib bir əsas komponent
Arduino Nano-MMA8452Q 3 Eksenli 12 bit/8 bitlik Rəqəmsal Akselerometr Təlimatı: 4 addım
Arduino Nano-MMA8452Q 3 Eksenli 12 bit/8 bitlik Rəqəmsal Akselerometr Dərsliyi: MMA8452Q, 12 bit qətnamə ilə ağıllı, aşağı güclü, üç oxlu, tutumlu, mikromaşinli sürətləndiricidir. İstifadəçi tərəfindən proqramlaşdırıla bilən seçimlər, iki fasilə ilə konfiqurasiya oluna bilən akselerometrdə quraşdırılmış funksiyaların köməyi ilə təmin edilir
Raspberry Pi MMA8452Q 3 Eksenli 12 bit/8 bitlik Rəqəmsal Akselerometr Python Dərsliyi: 4 addım
Raspberry Pi MMA8452Q 3 Eksenli 12 bit/8 bitlik Rəqəmsal Akselerometr Python Dərsliyi: MMA8452Q, 12 bit qətnamə ilə ağıllı, aşağı güclü, üç oxlu, tutumlu, mikromaşinli sürətləndiricidir. İstifadəçi tərəfindən proqramlaşdırıla bilən seçimlər, iki fasilə ilə konfiqurasiya oluna bilən akselerometrdə quraşdırılmış funksiyaların köməyi ilə təmin edilir
MIDI/Arduino Nəzarətli 8 Bitlik Səs Generatoru (AY-3-8910): 5 addım
MIDI/Arduino İdarə Edilən 8 Bitlik Səs Generatoru (AY-3-8910): Retro səsləndirən 8 Bitlik Səs Generatoru yaradın və MIDI vasitəsi ilə idarə edin. Bu dizayn qismən Chiptune faylları və bəzi Erkən video oyunların mənfi cəhətlərini birləşdirmək üçün öz fikirlərim
Arduino / Zelda Son Mövzudan istifadə edərək 8 bitlik mahnılar: 4 addım
Arduino / Zelda Ending Theme istifadə edərək 8bit Mahnılar: Heç açanda və ya sıxanda mahnı oxuyan hədiyyə kartları və ya oyuncaqlar etmək istəyirdinmi? Seçdiyiniz mahnı ilə? Bəlkə də hazırladığınız bir mahnı? Yaxşı, bu dünyanın ən asan işidir və heç bir şeyə başa gəlməyəcək