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.


#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
}
DS18B20 sensörünün analog sensörlere (LM35 gibi) kıyasla sunduğu temel avantajlar ve çalışma mekanizması şu şekildedir:
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.-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.
Henüz yorum yapılmamış. İlk yorumu siz yapın!