İçindekiler:

Sıcaklık Sensörlerini Test Etme - Hangisi Benim İçin?: 15 Adım (Resimlerle)
Sıcaklık Sensörlerini Test Etme - Hangisi Benim İçin?: 15 Adım (Resimlerle)

Video: Sıcaklık Sensörlerini Test Etme - Hangisi Benim İçin?: 15 Adım (Resimlerle)

Video: Sıcaklık Sensörlerini Test Etme - Hangisi Benim İçin?: 15 Adım (Resimlerle)
Video: PİŞMANLIK! iPHONE 15 PRO MAX 3 AYLIK UZUN KULLANIM TESTİ! 2024, Kasım
Anonim
Sıcaklık Sensörlerini Test Etme - Hangisi Benim İçin?
Sıcaklık Sensörlerini Test Etme - Hangisi Benim İçin?

Fiziksel hesaplamaya yeni başlayanların denemek istediği ilk sensörlerden biri, sıcaklığı ölçmek için bir şeydir. En popüler sensörlerden dördü, analog çıkışa sahip olan ve analogdan dijitale dönüştürücüye ihtiyaç duyan TMP36, tek kablolu bağlantı kullanan DS18B20, DHT22 veya sadece dijital bir pime ihtiyaç duyan, aynı zamanda biraz daha ucuz olan DHT11'dir. bir nem okuması sağlar ve son olarak I2C kullanan (bazı devre kartlarında SPI ile birlikte) ve sıcaklık, nem, gaz (VOC) ve atmosferik basınç veren ancak biraz daha pahalı olan BME680.

Ne kadar doğru olduklarını görmek ve herhangi bir avantaj veya dezavantajı keşfetmek istiyorum. Kimyasal işleme günlerindeki renkli fotoğraf baskısından arta kalan hassas bir cıva termometresine sahibim, onları karşılaştırmak için. (Asla hiçbir şeyi atmayın - daha sonra ihtiyacınız olacak!)

Bu testler için CircuitPython ve Adafruit Itsybitsy M4 geliştirme kartı kullanacağım. Tüm cihazlar için uygun sürücüler mevcuttur.

Gereçler

İlk listem:

  • Itsybitsy M4 Express mikrodenetleyici
  • mikro USB kablosu - programlama için
  • TMP36
  • DS18B20
  • 4.7K Ohm direnç
  • DHT22
  • BME680
  • çok metre
  • Breadboard veya şerit tahtası
  • Bağlantı teli

Adım 1: Devreler

devreler
devreler

Turuncu teller 3.3 V

Siyah teller GND

Kartın altında, voltajları ölçmek için test noktaları bulunur. (3.3v, GND ve TMP36 analog çıkış)

Ortadaki soketler soldan sağa:

  • TMP36: 3.3v, analog sinyal çıkışı, GND
  • DS18B20: GND, dijital sinyal çıkışı, 3.3v
  • DHT22: 3.3v, sinyal çıkışı, boş, GND
  • BME680: 3.3v, SDA, SCL, boş, GND

IB M4E kartına bağlantı için arka konektör, soldan sağa

  • 3.3v
  • TMP36 - A2 pinine analog çıkış
  • GND
  • D3 pinine DS18B20 dijital çıkış - yeşil
  • D2 pinine DHT22 dijital çıkış - sarı
  • SDA - beyaz
  • SCL - pembe

4.7K Ohm direnç, DS18B20'de 0 tek kablolu bağlantı için sinyalden 3,3v'ye bir artıştır.

Tahtanın arkasında 2 kesim izi vardır:

Hem pembe hem de beyaz tellerin sol ucunun altında. (Sarı telin altında.)

2. Adım: Yöntem

Yöntem
Yöntem

Her sensör için sıcaklığı (ve varsa diğer öğeleri) birkaç kez okumak için kısa bir komut dosyası yazacağım ve sıcaklığı cıva (Hg) termometreme göre kontrol edeceğim. Sıcaklığın cıva okumasına ne kadar yakın olduğunu ve okumaların sabit/tutarlı olup olmadığını görmeye çalışacağım.

Okumaların beklenen doğruluğa uyup uymadığını ve iyileştirmeler yapmak için yapılabilecek bir şey olup olmadığını görmek için belgelere de bakacağım.

3. Adım: TMP36 - İlk Deneme

TMP36 - İlk Deneme
TMP36 - İlk Deneme
TMP36 - İlk Deneme
TMP36 - İlk Deneme

Sol bacak 3.3v, sağ bacak GND ve orta bacak, aşağıdaki formülü kullanarak sıcaklığı temsil eden bir analog voltajdır. TempC = (milivolt - 500) / 10

Yani, 750 milivolt, 25 C'lik bir sıcaklık verir.

Burada birkaç sorun var gibi görünüyor. "Normal" cıva termometresinden gelen sıcaklık, TMP36'dan çok daha düşük ve okumalar çok tutarlı değil - biraz "titreme" veya gürültü var.

TMP36 sensörü, sıcaklıkla orantılı bir voltaj gönderir. Bu, sıcaklık hesaplanmadan önce A/D dönüştürücü tarafından okunmalıdır. Bir multimetre ile doğrudan sensörün orta ayağından gelen voltajı okuyalım ve A/D sonucuyla karşılaştıralım. Multimetremle orta bacaktan okuma 722 milivolt, çok daha düşük ve çok sabit bir okuma.

Deneyebileceğimiz iki şey var. TMP36 için bir potansiyometre kullanın ve hesaplamadaki voltajı mikrodenetleyicinin gerçek voltajına ayarlayın. Daha sonra hesaplanan voltajın daha yakın olup olmadığını ve gürültü/titreşimin azaltılıp azaltılmadığını göreceğiz.

Mikrodenetleyicimde ve A/D'de kullanılan gerçek voltajı ölçelim. Bunun 3.3v olduğu varsayılmıştır, ancak aslında sadece 3.275v'dir.

Adım 4: Potansiyometre Değiştirme Sonuçları

Potansiyometre Değiştirme Sonuçları
Potansiyometre Değiştirme Sonuçları

Bu daha iyi. Okumalar, çok daha az gürültü ile birkaç milivolt içindedir. Bu, gürültünün A/D'den ziyade TMP36'dan geldiğini gösterir. Sayaçtaki okuma her zaman sabittir - titreme olmaz. (Sayaç, titreyen çıktıyı 'düzleştiriyor' olabilir.)

Durumu iyileştirmenin bir yolu, ortalama bir okuma yapmak olabilir. Hızlıca on ölçüm yapın ve ortalamayı kullanın. Ayrıca sonuçların dağılımını göstermek için programı değiştirirken standart sapmayı da hesaplayacağım. Ayrıca ortalamanın 1 standart sapması içindeki okuma sayısını da sayacağım - ne kadar yüksek olursa o kadar iyi.

Adım 5: Ortalama Okumalar ve Sonuç

Ortalama Okumalar ve Sonuç
Ortalama Okumalar ve Sonuç

Hala çok fazla gürültü var ve TMP36'dan gelen okuma, cıva termometresinden hala daha yüksek. Gürültüyü azaltmak için sinyal ve GND arasına 100NF'lik bir kapasitör ekledim

Daha sonra internette başka çözümler aradım ve şunları buldum: https://www.doctormonk.com/2015/02/accurate-and-re… Dr Monk, sinyal ve GND arasına 47 k Ohm'luk bir direnç eklemeyi önerir.

www.desert-home.com/2015/03/battery-operate… Bu adam 15 okumayı sıraya koymayı ve merkez 5'in ortalamasını almayı önerirken.

Senaryoyu ve devreyi bu önerileri içerecek şekilde değiştirdim ve cıva termometresinden bir okuma ekledim.

Sonunda! Artık cihaz açıklamasının doğruluk aralığı içinde sabit okumalara sahibiz.

Bu, yalnızca bir üreticinin doğruluğuna sahip olan sensörün çalışmasını sağlamak için oldukça fazla çaba sarf etti:

Doğruluk - En Yüksek (En Düşük): ±3°C (±4°C) Yalnızca yaklaşık 1,50$ (2 £) maliyeti vardır.

Adım 6: DS18B20 - İlk Test

DS18B20 - İlk Test
DS18B20 - İlk Test

Çok dikkatli ol. Bu paket TMP36'ya çok benziyor ancak bacaklar sağda 3.3v ve solda GND ile tam tersi. Çıkış sinyali merkezde. Bu cihazın çalışması için sinyal ile 3.3v arasında 4,7 k Ohm'luk bir dirence ihtiyacımız var. Bu cihaz tek kablolu protokolü kullanır ve Itsybitsy M4 Express'in lib klasörüne birkaç sürücü indirmemiz gerekiyor.

Bunun maliyeti yaklaşık 4 $ / 4 £Teknik özellikler:

  • Kullanılabilir sıcaklık aralığı: -55 ila 125°C (-67°F ila +257°F)
  • 9 ila 12 bit seçilebilir çözünürlük
  • 1-Wire arabirimini kullanır - iletişim için yalnızca bir dijital pin gerektirir
  • Çipe yazılan benzersiz 64 bit kimlik
  • Birden fazla sensör bir pini paylaşabilir
  • ±0.5°C Doğruluk -10°C ile +85°C arası
  • Sıcaklık limiti alarm sistemi
  • Sorgu süresi 750ms'den az
  • 3.0V ila 5.5V güç ile kullanılabilir

Bu sensörle ilgili temel sorun, Dallas 1-Wire arabirimini kullanması ve tüm mikro denetleyicilerin uygun bir sürücüye sahip olmamasıdır. Şanslıyız, Itsybitsy M4 Express için bir sürücü var.

Adım 7: DS18B20 İyi Çalışıyor

DS18B20 İyi Çalışıyor
DS18B20 İyi Çalışıyor

Bu harika bir sonuç gösteriyor.

Fazladan çalışma ve hesaplama yükü olmadan sabit bir okuma seti. Okumalar, cıva termometremle karşılaştırıldığında ±0.5°C'lik beklenen doğruluk aralığında.

Ayrıca geçmişte aynı başarı ile kullandığım yaklaşık 10$'lık su geçirmez bir versiyonu da var.

Adım 8: DHT22 ve DHT11

DHT22 ve DHT11
DHT22 ve DHT11

DHT22, sıcaklığı elde etmek için bir termistör kullanır ve yaklaşık 10 $ / £10 maliyeti vardır ve daha küçük DHT11'in daha doğru ve pahalı kardeşidir. Ayrıca tek kablolu bir arabirim kullanır ancak DS18B20 ile kullanılan Dallas protokolüyle uyumlu DEĞİLDİR. Nemi ve sıcaklığı algılar. Bu cihazlar bazen 3,3 v ile sinyal pimi arasında bir çekme direncine ihtiyaç duyar. Bu pakette zaten kurulu bir paket var.

  • Düşük maliyetli
  • 3 ila 5V güç ve G/Ç
  • Dönüşüm sırasında 2.5mA maksimum akım kullanımı (veri istenirken)
  • %2-5 doğrulukla %0-100 nem okumaları için iyi
  • -40 ila 80°C sıcaklık okumaları için iyi ±0.5°C doğruluk
  • 0,5 Hz'den fazla olmayan örnekleme hızı (2 saniyede bir)
  • Gövde boyutu 27 mm x 59 mm x 13,5 mm (1,05" x 2,32" x 0,53")
  • 4 pim, 0.1" aralık
  • Ağırlık (sadece DHT22): 2.4g

DHT11 ile karşılaştırıldığında, bu sensör daha hassas, daha doğrudur ve daha geniş bir sıcaklık/nem aralığında çalışır, ancak daha büyük ve daha pahalıdır.

9. Adım: DHT22 Sonuçları

DHT22 Sonuçları
DHT22 Sonuçları

Bunlar çok az çabayla mükemmel sonuçlardır. Okumalar oldukça sabit ve beklenen tolerans dahilinde. Nem okuması bir bonus.

Sadece her saniye okuma yapabilirsiniz.

Adım 10: DTH11 Testi

DTH11 Testi
DTH11 Testi

Cıva termometrem 21.9 derece C gösterdi. Bu eski bir projeden aldığım oldukça eski bir DHT11 ve nem değeri birkaç dakika önceki DHT22 okumalarından çok farklı. Yaklaşık 5 $ / 5 £ maliyeti.

Açıklaması şunları içerir:

  • %5 doğrulukla %20-80 nem okumaları için iyi
  • 0-50°C sıcaklık okumaları için iyi ±2°C doğruluk - DTH22'den daha az

Sıcaklık hala doğruluk aralığında görünüyor ancak bu eski cihazın nem okumasına güvenmiyorum.

Adım 11: BME680

BME680
BME680

Bu sensör sıcaklık, nem, barometrik basınç ve VOC gaz algılama özelliklerini tek bir pakette içerir ancak burada test edilen sensörler arasında en pahalı olanıdır. Yaklaşık 18,50 £ / 22 $ maliyeti. Biraz daha ucuz olan gaz sensörü olmayan benzer bir ürün var.

Bu, beşli bir altın standart sensördür. Sıcaklık sensörü doğrudur ve uygun sürücülerle kullanımı çok kolaydır. Bu sürüm I2C kullanır, ancak Adafruit koparma kartı da SPI kullanabilir.

BME280 ve BMP280 gibi, Bosch'un bu hassas sensörü de ±%3 doğrulukla nemi, ±1 hPa mutlak doğrulukla barometrik basıncı ve ±1,0°C doğrulukla sıcaklığı ölçebilir. Basınç yükseklikle değiştiğinden ve basınç ölçümleri çok iyi olduğundan, ±1 metre veya daha yüksek doğrulukta bir altimetre olarak da kullanabilirsiniz!

Belgeler, gaz sensörü için biraz 'yanma süresine' ihtiyacı olduğunu söylüyor.

Adım 12: Hangisini Kullanmalıyım?

Hangisini Kullanmalıyım?
Hangisini Kullanmalıyım?
  • TMP36 çok ucuz, küçük ve popüler ama kullanımı oldukça zor ve hatalı olabilir.
  • DS18B20 küçük, hassas, ucuz, kullanımı çok kolay ve su geçirmez bir versiyonu var.
  • DTH22 ayrıca nemi gösterir, orta fiyatlıdır ve kullanımı kolaydır ancak çok yavaş olabilir.
  • BME680, diğerlerinden çok daha fazlasını yapar ancak pahalıdır.

Sadece sıcaklık isteseydim ±0.5°C hassasiyetle DS18B20 kullanırdım ama favorim BME680 çünkü çok daha fazlasını yapıyor ve çok sayıda farklı projede kullanılabilir.

Son bir düşünce. Sıcaklık sensörünüzü mikroişlemciden yeterince uzakta tuttuğunuzdan emin olun. Bazı Raspberry Pi HAT'ler, ana karttan gelen ısının sensörü ısıtmasına izin vererek yanlış bir okuma verir.

Adım 13: İleri Düşünceler ve Deneyler

Diğer Düşünceler ve Deneyler
Diğer Düşünceler ve Deneyler

Şimdiye kadar yaptıklarım hakkındaki yorumlarınız için gulliverrr, ChristianC231 ve pgagen'e teşekkür ederim. Gecikme için özür dilerim ama birkaç haftadır elektronik kitime erişimim olmadan İrlanda'da tatildeyim.

İşte sensörlerin birlikte çalıştığını göstermek için ilk deneme.

Sensörleri sırayla okumak ve sıcaklık değerlerini 20 saniyede bir yazdırmak için bir komut dosyası yazdım.

Her şeyi soğutmak için kiti bir saat buzdolabına koydum. Bilgisayara taktım ve Mu'nun sonuçları yazdırmasını sağladım. Çıktı daha sonra kopyalandı, bir.csv dosyasına (virgülle ayrılmış değişkenler) dönüştürüldü ve Excel'deki sonuçlardan grafikler çizildi.

Sonuçlar kaydedilmeden önce kitin buzdolabından çıkarılması yaklaşık üç dakika sürdü, bu nedenle bu aralıkta sıcaklıkta bir miktar artış meydana geldi. Dört sensörün farklı termal kapasitelere sahip olduğundan ve bu nedenle farklı oranlarda ısınacağından şüpheleniyorum. Sensörler oda sıcaklığına yaklaştıkça ısınma hızının düşmesi beklenir. Bunu civa termometremle 24.4°C olarak kaydettim.

Eğrilerin başlangıcındaki sıcaklıktaki geniş farklılıklar, sensörlerin farklı termal kapasitelerine bağlı olabilir. Oda sıcaklığına yaklaştıkça çizgilerin sona doğru birleştiğini görmekten memnunum. TMP36'nın her zaman diğer sensörlerden çok daha yüksek olduğundan endişeleniyorum.

Bu cihazların açıklanan doğruluğunu tekrar kontrol etmek için veri sayfalarına baktım

TMP36

  • ±2°C aşırı sıcaklık doğruluğu (tip)
  • ±0.5°C doğrusallık (tip)

DS18B20

±0.5°C Doğruluk -10°C ile +85°C arası

DHT22

sıcaklık ±0.5°C

BME680

±1.0°C hassasiyetle sıcaklık

Adım 14: Tam Grafik

Tam Grafik
Tam Grafik

Artık sensörlerin sonunda düzleştiğini ve tarif edilen doğrulukları dahilinde aşağı yukarı sıcaklık üzerinde anlaştığını görebilirsiniz. TMP36 değerlerinden 1,7 derece çıkarılırsa (±2°C beklenir) tüm sensörler arasında iyi bir uyum vardır.

Bu deneyi ilk yaptığımda DHT22 sensörü bir soruna neden oldu:

main.py çıktısı:

14.9, 13.5, 10.3, 13.7

15.7, 14.6, 10.5, 14.0

16.6, 15.6, 12.0, 14.4

18.2, 16.7, 13.0, 15.0

18.8, 17.6, 14.0, 15.6

19.8, 18.4, 14.8, 16.2

21.1, 18.7, 15.5, 16.9

21.7, 19.6, 16.0, 17.5

22.4, 20.2, 16.5, 18.1

23.0, 20.7, 17.1, 18.7

DHT okuma hatası: ('DHT sensörü bulunamadı, kablolamayı kontrol edin',)

Geri izleme (en son arama son):

Dosya "main.py", satır 64,

"main.py" dosyası, satır 59, get_dht22'de

NameError: atamadan önce başvurulan yerel değişken

Bu yüzden betiği bu sorunla başa çıkacak şekilde değiştirdim ve kaydı yeniden başlattım:

DHT okuma hatası: ('DHT sensörü bulunamadı, kablolamayı kontrol edin',)

25.9, 22.6, -999.0, 22.6

DHT okuma hatası: ('DHT sensörü bulunamadı, kablolamayı kontrol edin',)

25.9, 22.8, -999.0, 22.7

25.9, 22.9, 22.1, 22.8

25.9, 22.9, 22.2, 22.9

DHT okuma hatası: ('DHT sensörü bulunamadı, kablolamayı kontrol edin',)

27.1, 23.0, -999.0, 23.0

DHT okuma hatası: ('DHT sensörü bulunamadı, kablolamayı kontrol edin',)

27.2, 23.0, -999.0, 23.1

25.9, 23.3, 22.6, 23.2

DHT okuma hatası: ('DHT sensörü bulunamadı, kablolamayı kontrol edin',)

28.4, 23.2, -999.0, 23.3

DHT okuma hatası: ('DHT sensörü bulunamadı, kablolamayı kontrol edin',)

26.8, 23.1, -999.0, 23.3

26.5, 23.2, 23.0, 23.4

26.4, 23.3, 23.0, 23.5

26.4, 23.4, 23.1, 23.5

26.2, 23.3, 23.1, 23.6

İkinci turda sorun yaşamadım. Adafruit belgeleri, bazen DHT sensörlerinin okumaları kaçırdığı konusunda uyarıyor.

Adım 15: Sonuçlar

Sonuçlar
Sonuçlar

Bu eğri, bazı sensörlerin daha yüksek termal kapasitesinin reaksiyon sürelerini artırdığını açıkça göstermektedir.

Tüm sensörler yükselen ve düşen sıcaklıkları kaydeder.

Yeni bir sıcaklığa yerleşmek için çok hızlı değiller.

Çok doğru değiller. (Bir meteoroloji istasyonu için yeterince iyiler mi?)

Sensörünüzü güvenilir bir termometreye göre kalibre etmeniz gerekebilir.

Önerilen: