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.

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.

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.

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.

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:


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.

Bu durumda, B şeklinde gösterilir:

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.

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.

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:

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 sensörünün Arduino'ya bağlantı şeması şöyle:


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

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:

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.

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

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.

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.

İş 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ı:

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
: