İçindekiler:
- Gereçler
- Adım 1: Devreler
- 2. Adım: Yöntem
- 3. Adım: TMP36 - İlk Deneme
- Adım 4: Potansiyometre Değiştirme Sonuçları
- Adım 5: Ortalama Okumalar ve Sonuç
- Adım 6: DS18B20 - İlk Test
- Adım 7: DS18B20 İyi Çalışıyor
- Adım 8: DHT22 ve DHT11
- 9. Adım: DHT22 Sonuçları
- Adım 10: DTH11 Testi
- Adım 11: BME680
- Adım 12: Hangisini Kullanmalıyım?
- Adım 13: İleri Düşünceler ve Deneyler
- Adım 14: Tam Grafik
- Adım 15: Sonuçlar
Video: Sıcaklık Sensörlerini Test Etme - Hangisi Benim İçin?: 15 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
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
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
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
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ı
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ç
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
Ç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
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, 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ı
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
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
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?
- 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
Ş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
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
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:
Demiryollarını Korumak İçin Arduino Üzerindeki Sıcaklık, Yağmur Suyu ve Titreşim Sensörlerini Kullanma: 8 Adım (Resimlerle)
Demiryollarını Korumak için Arduino Üzerindeki Sıcaklık, Yağmur Suyu ve Titreşim Sensörlerini Kullanma: Günümüz toplumunda, demiryolu yolcularındaki artış, demiryolu şirketlerinin talebe ayak uydurmak için ağları optimize etmek için daha fazlasını yapması gerektiği anlamına gelir. Bu projede sıcaklık, yağmur suyu ve titreşim sensörlerinin nasıl çalıştığını küçük ölçekte göstereceğiz
Robotik için Bazı Fazlalık PIR Sensörlerini Hazırlayın: 3 Adım (Resimlerle)
Robotik için Bazı Fazlalık PIR Sensörlerini Hazırlayın: eBay'de bir grup PIR sensörü buldum. Cep telefonları için eller serbest seti için üretilmiş bir pcb üzerine monte edilirler. Sensörün robotik projelerde kullanıma nasıl hazırlanacağını burada anlatmayı seviyorum. PIR sensörünün ne olduğunu bilmiyorsanız,
Epe Kordonunu Test Etme ve Tamir Etme: 9 Adım (Resimlerle)
Bir Epe Bodycord'un Test Edilmesi ve Onarılması: Modern, Olimpik tarzdaki eskrim sporunda, puanlama elektrikle yapılır. Elektrik sinyalinin silahınızdan puanlama makinesine gitmesi için, sinyalin silahınızdaki bir tel aracılığıyla (kılıç hariç) kolunuzdan yukarı ve aşağı hareket etmesi gerekir
USB Thumb Drive Zippo Çakmak Kılıf Modu (Cep Boyutunda Yarışma! BENİM İÇİN OY VERİN!): 7 Adım
USB Thumb Drive Zippo Çakmak Kılıf Modu (Cep Boyutunda Yarışma! BENİM İÇİN OY VERİN!): Sıkıcı görünen USB flash sürücüden bıktınız mı? Bu Zippo Çakmak Modu ile renklendirin
Benim Tüpüm! I-pod ve Mp3 İkinci Sürüm için Stereo Sub Woofer Hoparlörler (Piller ve USB Şarj Cihazı ile): 12 Adım
Benim Tüpüm! I-pod ve Mp3 İkinci Sürüm için Stereo Sub Woofer Hoparlörler (Piller ve USB Şarj Cihazı ile): Çeyrek farkındalığım emsallerden daha karmaşık ama gerçekleştirilmesi zor değil. Aynı pilden beslenen bir USB aracılığıyla i-pod'u yeniden şarj etme imkanı ile yeniden yüklenebilen pillere kendi kendine güç sağlayan iki kasanın taslağı