dht11-nem-ve-sicaklik-sensoru

DHT11 Nem ve Sıcaklık Sensörü MikroC Kütüphanesi



DHT11 NEM ve SICAKLIK Sensörü

  • DHT11 kullanılarak hava nemi ve sıcaklığı ölçülebilir.
  • Bitki yetiştirme ortamlarında kullanılabilir
  • Çok hassas olmayan tüm hava nemi ve sıcaklığı ölçümlerine uygundur.

 

DHT11 NEM ve SICAKLIK Sensörü Özellikleri

  • DHT11 in olumlu ve olumsuz yanlarını aşağıda görebilirsiniz.
  • Projenizi göz önüne alıp aşağıdaki özelliklere göre değerlendirme yapabilirsiniz.
DHT11 Nem ve Sıcaklık Sensörü Özellikleri
Olumlu Özellikler Olumsuz Özellikler
  • Kalibrasyon gerektirmez
  • İçerisinde bulunan 8 bit MCU sayesinde dijital çıkış verir
  • Tek hat üzerinden iki yönlü iletişim kurduğundan fazladan pin işgal etmez.
  • 20 m ve üzeri mesafelerde kablo ile veri alınabilir
  • Küçük boyutlu,ucuz ve kendi muhafazası bulunur
  • Sıcaklık değerini °C olarak verir
  • Sistemin kendisinde veri kontrol için 8 bitlik chcek-sum bulunur
  • Tek kablo protokolünü (1 wire protocol) kullanır. Bu sebeple veri okunurken hassas zamanlama yapılması gerekir
  • Düşük çözünürlüğe sahiptir. ( Çözünürlük 1 dir)
  • Su dışında aşındırıcı sıvı veya diğer kimyasallar ile kullanılamaz
  • Tepki süresi 6-30 sn arasındadır
  • Acil durum ve cihaz durdurma gibi amaçlarla kesinlikle kullanılmamalıdır.
  • Aşağıdaki tabloda DHT11 in detaylı çalışma özellikleri görülebilir
Nem Ölçüm Değerleri
Parametreler Koşullar En Az Ortalama En Fazla
Çözünürlük 1%RH 1%RH(8 bit) 1%RH
Tekrarlanabilirlik ±1%RH
Doğruluk
25 °C de
0-50 °C de
±4%RH
±5%RH
Ölçüm Aralığı
0 °C de
25 °C de
50 °C de
30%RH
20%RH
20%RH
90%RH
90%RH
80%RH
Tepki Süresi (sn) 1/e(63%)25 °C,
1m/s Hava
6 sn 10 sn 15 sn
Histeresiz ±1%RH
Uzun Vadeli Doğruluk Genel Yılda ±1%RH
Sıcaklık Ölçüm Değerleri
Parametreler Koşullar En Az Ortalama En Fazla
Çözünürlük 1 °C ( 8 bit) 1 °C(8bit) 1 °C(8bit)
Tekrarlanabilirlik ±1 °C
Doğruluk ±1 °C ±2 °C
Ölçüm Aralığı 0 °C 50 °C
Tepki Süresi (sn) 1/e(63%) 6 sn 30 sn
DHT11-ozellikleri
DHT11 nem ve sıcaklık sensörü
  • Sensörün arka bölümünde de sahip olduğu özelliklerin bir kısmı görülebilir.

 

DHT11 Çalışma Protokolleri

  • DHT11 den veri almak  için gerekli olan adımları göreceğiz
  • Bu kısımda sırası ile ;
    • Genel Çalışma Sistemi
    • İletişim Kurma Sistemi
    • Veri Okuma Sistemi
    • Bütün İletişim Sistemi ve Veri Kontrol göreceğiz.

 

DHT11 Genel Çalışma Sistemi

DHT11-genel-islem-blok-semasi
DHT11 nem ve sıcaklık sensörünün genel çalışma şekli görülmektedir.
  • İleride göreceğiniz gibi DHT11 devresinde data pini pull-up yapılır bu sebeple data ucu her zaman 1 konumunda bulunur
  • DHT11 ile iletişim kurmak için data pini önce 0 yapılır ve sonra 1 yapılarak cevap gelmesi beklenir
  • Ardından gelen 40 bit veri nem ve ısı değerlerini içerir.

 

DHT11 İletişim Kurma Sistemi

DHT11-iletisim-kurma-blok-semasi
DHT11 nem ve sıcaklık sensörü ile iletişim kurma sistemi görülmektedir.
  • Daha önce 1 tel protokolü ( 1 wire protocol) kullanıldığını söylemiştim
  • Bu protokolde zamanlamalar önemlidir.
  • Buna göre DHT11 ile iletişim kurmak için
    • İlk olarak data pini 0 konumuna getirilerek 18ms beklenir
    • Sonra data pini 1 konumuna getirilere 40us beklenir
    • Ardından data pininden okuma yapılır
    • DHT11 data pinini 50us boyunca sıfıra çeker
    • Sonrasında 80us boyunca 1 konumunda tutar
  • Tüm yukarıda ki adımlar gerçekleştiğinde DHT11 nem ve sıcaklık verilerini göndermeye hazırdır.

 

DHT11 Veri Okuma Sistemi”

DHT11-veri-blok-semasi
DHT11 nem ve sıcaklık sensörü veri okuma hatta anlamlandırma sistemi görülmektedir.
  • 1 tel protokolünde gelen verinin 0 yada 1 olmasına lojik durumuna göre değil süreye göre karar veriyoruz. Buna göre ;
    • DHT11 den gelen 40 bit nem ve ısı verisini analiz ederken lojik  1 durumunda en fazla 28us kalmış ve sonra lojik 0 (sıfır) olmuş ise o veriyi 0(sıfır) olarak kabul ediyor
    • Aynı şekilde lojik 1 durumunda 70us kalmış ise o veriyi ancak o zaman 1(bir) olarak kabul ediyoruz.
  • Ayrıca yine yukarıda görüleceği üzere DHT11 veri göndermeden mutlaka data pinini 50 us kadar lojik 0 konumunda tutmaktadır.
  • İletişim kısmında sonraki tüm 40 bitlik veri bu şekilde değerlendirilmelidir.

 

DHT11 Bütün İletişim Sistemi ve Veri Kontrol

DHT11-butun-iletisim-blok-semasi
DHT11 nem ve sıcaklık sensörü  ile gerçekleşen işlemlerin tamamı görülmektedir.
  • DHT11 ile gerçekleştirilecek tüm işlemler yukarıda görülmektedir.
  • iletişim kurma işleminden sonra gelen 40 bit aşağıdaki gibi gruplandırılabilir
    • ilk 8 bit nem değerinin tam sayı kısmını verir %RH olarak
    • ikinci 8 bit nem değerinin ondalık sayı kısmını verir
    • Üçüncü 8 bit sıcaklık değerinin tam sayı kısmını verir °C olarak
    • Dördüncü 8 bit sıcaklık değerinin ondalık sayı kısmını verir
    • Beşinci ve son 8 bit veri kontrol için check-sum verir.
  • Yukarıdaki tabloları incelediyseniz DHT11 in nem ve ısı çözünürlüğü 1 dir bu sebeple yukarıda ondalıklı olarak belirtilen kısımlardan herhangi bir veri gelmez. Dolayısı ile 2.ve 4. bölümler dikkate alınmaz.

DHT11 den Gelen Verilerin Doğruluğunun Kontrol Edilmesi – Check Sum

DHT11-osiloskop-incelemesi
DHT11 nem ve sıcaklık sensörü osiloskop incelemesi görülmektedir.
  • Check-sum son gelen 8 bitlik veridir.
  • Bunu kontrol etmek için check-sum hariç 4 adet 8 bitlik veriler toplanır
    • Eğer sonuç son 8 bitlik pakete ( yani check sum) eşit ise veriler doğru gelmiştir değilse veri aktarımında hata vardır.
    • 1.(8 bit veri)+2.(8 bit veri)+3.(8 bit veri)+4.(8 bit veri)=5.(8 bit veri) yani check sum
  • ÖNEMLi: DHT11 ile ilgili bazı kaynaklarda ondalıklı verilere denk gelen kısımların direkt olarak 0(sıfır) sayılması gerektiği yazılmaktadır. Ancak yukarıdaki osiloskop görüntüsünde de görüldüğü gibi bazen bu sıfır olması gereken yerlerde veriler oluşabiliyor elbette bunlar ölçüme kesinlikle dahil edilmemeli ancak check sum hesabı yapılırken dahil edilmeli çünkü eğer bu rastgele veriler check-sum hesaplamasına dahil edilmezse veri aktarımı hatalı olarak gözükecektir.
  • Yukarıdaki osiloskop görüntüsünde ki verilerden yola çıkarsak
    • Nem verisi 1 = 00100111 = 39 % RH
    • Nem verisi 2 = 00000000 = 0
    • Sıcaklık verisi 1 = 00011000 = 24 °C
    • Sıcaklık verisi 2 = 00000011 = 3 ( bu veri sıcaklık değeri hesaplanırken dikkate alınmaz.)
    • Check-sum = 01000010 =  66 ( 39+24+3 =66)
    • Sonuç olarak görüldüğü gibi check-sum işlemi yaparken, ondalıklı kısımlar,  nem ve sıcaklık değerleri için dikkate alınmazken verilerin doğruluğu denetlenirken gelen tüm veri dikkate alınmalıdır .

 

DHT11 Pin İşlevleri

DHT11-pinler
DHT11 nem ve sıcaklık sensörü pinleri görülmektedir.
Pin Adı İşlevi
VDD  +5v besleme
DATA Veri alışverişi yapılır
x Pin3 Kullanılmaz
GND Topraklama
  • DHT11 de tek kablodan iletişim sağlandığı için sadece 1 adet data pini bulunur herhangi bir clock yada benzeri pin bulunmaz.

 

DHT11 Nem ve Sıcaklık Sensörü Devresi

  • Bu bölümde DHT11 nem ve sıcaklık sensörü için gerekli devreyi göreceğiz.
  • DHT11 nem ve sıcaklık sensörünün 20m uzunluğundaki kablodan veri gönderebileceği ancak 20m nin üzerine çıkılırsa pull-up direncinin değiştirilmesi gerektiği yazmaktadır ancak hiçbir kaynakta yeni direncin nasıl ve neye göre hesaplandığını bulamadım. Bu sebeple bu konuda bir açıklama yapamıyorum.
  • 20m den iletişim içinde +5V besleme gerekmektedir.

Devre Şeması

DHT11-devre-semasi
DHT11 nem ve sıcaklık sensörü devre şeması
  • Data pini mutlaka 5k ile pull-up yapılmalıdır.
  • Parazitleri engellemek için +5v ile GND arasında 100nf kondansatör konulması önerilir.
  • Dijital çıkış verdiği için PIC in herhangi bir giriş/çıkış pinine bağlanabilir

Gerekli Malzemeler

  • DHT11 nem ve sıcaklık sensörü – 1 adet
  • 5k direnç – 1 adet
  • 100 mf polyester kondansatör – 1 adet

Devrenin Yapılışı

DHT11-devre-genel-gorunum
DHT11 nem ve sıcaklık sensörü devresi genel görünümü
  • Devreyi board üzerine kurdum.
  • Sonuçları izlemek için 240×128 GLCD kullandım
  • Sinyalleri görebilmek için 20 Mhz PC Osiloskop kullandım
  • Sonuçları karşılaştırmak için basit bir nem ve ısı ölçer aldım.

 

DHT11-yakin-cekim
DHT11 nem ve sıcaklık sensörü yakın çekim
  • DHT11 nem ve sıcaklık sensörünün yakında görünümü
  • Kendinden mavi muhafazası bulunmaktadır.
  • Proje hazırlama sırasında elimde 5k olmadığından yakın değerde bir direnç kullandım
  • 100 nf kondansatör sensörün arkasında kaldığından gözükmemektedir.

 

DHT11 Nem ve Sıcaklık Sensörü MikroC Kütüphanesi

  • DHT11 için MikroC de kütüphane yazdım ancak kütüphane temeli alınarak istenilen ortama uyarlanabilir ayrıca “1-wire protocol” içinde örnek olarak kullanılabilir.
  • Kütüphane GPL lisansı ile açık kaynak olarak yayınlanmıştır.
  • Sensörün tek amacı olduğundan bu amaca yönelik olarak kütüphane yazılmıştır.

 

Fonksiyonlar

  • Sadece 1 adet fonksiyon bulunduğundan bir gruplandırma yapmadım

 

 – DHT11_ISI_NEM_VERI_OKUMA Fonksiyonu

Fonksiyon : unsigned char DHT11_ISI_NEM_VERI_OKUMA(unsigned char *veri)

Amacı : Sensörden gelen nem ve sıcaklık verisi almak.

Parametreler :

  • *veri : Verilerin dışarıdan okunmasını sağlar . Ana programda 5 elemanlı bir  char dizisine bağlanması gerekir

Kullanım Şekli :

DHT11_ISI_NEM_VERI_OKUMA(data);//Alınan veriler "data" adındaki diziye aktarılır.

Geri Bildirim :

  • 1 gelirse veri aktarımı başarılı olmuştur
  • 0 gelirse veri aktarımı başarısız olmuştur.

 

Fonksiyonların Uygulanması

DHT11 Nem ve Isı Değerlerini Okumak

  • Verileri okuyarak , veri kontrolü yapıp GLCD üzerinde yazdıralım.
//GLCD Pin tanımalamarı
char SAPTRIS at trisd;//data portları
char SAPDATA_giris at portd;
char SAPDATA_cikis at latd;
sbit SAP1024_RD at RC1_bit ;       //GLCD RD UCU BAĞLANTI PİNİ
sbit SAP1024_CE at rc2_bit ;       //GLCD CE UCU BAĞLANTI PİNİ
sbit SAP1024_CD at Rc3_bit ;       //GLCD C/D UCU BAĞLANTI PİNİ
sbit SAP1024_RST at Rc4_bit ;      //GLCD RST UCU BAĞLANTI PİNİ
sbit SAP1024_FS at Rc5_bit ;       //GLCD FS UCU BAĞLANTI PİNİ
sbit SAP1024_WR at RC0_bit ;       //GLCD wr UCU BAĞLANTI PİNİ

sbit SAP1024_RD_Direction  at TRISC1_bit;       //GLCD RD UCU BAĞLANTI PİNİ
sbit SAP1024_CE_Direction  at TRISC2_bit;       //GLCD CE UCU BAĞLANTI PİNİ
sbit SAP1024_CD_Direction  at TRISC3_bit;       //GLCD C/D UCU BAĞLANTI PİNİ
sbit SAP1024_RST_Direction at TRISC4_bit;      //GLCD RST UCU BAĞLANTI PİNİ
sbit SAP1024_FS_Direction  at TRISC5_bit;       //GLCD FS UCU BAĞLANTI PİNİ
sbit SAP1024_WR_Direction  at TRISC0_bit;       //GLCD FS UCU BAĞLANTI PİNİ

//DHT11 Pin Tanımlamaları
sbit DHT11_DATA at RC7_bit;
sbit DHT11_DATA_Direction at TRISC7_bit;


void  main()
{
    unsigned char veri[5];//verinin atanacağı dizi
    unsigned char deger;
    char txt[15];
    ADCON1=0b00000001;
    CMCON=7;
    SAP1024_INIT(240,128,6);
    

    //veriler ekranda daha anlamlı gözükebilmesi için başlıklar oluşturulur
    SAP1024_YAZI_YAZMA(32-9,10,"NEM DEGERI:%");
    SAP1024_YAZI_YAZMA(36,12,"'C");
    SAP1024_YAZI_YAZMA(32-9,12,"ISI DEGERI:");

  while(1)
    {
      do{
         deger= DHT11_ISI_NEM_VERI_OKUMA(veri);
         delay_ms(6500);}// DHT11 tepki süresi 6-10 saniye arası oldugundan 6,5 saniyede 1 kez veri alınır.
      while(deger!=1);//veri doğruluğu kontrol edilir veriler doğru gelmediği müddetçe döngüde kalır 

      WordToStr(veri[0],txt);//nem verisi stringe çevirilir
      SAP1024_YAZI_YAZMA(32,10,txt);
      SAP1024_YAZI_YAZMA(32-9,10,"NEM DEGERI:%");
    
      WordToStr(veri[2],txt);//sıcaklık verisi stringe çevirilir
      SAP1024_YAZI_YAZMA(31,12,txt);
      SAP1024_YAZI_YAZMA(36,12,"'C");
      SAP1024_YAZI_YAZMA(32-9,12,"ISI DEGERI:");

    }

}
DHT11-nem-ve-isi-olcumu-sonuc
DHT11 nem ve sıcaklık ölçümü sonucu görülmektedir.
  • Yukarıda sürekli okuma yapmak için sonsuz while döngüsü oluşturuldu
  • While içerisinde do-while oluşturuldu ve 6,5 saniye gecikme eklendi.
  • DHT11 6-10 saniye arasında cevap verme özelliğine sahip dolayısı ile 6,5 saniye de bir veri alınması amaçlandı
  • Diğer kısımlar verilerin stringe dönüştürülmesi ve ekranda verilerin daha anlamlı gözükmesini sağlamak amacı ile yazıldı.
  • DHT11 den gelen veriyi veri[5] dizisine atatdık. Buna göre
    • veri[0]=nem verisini
    • veri[2]=sıcaklık verisini
    • veri[4]=check-sum verisini taşımaktadır.

Çalışma Videosu


Sonuç

  • DHT11 nem ve sıcaklık sensörünün çalışma koşullarını , devre şemasını ve kütüphanesini inceledik
  • Bitki yetiştirme kültürleri başta olmak üzere hava nem ve sıcaklık ölçümlerinde kullanılabilir
  • Sensör kutulanacağı zaman delikli kısmın dışarıda kalması gerektiğini unutmayın
  • Nem ve sıcaklık ölçümünde sensörün konumu da oldukça etkilidir. Yüksek merkezi noktalar daha doğru sonuç verecektir.
  • Nem ve sıcaklık ölçümünün ayrılmaz bütün olduğunu unutmayın. Bir ortamdaki nem ölçümü aynı zamanda ısı ölçümü ile anlamlı hale gelmektedir.
  • Aklınıza takılan noktaları “Soru-Cevap” Forumuna sorabilirsiniz.

Kütüphane Dosyaları

 


Yararlanılan Kaynaklar


 

ERCAN KOÇLAR Hakkında

Çalışmalarım çocukken başladı kolonyalı kağıtları yakmak, ilaçları birbirine katmak gibi değişik deneylerim vardı. Kimya kitabında elektroliz ile suyun hidrojen ve oksijene ayrıldığı ve hidrojenin yandığını yazıyordu, o zamanlarda aklım almıyordu sudan nasıl yanan....Devamını okumak için tıklayınız ;)