DS18B20 Dijital Sıcaklık Sensörü
DS18B20 Dijital Sıcaklık Sensörü, yüksek hassasiyete sahip programlanabilir bir sıcaklık ölçüm çipidir. TO-92 paket yapısındaki bu sensör, -55°C ile +125°C arasında geniş bir sıcaklık aralığında ölçüm yapabilir.
12-bit çözünürlüğe sahip olan DS18B20, 0.0625°C'lik hassas adımlarla ölçüm sağlar. Dallas Semiconductor tarafından üretilen bu sensör, Arduino platformlarıyla kolayca kullanılabilir.
1-Wire protokolü ile çalışan DS18B20, tek bir dijital pin üzerinden iletişim kurabilir. Her bir sensör fabrikadan benzersiz bir seri numarayla gelir, böylece tek hat üzerinde çoklu sensör kullanımı mümkündür.
Suya dayanıklı versiyonları da bulunan bu hassas sensör, Modüller kategorisinde yer alan popüler bir bileşendir ve ev otomasyonundan endüstriyel uygulamalara kadar geniş bir kullanım alanına sahiptir.
Teknik Özellikler
DS18B20 Dijital Sıcaklık Sensörünün detaylı teknik özellikleri aşağıda listelenmiştir.
- Sıcaklık Ölçüm Aralığı: -55°C ile +125°C (-67°F ile +257°F) geniş aralık
- Hassasiyet: ±0.5°C (-10°C ile +85°C arasında) doğruluk
- Çözünürlük: 9-12 bit, ayarlanabilir (0.5°C, 0.25°C, 0.125°C, 0.0625°C)
- Haberleşme Protokolü: 1-Wire (tek kablolu haberleşme)
- Besleme Voltajı: 3.0V - 5.5V
- Paket Tipi: TO-92 (transistör benzeri paket)
- Pinler: 3 pin (GND, DQ, VDD)
- Ölçüm Süresi: Maksimum 750ms (12-bit çözünürlükte)
- Parazitik Besleme: Destekler (2 kablolu bağlantı)
- Benzersiz ID: Her sensör için 64-bit seri numarası
- Alarm Fonksiyonu: Programlanabilir yüksek/düşük sıcaklık alarmları
- Güç Tüketimi: 1.5mA (aktif), 1µA (bekleme)
- Boyutlar: Yaklaşık 4.5mm x 4.5mm x 3.0mm (TO-92 paket)
Bağlantı ve Kullanım
DS18B20 Dijital Sıcaklık Sensörünün bağlantı şeması ve kullanım talimatları.
İpucu: DQ (veri) pini ile VDD arasına 4.7kΩ pull-up direnci bağlamayı unutmayın. Bu, 1-Wire protokolünün düzgün çalışması için gereklidir.
DS18B20 sensörünü Arduino'ya bağlamak için iki farklı mod kullanabilirsiniz:
Normal Mod (3 kablolu bağlantı):
- VDD (Pin 3) → Arduino 5V veya 3.3V
- GND (Pin 1) → Arduino GND
- DQ (Pin 2) → Arduino Dijital Pin (örn. D2)
- DQ pini ile VDD arasına 4.7kΩ pull-up direnci bağlanmalıdır
Parazitik Mod (2 kablolu bağlantı):
- VDD (Pin 3) → GND'ye bağlanır
- GND (Pin 1) → Arduino GND
- DQ (Pin 2) → Arduino Dijital Pin (örn. D2)
- DQ pini ile 5V/3.3V arasına 4.7kΩ pull-up direnci bağlanmalıdır
Arduino'da DS18B20 sensörünü kullanmak için Dallas Temperature ve OneWire kütüphaneleri gereklidir. Bu kütüphaneleri Arduino IDE > Taslak > Library Ekle > Kütüphane Yönet menüsünden yükleyebilirsiniz.
Temel Arduino kodu örneği:
#include <OneWire.h>
#include <DallasTemperature.h>
// Veri pini tanımlaması
#define ONE_WIRE_BUS 2
// OneWire ve DallasTemperature nesneleri oluşturma
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
// Seri haberleşmeyi başlat
Serial.begin(9600);
Serial.println("DS18B20 Sıcaklık Sensörü Test");
// Sensör başlatma
sensors.begin();
// Çözünürlüğü 12-bit olarak ayarla (0.0625°C hassasiyet)
sensors.setResolution(12);
}
void loop() {
// Tüm sensörlerden sıcaklık ölçümü iste
Serial.print("Sıcaklık ölçümü için istek gönderiliyor...");
sensors.requestTemperatures();
Serial.println("TAMAM");
// İlk sensörün sıcaklık değerini al (index 0)
float tempC = sensors.getTempCByIndex(0);
// Sonucu ekrana yazdır
if(tempC != DEVICE_DISCONNECTED_C) {
Serial.print("Sıcaklık: ");
Serial.print(tempC);
Serial.println(" °C");
} else {
Serial.println("Hata: Sensör okunamadı!");
}
delay(2000); // 2 saniye bekle
}
Çoklu sensör kullanımı için örnek kod:
#include <OneWire.h>
#include <DallasTemperature.h>
// Veri pini tanımlaması
#define ONE_WIRE_BUS 2
// OneWire ve DallasTemperature nesneleri oluşturma
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Sensör adresleri için değişkenler
DeviceAddress sensor1, sensor2;
void setup() {
// Seri haberleşmeyi başlat
Serial.begin(9600);
Serial.println("Çoklu DS18B20 Sensör Testi");
// Sensörleri başlat
sensors.begin();
// Kaç sensör bağlı olduğunu kontrol et
Serial.print("Bulunan sensör sayısı: ");
Serial.println(sensors.getDeviceCount());
// Sensör adreslerini al
if (!sensors.getAddress(sensor1, 0)) {
Serial.println("1. sensör bulunamadı!");
}
if (!sensors.getAddress(sensor2, 1)) {
Serial.println("2. sensör bulunamadı!");
}
// Sensör çözünürlüğünü ayarla (9-12 bit arası)
sensors.setResolution(sensor1, 12);
sensors.setResolution(sensor2, 12);
}
void loop() {
// Tüm sensörlerden sıcaklık ölçümü iste
sensors.requestTemperatures();
// Her sensör için sıcaklık değerlerini al ve yazdır
Serial.print("Sensör 1 Sıcaklık: ");
Serial.print(sensors.getTempC(sensor1));
Serial.println(" °C");
Serial.print("Sensör 2 Sıcaklık: ");
Serial.print(sensors.getTempC(sensor2));
Serial.println(" °C");
Serial.println();
delay(2000); // 2 saniye bekle
}
Sensör adreslerini bulmak için yardımcı kod:
#include <OneWire.h>
#include <DallasTemperature.h>
// Veri pini tanımlaması
#define ONE_WIRE_BUS 2
// OneWire ve DallasTemperature nesneleri oluşturma
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Adres yazdırma fonksiyonu
void printAddress(DeviceAddress deviceAddress) {
for (uint8_t i = 0; i < 8; i++) {
if (deviceAddress[i] < 16) Serial.print("0");
Serial.print(deviceAddress[i], HEX);
}
}
void setup() {
Serial.begin(9600);
Serial.println("DS18B20 Adres Tarayıcı");
sensors.begin();
Serial.print("Bulunan sensör sayısı: ");
Serial.println(sensors.getDeviceCount());
Serial.println("Sensör Adresleri:");
// Bağlı tüm sensörleri tara ve adreslerini yazdır
DeviceAddress deviceAddress;
for (int i = 0; i < sensors.getDeviceCount(); i++) {
if (sensors.getAddress(deviceAddress, i)) {
Serial.print("Sensör ");
Serial.print(i);
Serial.print(": ");
printAddress(deviceAddress);
Serial.println();
} else {
Serial.print("Sensör ");
Serial.print(i);
Serial.println(" için adres alınamadı!");
}
}
}
void loop() {
// Boş
}
Uygulama Alanları
DS18B20 Dijital Sıcaklık Sensörünün kullanılabileceği çeşitli projeler ve uygulama alanları.
Ev Otomasyon ve İklimlendirme
- Akıllı termostat sistemleri
- Çok bölgeli ısıtma/soğutma kontrolü
- Yerden ısıtma sistemleri
- Enerji izleme ve optimizasyon
- Nem ve küf önleme sistemleri
- Akıllı ev sıcaklık izleme
Endüstriyel ve Bilimsel Uygulamalar
- Proses kontrol sistemleri
- Soğuk zincir izleme
- İlaç ve gıda saklama sistemleri
- Laboratuvar ekipmanları
- Veri merkezi sıcaklık yönetimi
- Endüstriyel makinelerin termal izlenmesi
Hobi ve DIY Projeler
- Meteoroloji istasyonları
- Akvaryum sıcaklık kontrolü
- 3D yazıcı sıcaklık izleme
- Kuluçka makineleri
- Bira yapım ekipmanları
- Otomotiv sıcaklık izleme
Proje Örnekleri
DS18B20 Dijital Sıcaklık Sensörü kullanılarak yapılabilecek detaylı proje örnekleri.
IoT Tabanlı Sıcaklık İzleme Sistemi
DS18B20 sensörleri ve ESP8266 WiFi modülü kullanarak, evinizin veya ofisinizin farklı bölgelerindeki sıcaklıkları internet üzerinden izleyebileceğiniz bir sistem oluşturabilirsiniz.
Bu projede, birden fazla DS18B20 sensörü aynı veri hattına bağlanır ve her biri farklı odalardaki sıcaklıkları ölçer. ESP8266, sensörlerden aldığı verileri WiFi üzerinden bulut platformuna (Blynk, ThingSpeak, MQTT gibi) gönderir.
Mobil uygulamanız üzerinden gerçek zamanlı sıcaklık verilerini görebilir, geçmiş verileri grafiklerle analiz edebilir ve belirli sıcaklık eşiklerinde bildirim alabilirsiniz. İsteğe bağlı olarak, akıllı prizler veya termostatları kontrol ederek otomatik sıcaklık kontrolü de sağlayabilirsiniz.
Hassas Sıcaklık Kontrollü Fermentasyon Sistemi
DS18B20 sensörü kullanarak, evde bira, yoğurt veya hamur mayalama için ideal koşulları sağlayan hassas sıcaklık kontrollü bir fermentasyon sistemi oluşturabilirsiniz.
Sistem, bir Arduino Nano, DS18B20 sensörü, 16x2 LCD ekran, röle modülü ve bir ısıtma elemanından oluşur. DS18B20 sensörü, fermentasyon kabının içindeki sıcaklığı sürekli olarak ölçer. Arduino, ölçülen sıcaklığı hedef değerle karşılaştırır ve gerektiğinde ısıtma elemanını devreye sokar.
LCD ekran üzerinde mevcut sıcaklık, hedef sıcaklık ve geçen süre gösterilir. Sistem, farklı fermentasyon türleri için önceden programlanmış sıcaklık profilleri içerebilir ve zaman içinde sıcaklığı otomatik olarak ayarlayabilir. İsteğe bağlı olarak, veri kaydı ve grafik analizi için SD kart modülü eklenebilir.
Çok Kanallı Datalogger Sistemi
DS18B20 sensörleri kullanarak, uzun süreli ve çok noktalı sıcaklık kaydı yapabilen bir datalogger sistemi oluşturabilirsiniz. Bu sistem, bilimsel araştırmalar, endüstriyel süreç doğrulama veya çevresel izleme için idealdir.
Projede, bir Arduino Mega, 10 adet DS18B20 sensörü, RTC (gerçek zamanlı saat) modülü ve SD kart modülü kullanılır. Sensörler, incelenmek istenen farklı noktalara yerleştirilir ve her biri benzersiz adresleri sayesinde tek bir veri hattı üzerinden Arduino'ya bağlanır.
Sistem, önceden ayarlanan aralıklarla (örneğin her 5 dakikada bir) tüm sensörlerden sıcaklık okumaları yapar ve bu verileri zaman damgalı olarak SD karta kaydeder. Veriler, CSV formatında saklanır ve böylece daha sonra bir bilgisayarda Excel veya diğer analiz yazılımlarıyla işlenebilir. Düşük güç tüketimi için uyku modları kullanılarak, sistem pil ile aylarca çalışabilir.
Sorun Giderme ve İpuçları
DS18B20 Dijital Sıcaklık Sensörü kullanırken karşılaşılabilecek yaygın sorunlar ve çözüm yöntemleri.
Yaygın Sorunlar ve Çözümleri
- Sensör Algılanmıyor: Bağlantılarınızı kontrol edin. GND, VDD ve DQ pinlerinin doğru bağlandığından emin olun. Pull-up direnci (4.7kΩ) DQ ile VDD arasına doğru bağlanmalıdır. Bu direnç olmadan 1-Wire haberleşmesi sağlıklı çalışmaz. Parazitik mod kullanıyorsanız, VDD pininin GND'ye bağlı olduğunu doğrulayın. Uzun kablo kullanımında sinyal zayıflayabilir, kablo uzunluğunu azaltmayı veya farklı bir pull-up direnci değeri denemeyi düşünün. Sensörün fiziksel olarak hasarlı olup olmadığını kontrol edin. Sensörlerinizi kontrol etmek için basit bir adres tarama kodu çalıştırın.
- Hatalı veya Kararsız Sıcaklık Okumaları: Sensörün etrafındaki elektromanyetik girişimi azaltın. Güç hatları veya motorlardan uzak tutun. Shielded (korumalı) kablo kullanmayı düşünün. Besleme voltajınızın kararlı olduğundan emin olun. Voltaj dalgalanmaları hatalı okumalara neden olabilir. Kütüphanenizin güncel olduğunu kontrol edin. Daha yeni kütüphane sürümleri daha kararlı çalışır. Sensörün suya veya yüksek neme maruz kaldığında su geçirmez olmayan versiyonlarda sorun yaşanabilir. Çoklu okuma yapıp ortalamasını alarak gürültüyü azaltabilirsiniz.
- Çözünürlük ve Doğruluk Sorunları: Varsayılan çözünürlük 12-bit'tir, ancak kodunuzda daha düşük bir çözünürlüğe ayarlanmış olabilir. setResolution() fonksiyonu ile çözünürlüğü 12-bit olarak ayarlayın. Doğruluğu artırmak için kalibrasyon yapın. Bilinen bir sıcaklık referansıyla (örn. buz suyu = 0°C) sensörünüzü kalibre edin. Sensörün sıcaklık ölçümü yapacağı ortama iyi termal temas ettiğinden emin olun. Düşük termal iletkenliğe sahip malzemeler doğruluğu etkileyebilir. Isı etkileşimlerini dikkate alın. Kendi vücut sıcaklığınız, elektronik devrelerin ısısı gibi faktörler ölçümleri etkileyebilir.
- Çoklu Sensör Sorunları: Her sensörün benzersiz bir adresi vardır. getAddress() fonksiyonu ile sensör adreslerini belirleyin ve bu adresleri kullanarak belirli sensörlerden okuma yapın. Birden fazla sensör kullanırken toplam kablo uzunluğu artar. Uzun kablolarda sinyal kalitesi düşebilir. Tüm sensörlerin aynı 1-Wire veri hattına bağlandığından ve tek bir pull-up direnci kullanıldığından emin olun. Parazitik mod, çoklu sensör kullanımında güç sorunlarına neden olabilir. Normal modu (3 kablolu) tercih edin. Çok sayıda sensör (8+) kullanıyorsanız, 1-Wire hub veya daha güçlü pull-up kullanmayı düşünün.
- Suya Dayanıklı Versiyon Sorunları: Standart DS18B20 sensörü su geçirmez değildir. Su geçirmez versiyonların kablo bağlantıları zaman içinde korozyona uğrayabilir. Düzenli olarak kontrol edin. Su geçirmez sensörlerde kablo kılıfı zamanla bozulabilir. Yüksek sıcaklıkta veya kimyasal ortamlarda ek koruma gerekebilir. Suya dayanıklı sensörlerde kablo uzunluğu genellikle sabittir ve değiştirilemez. Projenizi buna göre planlayın. Uzun süreli su altı kullanımında epoksi veya silikon ile ekstra koruma uygulayın.
Performans İpuçları
- Maksimum doğruluk için 12-bit çözünürlük kullanın (varsayılan ayardır)
- Ortalamalı ölçüm yaparak gürültüyü azaltın ve doğruluğu artırın
- Uzun kablo kullanımında sinyal bütünlüğü için shielded (korumalı) kablo tercih edin
- İyi termal temas için termal macun kullanın ve sensörü hava akımından koruyun
- Parasitik mod yerine normal modu tercih ederek daha kararlı ölçümler alın
- Asenkron ölçüm yaparak Arduino'nun sensör okuma sırasında başka işlemler yapmasını sağlayın
İlgili Ürün Kategorilerimiz
Arduino geliştirme kartları ile DS18B20 sensörünüzü kontrol edin. Arduino UNO, Nano ve ESP8266 tabanlı kartlarla sıcaklık ölçüm ve kontrol projeleri geliştirin.
Ürünleri İncele →
Çeşitli sensör modülleri, ekranlar ve haberleşme kartları ile projelerinizi genişletin. Sıcaklık ölçüm sistemleriniz için tamamlayıcı modüller bulabilirsiniz.
Ürünleri İncele →
Neden Voltaj.Net'ten Almalısınız?
Voltaj.Net, elektronik komponent ve geliştirme platformları konusunda Türkiye'nin güvenilir tedarikçisi olarak kaliteli ürünleri uygun fiyatlarla sunmaktadır.
- Kalite Güvencesi: Test edilmiş ve onaylanmış, orijinal DS18B20 sensörleri
- Teknik Destek: Ürün kullanımı ve projeleriniz konusunda uzman desteği
- Hızlı Teslimat: Stoktan hızlı gönderim ve takip edilebilir kargo
- Tamamlayıcı Ürünler: Projeleriniz için gerekli tüm elektronik bileşenler
- Uygun Fiyatlar: Kaliteden ödün vermeden rekabetçi fiyatlandırma
- Güvenilir Alışveriş: Kolay sipariş ve iade süreci, güvenli ödeme seçenekleri
Ürün Hakkında Sıkça Sorulan Sorular
DS18B20 ve DS1820 arasındaki fark nedir?
DS18B20, daha yüksek çözünürlük sunar (12-bit, 0.0625°C), DS1820 ise 9-bit (0.5°C) çözünürlüğe sahiptir. DS18B20 daha doğru, daha geniş sıcaklık aralığına sahiptir.
Suya dayanıklı versiyonuyla standart versiyon arasındaki fark nedir?
Suya dayanıklı versiyon, paslanmaz çelik kılıf içine yerleştirilmiş ve kablo ile su geçirmez şekilde kapatılmıştır. Sıvı ortamlarda ve dış mekanlarda uzun süreli kullanım için idealdir.
Arduino'ya kaç adet DS18B20 bağlayabilirim?
Teorik olarak tek bir pin üzerinden 127 adet DS18B20 bağlayabilirsiniz. Pratikte ise kablo uzunluğu ve güç gereksinimleri nedeniyle 20-30 sensör sorunsuz çalışır.
Ölçüm hassasiyetini nasıl artırabilirim?
12-bit çözünürlük kullanın, çoklu ölçümler yapıp ortalamasını alın, iyi termal temas sağlayın, bilinen bir referans sıcaklık ile kalibre edin ve sensörü harici ısı kaynaklarından uzak tutun.
Parazitik mod ne zaman kullanılmalıdır?
Kablo sayısını azaltmak istediğinizde veya montaj alanı kısıtlı olduğunda parazitik mod kullanışlıdır. Ancak çoklu sensör kullanımında veya hızlı ölçüm gerektiren uygulamalarda sorun yaratabilir.
Kablo mesafesi ne kadar olabilir?
1-Wire protokolü teoride 100 metreye kadar çalışabilir. Ancak en iyi performans için 20-30 metre altında kalmak ve shielded (korumalı) kablo kullanmak önerilir.
Sensör okumaları yavaş, bu normal mi?
Evet, 12-bit çözünürlükte her ölçüm yaklaşık 750ms sürer. Daha hızlı okuma için çözünürlüğü düşürebilir (9-bit: 94ms) veya asenkron ölçüm yapabilirsiniz.
Sensörün kalibrasyonu nasıl yapılır?
Bilinen bir sıcaklık kaynağı (buz suyu: 0°C, kaynar su: 100°C) kullanarak offset değeri hesaplayın ve kodunuzda bu düzeltmeyi uygulayın. Birden fazla noktada kalibrasyon daha doğrudur.