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.


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
Comments