İçindekiler:

Arduino Volt Metre (0-100V DC) - Sürüm 2 (daha iyi): 3 Adım
Arduino Volt Metre (0-100V DC) - Sürüm 2 (daha iyi): 3 Adım

Video: Arduino Volt Metre (0-100V DC) - Sürüm 2 (daha iyi): 3 Adım

Video: Arduino Volt Metre (0-100V DC) - Sürüm 2 (daha iyi): 3 Adım
Video: Complete Test/Review of 10A 0-100V LED DC Volt and Current Meter 2024, Haziran
Anonim
Image
Image
Adım 1: Şemalar
Adım 1: Şemalar

Bu talimatta, bir Arduino Nano ve bir ADS 1115 ADC kullanarak yüksek voltajlı DC (0-100v) göreceli hassasiyet ve doğrulukla ölçmek için bir voltmetre oluşturdum.

Bu, önceki talimatımı burada kullanılan voltmetrenin ikinci bir versiyonudur:

Aldığım test ölçümleri doğruydu, çoğunlukla standart bir voltmetre ile ölçülen gerçek voltajın 0.1v'si dahilindeydi (Astro AI DM6000AR kullandım).

Bu bence Arduino'da harici bir voltaj referansı kullanmaktan çok daha iyi ve daha kolay.

Gereçler

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 direnç kullanmanızı öneririm) %1 Dirençler - 220k ohm - Link

1 x 1/4W (1W direnç kullanmanızı öneririm) %1 Dirençler - 10k ohm - Link

Breadboard ve teller - Bağlantı

Astro AI DM6000AR - Bağlantı

USB Güç Bankası - Bağlantı

9V Piller - Bağlantı

CanadianWinters, sitelerin Amazon.com'a ve bağlı sitelere bağlanarak ücret kazanmaları için bir araç sağlamak üzere tasarlanmış bir bağlı kuruluş reklam programı olan Amazon Services LLC Associates Programının bir katılımcısıdır. Bu bağlantıları kullanarak, başka bir şey satın alsanız bile, uygun satın alımlardan kazanıyorum - ve size hiçbir maliyeti olmayacak.

Adım 1: Adım 1: Şemalar

Adım 1: Şemalar
Adım 1: Şemalar

Tüm parçaları yukarıdaki şemaya göre bağladım.

ADC1115'in ADDR pinini toprağa bağladım. Bu, ADC'nin adresini 0x48 olarak ayarlar.

Adım 2: Adım 2: Kod ve Direnç Hesapları

Adım 2: Kod ve Direnç Hesapları
Adım 2: Kod ve Direnç Hesapları

Önceki talimatta olduğu gibi, devrenin fikri, ölçülecek DC voltajının bir voltaj direncinden geçmesidir. Ölçeklenen voltaj ve daha sonra okunacak ADC dönüştürücünün analog pinine girer, daha sonra I2C üzerinden Arduino'ya iletilir ve ardından yeniden ölçeklendirilir ve OLed ekranda görüntülenir.

Bu durumda, okumalar oldukça doğru göründüğü için kodda herhangi bir ortalama veya yumuşatma kullanmadım. Gürültüyü azaltmak için, A0 (ADC'de) ile toprak arasına küçük bir kapasitör eklemek isteyebilirsiniz. Gerçi benim testim için gerekli değildi.

Fark ettiğim bir şey, pil takılı olmadığında (0 volt) biraz gürültü oldu. ADC değerini görüntülemek ve kod aracılığıyla düzeltmek/ayarlamak için Arduino'nun seri monitörünü kullandım.

Önceki talimatta olduğu gibi, voltaj bölücüde farklı direnç değerleri kullanmak istemeniz durumunda hesaplamaları otomatikleştiren bir elektronik tablo hazırladım: Link to Google Sheet

İşte bu proje için kullandığım kod:

#Dahil etmek

#include #include #include Adafruit_ADS1115 reklam (0x48); //ADC adresi U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);// (döndürme, [reset]) int kalibre = 7; // Hata şamandıra voltajını azaltmak için ADS1115 kalibrasyon değeri = 0; // voltaj değerini saklamak için kullanılır float Radjust = 0.043421905; // Voltaj bölücü faktör (R2 / R1+R2) float vbat = 0; //hesaplama sonrası son voltaj- pil voltajı //gecikme kullanmadan ekranı yenilemek için değişkenler unsigned long öncekiMillis = 0; // ekranın en son ne zaman yenilendiğini saklayacak // sabitler değişmeyecek: const uzun aralık = 250; // ekranın yenileneceği aralık (milisaniye) void setup(void) { Serial.begin(9600); u8g2.begin(); ads.begin(); } geçersiz döngü(void) { int16_t adc0; // A0 girişinin 16 bit ADC okuması adc0 = ads.readADC_SingleEnded(0); voltaj = ((adc0 + kalibre) * 0.1875)/1000; imzasız uzun akımMillis = millis(); vbat = voltaj/Radjust; //Akü bağlantısı kesildiğinde negatif voltaj gösterilmesini engelle if (vbat = interval) { öncekiMillis = currentMillis; u8g2.clearBuffer(); // dahili menory'yi temizle //Paket Voltajı ekranı - Bu sayfadaki yazı tipleri: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px yazı tipi u8g2.setFont(u8g2_font_fub35_tr); // 35px yazı tipi u8g2.setCursor (1, 42); u8g2.print(vbat, 2); u8g2.setFont(u8g2_font_8x13B_mr); // 10 piksel yazı tipi u8g2.setCursor (1, 60); u8g2.print("Volt"); } u8g2.sendBuffer(); // dahili belleği ekran gecikmesine aktarın(1); }

Adım 3: Adım 3: Hadi Test Edelim

3. Adım: Hadi Test Edelim!
3. Adım: Hadi Test Edelim!

Bu voltmetreyi test etmek için yerel bir mağazadan aldığım 10x 9v pil kullandım. Bu sefer 97 volta kadar ölçebildim! Bu voltmetreyi elektrikli bisikletlerimin pil takımlarındaki voltajı ölçmek için kullanmayı planlıyorum (ara sıra 72v olanlarla 24-60v arasında değişen voltajları var).

Elektronikler bir pcb ve küçük bir kutuya paketlendikten sonra, bu güzel ve taşınabilir bir pil takımı ölçer yapacaktır. OLED üzerindeki grafikler ve yazı tipleri ihtiyaçlarınıza uyacak şekilde özelleştirilebilir (örn. kolay okuma için daha büyük yazı tipi). Amacım, Dijital Çoklu Sayacımdan çok uzak olmayan Oled/Arduino sayacında voltaj okuması yapmaktı. +/-0, 3v max delta hedefliyordum.

Instructable'ın başındaki videodan da görebileceğiniz gibi, bunu arşivleyebildim! Okumaların çoğu yerindeydi!

Umarım bu Eğitilebilir Yazıyı beğenmişsinizdir ve düşüncelerinizi bana bildirin!

Önerilen: