Bu projemizde Arduino ve DHT22 sıcaklık ve nem sensörünü kullanarak basit bir havalandırma projesi yapacağız.

Kullanılacak Malzemeler:

Arduino

DHT22 sıcaklık ve nem sensörü

Fan motoru

BC547 transistör

1N4007 diyot

10k direnç

Projeye başlamadan önce, yabancı olduğunuzu düşündüğüm DHT22 sıcaklık ve nem sensörü ile ilgili birkaç bilgi vereceğim. Aşağıda DHT sıcaklık ve nem sensörünün önden görünüşü ve pin isimleri verilmiştir.

DHT22 sıcaklık ve nem sensörüDHT22 sıcaklık ve nem sensörü pin yapısı

 

DHT22 sıcaklık ve nem sensörü dijital çıkış veren gelişmiş bir sensördür.

DHT serisinin yüksek performanslı modellerindendir.

Çalışma gerilimi 3.3 – 5 V DC dir.

Ölçüm aralığı :    Nem : 0  / 100 %RH

Sıcaklık : -40 / 80  c

Hassasiyet:         Nem: +/- %3 (Max %5) RH

Sıcaklık: < +/- 1°C

Ölçüm periyodu : 2 sn

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.

Ortamdaki sıcaklık ve nem bilgisini okumak ve bu bilgiyi seri monitör ya da LCD de görüntülemek için DHT22 sıcaklık ve nem sensörü ile Arduino kullanabilirsiniz. DHT22 sıcaklık ve nem sensörü yerine yine DHT serisi diğer sensörleri de kullanabilirsiniz. Ama DHT22 serisi

doğruluğu ve ölçüm aralığı çok iyi olan bir sensördür.

Not: DHT22 sıcaklık ve nem sensörünü Arduino ile kullanmak için sensörün kütüphanesini Arduino ya eklememiz gerekmektedir.

Aşağıda devre şeması verilmektedir.

devre şeması

#include "DHT.h"     // DHT sıcaklık ve nem sensörü kütüphanesi

#define dht_pin 2     // Sensördeki Data pini Arduino nun 2. pinine bağlanacak
#define dht_tipi DHT22   // DHT 22  (AM2302) kullanılacak
#define fan 4            // Fan Arduino nun 4. pinine bağlanacak

int max_nem = 60;
int max_sicaklik = 40;

DHT dht(dht_pin, dht_tipi);

void setup() {
  pinMode(fan, OUTPUT);
  Serial.begin(9600); 
  dht.begin();
}

void loop()
{
  delay(2000);   // Sensörün ölçüm periyodu 2 sn olduğu için gecikme verildi

  float nem = dht.readHumidity();      // Sensörden okunan nem değeri nem değişkenine atanıyor
  float sicaklik = dht.readTemperature();  // Sensörden okunan sıcaklık değeri sicaklik değişkenine atanıyor
  
  // Sensörün okumasında hata olup olmadığı kontrol ediliyor
  if (isnan(nem) || isnan(sicaklik)) {
    Serial.println("DHT sensörün okumasında hata var!");  // Hata olduğu zaman çalışacak komut
    return;
  }
  
  if(nem > max_nem || sicaklik > max_sicaklik) {  
      digitalWrite(fan, HIGH);      // Sıcaklık ya da nemden biri max değerleri aşarsa fan çalıştırılacak
  } else {
     digitalWrite(fan, LOW); 
  }
  
  Serial.print("Nem: "); 
  Serial.print(nem);
  Serial.print(" %\t");
  Serial.print("Sıcaklık: "); 
  Serial.print(sicaklik);
  Serial.println(" *C ");

}

Kaynak : http://www.electroschematics.com/11291/arduino-dht22-am2302-tutorial-library/

 

2 YORUMLAR

  1. Merhaba sensörü sorunsuz bir şekilde 1 hafta kullandım. Sonrasında breadboarddan çıkarıp kablolara lehimledim. Lehimlemeden sonra %40 olan nem değeri %68 lere çıktı, 19 derece olan sıcaklık ise 26 derecelere çıktı. ortama başka termometre koyup ölçüm yaptım ortam 19 derece. Lehimleri söktüm hemen tekrar breadboarda taktım fakat nafile ölçümler yine yüksek çıktı. Acaba bildiğiniz bir kalibrasyon yöntemi var mı yoksa DHT22’im çöp mü oldu artık?

CEVAP VER

Please enter your comment!
Please enter your name here