Arduino ile NTC Kullanarak Sıcaklık Ölçümü

Güncelleme tarihi: 2 May 2020

Bu uygulamamızda Arduino kartımıza bağladığımız NTC ile ortam sıcaklığını ölçeceğiz. Ölçülen sıcaklık belirlediğimiz sıcaklık değerinin üzerine çıkınca uyarı olarak bir LED yakacağız. Bu uygulamada kullanacağımız malzemelerimiz;

  • Arduino UNO

  • 5 mm LED

  • 220R veya 330R Direnç

  • 10K NTC

  • 10K Direnç

  • Jumper Kablolar (E-E)

  • Breadboard



Devremizi bu şemaya göre kurup bağlantılarımızı yapıyoruz.

Uygulama kodumuza geçmeden önce NTC nedir ? sıcaklık hesabı nasıl yapılır ? sorularına cevap arayalım. NTC, Negative Thermocouple kelimelerinin kısaltmasından oluşur. NTC sıcaklığa bağlı olarak değişen bir dirençtir. Sıcaklık yükseldikçe direnç değeri azalır.


Sıcaklığa göre 10K NTC'nin direnç değerinin değişim grafiği


Biz uygulamamızda 10K NTC kullanacağız, NTC’nin direnç değerini bulabilmek için öncelikle üzerine düşen voltaj değerini bulmamız gerekmektedir. Üzerine düşen voltaj değerini standart voltaj bölücü kullanarak bulacağız.

Rt = NTC Direnci R = Devrede kullanılan direnç değeri Vout = (Vin * Rt) / (R+ Rt)

Vout = ( 5*Rt) / (10K + Rt)

Vout değerini Arduino üzerinden direkt okuyabiliriz.

Matematiksel olarak NTC direnci sadece Stein-Hart denkleminin yardımıyla hesaplanabilir.


 T = 1 / (A + B*ln(Rt) + C*ln(Rt)^3 )
 


Buradaki T değeri Kelvin cinsinden bunu celcius’a çevirmek için 273.15 çıkarmamız gerekiyor. Bu formüldeki Rt değeri, o andaki ölçülen direnç değeridir. Bu formülümüzde A,B,C katsayılarını bulmamız gerekecektir. NTC’nin datasheetinden yararlanarak ;

A : 1.009249522×10−3 B : 2.378405444×10−4C : 2.019202697×10−7 bu sabitler 3 adet derece vedirenç değeri ile bulunabilir. Bu direnç değerleri NTC’nin datasheetinde bulunur. A,B,C değerleri buradaki linkten kolayca bulunabilir.


Yani NTC üzerinden sıcaklık değerini okumamız için adım adım şunlar yapılmalıdır. Arduino’nun Analog pininden okuduğumuz Vout değerini kullanarak voltaj bölücü formülünden Rt değerini buluyoruz. Rt değerini bulduktan sonra Stein-Hart denkleminde Rt nin yerine koyuyoruz. Bu denklem kelvin cinsinden değer vermektedir.


Şimdi uygulama kodumuza bakalım.


#include <math.h>
 
#define NTC_input A0 //Bağlantılar tanımlandı.
#define led 8
 
float A = 1.009249522e-03, B = 2.378405444e-04, C = 2.019202697e-07; // Stein-Hart denkleminde bulunan sabit değerleri tanımladık.
 
int NTC_deger; //NTC değerini integer cinsinden tanımladık.
float Vout; // Vout değişkeni
float NTC_direnc, NTC_direnc_ln, Sicaklik; // Stein-Hart denkleminde kullanılacak olan değişkenler
 
 
void setup(){
 Serial.begin(9600);
 pinMode(led,OUTPUT);
}
 
void loop() 
{
 
 NTC_deger = analogRead(NTC_input); //NTC değerini analog olarak okuyoruz.
 Vout = ( (NTC_deger * 5.0) / 1023.0 ); //Vout hesabı (Voltaj Bölücü Formülü)
 NTC_direnc = ( ( 5 * ( 10.0 / Vout ) ) - 10 ); //KiloOhm Cinsinden direnc değerinin hesabı
 NTC_direnc = NTC_direnc * 1000 ; // Ohm cinsinden direnç değeri
 NTC_direnc_ln = log(NTC_direnc); 
 /* Stein-Hart Denklemi: */
 Sicaklik = ( 1 / ( A + ( B * NTC_direnc_ln ) + ( C * NTC_direnc_ln * NTC_direnc_ln * NTC_direnc_ln ) ) ); //Sıcaklık değeri hesabı
 Sicaklik = Sicaklik - 273.15; //Sicaklik değerinin Celcius'a çevirimi 
 Serial.print("Sicaklik (Celcius) = "); //Bulunan değerlerin Seri Monitöre yazdırılması
 Serial.print(Sicaklik); 
 Serial.print("\t\t");
 Serial.print("NTC Direnc Degeri(Ohm) = ");
 Serial.print(NTC_direnc);
 Serial.print("\n\n");
 /*Sicaklik değeri 30 Derecenin üzerine çıkınca Arduino'ya bağlı olan LED yanacaktır.*/
 if(Sicaklik > 30){ 
 digitalWrite(led,HIGH);
 }
 else{
 digitalWrite(led,LOW);
 }
 delay(1000);
}

Projenizi yaparken karşılaştığınız problemleri yorumlar kısmında belirtirseniz ekibimiz en kısa sürede size yardımcı olacaktır






Son Paylaşımlar