Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

29 Haziran 2021 Salı

DHT11 - DHT22 Sensörleri Arduino ile Nasıl Çalışır ?

 

DHT11 DHT22 Sensörleri Arduino ile Nasıl Çalışır ?

AOSONG'un ucuz DHT11 veya DHT22 Dijital Sıcaklık ve Nem Sensörü ile bir sonraki Arduino projenize etrafındaki dünyayı algılama yeteneği verin.

Bu sensörler önceden kalibre edilmiştir ve ekstra bileşen gerektirmez, böylece hemen bağıl nem ve sıcaklığı ölçmeye başlayabilirsiniz.

Sağladıkları en büyük özelliklerden biri, hem sıcaklığın hem de nemin en yakın onda birine kadar ölçülmesidir; yani, bir ondalık basamağa. Bu sensörün tek dezavantajı, saniyede bir veya iki kez yeni veriler alabilmenizdir. Ancak performansı ve fiyatı düşünüldüğünde şikayet edemezsiniz.

DHT11 Vs DHT22 / AM2302

DHTxx sensör serisinin iki versiyonuna sahibiz. Biraz benzer görünüyorlar ve aynı bağlantıya sahipler, ancak farklı özelliklere sahipler. İşte detaylar:

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

DHT11 Sıcaklık Nem Sensörü Fritzing parçası İllüstrasyon
DHT22 Sıcaklık Nem Sensörü Fritzing parça İllüstrasyon
DHT11DHT22
Çalışma gerilimi3 ila 5V3 ila 5V
Maksimum Çalışma Akımı2,5 mA maks.2,5 mA maks.
Nem Aralığı% 20-80 /% 5% 0-100 /% 2-5
Sıcaklık aralığı0-50 ° C / ± 2 ° C-40 ila 80 ° C / ± 0,5 ° C
Örnekleme oranı1 Hz (her saniye okuma)0,5 Hz (2 saniyede bir okuma)
Vücut ölçüsü15,5 mm x 12 mm x 5,5 mm15,1 mm x 25 mm x 7,7 mm
AvantajıUltra düşük maliyetDaha kesin

DHT22 daha hassas, daha doğru ve daha geniş bir sıcaklık ve nem aralığında çalışsa da; DHT11'in DHT22'yi geride bıraktığı üç şey var. Daha ucuzdur, daha küçüktür ve daha yüksek örnekleme oranına sahiptir. DHT11'in örnekleme hızı 1Hz'dir, yani saniyede bir okuma, DHT22'nin örnekleme hızı ise 0.5Hz'dir, yani her iki saniyede bir okuma.

Bununla birlikte, her iki sensörün çalışma voltajı 3 ila 5 volt arasında iken, dönüştürme sırasında (veri talep edilirken) kullanılan maksimum akım 2,5 mA'dır. Ve en iyisi, DHT11 ve DHT22 sensörlerinin 'değiştirilebilir' olmasıdır - yani, projenizi biriyle oluşturuyorsanız, sadece fişini çekip bir başkasını kullanabilirsiniz. Kodunuzun biraz ayarlanması gerekebilir ama en azından kablolama aynıdır!

Donanıma Genel Bakış

Şimdi ilginç şeylere geçelim. Hem DHT11 hem de DHT22 sensörlerini söküp içeride ne olduğunu görelim.

Kasa iki parçadan oluşuyor, bu yüzden içine girmek için sadece keskin bir bıçak alıp kasayı bölmek yeterli. 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 DHT22 AM2302 Sıcaklık Nem Sensörü

Nemi ölçmek için elbette nem algılama bileşeni kullanılır; bu bileşen, aralarına sıkıştırılmış nem tutma substratı (genellikle bir tuz veya iletken plastik polimer) bulunan iki elektrot içerir. Su buharı tarafından emildiği için iyonlar substrat tarafından salınır ve bu da elektrotlar arasındaki iletkenliği artırır. İki elektrot arasındaki direnç değişikliği bağıl nem ile orantılıdır. Daha yüksek bağıl nem elektrotlar arasındaki direnci azaltırken, daha düşük bağıl nem elektrotlar arasındaki direnci artırır.

DHT11 DHT22'de Nem Sensörünün İç Yapısı
Nem Sensörünün İç Yapısı

Ayrıca, 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ç. Teknik olarak, tüm dirençler termistördür - dirençleri sıcaklıkla biraz değişir - ancak değişim genellikle çok küçüktür ve ölçülmesi zordur.

Termistörler, direnç sıcaklıkla büyük ölçüde değişecek şekilde yapılmıştır, 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 da sıcaklık arttıkça direncin azaldığı anlamına gelir.

NTC Termistör Sıcaklık Direnci Karakteristik Eğrisi
Karakteristik Eğriye Sahip NTC Termistörü

Diğer tarafta, 8 bitlik SOIC-14 paketlenmiş IC'ye sahip küçük bir PCB var. Bu IC, depolanan kalibrasyon katsayılarıyla analog sinyali ölçer ve işler, analogdan dijitale dönüştürme yapar ve sıcaklık ve nem ile dijital bir sinyal verir.

DHT11 ve DHT22 Pin Çıkışı

DHT11 ve DHT22 sensörlerinin bağlanması oldukça kolaydır. Dört pimleri var:

DHT11 DHT22 AM2302 Sıcaklık Nem Sensörü Pin Çıkışı

VCCpin sensör için güç sağlar. Besleme voltajı 3,3V ile 5,5V arasında değişse de, 5V besleme önerilir. 5V güç kaynağı olması durumunda, sensörü 20 metreye kadar tutabilirsiniz. Ancak 3.3V besleme geriliminde kablo uzunluğu 1 metreden fazla olmayacaktır. Aksi takdirde, hat voltajı düşüşü ölçümde hatalara yol açacaktır.

Veri pin, sensör ve mikro denetleyici arasındaki iletişim için kullanılır.

NC Bağlı değil

GND Arduino'nun zeminine bağlanmalıdır.

Kablolama - DHT11 ve DHT22'yi Arduino UNO'ya bağlama

Artık DHT sensörlerinin nasıl çalıştığını tam olarak anladığımıza göre, onu Arduino'muza bağlamaya başlayabiliriz!

Neyse ki, DHT11, DHT22 sensörlerini Arduino ya bağlamak önemsizdir. Oldukça uzun 0,1 p-aralıklı pimleri vardır, böylece bunları herhangi bir devre tahtasına kolayca takabilirsiniz. Sensöre 5V ile güç verin ve toprağa bağlayın. Son olarak, Veri pinini 2 numaralı dijital pime bağlayın.

Ayrıca sensör ve MCU arasında düzgün iletişim için YÜKSEK tutmak için VCC ile veri hattı arasına 10KΩ'luk bir çekme direnci yerleştirmemiz gerekir. Sensörün bir koparma panosuna sahipseniz, herhangi bir dış çekme eklemenize gerek yoktur. Yerleşik bir kaldırma direnci ile birlikte gelir.

DHT11 ile Arduino Kablolama Fritzing Bağlantıları
DHT11'i Arduino UNO'ya Kablolama

DHT22 ile Arduino Kablolama Fritzing Bağlantıları
DHT22'yi Arduino UNO'ya Kablolama

Bununla, artık bir kod yüklemeye ve çalıştırmaya hazırsınız.

Arduino Kodu - Seri Monitörde değerleri yazdırma

DHT11 ve DHT22 sensörlerinin, verileri aktarmak için kullanılan kendi tek kablolu protokolleri vardır. Bu protokol, kesin zamanlama gerektirir. Neyse ki, bununla ilgili fazla endişelenmemize gerek yok çünkü neredeyse her şeyi halleden DHT kütüphanesini kullanacağız .

Önce kütüphaneyi, GitHub deposunu ziyaret ederek indirin veya zip dosyasını indirmek için bu düğmeye tıklayın:

Kurmak için Arduino IDE'yi açın, Sketch> Include Library> Add .ZIP Library'ye gidin ve ardından indirdiğiniz DHTlib ZIP dosyasını seçin. Bir kitaplık kurma konusunda daha fazla ayrıntıya ihtiyacınız varsa, bu Arduino Kitaplığı Kurma öğreticisini ziyaret edin .

Kitaplığı kurduktan sonra, bu çizimi Arduino IDE'ye kopyalayabilirsiniz. Aşağıdaki test taslağı, seri monitördeki sıcaklık ve bağıl nem değerlerini yazdıracaktır. Krokiyi deneyin; ve sonra onu biraz detaylı olarak açıklayacağız.

#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
}

Çizim yüklendikten sonra, Arduino'dan çıktıyı görmek için bir Seri Monitör penceresi açın.

DHT11 DHT22 AM2302 Sensör DHTlib kitaplığı Seri Monitörde Çıktı
Seri Monitörde Çıktı

Kod Açıklaması:

Çizim, DHT kitaplığını dahil ederek başlar. Ardından, sensörümüzün Data pininin bağlı olduğu Arduino pin numarasını tanımlamamız ve bir DHT nesnesi oluşturmamız gerekiyor. Böylece kütüphane ile 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

'Kurulum' fonksiyonunda; Sonuçları yazdırmak için seri monitörü kullanacağımız için seri iletişimi başlatmamız gerekir.

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

'Döngü' fonksiyonunda; read22()DHT22'den verileri okuyan işlevi kullanacağız Sensörün Data pin numarasını parametre olarak alır. DHT11 ile uğraşıyorsanız, read11()işlevi kullanmanız gerekir Bunu ikinci satırın açıklamasını kaldırarak 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 şekilde erişebiliriz:

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

DHT nesnesi, Santigrat (° C) cinsinden sıcaklık değerini döndürür. Basit bir formül kullanarak Fahrenheit'e (° F) dönüştürülebilir:

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

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

Arduino Projesi

Arduino Kodu - LCD ile DHT11 ve DHT22

Bazen DIY inkübatörünüzde sıcaklık ve nem seviyelerini izlemek istediğiniz bir fikir bulursunuz. O halde, inkübatörünüzde seri monitör yerine geçerli koşulları görüntülemek için muhtemelen 16 × 2 karakter LCD'ye ihtiyacınız olacak. Dolayısıyla, bu örnekte, LCD'yi DHT11 ve DHT22 sensörleriyle birlikte Arduino'ya bağlayacağız.

16 × 2 karakter LCD'lere aşina değilseniz, eğitimin altındaki okumayı (en azından gözden geçirmeyi) düşünün.

Daha sonra, aşağıda gösterildiği gibi LCD'ye bağlantı yapmamız gerekiyor.

DHT11 ve 16x2 Karakter LCD ile Arduino Kablolama Fritzing Bağlantıları
DHT11 ve 16 × 2 Karakter LCD'yi Arduino UNO'ya kablolama
DHT22 ve 16x2 Karakter LCD ile Arduino Kablolama Fritzing Bağlantıları
DHT22 ve 16 × 2 Karakter LCD'yi Arduino UNO'ya kablolama

Aşağıdaki çizim, 16 × 2 karakter LCD'de sıcaklık ve bağıl nem değerlerini yazdıracaktır. LCD'de değerleri yazdırmamız dışında aynı kodu kullanır.

#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);
}
DHT11 DHT22 Arduino Sketch Sıcaklık Nem Ölçümleri LCD Üzerinden Çıkışı
LCD üzerinden sıcaklık ve nem ölçümleri

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

Hiç yorum yok:

Yorum Gönder

Yorum yazdığınız ve üye olduğunuz için Size teşekkür ederim.Burada olduğunuza göre hepimizin ilgi alanı Elektronik ve Programlama sonsuz bir dünyadayız.Hepimize Başarılar...

Not: Yalnızca bu blogun üyesi yorum gönderebilir.