DS18B20'm yüksek okuyor. Doğru sıcaklığı geri getirmesini nasıl sağlayabilirim?


10

Evim için bir ısıtma kontrol sistemi üzerinde çalışıyorum, ancak sıcaklık sensörü ile ilgili beklediğimden daha yüksek okuma sorunları yaşıyorum.

Bir röle modülüne, bir HD47780 ekrana ve bir DS18B20 bağlı bir Tiny RTC modülüne bağlanmış 5V Arduino Mini Pro klonuna sahibim.

DS18B20 (Ben tek telli kütüphaneler bu işlem modunu desteklenen emin değilse olduğu gibi) Vcc ziyade DQ hattında parazit gücünü kullanarak daha Minik RTC modülüne uygulanan 5v ile beslemesi ve DS18B20 veri sayfası Vcc arasında olabileceğini söyler 3.0v ve 5.5v. Mini Pro'nun 5.2v'deki ayarlı gücünü ölçtüm.

DS'den gelen sıcaklığı mevcut oda termostatı (bi-metalik), iki sensörlü bir RS masaüstü sıcaklık monitörü, küçük bir 'termo-higrometre' ve bi-metalik buzdolabı termometresi ile (sıcaklığının üst çeyreğinde) karşılaştırıyorum aralığı) . DS'den gelen okuma her zaman, birbirlerinin bir derece içindeki diğer sensörlerden gelen okumadan yaklaşık 1-2 derece daha yüksektir.

† Gerçek olan değil, benzer bir şey.

Çeşitli forumları okumak Bu sensörlerin oldukça doğru olduğunu duydum, ancak yakınındaki bileşenlerin yerel ısınmasından muzdarip olabilir, bu yüzden sensörü 20 cm'lik bir kabloya taşıdım ve elektroniklerin geri kalanından iyi bir şekilde konumlandırdım. Bu bir fark yaratmadı.

Daha sonra DS'nin çok yüksek bir Vcc voltajı ile beslenirse kendi kendine ısınabileceğini okudum, bu yüzden 1.7v düşüşlü bir Kırmızı LED ekledim ve DS üzerindeki yeni voltajı 3.5v olarak ölçtüm, ancak yine, sıcaklıkları bir kez daha stabilize etmek, bu bir fark yaratmadı.

Herkes DS'nin neden yüksek okuyor olabileceğini ve bunu önlemek için neler yapabileceğimi önerebilir mi?


Oda termostatınızın sadece 1-2 derece düşük okuma yapmadığından emin misiniz ? Üçüncü bir termometre almalı ve ofsetinizin gerçekte nereden geldiğini belirlemek için karşılaştırmalısınız . RS termometre muhtemelen her iki sensör için aynı okuma elektroniği kullandığından, muhtemelen iki ayrı kalibrasyon referansı olarak gerçekten kullanışlı değildir.
Connor Wolf

Yanıtlar:


9

Şimdi çeşitli sensör düğümlerine bir çok DS18B20 sensörü yerleştirdim - belki 50 veya daha fazla. Onlardan dönen okumaları biraz öğrendim. Bunların bazılarını neden değil olarak izole ettiğinizi biliyorum, ancak bunların sorun olduğunu doğrulamak iyidir.

Celsius mu yoksa Fahrenheit mi kullandığınızı bilmiyorum, bu yüzden sorunun derecesi belli değil.

Yerel ısıtma

Arduino'yu "sıcak" bir çip olarak düşünmüyorum, ancak bir DS18B20'yi Arduino ve LCD içeren bir kasaya koymak, okumaları beklenenden 2-3 ° C daha yüksek görmeme neden oldu.

Kasanın dışına taşımak bunu düzeltti.

Yüksek Vcc / sık dönüşümlerden ısıtma

Çipe yüksek bir Vcc sağlar ve sık sık dönüşüm gerçekleştirirseniz (örneğin, olabildiğince sık), çip ısınır. Bu okuma değerlerini 1-2 ° C gördüm.

Sadece yüksek Vcc ile ilgili problemi görmedim, ancak çoğu DS18B20'yi parazit modunda çalıştırıyorum ve en fazla 10 saniyede bir dönüştürüyorum. Aktif modda çalıştırılanlar genellikle kullanılmadığında kapalıdır.

OneWire ve DallasTemperature parazit modunu destekler.

Tüm sıcaklık sensörleri eşit yaratılmaz

DS18B20 ile oynamaya başlamadan önce birkaç sıcaklık sensörünüz vardı. Neredeyse istisnasız, bunlar yetersiz okunuyor. Çoğu termistörlere dayanır ve kalibrasyon zayıftır. DS18B20'nin aşırı okuma olduğunu düşündüm, ancak iyi bir termokupl ve metre kullandığımda doğru olduklarını doğrulayabilirim.

Bu DS18B20'ye güvenmeyi öğrenmekle ilgiliydi.

Tel boyunca ısı iletimi

Tel üzerinde sensörler varsa, tel şaşırtıcı miktarda ısı iletir. Borular boyunca kablolama yapılırken bu bir sorun olabilir.

Sahte DS18B20

Bu sensörler çok popüler ve bu sahte görünüyor. Aşırı okunan ve zamanlamaların bittiği bir dizi paslanmaz çelik su geçirmez sensör var. OneWire kütüphanesiyle çalıştılar, ancak bir DS2482 OneWire ustasıyla çalışmadılar. Normal TO-92 kasalıların da sahte olduğunu duydum.


Pano yazılımının büyük bilgeliğinde, bu soruya cevap vermeme izin verilmiyor, bu yüzden buraya bir yorum ekleyeceğim. Github.com/PaulStoffregen/OneWire/issues/91 üzerinde zor yolu bulduğumdan , 3.3V çip kullanıyorsanız, 4.7k direncini 2.7k dirençle değiştirmeniz gerekir, aksi takdirde bazı sensörler yanlış değerler döndürür.
Marc Merlin

2

Benim durumumda, uC'm ve sensör arasındaki kablo çok kısa ve biraz ısı iletiyordu. Başka bir sıcaklık sensörü aynı mesafeden doğru sıcaklık bildiriyordu çünkü ilk başta durum böyle olamazdı. Ben tahta ve voila başka bir yere taşındı!


1

Belki sensörünüzü kalibre etmek isteyebilirsiniz.

Kaynar suya daldırıldığında (deniz seviyesi varsayarak) ne okur? 102.5 Santigrat? Bu size -2.5C'lik yüksek sıcaklık kalibrasyonu sağlar.

Açıkçası ölçüm yapmamı beklediğiniz sıcaklıklar etrafında kalibre etmek daha iyidir. Bu, bazı ölçüm cihazlarına güvenmek (veya ortalamasını almak?) Ve kalibrasyon yapmak anlamına gelir.


1

3.3V veriyolunda DS18B20 kullanırken, kararlı bir 5.0V veriyoluna geçiş yaparken birkaç derece C ofsetleri gördüm ve daha makul değerler aldım. (parazitik güç ile ve parazitsiz olarak test edilmiştir)


Bu ilginç, teşekkürler ve bazı insanların bildirdiklerinin tersi. Bunun başka bir sahte DS18B20 sorunu olup olmadığını merak ediyorum.
Mark Booth

0

Bazı deneyler yaptım. DS18B20, Arduino Pro Micro'ya 1 cm'den daha kısa bir kablo üzerindeyse, okumalar ortamdan 5 derece daha fazlaydı. Arduino kartından> 10 cm uzunluğunda ve direncin nereye monte edildiğine bakılmaksızın (arduino yakınında veya DS18B20 yakınında) okumalar iyiydi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.