Arduino Voltmetre Yapımı

Merhaba arkadaşlar,
Bu yazımda gerçek ortamda denediğim ve kullanmak üzere kutuladığım, Arduino Voltmetre devresini anlatacağım.
Aslında pahalı bir Voltmetre oldu. Ama ben böyle şeyleri yapmaktan keyif alıyorum. Şimdiye kadar, sizlerle Voltmetre olarak hep entegreli devreler paylaştım.
Volt metre olarak ICL 7107 çok ideal ve oldukça da stabil ve hassas ölçüm yapıyor. Ama yapması çok zaman alıyor.
İkinci bir olumsuzluk ise PCB yapmak, o benim için zor , o sebepten delikli pertinaksa yapardım.
Arduino seçmemin sebebi yapımı çok kolay ve programla istediğimiz gibi kontrol edebilmemiz. Diğer entegre ile yapmamin sebebi, benim 80 li yıllarda tanımış ve çalişmiş olduğum 7 segment displaylerin beni son derece etkilemesi. O yıllarda bende büyük bir hayranlık uyandirmıştı. İsviçrede bir Radyo tamircisinde görmüştüm, AVO meter olarak ve o yıllarda oldukça pahalı olduğu için alamamıştım.
LCD olanları çıkınca onlardan aldım. Fakat, O ledlerin ışıgı beni hala etkiliyor.
Arduino nanoda desimal tarafındaki sayıların tam stabil olmayışı. Yani bir kaç mili Volt oynama yapması, biraz rahatsız edici,  Bir çok devre ondalık, fazlalığı tolere eder. Bu sebebden, bu kez devamlı kullanabilmek için kutuladım. Umarım beğenirsiniz.

Yapım Aşamaları :
Devre şeması biraz karışık gelse de Program, Proteus üzerinde çalışmaktadır. Zaten gerçek devrenin çalışması da videoda görülmektedir.
Devre şemasında blok olarak gösterilen (sağ üstte) LCD I2C kontrol modülü ile arduinonun SDA ve SCL uçlarına bağlanıyor. Proteusta I2C modülünü temsil eden kısım sağ altta gösterilmiştir. I2C modül kırmızı çizgiyle belirtilmiştir. Bu I2C modülün de çalışması için SDA ve SCL uçları arduino dan geliyor.
Burada hatırlatmak da yarar var. Bazı I2C kütüphaneleri farklı olabiliyor. Bu programla birlikte kullanılmak üzere kütüphane dosyaları, indirebileceğiniz dosyaların arasında bulunacaktır. Kendi kütüphaneniz sorun yaratırsa bu kütüphaneyi kullanabilirsiniz. 

Ayrıca şunu da hatırlamanız gerekir. ( Arduinoyu bozmak istemiyorsanız )

1-) Devrenin doğru kurulduğuna emin olmadan ve gerilim bölücü dirençlerin maksimum gerilimde 5V tan fazla değer göstermediğine kanaat getirmeden, Arduinonun analog girişlerine bağlamayın.
2-) Devreyi ilk test edeceğinizde 0-5V luk bir gerilim ile test edin.
3-) Devrenin çalıştığından emin olunca, ölçülecek gerilimi 5V tan daha büyük değere ayarlayabilirsiniz.
4-) Bu değerin 50V u geçmemesi lazım. (Arduinonun bozulmaması için Devre bu haliyle 0-60V arası çalışır fakat toleranslı olsun arduino bozulmasın diyorsanız, buna uymalısınız.)

Not: Gerilim bölücü dirençleri değiştirerek, daha büyük gerilimleri de ölçebilirsiniz. Fakat arduinoda gerilim büyüdükçe hata payı da o oranda büyümektedir. ( Proteus videosunda göreceksiniz. )

Yukarıdaki şemada seri port monitör ile proteusta, arduinodan gelen bilgileri görürsünüz, aynı arduino seri monitor gibidir.
R1 ve R1_1 dirençleri seri dirençtir. 110K olmadığı için 100+10K olarak takıldı. Bu arduino programında R1 direnci olarak geçecektir. Ayrıca R2 direnci ise Hassasiyet ayarı içindir. R2 direnci de Arduino programında formülde kullanılmaktadır.
Bu dirençlere neden ihtiyaç var :  Arduino 5V luk bir devredir. Analog girişler 5V ta kadar ölçüm yapabilir. Bizler 5V tan daha büyük değerleri ölçebilmek için Gerilim bölücü dirençler kullanırız. Ölçü aletlerinde de bu tip gerilim bölücü dirençler kullanılır. x10 x100 kademeleri gibi ya da 20V 200V 1000V kademeleri gibi. Buradaki devre bu dirençlerle 0-60V arasını ölçebilecek bir devredir. Tabii ki arduinonun sağlığını düşünürsek 0-50V diyebiliriz.
60V karşılığında arduino, analog girişi 5V luk bir bilgiyi algılar ve 1023 sayısını üretir.
Arduino analog girişi dijitale çeviren bir giriştir. 0-5V arası her volt değeri için bir sayı üretir. Bizlerde bu sayıya göre hesap yapar ve kaç volt geldiğini buluruz.
Program içerisindeki, Voltmetre formülü şu şekildedir. Voltcikis: Gerilim bölücüden analog girişe uygulanan gerilimi buluyoruz.
Formül budur.  VoltGiris = VoltCikis/ (R2/(R1+R2)) buradaki formülde Voltcikis= Voltgiris*(R2/(R1+R2)) olur.
30V giriş voltajı için hesabı yapalım. 
Voltcikis=30V*(10K/(110K+10K))==> Voltcikis=30V*0.0833=2.499V
Burada programın içerisinde verilen float değişkenleri R1 ve R2 için şu şekildedir.
float R1 =99990.0;
float R2 =9000.0;
Buna göre hesap yaptığımızda ise (Ki buradaki POT bunu sağlıyor. )
Aynı hesabı yaptığımızda,
Voltcikis=30V*(9000/(99990+9000))==> Voltcikis=30V*0.0825=2.477V Yaklaşık 2.5V analog girişe gerilim düşer. Bu da ekrana yansıtılır.
Buradaki hassasiyeti, Float değerleri ayarlayarak ve R2 pot’unu  ayarlayarak yapabilirsiniz.
Şunu unutmamalısınız. Voltmetre devreye paralel bağlanır, yani hem devre üzerinden, hem de ölçü aleti üzerinden akım akışı olur. Genelde giriş direnci diye söz edilir. Bu küçük ise devrenin çekeceği akımdan fazlasını voltmetre çeker. Bu da iyi bir şey değildir. Burada 120K gibi büyük bir direnç bulunmakta. Bundan daha iyisini yapıp daha büyük direnç koyarak giriş direncini arttırabiliriz. Bilhassa büyük gerilimlerde bu daha iyidir. Bazen de zorunluluktur.
Bu gerilim bölücü devresinde, bir denge vardır. Bu da aralarında 10 kat fark olması. Yani R1 direncini 1M yaparsak R2 direncini de 100K pot yaparsak dengeyi bozmadan ve programı da bozmadan, giriş direncini yükseltmiş oluruz. Gereklimidir? Tabii ki hayır. 50V ta kadar ölçebileceğiniz için daha büyük dirence gerek yoktur.
Bunun faydası nedir bakalım. 
50volta kadar ölçebiliriz dedik.
I=V/R formülüne göre gerilim bölücü üzerinden geçen akıma bakalım.
I=50/120K=0,000416A=0,416mA=416uA
I=50/1110K= 0,000045A=0,045mA=45uA
Gördüğünüz gibi düşük gerilimlerde uA seviyesinde de olsa değişiklik oluyor. Daha büyük gerilimlerde mA seviyesinde değişiklikler olacağından, direnç değerlerinin büyütülmesinde fayda vardır.
Buradaki gerilim bölücü hesap makinesi ile denemeler yapabilirsiniz.

YÜK amper hesabı için diye bir pot göreceksiniz. Bu pot sizin devrenizi temsil etmektedir. Normal ölçü aletlerinde akım kısmı ayrı yapılmıştır ve burada probların yerleri değiştirilir. Çünkü ampermetre devreye seri bağlanır. Burada ise gerilim bölücü dirençlerden gerilimi ölçerken aynı zamanda, devrenizden geçen akımı da ölçebiliyorsunuz. Bunu sağlayan ise R_AKIM direncidir. Bu direnç ( 0R25 ohm 2W5 ) çok küçük değerde olduğundan devrenizi çok fazla etkilemez ve üzerinde düşen gerilim arduinonun A1 analog girişinden dijitale çevrilerek akım hesaplanır.
Bu direnç üzerinde de kalan gerilim çok büyük olursa, devrenizin çalışmasını etkiler. Bundan dolayı mümkün olduğu kadar küçük seçilir.
Hesabını yapalım.
Devreniz 5V ile 1A çekiyor. Acaba direnç üzerinde ne kadarlık bir gerilim kalıyor.
Bu neden önemli? Çünkü devrenizin gerilimi bu direnç üzerine düşen gerilim kadar düşecek.
Örnek vermek gerekirse 5V la çalışan devreniz 4V ta sapıtmaya başlıyor. Bu direnç üzerinde 1V düşmüş olsa o zaman devrenizin üzerinde kalan gerilim 4V olacaktır.
Şimdi yukarıdaki değerlerle hesap yapalım.
R_akım direncinin gerilimi= I*R=1*0.25ohm=0.25V hesaplarsak, 5V luk devrenize uygulanacak gerçek gerilim değeri maksimum 4,75V olacaktır. Devrenizin çalışmasını etkilemeyecektir.
Mesela 3A çeken bir devreniz var. O zaman bu direnç üzerinde düşecek gerilim 0.75V olacaktır. Bu da sizin devrenizin çalışmasını etkileyebilir.
Tabii ki elinizde birden fazla 0.25R direnç varsa bunları paralel bağlarsanız, toplam direnç daha küçük olacağından gerilim kaybı daha az olacaktır. Paralel direnç hesabı için bu sayfadan yararlanabilirsiniz. 
(Current sense resistor ) denilen seri olarak bağlanan akım tespit direncinin, piyasada  bulunabilen,  minimum değeri 0,0005 ohm civarındadır. 3A çeken bir devre için bu direnci bağlasanız ne olur derseniz. V=I*R=3*0,0005ohm= 0.0015V olacaktır. Bu da devrenizde hiç bir etki yapmayacaktır.  Ultra low current sense resistor sayfası
Yanında 2,5W göreceksiniz. Bu da direncin gücüdür. Gücünü de P=V*I ile hesaplarsak.
R_akım gücü= 0.25V*1A= 0.25W direnç bile yetebilir. Fakat gerilim yükseldikçe ve akım yükseldikçe daha fazla güce ulaşabileceğini formülden görebilirsiniz. Bundan dolayı 2.5W kullanılmıştır.

/// Arduino nano ile Volt ve Amp meter.  MUSTAFA AVCI TARAFINDAN DENENMISTIR, FAKAT HICBIR SORUMLULUK KABUL ETMIYORUM.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x20, 16, 2);
float AmpCikis = 0.0;
float AmpGiris = 0.0;
int ADeger=0; 
/////////////////
float VoltCikis = 0.0;
float VoltGiris = 0.0;
float R1 =99990.0; 
float R2 =9000.0;                   
int VDeger=0;
////////////////      
void amp(){
ADeger = analogRead(A1);
AmpCikis = (ADeger*5)/1023.0;
lcd.setCursor(0,1);
lcd.print("Amper: ");
lcd.print(AmpCikis*4);  
}
//////////////////////////
void volt(){
  VDeger =analogRead(A0);
  Serial.print("Analog sayı : ");
  Serial.println(VDeger);
VoltCikis = (VDeger*5)/1023.0;
VoltGiris = VoltCikis/ (R2/(R1+R2));  

Serial.print("Analog giris gerilimi \"Volt\" :  ");
Serial.println(VoltCikis);
Serial.print("Olculen Gerilim \"Volt\" : ");
Serial.println(VoltGiris);
if(VoltGiris < 0.09)
{
  VoltGiris = 0.0;
  }
  lcd.setCursor(0,0);
lcd.print("Volt: ");

lcd.print(VoltGiris);
  }
//////////////////////
void setup() {
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  Serial.begin(9600);
  lcd.begin();
  lcd.setCursor(0,0);
lcd.print("Volt: ");
  }

void loop() {
 amp();
 volt();
 delay(1000);
lcd.clear();
}

Arduino voltmetre dosyaları Buradadır.

Arduino I2C LCD modül Kütüphanesi Buradadır. ( kendi kütüphaneniz uymazsa bu kütüphaneyi kullanabilirsiniz. Farklı kütüphaneler internette mevcut. )

Gerçek devre videosu_1 :

Gerçek devre videosu_2 :

Proteus çizim üzerinde çalışması : 

1 Comment

  1. Sayin Safak Agustoslu iyiki bu siteyi yapmissiniz, tesekkürler bazen banada lazim oluyor.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.