DS18B20 Sensörü Nasıl Doğru Bağlanır?

Kerem Aydın·8 Temmuz 2026·⏱5 dk

DS18B20 sensörünün kararlı çalışması için VDD ve GND bacaklarını bir güç kaynağına (3.3–5.5 V) bağlamanız ve veri hattı DQ'yu 4.7 kΩ değerinde bir pull-up direnci üzerinden mikrodenetleyicinin dijital pinine bağlamanız gerekir. Direnç, DQ hattı ile pozitif güç kaynağı (VDD) arasına yerleştirilir. Bu direnç olmadan 1-Wire protokolü üzerinden veri alışverişi imkansızdır.

Bu kılavuzda iki temel bağlantı şeması (harici beslemeli ve parazitik), bileşen seçiminin incelikleri ve Arduino ile Raspberry Pi üzerindeki arıza teşhis yöntemleri detaylıca ele alınmaktadır.

Çalışma Prensibi ve Pin Düzeni

DS18B20, verilerin ve gücün (parazitik modda) tek bir tel üzerinden iletilmesine olanak tanıyan 1-Wire arayüzüne sahip dijital bir termometredir. Sensör TO-92 (transistör görünümlü) ve SO-8 kılıflarında ayrıca su geçirmez kapsüller halinde üretilmektedir.

TO-92 kılıfı için standart pin düzeni (düz tarafa bakıldığında):

  1. GND — Toprak (ortak hat).
  2. DQ — Veri hattı (tek telli veri yolu).
  3. VDD — Güç (+3.3V veya +5V).

Kutupluğa dikkat etmek önemlidir! VDD ve GND'nin karıştırılması sensöre anında zarar verir. Kablolu su geçirmez bir versiyon kullanıyorsanız, farklı üreticilerde kablo renkleri değişebilir. Her zaman multimetre ile süreklilik modunda pin düzenini kontrol edin veya belirli bir birimin veri sayfasına başvurun.

Bağlantı Şemaları: Normal ve Parazitik Besleme

Sensörü beslemenin iki yolu vardır. Seçim, hatta bulunan sensör sayısına ve kablo uzunluğuna bağlıdır.

1. Normal Besleme (Önerilen)

Bu en güvenilir yöntemdir. Sensörün güç için ayrı bir çıkışı vardır.

Bağlantı şeması:

  • Sensörün VDD pini → Mikrodenetleyicinin +5V (veya +3.3V) pinine.
  • Sensörün GND pini → Mikrodenetleyicinin GND pinine.
  • Sensörün DQ pini → Dijital pine (örneğin Arduino'da D2).
  • 4.7 kΩ Direnç → Bir ucu DQ hattına, diğer ucu VDD'ye (güç artısı).

Aşağıdaki durumlarda harici beslemeli şemayı kullanın:

  • Kablo uzunluğu 5–10 metreyi aşıyorsa.
  • Tek bir hatta birden fazla sensör bağlıysa.
  • Yüksek sıcaklıklarda (100°C üzerinde) yüksek ölçüm hassasiyeti gerekiyorsa.

2. Parazitik Besleme (Parasite Power)

Bu modda sensör enerjisini doğrudan DQ veri hattından alır. VDD çıkışı GND'ye bağlanır.

Bağlantı şeması:

  • Sensörün VDD pini → GND'ye.
  • Sensörün GND pini → Mikrodenetleyicinin GND pinine.
  • Sensörün DQ pini → Dijital pine.
  • 4.7 kΩ Direnç → DQ ile VCC (kontrolcü beslemesi) arasında.

Özellikler:

  • Bağlantıda bir tel tasarrufu sağlar.
  • Kodda zamanlamaların daha sıkı şekilde uygulanmasını gerektirir.
  • Sıcaklık dönüşümü sırasında sensör 1.5 mA'a kadar akım çeker. Hat uzunsa veya kapasitans büyükse, hatta voltaj düşüşü yaşanabilir ve bu da okuma hatasına yol açar. Kompansasyon için bazen ölçüm sırasında hattı güç kaynağına sertçe "çekmek" amacıyla ek bir anahtar (MOSFET) kullanılır.

Pull-up Direnci: Neden Gereklidir ve Hangisi Seçilmelidir?

1-Wire protokolü açık drenaj (open-drain) yapısını kullanır. Bu, cihazların hattı sadece toprağa çekebileceği (mantıksal "0") ancak kendi başlarına yüksek seviye ("1") veremeyeceği anlamına gelir.

Direncin işlevleri:

  1. Hiçbir cihaz veri göndermediğinde hattı mantıksal "1" durumuna geri döndürür.
  2. Hattın parazitik kapasitesinin ve sensörün dahili kondansatörünün (parazitik besleme modunda) şarj akımını sağlar.

Direnç Değeri:

  • 4.7 kΩ — Çoğu proje için altın standarttır (kablo uzunluğu 10–20 m'ye kadar, 1–5 sensör).
  • 10 kΩ — Çok kısa bağlantılar için (breadboard üzerinde) kabul edilebilir, ancak veri alışveriş hızını düşürebilir.
  • 1.5–2.2 kΩ — Daha dik sinyal kenarları sağlamak için uzun hatlar (20 m'den fazla) veya tek bir veri yolunda çok sayıda sensör için önerilir.
Kullanım KoşullarıÖnerilen DirençNot
Breadboard, kısa kablolar4.7 kΩ - 10 kΩStandart seçenek
Kablo uzunluğu 5–15 m4.7 kΩOptimal denge
Kablo uzunluğu > 20 m veya çok sayıda sensör1.5 kΩ - 2.2 kΩKenar stabilitesini artırır
Parazitik besleme, yüksek yük1.5 kΩ - 2.2 kΩAkım düşüşlerini telafi eder

Çalışma Durumunun Kontrol Edilmesi

Kod yazmadan önce montajın doğruluğundan emin olun.

Donanımsal Kontrol (Multimetre)

  1. Devreye güç verin.
  2. Sensörün VDD ve GND bacakları arasındaki voltajı ölçün. Güç kaynağı voltajına (3.3V veya 5V) eşit olmalıdır.
  3. DQ hattındaki voltajı GND'ye göre ölçün. Bekleme durumunda (veri iletimi yokken) mantıksal "1" olmalıdır (voltaj VCC'ye yakın). Eğer 0V görüyorsanız, toprağa kısa devre olup olmadığını veya direncin yanlış lehimlenip lehimlenmediğini kontrol edin.

Arduino'da Yazılımsal Kontrol

Çalışma için OneWire ve DallasTemperature kütüphaneleri gereklidir.

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

// Veri bağlantı pini
#define ONE_WIRE_BUS 2

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void) {
  Serial.begin(9600);
  sensors.begin();
  
  // Veri yolundaki cihazları arama
  int deviceCount = sensors.getDeviceCount();
  Serial.print("Bulunan cihaz sayısı: ");
  Serial.println(deviceCount);
  
  if (deviceCount == 0) {
    Serial.println("Hata: Sensör bulunamadı. Bağlantıları ve direnci kontrol edin!");
  }
}

void loop(void) {
  sensors.requestTemperatures(); 
  float tempC = sensors.getTempCByIndex(0);
  
  if (tempC != DEVICE_DISCONNECTED_C) {
    Serial.print("Sıcaklık: ");
    Serial.print(tempC);
    Serial.println(" °C");
  } else {
    Serial.println("Sensör okuma hatası");
  }
  delay(1000);
}

Raspberry Pi'de Kontrol

  1. raspi-config aracılığıyla 1-Wire arayüzünü etkinleştirin (Interface Options -> 1-Wire).
  2. /boot/config.txt dosyasına şunu ekleyin: dtoverlay=w1-gpio,gpiopin=4 (GPIO4 kullanıyorsanız).
  3. Yeniden başlatın.
  4. Cihazın varlığını kontrol edin:
    ls /sys/bus/w1/devices/
    ```
    `28-xxxxxxxxxxxx` şeklinde bir isimle klasör görmelisiniz.
5.  Sıcaklığı okuyun:
    
```bash
    cat /sys/bus/w1/devices/28-xxxxxxxxxxxx/w1_slave
    ```
    `t=25125` satırını arayın, bu 25.125 °C anlamına gelir.

## Bağlantı Sırasında Yapılan Yaygın Hatalar

1.  **Pull-up direncinin olmaması.** Kodun sensörü "görememesinin" en yaygın nedenidir. Veri hattı havada asılı kalır.
2.  **Ekranlama olmadan uzun kablo kullanımı.** 1-Wire arayüzü parazite karşı hassastır. 5 metreden fazla mesafeler için bükümlü çift (twisted pair) kablo kullanın.
3.  **3.3V ile 5V besleme farkı.** Sensör 3.0–5.5V aralığında çalışır. Ancak, bunu 3.3V mantığına (örneğin ESP32 veya Raspberry Pi) bağlıyorsanız, pull-up direncinin de 5V yerine 3.3V'a bağlı olduğundan emin olun, aksi takdirde kontrolcü girişine zarar verebilirsiniz.
4.  **Adres çakışması.** Birden fazla sensör bağlarsanız, her birinin benzersiz 64 bitlik bir adresi vardır. Adresleme kullanıyorsanız ve `getTempCByIndex(0)` gibi indeksleme kullanmıyorsanız, kodda doğru adrese eriştiğinizden emin olun.

## SSS

**Tek bir pine birden fazla DS18B20 bağlanabilir mi?**
Evet, bu 1-Wire'ın başlıca avantajıdır. Tüm sensörler tek bir veri hattına paralel olarak bağlanır. Tek bir ortak 4.7 kΩ pull-up direnci tüm veri yoluna hizmet eder.

**Neden sensör 85°C gösteriyor?**
85°C değeri, güç açıldıktan sonra sıcaklık registresinin başlangıç değeridir. Sadece 85°C görüyorsanız, ilk ölçüm için yeterli zaman geçmemiş demektir (12 bit çözünürlük için en az 750 ms beklemek gerekir) veya sensör ile iletişim yoktur.

**Kablo uzunluğu nasıl artırılır?**
Uzun hatlar için (100 m ve üzeri) ekranlı kablo (bükümlü çift) kullanın, pull-up direnci değerini 1.5–2 kΩ'a düşürün ve mutlaka harici besleme kullanın (parazitik besleme kullanmayın).