Bu sensör önceden kalibre edilmiştir ve ekstra bileşen gerektirmez, böylece hemen bağıl nem ve sıcaklığı ölçmeye başlayabilirsiniz.
DHT11 Sıcaklığı ve Nemi Nasıl Ölçer?
DHT11'in içinde, bir Termistör ile birlikte bir nem algılama bileşeni vardır.
Nem algılama bileşeni, aralarında sıkıştırılmış nem tutan alt tabakaya sahip iki elektrota sahiptir.
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 ayrıca sıcaklığı ölçmek için bir NTC / Termistör içerir. Bir termistör, direnci sıcaklıkla büyük ölçüde değişen bir termal dirençtir. "NTC" terimi, "Negatif Sıcaklık Katsayısı" anlamına gelir, bu da sıcaklık arttıkça direncin azaldığı anlamına gelir.
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 Modülü Donanımına Genel Bakış
Modülün merkezinde, AOSONG - DHT11 tarafından üretilen dijital sıcaklık ve nem sensörü bulunmaktadır.
DHT11 Sensörü
DHT11, 0 ° C ila 50 ° C arasındaki sıcaklığı ± 2.0 ° C doğrulukla ve% 20 ila% 80 arasındaki nemi% 5 doğrulukla ölçebilir.
DHT11'in örnekleme hızının 1Hz olduğunu, yani saniyede bir ondan yeni veriler alabileceğinizi unutmayın.
Destekleyen Devre
Modül, tüm temel destek devreleriyle birlikte gelir, bu nedenle herhangi bir ekstra bileşen olmadan çalışmaya hazır olmalıdır.
DHT11 sensörleri, sensör ve Arduino arasında uygun iletişim için genellikle VCC ve Out pimi arasında 10KΩ'luk harici çekme direnci gerektirir. Bununla birlikte, modülün yerleşik bir kaldırma direnci vardır, bu nedenle eklemenize gerek yoktur.
Modülde ayrıca güç kaynağı üzerindeki gürültüyü filtrelemek için bir dekuplaj kapasitörü vardır.
DHT11 Modülü Pinout
DHT11 modülünün bağlanması oldukça kolaydır. Yalnızca üç pimi vardır:
+ (VCC)pin sensör için güç sağlar. Besleme voltajı 3,3V ile 5,5V arasında değişmesine rağmen 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.
Dışarı pin, sensör ve Arduino arasındaki iletişim için kullanılır.
- (GND) Arduino'nun zeminine bağlanmalıdır.
DHT11 Modülünü Arduino ya Kablolama
DHT11 modülünü Arduino'ya bağlayalım.
Bağlantılar oldukça basit. + (VCC) pinini Arduino'daki 5V çıkışına bağlayarak başlayın ve - (GND) toprağa bağlayın. Son olarak, Çıkış pinini 8 numaralı dijital pime bağlayın.
Aşağıdaki şema, her şeyi nasıl bağlayacağınızı gösterir.
DHT kitaplığını yükleme
DHT11 sensörleri, verileri aktarmak için kendi tek kablolu protokollerine sahiptir. Bu protokol, kesin zamanlama gerektirir. Neyse ki, DHT Kitaplığı tüm karmaşıklıkları gizlemek için yazılmıştır, böylece sıcaklık ve nem verilerini okumak için basit komutlar verebiliriz.
Ö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.
Arduino Kodu - Temel Örnek
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> // Include library
#define outPin 8 // Defines pin number to which the sensor is connected
dht DHT; // Creates a DHT objectvoidsetup() {
Serial.begin(9600);
}
voidloop() {
int readData = DHT.read11(outPin);
float t = DHT.temperature; // Read temperaturefloat h = DHT.humidity; // Read humidity
Serial.print("Temperature = ");
Serial.print(t);
Serial.print("°C | ");
Serial.print((t*9.0)/5.0+32.0); // Convert celsius to fahrenheit
Serial.println("°F ");
Serial.print("Humidity = ");
Serial.print(h);
Serial.println("% ");
Serial.println("");
delay(2000); // wait two seconds
}
Çizim yüklendikten sonra, Arduino'dan çıktıyı görmek için bir Seri Monitör penceresi açın.
Kod Açıklaması:
Taslak, DHT kitaplığını dahil ederek ve sensörümüzün Out pininin bağlı olduğu Arduino pin numarasını tanımlayarak başlar. Daha sonra kütüphaneyle ilgili özel fonksiyonlara erişmek için bir DHT nesnesi oluşturuyoruz.
#include <dht.h>
#define outPin 8
dht DHT;
'Kurulum' fonksiyonunda; sonuçları yazdırmak için seri monitörü kullanacağımız için seri iletişimi başlatıyoruz.
voidsetup() {
Serial.begin(9600);
}
'Döngü' fonksiyonunda; read11()Verileri sensörden okuyan işlevi kullanacağız . Sensörün Data pin numarasını parametre olarak alır.
int readData = DHT.read11(outPin);
Nem ve sıcaklık değerleri hesaplandıktan sonra bunlara şu şekilde erişebiliriz:
float t = DHT.temperature; // Read temperaturefloat h = DHT.humidity; // Read 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:
T (° F) = T (° C) × 9/5 + 32
Serial.print((t * 9.0) / 5.0 + 32.0);
Arduino Kodu - Sonuçları LCD'de Görüntüleme
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 olacaktır. Bu örnekte, LCD'yi DHT11 modülüyle 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.
Arduino projelerinizin durum mesajlarını veya sensör okumalarını görüntülemesini mi istiyorsunuz? O zaman bu LCD ekranlar mükemmel bir uyum olabilir. Son derece yaygındırlar ve ...
Aşağıda gösterildiği gibi LCD bağlantılarını yapın.
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> // Include LiquidCrystal Library
#include <dht.h>
#define outPin 8
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Create an LCD object.
dht DHT; // Create a DHT objectvoidsetup() {
lcd.begin(16,2); // Initialize the LCD
}
voidloop() {
int readData = DHT.read11(outPin);
float t = DHT.temperature;
float h = DHT.humidity;
lcd.setCursor(0,0);
lcd.print("Temp.: ");
lcd.print(t);
lcd.print((char)223);//shows degrees character
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Humi.: ");
lcd.print(h);
lcd.print("%");
delay(2000);
}
Her şey yolundaysa, LCD'de aşağıdaki çıktıyı görmelisiniz.
MLX90614, nesneye dokunmadan sıcaklığı ölçebilen temassız bir IR Sıcaklık sensörüdür. Melexis tarafından sunulan bu olağanüstü sensör, sıcaklığı ölçmek için IR radyasyonlarını kullanan ve I2C portu üzerinden bir dijital çıkış sinyali sağlayan IR teknolojisini kullanır. Temassız sıcaklık sensörleri, sıcaklığı kontrol etmek için COVID-19 günleri boyunca büyük bir katkı yaptı. Bu eğitimde, pin çıkışı ayrıntılarını, pin konfigürasyonlarını, teknik özellikleri, Arduino ile arayüz oluşturma özelliklerini ve bir MLX90614 sıcaklık sensörünün uygulamalarını tartışacağız.
MLX90614 Sıcaklık Sensörü Giriş
MLX90614, belirli bir nesnenin sıcaklığını -70 ° C - 382.2 ° C ve -40 ° C - 125 ° C arasındaki ortam sıcaklığını, gözlem altındaki bir nesneyle fiziksel temas kurmadan bile ölçebilen, IR tabanlı temassız sıcaklık sensörüdür. Sıcaklık okumasını bir I2C veriyolu üzerinden mikrodenetleyicilere iletmek için bir I2C portu ile gömülüdür . Üstelik, sensörün arızalanmasını önlemek için ESD koruması da sağlanmıştır.
Küçük cihaz, güçlü ADC'si sayesinde oldukça doğru ve hassastır . Değerleri 0.14 ˚C çözünürlükte çıkarmak için 17 bitlik bir ADC modüle gömülüdür. Melexis, giriş voltajı gereksinimlerine, yani 3 Volt veya 5 volt ve farklı proje gereksinimleri için çözümleme gücüne dayalı olarak bu sensörün farklı versiyonlarını piyasaya sürdü. Ancak MLX90614, özellikle ev otomasyonunda uzun bir uygulama listesine sahip hassas bir sıcaklık sensörüdür.
MLX90614 Pin çıkışı
Bu sıcaklık sensörü modülü, varsayılan bir durumu tanımlamak için 3,3 voltaj regülatörü, dahili pullup dirençli I2C Bus ve gürültü filtreleme için bir kapasitör ile birlikte gelir. Temassız MLX90614 IR Sıcaklık Sensörü modülünün pin çıkışı aşağıdaki gibidir:
PIN konfigürasyonu
MLX90614'ün iki sürümü vardır ve TO-39 paketinde mevcuttur. Pim yapılandırma ayrıntıları aşağıdaki tabloda listelenmiştir:
Pin Adı
Fonksiyon
VCC
Pozitif güç kaynağı pimi
GND
Referans potansiyel pimi
SCL
Boşaltma Seri Saat pimini açın. Bir I2C hat saati, veri senkronizasyonu için pim atar.
SDA
Seri Veri pimini boşaltın. Verileri ana MCU'ya iletmek için bir I2C hattı.
Özellikler ve Spesifikasyonlar
Çalışma Voltajı: 3,6 Volt - 5,5 Volt
Ortam Sıcaklık Aralığı: -40 ° C - 125 ° C
Nesne Sıcaklık Aralığı: -70 ° C - 380 ° C
Ölçüm çözünürlüğü: 0,02 ° C
ESD Hassasiyeti: 2kV
Lavabo / Kaynak Akımı: 25mA
ADC Çözünürlüğü: 17 bit
IR sensörü, bir optik filtre, bir DSP ve ince çıkışlı dijital sinyaller için düşük gürültülü bir amplifikatör ile entegre edilmiştir.
8-16 Volt uygulamaları için uyarlanabilir ve kolayca entegre edilebilir.
Güç tasarrufu modunu destekler ve tekli ve ikili versiyonları mevcuttur
Güç tasarruflu ve son derece hassas bir sensördür.
Bu IR sensörünün farklı versiyonlarının diğer teknik özelliklerini görmek için veri sayfasına bir göz atın.
IR Sensör çalışma prensibi
MLX90614, Stefan Boltzmann prensibine göre çalışan temassız bir IR sıcaklık sensörüdür. Herkesin kendi sıcaklığı ile orantılı IR radyasyonu yaydığını belirtir. Bu radyasyon daha sonra dijital sinyale dönüştürülen sensör aracılığıyla ölçülür ve I2C veriyolu aracılığıyla mikro denetleyiciye iletilir.
IR sensör modülü, bir IR termopil detektörü ve bir sinyal ASSP işleme ünitesinden oluşur. Thermopile, versiyondan versiyona değişen alan görünümünde radyasyonu toplama işlevi görür. İşlem birimleri, bu analog sinyalleri filtrelenmiş yükseltilmiş sinyallere dönüştürür.
Blok Şeması
MLX90614 IR Sıcaklık Sensörünün modülün dahili bağlantılarının bilgisini kavramaya yönelik işlevsel diyagramı aşağıda verilmiştir:
MLX90614 ve Arduino
Bu bölüm, Arduino UNO ve MLX90614 temassız IR Sıcaklık sensörünün arayüzünü açıklamaktadır . Ancak I2C bağlantı noktasına sahip herhangi bir Arduino kartını veya mikrodenetleyiciyi kullanabilirsiniz. Çünkü MLX90614 sensörü, I2C veriyolunda sıcaklık çıkışı sağlar.
Bağlantı şeması
Aşağıdaki şekil MLX90614 sıcaklık sensörü ile Arduino arasındaki bağlantı şemasını göstermektedir.
Sıcaklık sensörünün güç kaynağı pinini (Vin) Arduino'nun 5V pinine ve MLX90614'ün GND pinini GND pin Arduino UNO'ya bağlayın.
Verileri seri olarak aktarmak için belirtilen IR sensörünün SDA ve SCL pinlerini Arduino UNO'nun A4 ve A5 pinlerine bağlayın. Arduino'nun A4 ve A5 pinleri ayrıca Arduino Uno'nun I2C portunun SDA ve SCL pinlerinin alternatif işlevini paylaşır.
Arduino UNO
MLX90614 IR Sensörü
5V
VCC
GND
GND
SDA
A4
SCL
A5
Adafruit MLX90614 Arduino Kitaplığının Kurulumu
Programlama bölümüne gitmeden önce, İlk olarak Adafruit MLX90614 Arduino kütüphanesini indirin ve Arduino IDE yazılımı üzerine kurun. Önceden yazılmış kitaplığı özellikle modül için kullanmak ve komutları gerçekleştirmek için eskizlere eklemek çok uygundur. Adafruit MLX90614 Arduino Kitaplığını bu bağlantıdan indirin:
İlk adım, gerekli kitaplıkları dahil etmektir, yani sıcaklık sensörü için "Adafruit_MLX90614.h", I2C protokolü için "Wire.h". Bir karakter dizisini tutmak için bir char türü (* Object_Type) örneği tanıtıldı. Ayrıca, MLX90614 kütüphane işlevlerine erişmek için bir "MLX_Sensor" nesnesi oluşturulur.
Boşluk kurulumu iki şey gerçekleştirir. Seri monitörü 9600 bps ile başlatır ve ayrıca sıcaklık örnekleri almaya başlamak için IR sensör kitaplığını başlatan MLX_Sensor nesnesini başlatır.
Boşluk döngü işlevinin içinde, Celcius, Kelvin ve Fahrenheit cinsinden sıcaklık ölçümleri almak ve bunları Arduino seri monitöründe görüntülemek için "Display_Temperature" işlevini kullanıyoruz. Bu işlevin yardımıyla ortam sıcaklığını artı nesne sıcaklığını Santigrat, Fahrenheit ve Kelvin cinsinden görüntüler. Güncellenmiş sıcaklık değerleri, seri monitörde 2000 milisaniyelik bir gecikmeden sonra görüntülenecektir.
voidloop(){Display_Temperature('A');//Get Object temperature in CelsiusDisplay_Temperature('B');//Get Ambient temperature in CelsiusDisplay_Temperature('C');//Get Object temperature in KelivenDisplay_Temperature('D');//Get Ambient temperature in KelivenDisplay_Temperature('E');//Get Object temperature in FahrenheitDisplay_Temperature('F');//Get Ambient temperature in Fahrenheit
Serial.println("########");delay(2000);}
Sıcaklık belirli bir değeri aşarsa veya belirli bir değerden düşükse, bir if koşulu kullanabilir ve ısıtıcının veya klimanın kapatılması gibi pratik bir uygulama için kod uygulanabilir hale getirebiliriz.
Get_Temperature_Sample İşlevi
"Get_Temperature_Sample ()" fonksiyonu, kullanıcının talimatına göre sıcaklık değerlerini almak için oluşturulur. Sıcaklık değerlerini saklamak için üç float değişkeni "temp_value, Object_Temperature ve Ambient_Temperature" oluşturulur.
Celsius cinsinden nesne sıcaklığı, Object_Temperature'de okunur ve saklanır ve Celsius cinsinden ortam sıcaklığı, Ambient_Temperature'de okunur ve saklanır. Kullanıcı bir "E" karakteri girerse, "temp_value" değişkeni, hedef nesnenin sıcaklığını "MLX_Sensor" aracılığıyla Fahrenheit cinsinden alır. "Nesnesi ve kullanıcı" F "karakterini yazarsa," temp_value "değişkeni ortam sıcaklığını" MLX_Sensor "nesnesi aracılığıyla Fahrenheit cinsinden alır. Benzer şekilde, "C" değer değişkeninin yazılması, içinde bulunan Fahrenheit değerine 273,15 ekler ve hedef nesnenin Kelvin sıcaklığı olan kendini yükseltir. Ve “D” de aynısını yapacak ama bu zaman değeri, ona 273.15 eklenerek yükseltilen ortam sıcaklığına sahip.
"A" veya B "yazıldığında," temp_value "değişkeni okumayı sırasıyla Object_Temperature veya Ambient_Temperature'den alır ve döndürür.
A is object temperature in Celsius
B is the ambient temperature in Celsius
C is object temperature in Fahrenheit
D is the ambient temperature in Fahrenheit
E is object temperature in Kelvin
F is the ambient temperature in Kelvin
Display_Temperature () Fonksiyonu
Get_Temperature_Sample () işlevini çağıran ve kullanıcı talimatına göre sıcaklık okumalarını yazdıran başka bir işlevdir. Örneğin, kullanıcı "A" yazarsa, yazdırma işlevleri getTemp işlevini çağırır, okumayı alır ve okumaları Arduino seri monitöründe gösterir. Aynı şey tanımlanan tüm karakterler için de geçerlidir.
Kodu yükleyin ve okumaları izleyin. Seri monitör, belirli karakterler girildiğinde ilgili okumaları görüntüler. MLX90614 IR sensörünün çok hassas bir cihaz olduğunu ve çok kolay dalgalandığını unutmayın.
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.