Arduino'da NTC ile sıcaklık ölçümü

👤 Yazar: ozcan 📅 Tarih: 28.05.2026 18:14 👁️ Görüntüleme: 8

Arduino projelerimizde çevremizdeki fiziksel değişimleri algılamanın en popüler yollarından biri sıcaklık ölçümüdür. Sıcaklık ölçmek için LM35 veya DHT11 gibi dijital/analog entegre sensörler bulunsa da, endüstride ve kombi, kahve makinesi gibi ev aletlerinde en çok tercih edilen, oldukça ucuz ve dayanıklı olan eleman 10k NTC Termistördür.

Daha önceki yazılarımızda bağımlı dirençlerden bahsetmiştik. NTC de sıcaklığa bağlı olarak direnci değişen harika bir analog bileşendir. Gelin, yenidir.com takipçileri için 10k NTC'nin çalışma mantığını, Arduino ile voltaj bölücü bağlantısını ve Steinhart-Hart formülü kullanarak direnç değerini nasıl santigrat dereceye (°C) dönüştüreceğimizi adım adım inceleyelim.

10k NTC Nedir ve Nasıl Çalışır?

10k ntc

NTC (Negative Temperature Coefficient), Türkçesiyle "Negatif Sıcaklık Katsayılı Termistör" anlamına gelir. Çalışma mantığı şudur: Üzerine düşen sıcaklık arttıkça, gösterdiği iç direnç değeri düşer. Sıcaklık azaldıkça ise direnç değeri artar.

Peki neden "10k" deniyor? Çünkü bu termistör, oda sıcaklığında (tam olarak 25°C'de) tam 10.000 Ohm (10kΩ) direnç değerine sahiptir. Sıcaklık 25°C'nin üzerine çıktığında bu değer 9k, 8k diye düşmeye başlar.

Arduino ile 10k NTC Bağlantı Şeması (Voltaj Bölücü)

Arduino dijital veya analog pinlerinden doğrudan bir direnç değerini ölçemez; Arduino sadece voltajı (gerilimi) okuyabilir (0V - 5V arası). Bu yüzden NTC'nin değişen direncini voltaj değişimine çevirmek için Sabit bir 10kΩ direnç ile "Voltaj Bölücü" devresi kurmamız gerekir.

Bağlantıyı breadboard üzerinde şu şekilde yapıyoruz:

arduino ntc

Matematikten Dereceye: Steinhart-Hart Denklemi

Arduino A0 pininden 0 ile 1023 arasında bir değer okur. Bu değeri sıcaklığa dönüştürmek için sadece orantı kurmak yetmez, çünkü NTC'nin sıcaklık-direnç eğrisi doğrusal (lineer) değildir, logaritmiktir. En hassas ve doğru sonuçları almak için bilim dünyasında kabul görmüş Steinhart-Hart denklemini kodumuzun içine entegre edeceğiz. Merak etmeyin, Arduino'nun matematik kütüphanesi (math.h) bu zorlu logaritma hesabını bizim için arka planda yapacak.

Arduino 10k NTC Sıcaklık Ölçüm Kodu

Aşağıdaki kodları Arduino IDE programınıza yapıştırıp kartınıza yükleyin. Herhangi bir harici kütüphane kurmanıza gerek yoktur, kodlar tamamen standart matematiksel fonksiyonlarla çalışır.

#include <math.h> // Logaritma hesabı yapabilmek için matematik kütüphanesini ekliyoruz.

const int ntcPin = A0; // NTC'nin bağlı olduğu analog pin

// Steinhart-Hart ve Voltaj Bölücü sabitleri
float sabitDirenc = 10000.0; // Voltaj bölücüde kullandığımız sabit direnç (10k)
float ntcOdaDirenci = 10000.0; // NTC'nin 25 derecedeki direnci (10k)
float odaSicakligi = 298.15; // Kelvin cinsinden 25°C (25 + 273.15)
float bKatsayisi = 3950.0; // NTC'nin Beta (B) katsayısı (Genellikle 3950'dir)

void setup() {
  Serial.begin(9600); // Seri haberleşmeyi başlatıyoruz.
}

void loop() {
  int analogDeger = analogRead(ntcPin); // A0 pininden 0-1023 arası değeri oku
  
  // Analog değeri voltaj bölücü formülü ile Ohm cinsinden dirence çeviriyoruz
  float ntcGuncelDirencin = sabitDirenc / (1023.0 / (float)analogDeger - 1.0);
  
  // Steinhart-Hart Denklemi ile sıcaklık hesaplama (Kelvin cinsinden)
  float sicaklikKelvin;
  sicaklikKelvin = ntcGuncelDirencin / ntcOdaDirenci;     // (R/Ro)
  sicaklikKelvin = log(sicaklikKelvin);                  // ln(R/Ro)
  sicaklikKelvin /= bKatsayisi;                          // 1/B * ln(R/Ro)
  sicaklikKelvin += 1.0 / odaSicakligi;                  // + (1/To)
  sicaklikKelvin = 1.0 / sicaklikKelvin;                 // Tersini al (Kelvin)
  
  // Kelvin değerini Santigrat dereceye (°C) çeviriyoruz
  float sicaklikCelsius = sicaklikKelvin - 273.15; 

  // Sonuçları Seri Port Ekranına yazdırıyoruz
  Serial.print("NTC Direnci: ");
  Serial.print(ntcGuncelDirencin);
  Serial.print(" Ohm | ");
  
  Serial.print("Sıcaklık: ");
  Serial.print(sicaklikCelsius, 1); // Virgülden sonra 1 basamak göster
  Serial.println(" *C");

  delay(1000); // 1 saniyede bir ölçüm yap
}

Sonucu Test Etme

Kodu yükledikten sonra Arduino IDE üzerinde Seri Port Ekranını (Serial Monitor) açın. Ekranda oda sıcaklığınızı göreceksiniz. Hassasiyeti test etmek için NTC'yi iki parmağınızın arasına alıp sıkın; vücut sıcaklığınız nedeniyle NTC direncinin hızla düştüğünü, ekrandaki sıcaklık değerinin ise 30-34 °C seviyelerine doğru hızla yükseldiğini canlı olarak izleyebilirsiniz.

Özet ve Geliştirme Fikirleri

10k NTC kullanarak analog verileri anlamlı fiziksel birimlere dönüştürmeyi başardık. NTC'ler su geçirmez kılıflarda (prob şeklinde) satılabildiği için akvaryum sıcaklığı ölçümü, sıvı tankı takibi gibi zorlu şartlarda çok rahat kullanılabilir. Bu projenin devamında, sıcaklık belirli bir değerin üzerine çıktığında daha önce öğrendiğimiz Röle modülünü tetikleyerek bir fanı çalıştıran otomatik bir "Termostat/Soğutma Sistemi" yapabilirsiniz.

yenidir.com analog sensörler rehberimizde harika bir aşamayı tamamladık! Bir sonraki yazımızda, bu sıcaklık değerlerini ve daha önce öğrendiğimiz DS1302 saat verilerini tek bir ekranda toplamak için projelerimize nasıl I2C LCD Ekran bağlayacağımızı öğrenelim mi? Sorularınızı ve yorumlarınızı aşağıda paylaşmayı unutmayın!


💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
Sayfa Başı
Yenidir CMS V0.1