DS18B20 Sıcaklık Sensöründen Veri Okuma

DS18B20

DS18B20 sensörü -55 ile +125 derece arasında, 9-12 bit çözünürlükte ölçüm yapan dijtial sıcaklık sensörüdür. Üzerinde dahili alarm sistemi bulunmaktadır. 12 bit sıcaklık ölçümünü en fazla 750ms’de tamamlamaktadır. Herhangi bir ayar yapılmazsa sensör varsayılan olarak 12 bit çözünürlükte çalışmaktadır.

Özellikleri;

  • Mikrodenetleyici ile tek pin üzerinden haberleşebilir.
  • Tek hat üzerinden birden fazla cihazla haberleşebilir.
  • Harici hiçbir bileşene ihtiyaç duymaz.
  • Veri hattından güç alabilir.
  • 3V-5V besleme aralığına sahiptir.
  • -55C ile +125C arasındaki sıcaklıkları ölçebilir.
  • -10C ile +85C arasında ±0.5C hassasiyette ölçüm yapabilir.
  • 9-bit ile 12-bit arası programlanabilir çözünürlüğe sahiptir.
  • 12-bit dönüşümde 750ms dönüştürme süresine sahiptir.
  • Kullanıcı tarafından ayarlanabilen sıcaklık alarmları vardır.
 

Sensörün blok diyagramı aşağıda görülmektedir.

DS18B20 Blok diyagramı

Bağlantı Çeşitleri

DS18B20’nin iki adet bağlantı şekli vardır. Bazı uygulamalarda sensörün bağlantı şekli birincil aygıt tarafından tanımlanması gerekir.  Read Power Supply [B4h] komutu ile bunu öğrenebiliriz. Bu komutun ardından eğer sensör hattı 0 yaparsa parazit güç bağlantısı, 1 yaparsa harici kaynak bağlantısı yapılmış demektir.

ds18b20_baganti

1.     Parazite Power (Parazit Güç) Bağlantısı

Bu bağlantı mikrodenetleyiciden uzaktaki sıcaklık ölçümü uygulamalarında oldukça kullanışlıdır. DQ pini 1 konumunda iken sensör gerekli olan gücünü bu pinden alır ve kendi içindeki Cpp kondansatörü şarj eder. DQ pini 0 konumunda iken şarj kondansatörü (Cpp) gerekli enerjiyi sağlar. DS18B20 sıcaklık iletişimini yaparken ve EEPROM kopyalama işlemlerinde maksimum 1.5mA akım çeker. +100 °C üzeri sıcaklıklarda bu bağlantı tipini kullanmak tavsiye edilmez. Yüksek sıcaklıklarda meydana gelen daha yüksek sızıntı akımları sıcaklık ölçümlerinde yanlışlıklara neden olabilir. Bu nedenle bu tip uygulamalarda harici güç kaynağı bağlantısını kullanmak daha doğru olacaktır.

2.     Harici Güç Kaynağı Bağlantısı

Bu bağlantının avantajı pull up mosfetinin kullanılmasının gerekmemesi ve +100 °C üzeri sıcaklıklardaki kararlı ölçümleridir.

DS18B20 Hafızası (Scratchpad)

DS18B20 şekil3’de ayrıntıları ile görülen 8 byte’lık bir belleğe sahiptir. Bu bellek bloklarının her biri farklı işlevler için kullanılır. Sıcaklık değeri ölçülüp dönüşüm tamamlandıktan sonra belleğin byte 0-1 bölümünde saklanır. Sıcaklık değeri bu iki bellek bloğundan alınarak mikrodenetleyici tarafından çevrimi yapılır. Sıcaklık değerinin belirli noktaları aşmaması gereken uygulamalarda sensörün alarm özelliğini kullanabiliriz. Sensörün alarm özelliği bir çeşit kesme gibidir. Böylece yazılımsal olarak sıcaklık değerini sürekli kontrol etmemiz gerekmez. Byte 2 alarm derecesinin üst sınırını ve byte 3 ise alarm derecesinin alt sınırını tutan EEPROM bellek bloklarıdır. Yani sıcaklık byte 2’de tanımlı değere eşit ya da üstüne çıkmışsa veya byte 3’de tanımlı olan değere eşit ya da altına inmişse alarm bayrağı set edilir. Konfigürasyon kaydedicisi bazı ayarlamaları yapacağımız bitlere sahip bir kaydedicidir ve ileride daha açık bir şekilde bahsedilecektir. EEPROM bellekler elektriksel olarak yazılıp silinebilen ve flash belleklere nazaran bilgileri bloklar yerine, byte’lar şeklinde yazıp okunan bellek türüdür. DS18B20’nin hem okunup hem yazılabilen tek kaydedicileri bu 3 kaydedicidir. Diğerleri sadece okunabilir.5,6,7’nci byte’lar sadece dahili işlemler için kullanılan üzerinde yazma ya da okuma yapılamayan kaydedicilerdir. Sekizinci byte sadece okunabilen ve sensörün CRC jeneratörü tarafından üretilen kodu saklayan kaydedicidir.

Sıcaklık Değerlerinin Okunması ve Hesaplanması

İletişim tam ve hatasız bir şekilde gerçekleştikten sonra sensörden okuyacağımız 2 adet 8 bitlik veridir. Bu ikilik verinin ondalık sıcaklık değerine dönüştürülmesi gerekir. Önce LSB (düşük değerlikli byte), daha sonra hemen MSB(yüksek değerlikli byte) okunur.

ds18b20_veriokuma

Sonuçta 2’ye complementeri (tümleyeni) bulunmuş olur. C diliyle yazacak olursak;

deger = ~deger + 1;

Ondalık Değer Hesabı

LSB byte’ın ilk 4-biti ondalık değeri verir. Aşağıdaki resimde ondalık değer hesabı gösterilmektedir.

ds18b20ondalikhesap  Ondalık değer dönüşümü de şöyle yapılır; Basamak değeri ile bit çarpılır sonra dört değer toplanır.Sadece en düşük değerlikli bitin “1” olması durumunda ondalık değer 0.0626 olacaktır.Buna göre sensörümüzün hassasiyeti 0.0625’tir.

Şöyle de bulunabilir; ondalık değil de normal sayıymış gibi düşünüp 625 ile çarparak ta bulabiliriz. Örneğimizde 0010 değerimizin ondalık karşılığı 2’dir. 2*625=1250 eder. Başka bir örnek 0001 olsun onluk karşılığı 1*625=625 olur.

C diliyle yazacak olursak;

isiOndalik*=625;

Hesaplamalarla ilgili temel bilgilerden sonra uygulamalarda görüşmek üzere Allaha ısmarladık…

Not: Anlaşılmayan yerler olursa lütfen yorum kısmında sorun cevap vermeye çalışayım.

Reklamlar

6 thoughts on “DS18B20 Sıcaklık Sensöründen Veri Okuma

  1. Hocam askere gitmeden bir anlatıverin inşallah.Crc hesaplama ve alarm özelliğini.Çünkü nette hiçbiri sizin gibi detaylı anlatmıyor.Hepsi copy-paste’den ibaret.En kısa sürede bekliyorum.Kolay gelsin,iyi çalışmalar..

  2. Hocam Pull-Up Mosfet’i(Parazit güç bağlantısında) DS18B20 entegresinin içinde dahili olarak mı bulunmakta?

    • Parasite power bağlantıda iki kablo ile bağlantı sağlanır. Bunlar; GND ve Data pinidir. Entegre baslemesini Pull-up direnci üzerinden sağlar. Kendi çindeki mosfeti aktif eder. Mosfet harici değildir.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s