DS18x20 sıcaklık sensörlerinin güvenilirliği


11

Maxim'in DS18x20'sini kullanıyorum (aslında birden fazla varyantım var) 1-Wire sıcaklık sensörleri, evimdeki çeşitli odalardaki sıcaklıkları dakikada bir kez kaydetmek için. Binde yaklaşık bir okuma, tamamen sahte bir şey alıyorum. Kademeli olarak 65F'den 70F'ye yükselen bir dizinin ortasında -32.1F veya 15.64F gibi bir şey alıyorum.

Başka kimsenin böyle bir sorunu oldu mu, yoksa bu benim kurulumumda bir sorun mu var? Bu sadece bu şeylerle ilgili bilinen bir sorunsa, üç okuma yapmak ve aykırı atmak gibi bir şey yapmam gerekecek.

Kurulumumla ilgili birkaç açıklama:

  • 3.3V'da koşuyorum
  • Arduino geri geliyor gibi okuma kontrol toplamı kontrol ediyorum ve maçlar (ya da öyle düşünüyorum - her zaman bu kodda bir hata olabilir).
  • Bunlar parazit gücü değil normal güç tükeniyor.
  • 4.7K çekme direncine sahibim.
  • Her algılama platformunda sadece tek bir sensör kullanıyorum.
  • Sensör, onu okuyan arduinoya bağlı bir PCB üzerindedir.
  • Aynı problemi çeşitli farklı arduinolardan okurken görüyorum (diecimilla, pro-mini, ev yapımı adet)

Yanıtlar:


5

Bunu DS18B20 ile ara sıra gördüm. Uygulamam için, sahte sonuçları kodla filtrelemek yeterince basitti.


Başkasının buna benzediğini duymak güzel. Filtreleme algoritmanız neydi?
edebill

Söylediklerini yapmanı öneririm, 3 okuma al, 5 daha iyi, 7 daha iyi, ama 1/1000 civarında bir hata varsa, o zaman sadece 3'e ihtiyacın var. Sorun çözülecek. Eğer 5 alırsanız bir sorun olması için bir ucube olayı alır.
Kortuk

Şimdi 5 yapıyorum. Sadece 2'nin üstünü almayı denedim, ancak dün gece hala bir hata oluştu (her dakika 3 sensör okuyorum, bu yüzden günde binlerce veri noktası alıyorum).
edebill

3

Hatalı okumaların kaynağını bulamıyorsanız, bunları filtrelemek ve önceki okumalardan tahmin etmek veya gezinin önemli olduğu durumlarda okumalar arasında enterpolasyon yapmak kolay olmalıdır . Dakikada bir örnekleme yaptığınız için, son okumayı bile kopyalayabilirsiniz; oda sıcaklığı bir dakika içinde neredeyse hiç değişmez.


3

Bunun nedeni, kontrolörün belirli yüksek yük koşulları altında sıcaklık tepkisinin bir veya daha fazla bitini yanlış okumasından veya bir veya daha fazla biti bozan elektriksel girişimden kaynaklanabilir.

Buradaki veri sayfasına yakından bakın http://www.rentron.com/Files/ds18b20.pdf

Sayfa 5'de, 85C için tam ikili dizinin olduğunu gösterir:

+85°C 0000 0101 0101 0000

Benzer şekilde, 25C için:

+25.0625°C 0000 0001 1001 0001

Bazı durumlarda, denetleyici biraz özlüyorsa, gerçek sıcaklık olan, ikili ve bit kaydırmalı olarak ifade edilen bir değer alırsınız. Genellikle bu C'deki hedef değerin 1/2 katıdır.

Bazen hatta elektrik paraziti alabilirsiniz ve kontrolör 1 saniyelik bir tüm okur, Bu durumda, ikili olarak ifade edilen 15.64 gibi bir sayı elde edersiniz, başında 1s bir demet.


2

Değeri ne olursa olsun, birkaç ay önce DS18B20 ile biraz çalıştım. Kısa bir video çektim ve blogumda örneklere ve örnek kodlara bağlantılar içeren bir yazı yazdım. Umarım bu biraz yardımcı olabilir! http://dailyduino.com/archives/552


2

Yaklaşık dört yıldan beri 13'ü evimde çalışıyor. Veritabanı artık işlemek zor (Ben tüm örnekleri takip etti). Ama bu tür bir davranış görmedim. Bunun yerine, şimdi ve bir sensör diğerlerini dondurur ve diğerlerini bloke eder, bunun tek yolu (bulduğum), birkaç saniye boyunca besleme voltajını kapatmaktı. Bu yüzden tahtama küçük bir röle ekledim ve mikro bu davranışı algıladığında tüm sensör zincirini sıfırlar. Bu haftada birkaç kez olur.


Hmm. Belki de onları sadece bir okuma yapmak üzereyken çalıştırmalıyım.
edebill
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.