Merhaba THT ailesi. Bugün sizlerle arduino öğrenmeye başladığımda yaptığım voltmetreyi sizinle paylaşacağım. Bunu yapma sebebim elimde karşılaştırmam gereken piller vardı ve ölçü aletim yoktu. Ben de elimdeki malzemelerle bunu yapmıştım. Yaparken oldukça zevk almıştım. Umarım siz de beğenirsiniz. Projeyi açıklarken bazı eletronik detaylara da ineceğim. Amacım sadece projeyi anlatmak değil meraklı kişilerin de bir şeyler öğrenmesini sağlamak.
Bildiğiniz gibi arduino bir geliştirme kartıdır. Üzerinde dijital ve analog olmak üzere iki çeşit pin yapısı bulundurur. Dijital pinler dijital sinyaller kullanırken, analog pinler analog sinyaller kullanır. Projeyi anlamak için önce bu iki sinyal tipi arasındaki farkı bilmek gerekiyor. Analog sinyal belirli bir aralıktaki tüm değerleri alabilen sinyaldir. Örneğin aralığımız 0 volt ile 5 volt aralığında ise analog sinyalin değeri 0 ile 5 arasında yer alan tüm değerler olabilir (0, 2, 2.75, 3, 3.5, 5 gibi). Bu yüzden analog sinyallere sürekli sinyal de denir. Grafiğini çizmeye çalışırsak sinüs eğrisi oluşturur. Dijital (sayısal) sinyaller ise belirli aralıktaki değerlerin sadece maximum ve minimum olanları alabilir. Yani ya birdir ya sıfır. Aralığımız 0-5 volt ise sinyalin değeri ya 5 volttur ya 0. Dijital sinyalin grafiğini çizersek ortaya kare dalga şekli çıkar.
Peki ne zaman dijital pin, ne zaman analog pin kullanılır? Eğer amacımız arduino pininden voltaj giriş çıkışını tamamen açmak veya tamamen kapatmaksa dijital pin kullanılır. Ama amacımız pinden değişken değerler alıp vermekse analog pin kullanılır. Bizim bu projede amacımız değişken voltaj değerlerini ölçmek olduğu için analog pin kullanacağız. Şimdi projeyi anlatmaya başlayalım.
MALZEME LİSTESİ:
-Arduino Uno (Farklı modelde olabilir fark etmez)
-Bir tutam jumper kablo
-Bir tane breadboard
- Bir tane 10k direnç ve bir tane 100k direnç.
Gördüğünüz gibi malzemeler oldukça az ve kolay bulunan şeyler. Ben voltmetrede okunan değeri arduino IDEnin seri port ekranında gösterdim. Eğer isterseniz kodlarda ve devrede ufak değişiklik yaparak LCD ekranda da gösterebilirsiniz. Şimdi devremize geçelim:
DEVRE ŞEMASI:
Devre oldukça basit. Yaptığımız tek şey bir gerilim bölücü. İsterseniz buradaki direnç değerlerini değiştirebilirsiniz. Önemli olan şey büyük ve küçük direnci doğru yere bağlamak ve maximum voltaj değerini hesaplamak. Arduinoya giren voltaj 5 voltu geçmemeli. Ohm yasasına göre küçük bir hesap yaparsak bu devre ile teorik olarak maximum 55 volt ölçebilir. Tabi teoriyle pratik her zaman farklıdır. Benim tavsiyem 20 volttan fazla ölçmeye çalışmayın. Arduinonuz yanmasın
Şimdi Kodlara geçelim.
KODLAR:
---ÖN BİLGİ---
Bildiğiniz gibi arduino bir geliştirme kartıdır. Üzerinde dijital ve analog olmak üzere iki çeşit pin yapısı bulundurur. Dijital pinler dijital sinyaller kullanırken, analog pinler analog sinyaller kullanır. Projeyi anlamak için önce bu iki sinyal tipi arasındaki farkı bilmek gerekiyor. Analog sinyal belirli bir aralıktaki tüm değerleri alabilen sinyaldir. Örneğin aralığımız 0 volt ile 5 volt aralığında ise analog sinyalin değeri 0 ile 5 arasında yer alan tüm değerler olabilir (0, 2, 2.75, 3, 3.5, 5 gibi). Bu yüzden analog sinyallere sürekli sinyal de denir. Grafiğini çizmeye çalışırsak sinüs eğrisi oluşturur. Dijital (sayısal) sinyaller ise belirli aralıktaki değerlerin sadece maximum ve minimum olanları alabilir. Yani ya birdir ya sıfır. Aralığımız 0-5 volt ise sinyalin değeri ya 5 volttur ya 0. Dijital sinyalin grafiğini çizersek ortaya kare dalga şekli çıkar.
Peki ne zaman dijital pin, ne zaman analog pin kullanılır? Eğer amacımız arduino pininden voltaj giriş çıkışını tamamen açmak veya tamamen kapatmaksa dijital pin kullanılır. Ama amacımız pinden değişken değerler alıp vermekse analog pin kullanılır. Bizim bu projede amacımız değişken voltaj değerlerini ölçmek olduğu için analog pin kullanacağız. Şimdi projeyi anlatmaya başlayalım.
--########--
MALZEME LİSTESİ:
-Arduino Uno (Farklı modelde olabilir fark etmez)
-Bir tutam jumper kablo
-Bir tane breadboard
- Bir tane 10k direnç ve bir tane 100k direnç.
Gördüğünüz gibi malzemeler oldukça az ve kolay bulunan şeyler. Ben voltmetrede okunan değeri arduino IDEnin seri port ekranında gösterdim. Eğer isterseniz kodlarda ve devrede ufak değişiklik yaparak LCD ekranda da gösterebilirsiniz. Şimdi devremize geçelim:
DEVRE ŞEMASI:
Devre oldukça basit. Yaptığımız tek şey bir gerilim bölücü. İsterseniz buradaki direnç değerlerini değiştirebilirsiniz. Önemli olan şey büyük ve küçük direnci doğru yere bağlamak ve maximum voltaj değerini hesaplamak. Arduinoya giren voltaj 5 voltu geçmemeli. Ohm yasasına göre küçük bir hesap yaparsak bu devre ile teorik olarak maximum 55 volt ölçebilir. Tabi teoriyle pratik her zaman farklıdır. Benim tavsiyem 20 volttan fazla ölçmeye çalışmayın. Arduinonuz yanmasın
Şimdi Kodlara geçelim.
KODLAR:
Kod:
//TURKHACKTEAM:ORG Arduino ile DC voltmetre yapalım
int analogInput=A0;
int *******=1000; //ölçüm için bekleme süresi sansürlü yer r-e-f-r-e-s-h
float vout=0.0; //verdiğimiz voltaj
float vin=0.0; //arduinoya giden voltaj (gerilim bölücü sayesinde 5volttan fazla değerleri ölçeileceğiz)
float r1=100000.0; //100k direncimiz
float r2=10000.0; //10k direncimiz
int value=A0;
**** setup() { //Sansürlü yer v o i d
pinMode(analogInput,INPUT); //A0 pinini giriş olarak ayarladık
Serial.begin(9600); //seri port ekranına bağlantıyı başlattık
}
**** loop() { //Sansürlü yer v o i d
float olc=analogRead(analogInput);
Serial.print("value = ");
Serial.println(value);
if(olc>=1023){ //arduinoya 5Volttan fazla voltaj geldiğinde uyarı verdik tabi kart yanarsa bu uyarıyı göremeyebilirsiniz :)
Serial.println("DiKKAT!!!");
delay(*******); // sansürlü yer r-e-f-r-e-s-h
return;
}
else if(value<=0){
Serial.println("0 VOLT");
delay(*******); // sansürlü yer r-e-f-r-e-s-h
return;
}
vout=(olc*5)/1024.0; //Arduinonun aldığı değeri bizim anladığımız değere dönüştürdük
vin=vout/(r2/(r1+r2));
Serial.println(vout);
Serial.print(vin);
Serial.println("VOLT");
Serial.println("-------------------");
delay(*******); // sansürlü yer r-e-f-r-e-s-h
}
Anlamadığınız yerleri sorabilirsiniz.
Son düzenleme: