1-Wire Bus Haberleşme Protokolü

👤 Yazar: ozcan 📅 Tarih: 03.08.2026 17:12 👁️ Görüntüleme: 2

1-Wire Bus Haberleşme Protokolü Detaylı İncelemesi

1-Wire, 1980'lerin sonunda Dallas Semiconductor (günümüzde Analog Devices / Maxim Integrated) tarafından geliştirilmiş, senkron olmayan (yarı çift yönlü - half-duplex), tek veri hattı üzerinden hem besleme hem de haberleşme sağlayan özel bir seri veriyolu protokolüdür. En popüler kullanım alanı DS18B20 sıcaklık sensörleri, iButton kimlik doğrulama anahtarları ve EEPROM bellek entegreleridir.

1-Wire Bus Mimari Diyagramı


1. Donanım Mimarısı ve Parazitik Besleme (Parasite Power)

1-Wire protokolü donanım seviyesinde sadece tek bir dijital veri hattı (DQ) ve ortak bir GND hattı gerektirir:

  • DQ (Data Line): Hem veri iletiminin yapıldığı hem de cihazın şarj edildiği çift yönlü hat.
  • GND (Ground): Ortak toprak referans hattı.
Open-Drain Yapısı ve Pull-Up Direnci:
I2C'ye benzer şekilde 1-Wire veriyolu da donanımsal olarak Open-Drain yapısındadır. Hat boşta iken lojik HIGH seviyesinde tutulması için DQ hattına dışarıdan 4.7 kΩ Pull-Up direnci bağlanmalıdır.

Parazitik Besleme (Parasite Power) Modu:
1-Wire cihazlar harici bir VCC güç kablosuna ihtiyaç duymadan çalışabilir. Hat boşta (HIGH) olduğu zaman diliminde cihaz, veri hattındaki gerilimi kendi içinde bulunan dahili bir kapasitörde depolayarak enerji ihtiyacını karşılar.

2. 64-Bit Unik ROM Adresi ve Arama Algoritması

1-Wire veriyoluna teorik olarak sınırsız sayıda ikincil (Slave) cihaz bağlanabilir. Master cihazın hedef elemanı ayırt edebilmesi için fabrika çıkışlı olarak her 1-Wire çipine kazınmış (laser-etched) 64-bit benzersiz bir ROM adresi bulunur:

Bölüm Uzunluk Açıklama
Family Code (Aile Kodu) 8-Bit Cihaz tipini belirtir (Örn: DS18B20 için 0x28).
Serial Number (Seri Numarası) 48-Bit Dünyada eşi benzeri olmayan benzersiz seri numarası.
CRC Checksum 8-Bit Adres doğrulama için hesaplanan kontrol baytı.
Search ROM Algoritması:
Master cihaz veriyoluna bağlı bilinmeyen tüm adresleri keşfetmek için Binary Tree Search (İkili Ağaç Arama) temelli bir çakışma giderme algoritması çalıştırır. Her adımda bit seviyesinde "0" ve "1" çakışmalarını tespit ederek tek bir hatta bağlı yüzlerce cihazın adresini sıralı olarak belirler.

3. Zamanlama (Timing Slots) ve Haberleşme Dizilimi

1-Wire'da saat (SCLK) hattı olmadığı için zamanlama son derece kritiktir. Tüm haberleşme mikrosaniye (µs) seviyesindeki darbe (pulse) uzunluklarıyla yürütülür:

  • Reset ve Presence Pulse: Master hattı en az 480 µs LOW seviyesine çeker. Hat serbest kaldığında bağlı Slave cihazlar varlıklarını kanıtlamak için hattı 60-240 µs boyunca LOW tutarlar.
  • Write 1 Slot: Master hattı 1-15 µs arası LOW yaptıktan sonra hemen serbest bırakır.
  • Write 0 Slot: Master hattı 60-120 µs boyunca LOW seviyesinde tutar.
  • Read Slot: Master hattı 1-2 µs LOW yapıp bırakır, ardından 15 µs içerisinde Slave'in hatta sürdüğü seviyeyi örnekler.

4. Bare-Metal & Gömülü Sistem Örnekleri (DS18B20 Sıcaklık Okuma)

Aşağıdaki örnekte OneWire ve DallasTemperature kütüphaneleri kullanılarak hattaki DS18B20 sensöründen sıcaklık verisi okuma işlemi gösterilmektedir:

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

// 1-Wire Veri Pini (DQ)
#define ONE_WIRE_BUS 4

// OneWire ve DallasTemperature Nesnelerini Başlat
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(115200);
  Serial.println("1-Wire DS18B20 Tarama Başlatılıyor...");

  sensors.begin(); // 1-Wire Veriyolunu Başlat
  
  // Hatta Bağlı Cihaz Sayısını Bul
  int deviceCount = sensors.getDeviceCount();
  Serial.printf("Veriyolunda Bulunan Cihaz Sayısı: %d\n", deviceCount);
}

void loop() {
  // Sıcaklık Dönüştürme İsteği Gönder (Convert T Command - 0x44)
  sensors.requestTemperatures();

  // 0 İndeksli İlk Sensörün Sıcaklığını Oku
  float tempC = sensors.getTempCByIndex(0);

  if (tempC != DEVICE_DISCONNECTED_C) {
    Serial.printf("Sıcaklık: %.2f °C\n", tempC);
  } else {
    Serial.println("Hata: DS18B20 Sensörü Okunamadı!");
  }

  delay(2000);
}

5. 1-Wire vs I2C vs SPI Karşılaştırması

Özellik 1-Wire I2C SPI
Veri Pin Sayısı 1 Pin (DQ) 2 Pin (SDA, SCL) 4+ Pin (MOSI, MISO, SCK, CS)
Maksimum Hız Düşük (16.3 kbit/s - Overdrive: 142 kbit/s) Orta (100 kHz - 3.4 MHz) Çok Hızlı (10 MHz - 80 MHz+)
Maksimum Mesafe 100+ Metreye Kadar (Uygun kablolama ile) 1 - 2 Metre < 1 Metre (PCB İçi)
Adresleme Yapısı Donanımsal 64-bit Unik ROM ID 7-bit / 10-bit Adresleme Donanımsal Chip Select (CS)
Parazitik Besleme Var (Veri hattından beslenme) Yok Yok

💬 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