Eğitim Şart

Taşı delen suyun şiddeti değil sürekliliğidir!…

Arduino İle Multimetre Yapımı 4: Kapasite (Sığa) Ölçümü

Bu çalışmamızda Arduino ile bir kondansatörün sığasını ölçmeye çalıştık. Kondansatörler, üzerlerinde elektrik yükü depo edebilen devre elemanlarıdır. Doğrultucu devrelerinde, filtre devrelerinde kullanırlar. Kapasitesi küçük akü gibi düşünülebilirler.

symbolYapıları oldukça basittir: iki iletken levha arasında yalıtkan bir bölge. Sembolleri de bunu ima eder. Kutupsuz, kutuplu, ayarlı olanları vardır. Birim gerilimde depo edebildikleri yük miktarına kapasite ya da sığa denir (C= Q/V). Birimi Farad (Coulomb/Volt) çok büyük bir değerdir. Genellikle μF (mikrofarad=10^-6F), nF (nanofarad=10^-9F), ve pF (pikofarad=10^-12F) değerleri kullanılır.

Doğru akımla çalıştırıldıklarında önce kısa devre gibi davranıp, zamanla şarj olup açık devreye dönüşürler. Bu süreler hesaplanıp zamanlayıcı devrelerde ana eleman olarak kullanılırlar. Bir DC kaynağa seri dirençle bağlandıklarında üzerindeki gerilimin zamanla değişimi aşağıdaki gibi olur.

Anahtar kapatılıp devreden akım geçmeye başladığından itibaren, kondansatör şarj olmaya başlar ve üzerindeki gerilim üretecin gerilimine (yaklaşık) eşit olduğunda artık devreden akım geçmez. Bu süre beş eşit parçaya bölündüğünde ilk aralıkta (t) üzerindeki gerilim üretecin geriliminin yaklaşık %62.3 kadar olur. Sonraki her t zamanda aradaki farkın %62.3’ü kadar gerilim yüklenir. Böylelikle 5t süre sonunda kondansatör üzerindeki gerilimin üretecin gerilimine eşit olduğu kabul edilir(Aslında bu grafik bir üstel fonsiyonudur ve kondansatörün gerilimi teoride sonsuz zamanda üretecin gerilimine eşit olur!). Bu ‘t’ süresine τ (tau) denir ve tanım olarak:

τ = R * C

Şeklinde hesaplanır (Burada τ:saniye, R:ohm, C: mikrofarad cinsindendir). Bu tanımı arduino ile kullanmak işimize gelir! Çünkü içerisinde besleme geriliminin %63.2 değeri var ki bu da gerilime duyarlı Arduino için tam istediğimiz şey. Değerini bildiğimiz bir direnç ile zaman ve gerilimi arduino ile ölçtüğümüz bir devre kurarak kondansatörün sığasını Arduino’ya hesaplattırabiliriz. Bunun için Arduino’nun kendi resmi sitesindeki bilgilerden faydalanabiliriz. Devre şeması:

semasi_c

13 numaralı pin kondansatörü şarj etmek için kullanılır. Bu pine bağlı 10k direnç üzerinden geçen akım kondansatörün eksi ucundan gnd hattına ulaşır ve şarj olmaya başlar. Kondansatörün artı ucu analog girişe (A0) bağlıdır ve bu gerilim 13 numaralı pinden sağlanan +5 voltun %62.3’üne ulaşana kadar geçen süre hesaplanır. İyi de akım neden 220Ω direnç üzerinden deşarj pini olan 11 numaralı pin üzerinden akmaz? Burada Arduino’nun özelliklerinden birini hatırlamak gerekiyor. Dijital pinler giriş ya da çıkış olarak kullanılabiliyor, bunu deklare etmek şartıyla! Bir pin giriş pini olarak tanımlanmışsa o artık sensörden gelen veriyi okur, direnci çok büyüktür ve akım geçmez. Sensörden çok akım çekseydi zaten ölçtüğü devreyi etkiler kullanılamazdı! Çıkış pini ise direnci küçük kendinden sonraki devreyi sürebilecek akım (40mA) geçmesine izin verir. LED yakabiliyoruz mesela! Kısaca biz kodda bunu belirterek pinlerin giriş/çıkış olarak tanımlayıp akım kontrolü yapabiliyoruz.. Önce başta setup bölümünde şarj pinini (13) çıkış olarak tanımlayıp ‘LOW’ yapıyoruz:

void setup(){
pinMode(chargePin, OUTPUT);
digitalWrite(chargePin, LOW);  

Daha sonra loop bölümünde bu çıkışı ‘HIGH’ yaparak kondansatöre 5 volt uyguluyoruz. Aynı andaki zamanı başlangıç zamanı olarak kaydediyoruz. Ve kondansatör üzerindeki gerilim 5 voltun %62.5’ine ulaşıncaya kadar bekliyoruz. Burada A0, 0-5 volt arasını 0-1023 olarak ölçtüğünü hatırlıyoruz. 1023’ün %62.3’ü yaklaşık 647 yapıyor.

void loop(){
digitalWrite(chargePin, HIGH);
startTime = micros();
while(analogRead(analogPin) < 648){ }

Bu arada kod Arduino’nun sayfasından alınma. Ama bazı değişiklikler yapıldı. Bunun sebebi çok geniş aralıkta ölçüm yapma zorunluluğu! Hem pF(10^-12) hem μF(10^-6) değerlerini ölçmek biraz zor. orijinal devrede ‘micros’ yerine ‘millis’ komutu kullanılmıştı. Buradaki devre elemanlarıyla μF değerleri net ölçülebiliyorken nF ve pF değerleri ölçülemiyordu. En azından nF değerleri de ölçmek için ben şarj direncini 10 kΩ yerine 300 kΩ yapıp zamanı da mikrosaniye cinsinden ölçtüm. Bu sayede 10 nF seviyesinde sığa ölçümleri yapabildim. Ama bu bana dezavantaj olarak mikrofarad cinsinden ölçmelerde uzun ölçüm zamanı olarak geldi. 300k dirençle 100 μF bir kondansatörü ölçme süresi yaklaşık 30 saniye! Bu sıkıntıyı düzeltmek için kurulmuş devreler de var! Çözüm olarak birden fazla şarj pini ve şarj direnci kullananlar yada bir komutatör ile şarj direncini değiştirenler var.

Bu arada while(analogRead(analogPin) < 648){ } komutu içi boş bırakılmış; ‘{ }’ işaretleri arasında ‘birşey yapma’ anlamında. Ben sürenin işlediğini ve kodun çalıştığını kontrol için LCD ekranın ikinci satırının son karakterine bir yanıp sönme efekti ekledim.

while(analogRead(analogPin) < 648){
lcd.setCursor(15,1);
lcd.blink();
}

Sonra yapılan hesaplar sonucu elde edilen değer μF cinsinden (eğer sonuç 1 μF’tan büyükse) yazdırıldı:

elapsedTime= micros() – startTime;
microFarads = ((float)elapsedTime / resistorValue);
if (microFarads > 1){
Serial.print((long)microFarads);
Serial.println(” microFarads”);
}

Eğer hesaplanan değer 1 μF’tan daha küçükse- sıfır virgüllü sayılarla uğraşmamak için-1000 ile çarpılıp nF cinsinden yazdırıldı.

else
{
nanoFarads = (microFarads * 1000.0)-1;
Serial.print((long)nanoFarads);
Serial.println(” nanoFarads”);
}

(Formüldeki ‘-1’ düzeltme faktörüdür)

Daha sonra kondansatör deşarj pini üzerinden deşarj edildi:

digitalWrite(chargePin, LOW);
pinMode(dischargePin, OUTPUT);
digitalWrite(dischargePin, LOW);
while(analogRead(analogPin) > 0)
{ }

Şarj pini (13) ‘LOW’  yapılıp 5 volt kaynağı kesildikten sonra deşarj pini ‘çıkış’ yapılıp akım geçmesi sağlandıktan sonra ‘LOW’ yapılarak kondansatör 220Ω direnç ve 11.pin üzerinden deşarj edilir.

Burada dikkat edilmesi gereken noktalardan biri ölçüme direkt şarj işlemi ile başlanması. Ya kondansatör tamamen deşarj değilse! O zaman hatalı zaman ve hatalı sığa ölçümü yapılır. Bunun çözümü için ya koda önce deşarj presedürü eklenmeli ya da ilk ölçüm yerine ikinci ve daha sonraki ölçümlere daha çok güvenilmelidir.

Görüşmek üzere…

 

Orijinal Arduino sayfası: https://www.arduino.cc/en/Tutorial/CapacitanceMeter

Kod ve şema :

Kondansatörler: https://egitimsart.org/2018/06/23/kondansatorler/

LCD Ekran kullanımı: https://egitimsart.org/2019/02/09/su-arduino-dedikleri-5-arduino-ile-lcd-ekran-kullanimi

%d blogcu bunu beğendi: