Mündəricat:

Arduino Volt Ölçən (0-100V DC) - Versiya 2 (daha yaxşı): 3 addım
Arduino Volt Ölçən (0-100V DC) - Versiya 2 (daha yaxşı): 3 addım

Video: Arduino Volt Ölçən (0-100V DC) - Versiya 2 (daha yaxşı): 3 addım

Video: Arduino Volt Ölçən (0-100V DC) - Versiya 2 (daha yaxşı): 3 addım
Video: Multimetre Kullanım Eğitimi ve Kutu açılımı | NCV | Voltaj | Akım Amper Ölçümleri Nasıl Yapılır 2024, Iyun
Anonim
Image
Image
Addım 1: sxemlər
Addım 1: sxemlər

Bu təlimatda Arduino Nano və ADS 1115 ADC istifadə edərək yüksək gərginliyi DC (0-100v) nisbi dəqiqliklə və dəqiqliklə ölçmək üçün bir voltmetr qurdum.

Bu, əvvəlki təlimatımda istifadə olunan voltmetrin ikinci versiyasıdır:

Aldığım test ölçüləri dəqiq idi, əsasən standart bir voltmetrlə ölçülmüş həqiqi gərginliyin 0,1v -də (Astro AI DM6000AR istifadə etdim).

Bu, mənim fikrimcə Arduino -da xarici gərginlik istinadından istifadə etməkdən daha yaxşıdır və daha asandır.

Təchizat

1 x Arduino Nano - Bağlantı

1 x Oled Ekran (SSD 1306) - Bağlantı

1 x ADS 1115 - 16 bit ADC - Bağlantı

1 x 1/4W (1W rezistorlardan istifadə etməyi təklif edirəm) 1% Rezistorlar - 220k ohm - Link

1 x 1/4W (1W rezistorlardan istifadə etməyi təklif edirəm) 1% Rezistorlar - 10k ohm - Link

Çörək paneli və tellər - Bağlantı

Astro AI DM6000AR - Bağlantı

USB Güc Bankı - Bağlantı

9V Batareyalar - Bağlantı

CanadianWinters, Amazon.com və əlaqəli saytlara keçid etməklə saytların ödəniş qazanması üçün bir vasitə təmin etmək üçün hazırlanmış Amazon Services LLC Associates Proqramının iştirakçısıdır. Bu bağlantıları istifadə edərək, Amazon Associate olaraq, başqa bir şey satın alsanız da, uyğun satınalmalardan qazanıram-və bunun sizə heç bir dəyəri olmayacaq.

Addım 1: Adım 1: Şematik

Addım 1: sxemlər
Addım 1: sxemlər

Bütün hissələri yuxarıdakı sxemə görə bağladım.

ADC1115 -in ADDR pinini yerə bağladım. Bu, ADC ünvanını 0x48 olaraq təyin edir.

Adım 2: Adım 2: Kod və Rezistor Hesablamaları

Addım 2: Kod və Rezistor Hesablamaları
Addım 2: Kod və Rezistor Hesablamaları

Əvvəlki təlimatda olduğu kimi, dövrənin fikri ölçülən DC gərginliyinin bir gərginlik rezistorundan keçməsidir. Ölçülən gərginlik və sonra oxunması üçün ADC çeviricisinin analoq pininə daxil olur, sonra I2C vasitəsi ilə Arduinoya ötürülür və yenidən ölçülənərək OLed ekranda göstərilir.

Oxumalar olduqca dəqiq göründüyü üçün bu vəziyyətdə kodda heç bir ortalamadan və hamarlamadan istifadə etmədim. Səs -küyü azaltmaq üçün A0 (ADC -də) ilə torpaq arasında kiçik bir kondansatör əlavə etmək istəyə bilərsiniz. İmtahan üçün tələb olunmurdu.

Diqqətimi çəkən bir şey, heç bir batareya bağlı olmadıqda (0 volt) bir az səs -küy idi. ADC dəyərini göstərmək və kod vasitəsilə düzəltmək/tənzimləmək üçün Arduinonun seriyalı monitorundan istifadə etdim.

Əvvəlki təlimatda olduğu kimi, gərginlik bölgüsündə fərqli müqavimət dəyərlərindən istifadə etmək istəsəniz hesablamaları avtomatlaşdıran bir elektron tablo hazırladım: Google Hesabına bağlantı

Bu layihə üçün istifadə etdiyim kod budur:

#daxil edin

#include #include #include Adafruit_ADS1115 reklamları (0x48); // ADC -nin ünvanı U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (fırlanma, [sıfırlama]) int calib = 7; // Səhv float gərginliyini azaltmaq üçün ADS1115 -in kalibrləmə dəyəri = 0; // float gərginlik dəyərini saxlamaq üçün istifadə olunur Radjust = 0.043421905; // Gərginlik bölücü faktoru (R2 / R1+R2) float vbat = 0; // hesablamadan sonra son gərginlik- batareyanın gərginliyi // gecikmədən istifadə etmədən ekranı təzələmək üçün dəyişənlər işarəsiz uzun əvvəlkiMillis = 0; // son dəfə ekran təzələnəndə saxlayacaq // sabitlər dəyişməyəcək: const uzun interval = 250; // ekranı yeniləmək üçün interval (milisaniyə) boşluq qurulması (boşluq) {Serial.begin (9600); u8g2.begin (); ads.begin (); } boşluq döngəsi (boş) {int16_t adc0; // A0 girişinin 16 bit ADC oxunması adc0 = ads.readADC_SingleEnded (0); gərginlik = ((adc0 + calib) * 0.1875)/1000; işarəsiz uzun cariMillis = millis (); vbat = gərginlik/Radjust; // (vbat = interval) {previousMillis = currentMillis; u8g2.clearBuffer (); // daxili menoriyanı təmizləyin // Paket Gərginliyi ekranı - Bu səhifədəki şriftlər: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20 piksel şrift u8g2.setFont (u8g2_font_fub35_tr); // 35px font u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px font u8g2.setCursor (1, 60); u8g2.print ("Volt"); } u8g2.sendBuffer (); // daxili yaddaşı ekran gecikməsinə köçürün (1); }

Addım 3: Adım 3: Gəlin Test Edək

Addım 3: Gəlin Test Edək!
Addım 3: Gəlin Test Edək!

Bu voltmetrini yoxlamaq üçün yerli bir mağazada aldığım 10x 9v batareyalardan istifadə etdim. Bu dəfə 97 volta qədər ölçə bildim! Elektrikli velosiped batareyalarımdakı gərginliyi ölçmək üçün bu voltmetrdən istifadə etməyi planlaşdırıram (aralıqda 72v olan 24-60v arasında dəyişir).

Elektronika bir pcb və kiçik bir qutuya yığıldıqdan sonra bu, gözəl və portativ bir batareya paketi sayğacına çevriləcəkdir. OLED üzərindəki qrafika və şriftlər ehtiyaclarınıza uyğunlaşdırıla bilər (məsələn, asan oxumaq üçün daha böyük şrift). Məqsədim, Rəqəmsal Çox Ölçmə cihazımdan çox da uzaq olmayan Oled/Arduino sayğacında bir gərginlik oxunuşuna sahib olmaq idi. +/- 0, 3v max delta üçün hədəfləyirdim.

Təlimat kitabının əvvəlindəki videodan gördüyünüz kimi, bunu arxivləşdirə bildim! Oxumaların çoxu diqqət mərkəzində idi!

Ümid edirəm bu Təlimatlandırmadan zövq aldınız və fikirlərinizi mənə bildirin!

Tövsiyə: