DHT22 Isı ve Nem Sensörü
DHT22 sıcaklık ve nem algılayıcı kalibre edilmiş dijital sinyal çıkışı veren gelişmiş bir sensör birimidir. Yüksek güvenilirliktedir ve uzun dönem çalışmalarda dengelidir. DHT22, üzerinde 8 bitlik mikrodenetleyici bulunmaktadır ve ürün kısa tepki süresine sahiptir. DHT22 Isı ve Nem Sensörü hassas bir kalibrasyona sahiptir ve kalibrasyon katsayısı OTP hafızada bir çeşit program üzerinde saklanmıştır. Ürün algılama (sensing) sırasında hafızada saklı olan bu katsayıya başvurur.
-40 ile 80°C arasında +/-1°C hata payı ile sıcaklık ölçen birim, 0-100% RH arasında +/-5% RH hata payı ile nem ölçümü yapabilmektedir. Sensör ölçümü olarak sensörün data toplama periyodundan kaynaklı olarak 2 saniyelik periyotlarla ölçüm sonuçları alınabilmektedir. DHT22, diğer DHT modellerine göre boyut olarak bir miktar daha büyüktür. Küçük boyutları, düşük enerji geresinimi, ve geniş iletim mesafesi (100m) ile tüm zor uygulamlarda kullanılabilir. Ayrıca aynı hizada sıralanmış bacaklar bağlantıyı kolaylaştırır.
DHT22 ‘nin pinleri Vdd besleme, DATA ve ve iki adet toprak pini olarak belirlenmiştir. modül üzerindeki MCU ile sıcaklık nem ölçen birim (AM2302) arasında iletişim 1 hatlı bus ile sağlanır. MCU’ya iletilen data 16 bitlik nisbi nem, 16 bitlik sıcaklık ve 8 bitlik checksum değeri olmak üzere 40 bitten oluşur. AM2302 ile MCU arasında haberleşme, standby modundan haberleşme moduna geçme işlemleri ve dijital ‘0’ dijital ‘1’ değerleri gönderimi işlemleri zaman-duyarlı işlemlerdir bu konuda datasheet incelenmelidir.
DHT22 Isı ve Nem Sensörü Teknik Özellikleri
DHT serisinin yüksek performanslı modellerindendir.
Dijital çıkış vermektedir.
Çalışma Gerilimi: 3.3 – 6 VDC
Nem: 0-100% nisbi nem
Sıcaklık: -40 – 80 °C
Algılama elemanı: Polimer kapasitör
Hassasiyet Nem: +/- %2 (Max %5) RH
Hassasiyet Sıcaklık: < +/- 1°C
Ölçüm Periyodu: 2 s
Ürün Ölçüleri: 22mm x 28mm x 5 mm
Not: Vcc ile çıkış pini arasında pull-up direncine ihtiyaç duyulmaktadır. Bu sebeple 4.7K ile 10K arasında bir direnç ile beraber kullanmanız gerekmektedir. DHT11 modeli de benzer özelliklerde olduğu için bir model ile yapılmış uygulama diğer modele de uygulanabilmektedir.
DHT22 Sıcaklık ve Nem Sensörü Arduino Bağlantısı
DHT22 Sıcaklık ve Nem Sensörü örnekleme zamanı 2 saniyedir. 2 saniyeden daha az ölçüm zamanı ayarlandığı takdirde sensör doğru sonuçlar vermeyebilir.
DHT22 Sıcaklık ve Nem Sensöründe 4 çıkış pini bulunmaktadır.
- 1. Pin : Güç Girişi. Arduino 3.3V yada 5V pinine bağlanabilir
- 2.Pin : Data çıkışı. Arduino üzerinde herhangi bir dijital pine bağlanabilir. 10K pull-up direnci bağlanmalıdır.
- 3. Pin : Boş Pin. Boşta bırakılmalıdır bir yere bağlanmamalıdır.
- 4. Pin : GND. Toprak hattı, Arduino GND pinine bağlanmalıdır
Not : Mikrodenetleyici ile bağlantı sırasında opsiyonel olarak dalga filtrelenmesi için VDD ve GND arasına 100nF değerinde bir kapasitör eklenebilir.
/* DHT22 Sıcaklık ve Nem Ölçüm Sensörü testi https://diyot.net/ DHT22 çalışması temel kodlar DHT kütüphanesinin yüklenmesi gerekmektedir. */ #include <DHT.h>; // DHT Kütüphanesi //Sabit değerler #define DHTPIN 3 // Herhangi bir dijital pine bağlanmalıdır. Bağlanılan dijital pin numarası buraya yazılmalıdır. DHT22 sensörünün 2. çıkışı dijital pine bağlanmalıdır. #define DHTTYPE DHT22 // DHT 22 (AM2302) DHT dht(DHTPIN, DHTTYPE); // Sensör okuması için,Sensör çıkışına 10k pullup direnci bağlanmalıdır. //Değişkenler int chk; float hum; // Nem ölçümü float temp; //Sıcaklık ölçümü void setup() { Serial.begin(9600); dht.begin(); } void loop() { hum = dht.readHumidity(); temp= dht.readTemperature(); Serial.print("Humidity: "); Serial.print(hum); Serial.print(" %, Temp: "); Serial.print(temp); Serial.println(" Celsius"); delay(3000); // Minimum 2 saniye örnekleme, okuma zamanı vardır. 2 saniyeden daha düşük olamaz. Doğru bir ölçüm için 3 saniye ve üzerini tavsiye etmekteyiz. }
Örnek proje
#include "DHT.h" #define DHTPIN 13 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("DHTxx test!"); dht.begin(); } void loop() { // Wait a few seconds between measurements. delay(2000); float h = dht.readHumidity(); // Read temperature as Celsius (the default) float t = dht.readTemperature(); // Read temperature as Fahrenheit (isFahrenheit = true) float f = dht.readTemperature(true); // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; } // Compute heat index in Fahrenheit (the default) float hif = dht.computeHeatIndex(f, h); // Compute heat index in Celsius (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false); Serial.print("Humidity: "); Serial.print(h); Serial.print(" %t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.print(" *Ft"); Serial.print("Heat index: "); Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.println(" *F"); }