Başa dön
arduino-ile-sicaklik-ve-nem-sensoru-kullanimi

Arduino ile Sıcaklık ve Nem Sensörü Kullanımı (DHT11 – DHT22)

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

DHT22 veya DHT11 sıcaklık ve nem sensörü serisinin iki versiyonu var. Biraz benziyorlar ve aynı pinouta sahipler ama farklı özelliklere sahipler.

DHT22, açıkça daha iyi özelliklere sahip olan daha pahalı versiyondur. Sıcaklık ölçüm aralığı -40 ° C ile + 125 ° C arasında + -0.5 derece hassasiyetle, DHT11 sıcaklık aralığı +2 derece hassasiyetle 0 ° C ile 50 ° C arasındadır. Ayrıca DHT22 sensörü daha iyi nem ölçüm aralığına sahiptir, % 0 – 100 arasında% 2-5 doğrulukla, DHT11 nem aralığı ise% 5 ile% 20 doğrulukla ölçüm yapmaktadır.

 

DHT22 ve DHT11 Arasındaki Farklar

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

DHT11

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

DHT22

Çalışma Voltajı 3 – 5V 3 – 5V
Akım mAh Max. 2.5mAh 2.5mAh
Nem 20-80% / 5% 0-100% / 2-5%
Sıcaklık 0-50°C / ± 2°C -40 ile 80°C / ± 0.5°C
Ölçüm Hızı 1 Hz (1 Saniyede Yenileme) 0.5 Hz (2 Saniye de Yenileme)
Fiziki Ölçüler 15.5mm x 12mm x 5.5mm 15.1mm x 25mm x 7.7mm
Avantajlar Ucuz Daha Doğru Tahmin


Her ne kadar DHT22 daha doğru sonuç verse de
 DHT11’in DHT22’den üstün olduğu üç şey var. Daha ucuz, daha küçük ve daha yüksek örnekleme oranına sahip. DHT11’in örnekleme hızı 1Hz, yani her saniye bir okuma, DHT22 örnekleme hızı ise 0,5Hz’dir, yani her iki saniyede bir okuma.

Bununla birlikte, her iki sensörün çalışma voltajı 3 ile 5 volt iken dönüşüm sırasında kullanılan maksimum akım 2,5mA’dir. Ve her iki sensörün de (DHT11 ve DHT22) ‘değiştirilebilir’ olması önemlidir. Yani, projeniz de sensörler de bir problem olsa veya değiştirmek isteseniz, fişini çekip başka birini kullanabilirsiniz. Örnek kodları kendinize göre biraz ayarlamak zorunda kalabilirsiniz ama en azından kablo bağlantısı aynı!

 

Biraz daha fazla bilgi için, lütfen DHT11 ve DHT22 / AM2302 sensörü için aşağıdaki veri sayfalarına bakınız.

 

 

DHT22 ve DHT11 İç Yapısı

Şimdi hem DHT11 hem de DHT22 sıcaklık ve nem sensörlerini söküp içeride ne olduğunu görelim.

Muhafaza iki parça halinde olduğundan açabilmek için keskin bir bıçak almak ve kasayı ayırmak yeterlidir. Kasanın içinde, algılama tarafında, bir NTC sıcaklık sensörü (veya termistör) ile birlikte bir nem algılama bileşeni vardır.

 

DHT11 ve DHT22 iç yapıları

 

Tabii ki, aralarında nem bulunan, nem tutma substratı (genellikle bir tuz veya iletken plastik polimer) bulunan iki elektrot içeren nemi ölçmek için nem algılama bileşeni kullanılır. İyonlar substrat tarafından su buharı emildiği için serbest kalır, bu da elektrotlar arasındaki iletkenliği arttırır. İki elektrot arasındaki direncin değişimi bağıl neme orantılıdır. Daha yüksek bağıl nem, elektrotlar arasındaki direnci azaltırken, düşük bağıl nem, elektrotlar arasındaki direnci arttırır.

 

DHT11 sıcaklık ve Nem Sensörünün katmanları

Sıcaklık ve nem sensörü ile sıcaklığı ölçmek için bir NTC sıcaklık sensörü / termistörden oluşurlar. Bir termistör, bir termal dirençtir – direncini sıcaklıkla değiştiren bir dirençtir. Teknik olarak, tüm dirençler termistördür – dirençleri sıcaklığın artması ve azalmasına bağlı olarak değişir – ancak değişiklik genellikle çok küçük ve ölçülmesi zordur.

Termistörler, direnç değişimini fark ettirecek bir şekilde üretilir. Böylece derece başına 100 ohm veya daha fazla değişiklik olabilir! “NTC” terimi, “Negatif Sıcaklık Katsayısı” anlamına gelir; bu, direncin sıcaklığın artmasıyla azaldığı anlamına gelir.

 

 

NTC Termistörü

Diğer taraftan, 8 bit SOIC-14 paketlenmiş IC içeren küçük bir PCB vardır. Bu IC depolanan kalibrasyon katsayıları ile analog sinyali ölçer ve işler, dijital dönüştürmeyi analog olarak yapar. Sıcaklık ve nem ölçümünü dijital bir sinyal olarak verir.

 

NTC Termistör Sıcaklık Grafiği

 

 

DHT11 ve DHT22 Pin Çıkışı

DHT11, DHT22 sensörlerini bağlamak oldukça kolaydır. Dört pimleri vardır:

 

DHT11 ve DHT22 Pinout

 

1- VCC; pimi sensör için güç sağlar. Besleme gerilimi 3.3V ile 5.5V arasında değişmesine rağmen, 5V besleme önerilir. 5V güç kaynağı olması durumunda, sensörü 20 metre kadar uzak bağlantı ile kullanabilirsiniz. Bununla birlikte, 3.3V besleme voltajı ile kablo uzunluğu 1 metreden büyük olmamalıdır. Aksi takdirde, voltaj düşüşü hatalı ölçümlere yol açacaktır.

2- Veri pini(Data); Sensör ve mikrodenetleyici arasındaki iletişimi sağlamak için kullanılır.

3- NC (Boş)

4- GND; Arduino topraklarına bağlanmalıdır.

 

DHT11 ve DHT22 Arduino UNO’ya Bağlama

Artık DHT sensörlerinin nasıl çalıştığını tam olarak anlayabildiğimize göre, onu Arduino’muza takmaya başlayabiliriz!

DHT11, DHT22 sensörlerini Arduino’ya bağlamak çok önemlidir. Oldukça uzun 0.1 ¨ -pitch pinleri vardır, böylece onları herhangi bir breadboard’a kolayca takabilirsiniz. Sensörü 5V ile çalıştırın ve toprağı toprağa bağlayın. Son olarak Veri pimini bir dijital pime # 2 bağlayın.

Unutmayın, bu yazımız da daha önce anlattığımız gibi, sensör ve MCU arasında doğru iletişim YÜKSEK kalması için VCC ile veri hattı arasına 10K?’luk bir direnç direnci yerleştirmemiz gerekir. Sensörde bir koparma panosu varsa, herhangi bir harici çekme eklemeniz gerekmez. Dahili bir pull-up rezistörü ile birlikte gelir.

 

DHT11 Arduino Bağlantısı

DHT11 Arduino Bağlantısı

 

DHT22 Arduino Bağlantısı

DHT22 Arduino Bağlantısı

 

Şimdi kod yüklemeye ve çalıştırmaya hazırız.

 

Arduino Kod Yükleme – 16×2 LCD Üzerinde Değerleri Yazdırma

DHT11, DHT22 sıcaklık ve nem sensörleri, verileri aktarmak için kullanılan kendi tek kablolu protokollere sahiptir. Bu protokol kesin zamanlama gerektirir. Neyse ki, bu konuda çok fazla endişelenmemize gerek yok çünkü DHT kütüphanesini kullanacağız.

Önce kütüphaneyi, GitHub ziyaret ederek indirin.

Eğer Arduino ile Lcd Ekran Nasıl Kullanılır Öğrenmek İsterseniz Hemen Buraya Tıklayın.

 

 

Kurmak için Arduino IDE’yi açın, Kitaplık Ekle> .ZIP Kitaplığı Ekle’ye gidin ve daha sonra indirdiğiniz DHTlib ZIP dosyasını seçin.

 

Kütüphaneyi kurduktan sonra, aşağıdaki kodları Arduino IDE’ye kopyalayabilirsiniz. Aşağıdaki test kodları, seri monitördeki sıcaklık ve bağıl nem değerlerini gösterecektir.

 

#include <dht.h>
#define dataPin 8 // Defines pin number to which the sensor is connected
dht DHT; // Creats a DHT object

void setup()
{
Serial.begin(9600);
}
void loop()
{
//Uncomment whatever type you’re using!
int readData = DHT.read22(dataPin); // DHT22/AM2302
//int readData = DHT.read11(dataPin); // DHT11

float t = DHT.temperature; // Gets the values of the temperature
float h = DHT.humidity; // Gets the values of the humidity

// Printing the results on the serial monitor
Serial.print(“Temperature = “);
Serial.print(t);
Serial.print(” “);
Serial.print((char)176);//shows degrees character
Serial.print(“C | “);
Serial.print((t * 9.0) / 5.0 + 32.0);//print the temperature in Fahrenheit
Serial.print(” “);
Serial.print((char)176);//shows degrees character
Serial.println(“F “);
Serial.print(“Humidity = “);
Serial.print(h);
Serial.println(” % “);
Serial.println(“”);

delay(2000); // Delays 2 secods
}

 

DHT Arduino Bağlantı Kodları

Kodlar, DHT kütüphanesi dahil edilerek başlar. Daha sonra, sensörümüzün Veri pininin bağlı olduğu Arduino pin numarasını tanımlamamız ve bir DHT nesnesi oluşturmamız gerekiyor. Böylece kütüphaneyle ilgili özel fonksiyonlara erişebiliriz.

#include <dht.h>
#define dataPin 8 // Defines pin number to which the sensor is connected
dht DHT; // Creats a DHT object

 

‘Setup’ fonksiyonunda; Sonuçları yazdırmak için 16×2 lcd monitör kullanacağımızdan seri iletişimi başlatmamız gerekir.

void setup() {
Serial.begin(9600);
}

 

‘Döngü’ fonksiyonunda; DHT22’den verileri okuyan read22 () işlevini kullanacağız. Sensör, veri pin numarasını parametre olarak alır. DHT11 ile çalışıyorsanız, read11() işlevini kullanmanız gerekir. Bunu ikinci satırı yorumlayarak yapabilirsiniz.

//Uncomment whatever type you’re using!
int readData = DHT.read22(dataPin); // DHT22/AM2302
//int readData = DHT.read11(dataPin); // DHT11

 

Nem ve sıcaklık değerleri hesaplandıktan sonra bunlara şu yollardan erişebiliriz:

float t = DHT.temperature; // Gets the values of the temperature
float h = DHT.humidity; // Gets the values of the humidity
Normalde DHT sensörler Santigrat (° C) cinsinden sıcaklık değerini ölçer. Basit bir formül kullanarak Fahrenheit’e (° F) dönüştürebilirsiniz:

(° F) = T (° C) × 9/5 + 32

 

//print the temperature in Fahrenheit
Serial.print((t * 9.0) / 5.0 + 32.0);

 

Sonunda lcd ekranımız da sıcaklık ve nem değerlerini görebileceğiz.

 

DHT11 DHT22 Sıcaklık Ölçüm Değerleri

DHT11 DHT22 Sıcaklık Ölçüm Değerleri

 

Arduino Projesi Olarak 16×2 LCD’li DHT11 ve DHT22

Sıcaklık ve nem seviyelerini izlemek istediğiniz bir fikriniz m var? Tam olarak doğru projeyi okuyorsunuz. Bu örnekte, LCD’yi DHT11, DHT22 sensörüyle birlikte Arduino’ya bağlayacağız.

 

Arduino DHT11 ve 16x2 Karakterli LCD Bağlantısı

Arduino DHT11 ve 16×2 Karakterli LCD Bağlantısı

 

Arduino DHT22 ve 16x2 Karakterli LCD Bağlantısı

Arduino DHT22 ve 16×2 Karakterli LCD Bağlantısı

Aşağıdaki çizim, 16 × 2 karakter LCD’deki sıcaklık ve bağıl nem değerlerini yazdıracaktır. Değerleri LCD’de görüntülememiz dışında aynı kodu kullanacağız.

 

#include <LiquidCrystal.h> // includes the LiquidCrystal Library
#include <dht.h>
#define dataPin 8

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
dht DHT;
bool showcelciusorfarenheit = false;

void setup()
{
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display
}

void loop()
{
int readData = DHT.read22(dataPin);
float t = DHT.temperature;
float h = DHT.humidity;
lcd.setCursor(0,0); // Sets the location at which subsequent text written to the LCD will be displayed
lcd.print(“Temp.: “); // Prints string “Temp.” on the LCD

//Print temperature value in Celcius and Fahrenheit every alternate cycle
if(showcelciusorfarenheit)
{
lcd.print(t); // Prints the temperature value from the sensor
lcd.print(” “);
lcd.print((char)223);//shows degrees character
lcd.print(“C”);
showcelciusorfarenheit = false;
}
else
{
lcd.print((t * 9.0) / 5.0 + 32.0); // print the temperature in Fahrenheit
lcd.print(” “);
lcd.print((char)223);//shows degrees character
lcd.print(“F”);
showcelciusorfarenheit = true;
}

lcd.setCursor(0,1);
lcd.print(“Humi.: “);
lcd.print(h);
lcd.print(” %”);
delay(5000);
}

 

Arduino ile DHT22 Kullanımı ile İlgili Video’yu İzleyebilirsiniz.


DHT11DHT22 Sıcaklık ve Nem Sensörü Çeşitlerini En Ucuz Fiyatlarla Satın Almak için Hemen Bağlantıya Tıklayın.

 

Sıcaklık ve Nem Sensörleri ve Modülleri

 

Eğer Sizde Arduino Projelerine Meraklıysanız Sitemizdeki Projelere Göz Atabilirsiniz.

Ayrıca Robotik Marketimiz ROBOCOMBO‘yu Ziyaret Edebilirsiniz.

 

Okuduğunuz İçin Teşekkürler.

 

Kaynak: https://lastminuteengineers.com/dht11-dht22-arduino-tutorial/