Arduino ile DS18B20 Dijital Sıcaklık Sensörü Kullanımı

👤 Yazar: ozcan 📅 Tarih: 22.07.2026 09:26 👁️ Görüntüleme: 22

Arduino ile DS18B20 Dijital Sıcaklık Sensörü Kullanımı

DS18B20, Maxim Integrated tarafından üretilen 1-Wire (tek hat) haberleşme protokolünü kullanan dijital bir sıcaklık sensörüdür. Analog sensörlerin aksine uzun kablo hatlarında sinyal bozulması yaşamaz ve -55°C ile +125°C arasında yüksek hassasiyetle (9 ila 12-bit yapılandırılabilir çözünürlük) ölçüm yapar. Su geçirmez (waterproof) problu versiyonları sayesinde sıvı sıcaklığı ölçümlerinde de yaygın olarak tercih edilir.

DS18B20 pinout

Donanım ve Pin Bağlantı Şeması (TO-92 Kılıf - Düz Tarafı Size Bakarken):
  • Sol Pin (GND) → Arduino GND
  • Orta Pin (DQ / Data) → Arduino Dijital Pin 2
  • Sağ Pin (VDD) → Arduino 5V (veya 3.3V)
Kritik Not: 1-Wire veri hattının kararlı çalışabilmesi için Data (DQ) pini ile VCC (5V) pini arasına 4.7kΩ değerinde bir Pull-Up direnci bağlanması şarttır.

Arduino ile DS18B20 Dijital Sıcaklık Sensörü Kullanımı

Arduino Uygulama Kodları

#include <OneWire.h>
#include <DallasTemperature.h>

// DS18B20 Data pininin bağlı olduğu dijital pin
#define ONE_WIRE_BUS 2

// 1-Wire haberleşme nesnesi tanımlanıyor
OneWire oneWire(ONE_WIRE_BUS);

// DallasTemperature kütüphanesine 1-Wire referansı aktarılıyor
DallasTemperature sensors(&oneWire);

void setup() {
  // Seri port haberleşmesini başlatıyoruz
  Serial.begin(9600);
  Serial.println("DS18B20 Sıcaklık Sensör Taraması Başlatılıyor...");

  // Sensör kütüphanesini başlatıyoruz
  sensors.begin();
}

void loop() {
  // Veri hattındaki tüm DS18B20 sensörlerine sıcaklık okuma emri gönderiliyor
  sensors.requestTemperatures(); 

  // 0 indeksli (hattaki ilk) sensörün sıcaklık değerini Santigrat (°C) olarak alıyoruz
  float sicaklikC = sensors.getTempCByIndex(0);

  // Okuma hatası kontrolü (Sensör bağlı değilse -127.00 döner)
  if (sicaklikC == DEVICE_DISCONNECTED_C) {
    Serial.println("Hata: DS18B20 sensörü bulunamadı veya bağlantı kopuk!");
  } else {
    Serial.print("Sıcaklık: ");
    Serial.print(sicaklikC);
    Serial.println(" °C");
  }

  delay(1000); // 1 saniye bekleme
}

1-Wire Mimarisi ve Çalışma Mantığı

DS18B20 sensörünün analog sensörlere (LM35 gibi) kıyasla sunduğu temel avantajlar ve çalışma mekanizması şu şekildedir:

  • Tek Hat Üzerinde Çoklu Sensör (Addressable): Her DS18B20 sensörü fabrikasyon olarak benzersiz 64-bitlik bir ROM adresine sahiptir. Bu sayede sadece tek bir Arduino pini (Data hattı) üzerine birden fazla DS18B20 paralellenebilir ve her bir sensör adresiyle ayrı ayrı okunabilir.
  • Dijital Dönüştürme Süreci: sensors.requestTemperatures() komutu verildiğinde sensör kendi dahili ADC'si ile ortamı ölçer ve sonucu dijital veri paketine dönüştürür. getTempCByIndex(0) ise bu paketi okuyarak float değişkene aktarır.
  • Pull-Up Direncinin Önemi: 1-Wire protokolünde hat pasif durumdayken lojik 1 (HIGH) seviyesinde tutulmalıdır. 4.7kΩ pull-up direnci bağlanmazsa veri iletiminde hatalar yaşanır ve okunan değer sürekli -127.00 °C olarak döner.

Kodu derlemeden önce Arduino IDE içerisindeki Kütüphane Yöneticisi üzerinden OneWire ve DallasTemperature kütüphanelerini yüklemeyi ve Seri Monitör hızını 9600 baud yapmayı 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şı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1