Skip to Content
SensörlerDHT11 ve DHT22 Sıcaklık-Nem Sensörü

DHT11 ve DHT22 Sıcaklık-Nem Sensörü

DHT serisi sensörler, tek bir gövdede hem sıcaklık hem bağıl nem ölçen dijital sensörlerdir. Ucuzdur, kütüphanesi hazırdır ve tek bir veri kablosuyla çalışır — bu yüzden hava istasyonu, sera kontrolü ve akıllı ev projelerinin standart sensörüdür.

DHT11 ve DHT22 Karşılaştırması

İkisi de aynı şekilde bağlanır ve aynı kütüphaneyle kullanılır. Fark tamamen performanstadır.

ÖzellikDHT11 (mavi)DHT22 / AM2302 (beyaz)
Sıcaklık aralığı0 – 50 °C−40 – 80 °C
Sıcaklık doğruluğu±2 °C±0,5 °C
Nem aralığı%20 – %80%0 – %100
Nem doğruluğu±%5±%2
Çözünürlük1 (tam sayı)0,1 (ondalık)
Okuma sıklığı1 saniyede bir2 saniyede bir
FiyatDaha ucuzDaha pahalı

Hangisini seçmeli? Sadece “sıcak mı soğuk mu” bilgisi yeterliyse DHT11 iş görür. Gerçek bir ölçüm istiyorsanız, negatif sıcaklık ölçecekseniz veya nem yüzdesi önemliyse DHT22 alın — aradaki fiyat farkı küçük, kalite farkı büyüktür.

Nasıl Çalışır?

Sensörün içinde iki ayrı algılayıcı vardır:

  • Nem: İki elektrot arasındaki nem tutucu bir alt tabaka. Ortamdaki nem değiştikçe bu tabakanın direnci (veya kapasitesi) değişir.
  • Sıcaklık: Bir NTC termistör. Sıcaklık arttıkça direnci düşer.

Gövde içindeki küçük bir denetleyici bu iki analog değeri okur, sayısala çevirir ve tek tel üzerinden özel bir protokolle gönderir. Bu protokol standart değildir; bu yüzden kütüphane kullanmak zorunludur.

Bağlantı

DHT22’nin delikli yüzü size bakarken pinler soldan sağa:

PinİsimBağlantı
1VCCArduino 5V (veya 3,3V)
2DATAArduino dijital pini (örn. D2)
3NCBoş bırakılır
4GNDArduino GND

Ayrıca pin 1 ile pin 2 arasına 10 kΩ pull-up direnci bağlanır.

Modül tipinde (3 pinli, üzerinde küçük kart olan) DHT sensörlerde pull-up direnci kart üzerinde zaten bulunur; harici direnç eklemeniz gerekmez.

Pull-up direnci ne işe yarar?

DATA hattı hem sensör hem Arduino tarafından kullanılan iki yönlü bir hattır. Kimse konuşmadığı anlarda hat boşta kalır ve gürültü toplar. Pull-up direnci hattı boştayken HIGH seviyeye çeker; böylece protokolün “başlangıç” ve “bitiş” sinyalleri güvenilir şekilde algılanır.

Direnç olmadan sensör bazen çalışır, bazen NaN döndürür — bu belirsizlik en can sıkıcı arıza türüdür.

Kütüphane Kurulumu

Arduino IDE’de Araçlar → Kütüphaneleri Yönet yolunu izleyin ve şu ikisini yükleyin:

KütüphaneGörevi
DHT sensor library (Adafruit)Sensörle haberleşmeyi sağlar
Adafruit Unified SensorDHT kütüphanesinin bağımlılığıdır

İkinci kütüphaneyi yüklemeyi unutmak, derleme sırasında Adafruit_Sensor.h: No such file or directory hatası verir.

Temel Kod

#include <DHT.h> #define DHT_PIN 2 #define DHT_TYPE DHT22 // DHT11 kullaniyorsaniz DHT11 yazin DHT dht(DHT_PIN, DHT_TYPE); void setup() { Serial.begin(9600); dht.begin(); Serial.println("DHT sensor basliyor..."); delay(2000); } void loop() { float nem = dht.readHumidity(); float sicaklik = dht.readTemperature(); if (isnan(nem) || isnan(sicaklik)) { Serial.println("Sensor okunamadi!"); delay(2000); return; } Serial.print("Sicaklik: "); Serial.print(sicaklik, 1); Serial.print(" C Nem: %"); Serial.println(nem, 1); delay(2000); // DHT22 icin en az 2 saniye }

Okuma Sıklığı Sınırı

Bu, en sık gözden kaçan kısıttır.

  • DHT11 en fazla saniyede bir
  • DHT22 en fazla 2 saniyede bir okunabilir

Daha sık okumaya çalışırsanız sensör yeni ölçüm yapmaz; kütüphane önbellekteki eski değeri döndürür veya NaN verir. Grafik çizen bir projede bu, veri sanki donmuş gibi görünmesine yol açar.

Ayrıca sensör içindeki termistör, gövdenin kendi ısınmasından etkilenir. Çok sık okumak sensörü ısıtır ve ölçümü gerçekte olduğundan yüksek gösterir.

Isı İndeksi (Hissedilen Sıcaklık)

Kütüphane, sıcaklık ve nemi birleştirip hissedilen sıcaklığı da hesaplayabilir.

float hi = dht.computeHeatIndex(sicaklik, nem, false); // false = Celsius, true = Fahrenheit Serial.print("Hissedilen: "); Serial.print(hi, 1); Serial.println(" C");

Yüksek nemde ter buharlaşamadığı için ortam gerçek sıcaklıktan daha sıcak hissedilir. Isı indeksi bunu hesaba katar.

NaN Hatası ve Çözümü

Sensor okunamadi! mesajı alıyorsanız sırasıyla şunları kontrol edin:

  1. Pull-up direnci var mı? 4 pinli çıplak sensörde 10 kΩ zorunludur.
  2. Kod içindeki tip doğru mu? DHT11 takıp DHT22 yazmak (veya tersi) her zaman NaN verir.
  3. Pin numarası doğru mu? Koddaki DHT_PIN ile fiziksel bağlantı eşleşmeli.
  4. Okuma çok mu sık? delay(2000) koyun.
  5. Kablo çok mu uzun? 20 cm’yi aşan kablolarda sinyal bozulur. Uzun mesafede pull-up direncini 4,7 kΩ’a düşürün ve blendajlı kablo kullanın.
  6. Sensör ters mi bağlı? VCC ve GND yer değiştirmişse sensör ısınır. Elinizle dokunup kontrol edin; sıcaksa hemen enerjiyi kesin, sensör muhtemelen yanmıştır.
  7. Besleme yeterli mi? USB üzerinden beslenen ve aynı anda motor süren bir devrede gerilim düşer. Sensör beslemesine 100 nF kondansatör ekleyin.

Birden Fazla DHT Kullanma

Her sensör kendi dijital pinine bağlanır ve ayrı bir nesne olarak tanımlanır. Aynı pini paylaşamazlar.

#include <DHT.h> DHT dhtIc(2, DHT22); DHT dhtDis(3, DHT22); void setup() { Serial.begin(9600); dhtIc.begin(); dhtDis.begin(); } void loop() { float icSicaklik = dhtIc.readTemperature(); float disSicaklik = dhtDis.readTemperature(); Serial.print("Ic: "); Serial.print(icSicaklik, 1); Serial.print(" C Dis: "); Serial.print(disSicaklik, 1); Serial.println(" C"); delay(2500); }

Sensörü Doğru Konumlandırmak

Doğru sensör yanlış yere konursa yanlış ölçer.

  • Doğrudan güneş ışığından uzak tutun; sensör gövdesi ısınır.
  • Isı üreten bileşenlerden (regülatör, motor sürücü, ekran) uzağa yerleştirin. Kart üzerine yakın monte edilen bir DHT, ortamdan 2–3 °C yüksek okur.
  • Hava akımı olan bir noktaya koyun; kapalı bir kutunun içi ortamı temsil etmez.
  • Dış ortamda yağmurdan korunaklı ama havalandırmalı bir muhafaza kullanın (Stevenson tipi radyasyon kalkanı).

Alternatif Sensörler

SensörÖlçtüğüProtokolNot
DS18B20Sıcaklık1-WireSu geçirmez versiyonu var, çok hassas
BME280Sıcaklık, nem, basınçI2CEn kapsamlısı, yüksek doğruluk
BMP280Sıcaklık, basınçI2CNem ölçmez, ucuz
SHT31Sıcaklık, nemI2CEndüstriyel doğruluk
LM35 / TMP36SıcaklıkAnalogKütüphanesiz, basit

Nem ölçümü kritikse ve bütçeniz varsa BME280 veya SHT31, DHT22’den belirgin şekilde üstündür. Sadece sıcaklık ölçecekseniz DS18B20 daha hassas ve daha hızlıdır.

Özet

DHT11 ve DHT22, tek bir veri hattı üzerinden sıcaklık ve nem bilgisi gönderen dijital sensörlerdir. DHT22 daha geniş aralık, daha yüksek doğruluk ve ondalık çözünürlük sunar.

Bu derste şunları öğrendik:

  • DHT11 ile DHT22 arasındaki farkları
  • 10 kΩ pull-up direncinin neden gerektiğini
  • Adafruit DHT ve Unified Sensor kütüphanelerini
  • Okuma sıklığı sınırını (DHT22 için 2 saniye)
  • NaN hatasının yedi olası nedenini
  • Sensörü doğru konumlandırmayı
  • BME280, SHT31 ve DS18B20 alternatiflerini