Bu yazımızda DS18B20 sıcaklık sensörünün Arduino ile nasıl kullanılacağını anlatacağız. Ölçülen sıcaklık Codebender ya da Arduino IDE ile ekrana yazdırılacak.

Tanıtım videosu:

DS18B20 Sıcaklık Sensörü

DS18B20 Arduino haberleşme için tek bir veri hattı olan 1-Wire (ve toprak) kullanır. Çalışma aralığı -55 °C ile +125 °C arasındadır; -10 °C ve +85 °C arasında ±0.5 °C doğrulukta çalışır. Ayrıca, DS18B20 gücünü veri hattından sağlayarak harici güç kaynağına ihtiyaç duymaz.

Ds18b20 sıcaklık sensörü
DS18B20 Sıcaklık Sensörü Bacak Bağlantısı

Her bir DS18B20’nin 64 bitlik eşsiz seri numarası vardır. Böylece aynı haberleşme hattı üzerinde çoklu sensör çalışabilir. Bu da geniş bir alana dağıtılmış çok sayıda sensörü tek mikroişlemci ile denetlemeyi sağlar. HVAC (ısıtma, havalandırma, iklimlendirme) çevresel denetimler, bina içi sıcaklık görüntüleme sistemleri, donanım ya da makine ve süreç görüntüleme ve denetleme sistemleri ile ilgili uygulamalarda bu özellik faydalıdır.

Temel Özellikleri

  • Haberleşme için eşsiz 1-Wire arayüzü ve tek bacak kullanır.
  • Her bir cihazın dahili ROM’da kayıtlı eşsiz 64 bitlik seri numarası vardır.
  • Harici parça gerektirmez.
  • Haberleşme hattından gücü karşılanır; 3 V ve 5.5 V arasında çalışır.
  • -55°C to +125°C (-67°F to +257°F)  arası sıcaklıkları ölçer.
  • -10°C to +85°C arasında ±0.5°C doğrulukta ölçer.

Malzeme Listesi

  1. Arduino uno
  2. Breadboard
  3. DS18B20 sıcaklık sensörü
  4. 4.7 K direnç

Devre Gösterimi

Bağlantılar oldukça basit.

Devre Gösterimi
Devre Gösterimi

Sensörün Vcc & GND bacakları, Arduino’nun GND bacağına;

Orta bacak (veri) Arduino’nun ikinci bacağına;

4.7 K direnç veri ve 5 V bacakları arasına bağlanacak.

Program Kodu

// Arduino DS18B20 sıcaklık sensörü uygulaması


//kullanılacak kütüphaneler
#include <OneWire.h>
#include <DallasTemperature.h>

// Haberleşme kablosu Arduino'nun ikinci bacağına bağlı
#define ONE_WIRE_BUS 2
// Herhangi bir OneWire cihazıyla iletişim kurabilmesi için OneWire örneği belirle
// (sadece Maxim/Dallas entegreleriyle değil)
OneWire oneWire(ONE_WIRE_BUS);
// Onewire referansımızı Dallas Sıcaklık olarak belirle
DallasTemperature sensors(&oneWire);

void setup(void)
{
  Serial.begin(9600); //Seri haberleşmeye başla
  Serial.println("Arduino Digital Temperature // Serial Monitor Version"); //Mesaj yaz
  sensors.begin();
}

void loop(void)
{ 
  // Sıcaklığı almak için komut yolla
  sensors.requestTemperatures();  
  Serial.print("Temperature is: ");
  Serial.println(sensors.getTempCByIndex(0)); // Neden "byIndex"? 
  //Her bir saniyede değeri güncelle
  delay(1000);
}

 

Serial.println(sensors.getTempCByIndex(0)); sıcaklığı Celcius olarak

Serial.println(sensors.getTempFByIndex(0)); sıcaklığı Fahrenheit olarak çevirir.

Neden “byIndex” ?

Aynı yolda birden fazla tümleşik devre kullanılabilir. 0 kablodaki ilk devreye karşılık gelir. Serial.println(sensors.getTempFByIndex(1)); kodunu ekleyerek ikinci sensörü eklemeyi deneyin.

Arduino’nuzu programladıktan sonra “connect” butonuna basarak seri iletişimi başlatabilirsiniz.

 

 

1 Yorum

  1. Öncelikle bu yaralı paylaşım için çok teşekkürler sorum şu,oğlumun proje ödevi için sıcaklık değerlerini her 60 dakika aralıklarla kayıt yapmak istiyorum ancak ne denediysem olmadı yardımınıza ihtiyacım var. Şimdiden teşekkür ederim.

    Elimde olan malzemeler ;
    Data Logger Shield ( RTC + SD Kart )
    https://www.robotizmo.net/data-logger-shield-rtc-sd-kart-230

    Sıcaklık Sensörü DS18B20 (Su geçirmez)
    https://www.robotizmo.net/sicaklik-sensoru-ds18b20-su-gecirmez-866

    Arduino Leonardo R3
    https://www.robotizmo.net/arduino-leonardo-r3-152