DİRENÇ VE AKIM DEĞERİ OKUMA
DİRENÇ VE AKIM DEĞERİ OKUMA

Bu projemizde, arduinomuz ile ayarlı direnç üzerinden direnç ve akım degeri okuma işlemini gerçekleştireceğiz. Ayarlı pot üzerinden hem direnç hem de akım degeri okumaya çalışacağız sizlerle.

Direnç ve akım değeri okuma işlemi nasıl yapılır ?

Arduinomuz’a bağlayacağımız ayarlı direnç(pot) üzerinden direnç değeri okuyacağız. Potun çıkış bacağını arduinomuzun analog girişine bağladığımızda, pot bize analog sensör gibi değişen direnç değerlerini direkt olarak verecektir.




Direnç ve akım degeri okuma işlşemi;

Pot üzerinden aldığımız direnç değerini bir takım işlemlerden geçirip, sonucu ister seri ekrana direnç ve akım degeri okuma şeklinde, ister lcd ekrana direnç ve akım degeri okuma şeklinde yazdırabiliriz. Biz seri ekrana yazdırmayı tercih ettik.

Okuduğumuz direnç değeri belirli, potu beslediğimiz değer belirli (5V arduino üzerinden direkt besleme verirsek.) Temel elektrik kanunu ohm yasasından I(akım)=V/R formülüne göre işlem yaparsak biz direnç ve direnç ve akım degeri okuma işlemini tamamlamış oluyoruz. Burda dikkat edilmesi gereken diğer bir husus, çalıştığımız sektör ”zayıf akım sektörü” diye geçmekte litaratürde. Yani bizim için en büyük akım mA’dır. Fazlası zaten devre yakar. İstenmeyen bir sonuçtur.

Bu yüzden direnç ve akım degeri okuma işlemini yapıp direkt olarak vermek, bizim için pek sağlıklı bir sonuç olmaz. Biz mA ve mV düzleminde çalışacağımız için sonuçları da gene o düzleme uygun kullanıcıya sunmak daha sağlıklı olur.

Bir diğer önemli husus ise, beslemeyi dışarıdan veriyor isek şayet voltajı dirence bölerken, 5V yerine verdiğimiz gerilimi uygulamak daha doğru olur. Harici gerilim kaynağı bağlarken arduinonun gnd(toprak) kısmı ile harici gerilim kaynağımızın toprak kısmını bağlamak. Yoksa sistem çalışmaz.

Malzemeler;

  • 1xArduino
  • 1xAyarlı direnç
  • Çokça jumper
Arduino Kodları
//Sabitlerimiz. Define olarak da tanımlayabilirsiniz. Hangisini isterseniz
const int mVperAmp = 185; // nedeni için acs712 nedir adlı makalemize bakın
const int currOfset = 2500; // Sensörün 0 volt için dönderdiği değer.(mV cinsinden olduğu için 1000 ile çarptık.)
//#define mVperAmp 185
//#define currOfset 2500


//Tüm fonksiyonlarda kullanabileceğimiz değişkenlerimiz. static yöntemi kullanarak fonksiyonlar arasında değer paylaşımı yapabilirsiniz
static float current = 0.00;
static float resistance = 0.00;
static float voltage= 0.00;

//Global değişkenimiz. Tek bir fonksiyonda bir nevi temp değişkeni gibi kullandığımız için glabal tanımladık
int readValue=0; 

//Seri haberleşmeyi 9600 baud rate hızında başlattık
void setup () {
  Serial.begin(9600); // Seri haberleşmemizi başlattık.
}

//Ana döngü sürekli dönecek. 1000 ms delay koyarak gelen değerleri daha rahat görebiliriz
void loop () {
  currResCalculate();
  Serial.print("Ayarli direnc:");
  Serial.print (resistance);   // Ayarlı potun direnç değerini okumuş oluyoruz
  Serial.print("\tVoltaj = "); // Sensörden aldığımız voltajı mili volt cinsinden ekrana yazmak için ön hazırlık.
  Serial.print(voltage,3);     // Sensörden aldığımız voltajı yazdırdık. Virgülden sonraki 3 haneyi aldık.
  Serial.print("\tAkım = ");   // Bizim için önemli kısıma akımı yazdırdığımız kısıma geliyoruz.
  Serial.println(current,3);   // Nihayet akımı yazıyoruz. virgülden sonra ki üç haneyi alıyoruz yine.
  delay(1000);
}

//Akım, gerilim ve direnç hesaplama fonksiyonu
void currResCalculate(){
  readValue=analogRead(A0); // direncin çıkış bacağını bağladığımız analog giriş pini.
  voltage = (readValue/1024.0)*5000; //mV değere dönüştürdük
  current=abs((voltage + currOfset) / mVperAmp); // Voltajı akıma çevirdik. Mili amper cinsinden
  resistance=voltage/current; //Direnci hesapladık
}




CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz