ARDUİNO NTC KULLANIMI
ARDUİNO NTC KULLANIMI VE NTC KALİBRE ETME (TERMİSTÖR EĞİTİMİ)
Termistörler, projeleriniz için sıcaklık verilerini almayı
kolaylaştıran basit, ucuz ve doğru bileşenlerdir. Uzak hava istasyonları,
ev otomasyon sistemleri ve ekipman kontrol ve koruma devreleri, termistörlerin
ideal olacağı bazı uygulamalardır. Bunlar analog sensörlerdir, bu nedenle
kod, özel kitaplıklar ve çok sayıda kod gerektiren dijital sıcaklık
sensörlerine kıyasla nispeten basittir.
Bu yazıda, termistörlerin nasıl çalıştığını açıklayacağım,
ardından size seri monitöre veya LCD'ye sıcaklık okumaları verecek
bir Arduino ile temel bir termistör devresinin nasıl
kurulacağını göstereceğim.
Termistörler, dirençlerini
sıcaklıkla değiştiren değişken dirençlerdir. Dirençlerinin sıcaklık
değişikliklerine tepki verme biçimlerine göre
sınıflandırılırlar. Negatif Sıcaklık Katsayısı (NTC) termistörlerinde sıcaklık arttıkça direnç
azalır. Pozitif Sıcaklık
Katsayısı (PTC) termistörlerinde
sıcaklık arttıkça direnç artar.
NTC termistörleri en yaygın olanlarıdır ve bu
eğitimde kullanacağımız tip budur. NTC termistörleri, sıcaklığa duyarlı
iletken bir malzeme oluşturmak için ısıtılan ve sıkıştırılan yarı iletken bir
malzemeden (metal oksit veya seramik gibi) yapılır.
İletken malzeme, içinden
akımın geçmesine izin veren yük taşıyıcıları içerir. Yüksek sıcaklıklar, yarı iletken malzemenin daha
fazla yük taşıyıcı salmasına neden olur. Demir oksitten yapılan NTC
termistörlerinde elektronlar yük taşıyıcılardır.
Nasıl çalıştığını görmek için temel bir termistör
devresi yapalım, böylece daha sonra başka projelere uygulayabilirsiniz.
Termistör değişken bir direnç olduğundan, sıcaklığı
hesaplamadan önce direnci ölçmemiz gerekecek. Ancak Arduino doğrudan
direnci ölçemez, sadece voltajı ölçebilir.
Arduino, termistör ile bilinen bir direnç arasındaki
bir noktada voltajı ölçecektir. Bu bir voltaj bölücü olarak
bilinir. Gerilim bölücü denklemi:
Bir termistör devresindeki voltaj bölücü açısından,
yukarıdaki denklemdeki değişkenler:
Bu denklem, termistörün direnci olan R2'yi çözmek
için yeniden düzenlenebilir ve basitleştirilebilir:
Son olarak, termistörün
direncini bir sıcaklık okumasına dönüştürmek için Steinhart-Hart denklemi
kullanılır.
Termistör ve direnci Arduino'nuza şu şekilde
bağlayın:
Direncin değeri, termistörünüzün direncine kabaca
eşit olmalıdır. Bu durumda termistörümün direnci 100K Ohm, yani direncim
de 100K Ohm.
Termistör üreticisi size bunun
direnç olduğunu söyleyebilir, ancak değilse, öğrenmek için bir multimetre kullanabilirsiniz. Eğer bir multimetreniz
yoksa Arduino
Ohm Meter eğitimimizi takip ederek Arduino'nuzla bir Ohm metre
yapabilirsiniz. Sadece termistörünüzün büyüklüğünü bilmeniz
gerekir. Örneğin termistör direnciniz 34.000 Ohm ise 10K
termistördür. 340.000 Ohm ise, 100K termistördür.
Bu program Celsius ve Fahrenheit'i aynı anda gösterecek:
int ThermistorPin = A1;
float logR2, R2, T, Tc, Tf, R1 = 10000; //
Termistöre bağlı olan direnç değeri 10k ohm
float A = -1.407339546e-03, B = 4.898818864e-04, C = -5.549732658e-07;
void setup() {
Serial.begin(9600);
}
void loop() {
int Vo = analogRead(ThermistorPin);
R2 = R1 * (1023.0 / (float)Vo - 1.0);
logR2 = log(R2);
T = (1.0 / (A + B * logR2 + C * logR2 * logR2 * logR2));
Tc = T - 273.15;
Tf = (Tc * 9.0) / 5.0 + 32.0;
Serial.print("Temperature: ");
Serial.print(Tf); //fahrenheit
Serial.print(" F; ");
Serial.print(Tc); //celsius
Serial.println(" C");
delay(500);
}
Termistör Celsius, Fahrenheit değerlerinin LCD ekranda gösterildiği
kod kısmı:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int ThermistorPin = A1;
float logR2, R2, T, Tc, Tf, R1 = 10000;;
float c1 = -1.407339546e-03, c2 = 4.898818864e-04, c3 = -5.549732658e-07;
void setup() {
lcd.init();
lcd.backlight();
}
void loop() {
int Vo = analogRead(ThermistorPin);
R2 = R1 * (1023.0 / (float)Vo - 1.0);
logR2 = log(R2);
T = (1.0 / (c1 + c2 * logR2 + c3 * logR2 * logR2 * logR2));
Tc = T - 273.15;
Tf = (Tc * 9.0) / 5.0 + 32.0;
lcd.print("Temp: ");
lcd.print((int)Tf);
lcd.print((char)223); // (char)223 = ° işareti
lcd.print("F ");
lcd.print((int)Tc);
lcd.print((char)223);
lcd.print("C");
delay(500);
lcd.clear();
}
Termistörü (100 °C) sıcak su, (0 °C) buzlu su ve (25 °C) oda sıcaklığında 1 dakikaya yakın bekledikten
sonra multimetre nin ohm kademesinde direnç değerlerini ölçüp bir yere not alıyoruz.
(Multimetreniz yoksa aşağıda bulanan Arduino ile yapılmış ohm metre
bulunmaktadır.)
Bu değerleri https://www.thinksrs.com/downloads/programs/therm%20calc/ntccalibrator/ntccalculator.html
sitesinde bulunan R1, R2 ve R3 kutucuklarının yerine yazıyoruz, aynı şekilde
yan tarafında bulunan T1, T2 ve T3 değerlerini de yazdıktan sonra yukarıda bulunan
A, B ve C değerlerini bir yere not ettikten sonra aşağıda bulanan koda A, B ve
C değerlerini yazıyoruz ve kalibrasyon işimiz bitmiş oluyor ve termistörümüz
sorunsuz bir şekilde çalışmış oluyor.
Ohm Metreyi Kablolama
Devre gerçekten çok basit. Tek ihtiyacınız olan
bir Arduino, ölçmek istediğiniz direnç ve bilinen bir değere sahip başka bir
direnç. Bilinen ve bilinmeyen dirençlerle bir voltaj bölücü kuracağız ve
Arduino ile aralarındaki voltajı ölçeceğiz. Sonra Ohm Yasasından direnci
hesaplayacak bir program çalıştıracağız.
İlk önce devreyi şu şekilde bağlayın:
Kod
Şimdi bu kodu Arduino IDE'ye girin ve panonuza
yükleyin:
int analogPin = A0;
int raw = 0;
int Vin = 5;
float Vout = 0;
float R1 = 1000;
float R2 = 0;
float buffer = 0;
void setup(){
Serial.begin(9600);
}
void loop(){
raw = analogRead(analogPin);
if(raw){
buffer = raw * Vin;
Vout = (buffer)/1024.0;
buffer = (Vin/Vout) - 1;
R2= R1 * buffer;
Serial.print("Vout: ");
Serial.println(Vout);
Serial.print("R2: ");
Serial.println(R2);
delay(1000);
}
}
Bilinen direncinizin değerini (Ohm
cinsinden) yukarıdaki kodun 5. satırına girin. Benim durumumda 1K Ohm
(1000 Ohm) değerinde bilinen bir direnç kullanıyorum. Bu nedenle, 5.
satırım şöyle görünmelidir:
float R1 = 1000;.
Program, bilinen direnç ile bilinmeyen direnç
arasındaki voltajı okumak için analog pin A0'ı kurar. Yine de başka bir
analog pin kullanabilirsiniz, sadece 1. satırdaki pin numarasını değiştirin ve
devreyi buna göre bağlayın.
Seri monitörü açtığınızda, direnç
değerlerinin saniyede bir kez yazdırıldığını göreceksiniz. İki değer
olacak R2 ve Vout.
·
R2: Ohm cinsinden bilinmeyen direncinizin
direncidir.
·
Vout: bilinmeyen direncinizdeki voltaj
düşüşüdür.

0 Yorum:
Yorum Gönder
Kaydol: Kayıt Yorumları [Atom]
<< Ana Sayfa