1 Şubat 2022 Salı

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.

 


 TERMİSTÖR NASIL ÇALIŞIR?

 

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. 

 


 TEMEL TERMİSTÖR DEVRESİ

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.

 

 TERMİSTÖRÜN DEVREYE BAĞLANMASI

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.

 


 TERMİSTÖRÜN KOD KISMI

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();

}

 

TERMİSTÖRÜ KALİBRE ETME 

 

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.

 

 ARDUİNO İLE OHM METRE YAPIMI

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