Arduino
OKUDUĞUNUZ KONU
Arduino LCD Voltmetre Yapımı
29

Arduino LCD Voltmetre Yapımı

Yazar : Murat Duran23 Aralık 2015

Projelerinizde voltmetre lazım diyorsanız özel bir devre kullanmanıza gerek kamadan 2 tane direnç ile volt değerini kolaylıkla ölçebilirsiniz.Basit bir matematiksel fonksiyon ile hesaplaması yapılabilmektedir. Oluşturduğumuz devre le 20 volta kadar ölçüm yaptık herhangi bir problem yaşamadık daha yüksek gerilimlerde test etmediğimiz için arduino kartınıza zararı olurmu olmazmı açıkçası fikrimiz yok.

Siz yinede arduino nuzu riske atmak istemiyorsanız denemenizi tavsiye etmem.Devre biraz daha geliştirilirse akım değeri de okunabilir.Voltmetre projemizi yapmak için aşağıdaki malzemeleri temin etmeniz gerekir.

Malzemeler

  • Arduino UNO
  • LCD Modül I2C
  • 100k ohm direnç (1 adet)
  • 10k ohm direnç (1 adet)

Öncelikle aşağıdaki devreyi kurun.Ardından lcd modül bağlantısını yapın lcd modülünüzün dönüştürücüsünde 4 adet pin çıkışı bulunmaktadır.VCC , GND , SCL, SDA. LCD modülün VCC girişini 5 volta bağlayın GND , GND’ye bağlanacak.SCL = A5 pinine , SDA = A4 pinine bağlanacak.

adruino-voltmetre-devre

// Proje Hocam - Voltmetre
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int analogInput = 0;
float vout = 0.0;
float vin = 0.0;
float R1 = 100000.0; // 100K ohm direnç
float R2 = 10000.0; // 10K ohm direnç
int value = 0;
void setup(){
   pinMode(analogInput, INPUT);
   lcd.begin(16, 2);
   lcd.print("DC VOLTMETRE-PROJEHOCAM");
}
void loop(){
   // read the value at analog input
   value = analogRead(analogInput);
   vout = (value * 5.0) / 1024.0; 
   vin = vout / (R2/(R1+R2)); 
   if (vin<0.09) {
   vin=0.0;
} 
lcd.setCursor(0, 1);
lcd.print("VOLTAJ V= ");
lcd.print(vin);
delay(500);
}
SİZCE NASIL OLMUŞ?
Beğendim
58%
İlginç
7%
Eh İşte
12%
Anlamadım
7%
Kötü
2%
Berbat
14%
YAZAR HAKKINDA
Murat Duran
Murat Duran
Açık kaynak donanım ve yazılım geliştiricisiyim , mekanik ve robotik sistemler üzerinde çalışmalar yapmaktayım.Ayrıca bir start-up firması olan Proje Hocam 'ın kurucuyum.
29 YORUMLAR
  • Kadir Çimen
    23 Aralık 2015 at 23:49

    direnç degerleri büyütülüp koduda ona göre ayarlarsanız kartımıza zarar vermez..

  • Elif Eda
    26 Aralık 2015 at 17:50

    denedim çok güzel çalışlıyor

  • erdem
    16 Ocak 2016 at 17:14

    modül olmadan olmaz mı lütfen cevap verin

  • kemal öztürk
    9 Aralık 2016 at 11:47

    A0 a gelen voltaj 5v u geçmediği sürece sorun yok. bunu anlamak içinde girişe ayarlanabilir çıkışlı güç kaynagı baglanır. harici bir voltmetre ile A0 gerilimi ölçülür. A0 ın 5v oldugu giriş gerilimi ölçüm sınrıdır. bu devrenin dizaynına göre bu voltmetre 50v a kadar ölçüm yapar. gerilim bölücü degerlere göre 45v 100k üzerinde 5v ise 10k üzerindedir

  • kemal öztürk
    13 Aralık 2016 at 21:00

    projeyi geliştirdim. verdiğim seti geçtiğinde (30v kullandım set olarak) buzeer ile sesli pin 13 ledi ile ışıklı ve lcd ekranda high voltage uyarısı ile görüntülü uyarı yaptım. isterseniz paylaşırım

  • emre
    24 Mart 2017 at 23:26

    11c modülü kullandım program çalışmadı baglantılarn farklımı olması gerekiyor

  • Ahmet
    18 Nisan 2017 at 18:49

    Merhaba ben de kod hatası veriyor,lütfen cevap verin

  • mehmet dönmez
    20 Nisan 2017 at 16:25

    merhaba ,
    Ekrandaki 9,12 değerinden sonraki “V” yi nasıl yazdırırız.
    Teşekkürler

  • Bünyamin
    5 Mayıs 2017 at 17:51

    akımı nasıl ölçebiliriz

  • Hayat Karabulut
    16 Mayıs 2017 at 08:22

    Kütüphaneyi nasıl kurabilirim?

  • Serkan
    11 Temmuz 2017 at 16:31

    Tepedeki resim temsilimidir? Direk giriş değerlerini ölçtüğü görülüyor. Diğer yandan tasarladığınız devre başka bir enerji kaynağından beslenip. el ile belirtilen pinlerden dilendiğinde ölçüm yapmaya uygunmudur?

  • eren
    4 Eylül 2017 at 06:29

    9V tan yukarıda doğru ölçmüyor. ?

  • İsmail KAR
    11 Eylül 2017 at 20:52

    çok güzel oldu . Teşekkürler …

  • kenan
    7 Kasım 2017 at 22:05

    Peki ben direnç ölçmek istiyorum nasıl yapıcam

  • taha
    16 Kasım 2017 at 09:56

    const int switchPin = 5;

    const int role1 = 6;
    const int role2 = 7;
    const int role3 = 8;

    boolean switchMode = false;

    void setup() {
    pinMode(switchPin, INPUT_PULLUP);
    pinMode(role1, OUTPUT);
    pinMode(role2, OUTPUT);
    pinMode(role3, OUTPUT);
    }

    void loop()
    {
    readSwitchMode();
    type();
    delay(200);
    }

    void readSwitchMode()
    {
    switchMode = (digitalRead(switchPin) == HIGH);
    }

    boolean isVoltageBetween(int AI, float minVoltage, float maxVoltage)
    {
    while(1)
    {
    unsigned int R = analogRead(AI);
    unsigned char f = (R * 312) / 1024; //ok?Evet
    if(f >= minVoltage && f <= maxVoltage) {
    return true;
    }
    }
    }
    void type()
    {
    if(isVoltageBetween(0, 0, 10))
    {

    digitalWrite(role1, switchMode ? HIGH : LOW);
    delay(1000);

    if(isVoltageBetween(1, 0, 10))
    {
    digitalWrite(role2, switchMode ? HIGH : LOW);
    delay(1000);

    if(isVoltageBetween(2, 0, 10))
    {
    digitalWrite(role3, switchMode ? HIGH : LOW);
    }
    }
    }
    }

    Hocam fikir verecek var mı bu algoritmayı projemde kullanacam. Niyetim şebekeden gelen gerilimi düşük gerilimlerde açmak. Yani R,S,T fazlarının tamamını Sinusun 10 voltunun altında devreyi kesebilmek. Trafo, Direnç ve de negatif alternansı yukarı atmak için köprü diyot kullandım. Acaba anahtarlama yaptığımda Sinusun 10 voltunun altında devreyi kesebilir miym

  • Ferhat Çetin
    16 Aralık 2017 at 10:07

    merhaba,
    ben arduino ile voltmetre ve ampermetreyi bir arada yapmayı istiyordum bu konuda yardımcı olabilir misiniz?
    bağlantı şekilleri ve kodlar nasıl olur yardımcı olursanız sevinirim. Şimdiden teşekkürler Ellerinize sağlık:)

  • Alpay Kurtcu
    1 Mart 2018 at 18:47

    Hocam LCD modülü kullanmadan bu devre arduino ya nasıl bağlanabilir ?

    • M. Fatih VAHABOĞLU
      21 Mart 2018 at 20:30

      LCD Modülü kullanmak istemiyorsanız, diğer bağlantıları (dirençleri) bağlayarak seri port üzerinden sonucu bilgisayara aktara bilirsiniz.

  • emre
    11 Nisan 2018 at 18:57

    oncelikle merhabalarsizin kullandıgınız kodu gırdıgımde lcd ekranda dire v=42 volt goruyorum cıkısa herhangı bısey baglamadan nasıl duzeltebılırım acaba

  • samet tunç
    29 Nisan 2018 at 23:38

    merhaba hocam bu devreyi kurup yaptım fakat seri portu açıp baktığım zaman çok saçma analog değerler alıyorum sabit bir voltaj göremiyorum yardımcı olurmusunuz

  • Emrah süzer
    30 Aralık 2018 at 00:30

    A0 a1 a2 a3 pi pinlerinden ölçüm alamıyorum.

  • emrah
    30 Aralık 2018 at 23:11

    I2c ekran yazmışsınız, standart kod kullanmışsınız, bu konu da diğerleri gibi kopyala yapıştır galiba, ı2c modüllü lcd de çalıştıramıyorum değer sürekli 0.00 V

  • yusuf emre yücel
    11 Mart 2019 at 21:04

    20 vlot lcd ekranıma zarar verirmi

  • GÖKHAN
    22 Mayıs 2019 at 10:13

    #include

    LiquidCrystal_I2C_AvrI2C lcd(0x3F,16,2); // 16 karakter 2 satır için – 20×4 satır için (0x27,20,4) yazın

    int voltajgiris = 0;
    float vout = 0.0;
    float voltajdeger = 0.0;
    float direnc1 = 100000.0; // 100K ohm direnç
    float direnc2 = 10000.0; // 10K ohm direnç
    int value = 0;
    void setup(){
    pinMode(voltajgiris, INPUT);
    lcd.begin();
    lcd.setCursor(0,0);
    lcd.print(“M.R.EVYAP MTAL”);
    lcd.setCursor(0,1);
    lcd.print(” VOLTMETRE “);
    delay(3000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(“TASARIM”);
    lcd.setCursor(0,1);
    lcd.print(“KAAN BASKAN”);
    delay(3000);
    lcd.clear();
    }
    void loop(){value = analogRead(voltajgiris);
    vout = (value * 5.0) / 1024.0;
    voltajdeger = vout / (direnc2/(direnc1+direnc2));
    if (voltajdeger<0.09) {
    voltajdeger=0.0;
    }
    lcd.setCursor(0, 0);
    lcd.print("OLCULEN");
    lcd.setCursor(0, 1);
    lcd.print("VOLTAJ = ");
    lcd.print(voltajdeger);
    lcd.print(" V");
    delay(500);
    }

    bu kütüphane : LiquidCrystal_I2C_AvrI2C.h indirilince çalıştı.son hali .

YORUM YAP