kategoriler: Mikrodenetleyici devreleri
Görüntülenme sayısı: 9996
Makaleye Yorumlar: 0

Arduino'da sıcaklık ve nemin ölçülmesi - çeşitli yöntemler

 

Bir ev hava istasyonu veya termometre oluşturmak için Arduino kartını ve sıcaklık ve nemi ölçmek için bir cihazı nasıl eşleştireceğinizi öğrenmeniz gerekir. Sıcaklık ölçümü bir termistör veya bir DS18B20 dijital sensörü kullanılarak yapılabilir, ancak nemi ölçmek için daha karmaşık cihazlar kullanın - DHT11 veya DHT22 sensörleri. Bu makalede, Arduino ve bu sensörleri kullanarak sıcaklık ve nemin nasıl ölçüleceğini göstereceğiz.

Arduino'da sıcaklık ve nemin ölçülmesi - çeşitli yöntemler

Termistör Ölçümü

Sıcaklığı belirlemenin en kolay yolu kullanmaktır termistör. Bu, direnci ortam sıcaklığına bağlı olan bir direnç türüdür. Pozitif ve negatif sıcaklık katsayısı olan termistörler vardır - sırasıyla PTC (pozistor olarak da adlandırılır) ve NTC termistörleri.

Aşağıdaki grafikte direncin sıcaklığa bağlılığını görüyorsunuz. Kesik çizgi, negatif bir TCS termistörü (NTC) ve pozitif bir TCS termistörü (PTC) için düz çizgiyi gösterir.

Direncin sıcaklığa bağlılığı

Burada ne görüyoruz? Göze çarpan ilk şey, PTC termistörü için programın kırılmış olması ve bir dizi sıcaklık değerini ölçmenin zor veya imkansız olması, ancak NTC termistörü için programın, doğrusal olmamasına rağmen, az çok tekdüze olmasıdır. Bu ne anlama geliyor? Bir NTC termistörü kullanmak sıcaklığı ölçmek daha kolaydır, çünkü değerlerinin değiştiği işlevi bulmak daha kolaydır.

Sıcaklığı dirence dönüştürmek için değerleri manuel olarak alabilirsiniz, ancak bunu evde yapmak zordur ve ortam sıcaklığının gerçek değerlerini belirlemek için bir termometreye ihtiyacınız vardır. Bazı bileşenlerin veri sayfalarında, örneğin, Vishay'ın bir dizi NTC termistörü için böyle bir tablo verilir.

Datashit Vishay TC Termistörler

Daha sonra if ... else veya switchcase işlevini kullanarak çevirileri şubeler üzerinden düzenleyebilirsiniz. Bununla birlikte, veri sayfalarında böyle bir tablo yoksa, direncin artan sıcaklıkla değiştiği işlevi hesaplamanız gerekir.

Bu değişikliği tanımlamak için Steinhart-Hart denklemi vardır.

Steinhart-hart denklemi

burada A, B ve C, en az 10 santigrat derece farkla üç sıcaklık ölçülerek belirlenen termistör sabitleridir. Aynı zamanda, farklı kaynaklar tipik bir 10 kΩ NTC termistör için eşit olduklarını gösterir:

Termistör sabitleri

B - beta katsayısı, iki farklı sıcaklık için direnç ölçümüne göre hesaplanır. Veri sayfasında (aşağıda gösterildiği gibi) belirtilir veya bağımsız olarak hesaplanır.

B - veri sayfasından beta katsayısı

Bu durumda, B şeklinde gösterilir:

beta oranı

Bu, katsayının 25 ve 100 santigrat derece sıcaklıklarda direnç ölçülürken elde edilen verilere göre hesaplandığı ve bu en yaygın seçenektir. Sonra formülle hesaplanır:

B = (ln (R1) - ln (R2)) / (1 / T1 - 1 / T2)

Bir termistörün mikrodenetleyiciye tipik bir bağlantı şeması aşağıda gösterilmiştir.

Termistörün mikrodenetleyiciye bağlantı şeması

Burada R1 sabit bir dirençtir, termistör güç kaynağına bağlıdır ve veriler aralarındaki orta noktadan alınır, şema şartlı olarak sinyalin A0 terminaline beslendiğini gösterir - bu analog giriş Arduino.

Termistörün mikrodenetleyiciye bağlantı şeması

Bir termistörün direncini hesaplamak için aşağıdaki formülü kullanabilirsiniz:

Termistörün R = R1⋅ ((Vcc / Voutput) −1)

Arduino için anlaşılabilir bir dile çevirmek için, arduino'nun 10 bitlik bir ADC'ye sahip olduğunu hatırlamanız gerekir, bu nedenle giriş sinyalinin (dijital 5V voltajı) maksimum dijital değeri 1023 olacaktır. Sonra, koşullu olarak:

  • Dmax = 1023;

  • D, sinyalin gerçek değeridir.

Sonra:

Termistörün R = R1⋅ ((Dmax / D) −1)

Şimdi bunu direnci hesaplamak ve daha sonra beta denklemini kullanarak termistörün sıcaklığını hesaplamak için kullanıyoruz Arduino için programlama dilinde. Eskiz şöyle olacak:

eskiz

DS18B20

Sıcaklığı ölçmek için daha da popüler.Arduino bir dijital sensör DS18B20 buldu. Mikrodenetleyici ile 1 telli arayüz üzerinden iletişim kurar, bir kabloya birkaç sensör (127'ye kadar) bağlayabilir ve bunlara erişmek için sensörlerin her birinin kimliğini bulmanız gerekir.

Not: Yalnızca 1 sensör kullansanız bile kimliği bilmeniz gerekir.

DS18B20 Dijital Sensör

Ds18b20 sensörünün Arduino'ya bağlantı şeması şöyle:

DS18b20 sensörünün Arduino'ya bağlantı şeması
DS18b20 sensörünün Arduino'ya bağlantı şeması

Parazit bir güç modu da var - bağlantı şeması şöyle görünüyor (üç yerine iki kabloya ihtiyacınız var):

Arduino Sensör Bağlantı Şeması

Bu modda, 100 santigrat derecenin üzerindeki sıcaklıklar ölçülürken doğru çalışma garanti edilmez.

DS18B20 dijital sıcaklık sensörü, diğer SIMS'ler gibi bir dizi düğümden oluşur. Dahili cihazını aşağıda izleyebilirsiniz:

Dijital Sıcaklık Sensörü DS18B20

Onunla çalışmak için Arduino için Onewire kütüphanesini indirmeniz gerekiyor ve sensörün kendisi için DallasTemperature kütüphanesini kullanmanız önerilir.

eskiz

Bu kod örneği, 1 sıcaklık sensörü ile çalışmanın temellerini gösterir, Santigrat derece cinsinden sonuç, her okumadan sonra seri porttan çıkar.


DHT11 ve DHT22 - nem ve sıcaklık sensörleri

DHT11 ve DHT22 - nem ve sıcaklık sensörleri

Bu sensörler popülerdir ve genellikle nem ve ortam sıcaklığını ölçmek için kullanılır. Aşağıdaki tabloda ana farklılıklarını gösterdik.

 
DHT11
DHT22
Aralıkta nem tayini
20-80%
0-100%
Ölçüm hassasiyeti
5%
2-5%
Sıcaklık tayini
0 ° C ile +50 ° C
-40 ° C ila + 125 ° C
Ölçüm hassasiyeti
2,5%
artı veya eksi 0.5 santigrat derece
Yoklama sıklığı
Saniyede 1 kez
2 saniyede 1 kez
Arduino'ya nem sensörü bağlantı şeması

Bağlantı şeması oldukça basittir:

  • 1 sonuç - beslenme;

  • 2 sonuç - veri;

  • 3 sonuç - kullanılmaz;

  • 4 sonuç - genel tel.

Bir modül şeklinde bir sensörünüz varsa, üç çıkışı olacaktır, ancak bir dirence ihtiyacınız yoktur - zaten panoya lehimlenmiştir.

Nem sensörünün arduino'ya modül şeklinde bağlantı şeması

İş için, dht.h kütüphanesine ihtiyacımız var, standart kümede değil, bu yüzden indirilmesi ve arduino IDE ile klasördeki kütüphaneler klasörüne yüklenmesi gerekiyor. Bu ailedeki tüm sensörleri destekler:

  • DHT 11;

  • DHT 21 (AM2301);

  • DHT 22 (AM2302, AM2321).

Örnek kütüphane kullanımı:

Kütüphane Kullanımı Örneği

Sonuç

Günümüzde Arduino platformu sayesinde sıcaklık ve nemi ölçmek için kendi istasyonunuzu oluşturmak çok basit. Bu tür projelerin maliyeti 3-4 yüz ruble. Pil ömrü ve bilgisayara çıkış için kullanılabilir karakter ekranı (bunları son makalelerde açıkladık), hem evde hem de arabada kullanmak için taşınabilir bir cihaz oluşturabilirsiniz. Arduino'daki basit ev yapımı el sanatları hakkında daha fazla bilgi edinmek istediğiniz yorumları yazın!

Ayrıca bu konuya bakın:Arduino için popüler sensörler - bağlantı, diyagramlar, eskizler

Ayrıca bkz. electro-tr.tomathouse.com:

  • Arduino için en popüler sensörler
  • Analog sensörleri Arduino ya bağlama, sensörleri okuma
  • Elektrikli olmayan miktarları ölçmek için Wheatstone köprüsünün kullanımı
  • Sıcaklık sensörleri. İkinci Bölüm termistörler
  • Nem sensörleri - nasıl düzenlendikleri ve çalıştıkları

  •