Keandalan sensor suhu DS18x20

11

Saya menggunakan DS18x20 Maxim (saya sebenarnya punya lebih dari satu varian) sensor suhu 1-kawat untuk mencatat suhu di berbagai ruangan di rumah saya sekali dalam satu menit. Tentang satu bacaan dalam seribu, saya mendapatkan sesuatu yang benar-benar palsu. Di tengah-tengah urutan yang secara bertahap naik dari 65F ke 70F saya mendapatkan sesuatu seperti -32.1F atau 15.64F.

Adakah orang lain yang memiliki masalah seperti itu, atau ada yang salah dengan pengaturan saya? Jika ini hanya masalah yang diketahui dengan hal-hal ini, saya harus melakukan sesuatu seperti mengambil tiga bacaan dan membuang outlier.

Hanya beberapa pernyataan tentang pengaturan saya:

  • Saya menjalankan pada 3.3V
  • Saya memeriksa checksum bacaan ketika kembali ke Arduino, dan cocok (atau saya pikir itu - selalu ada bug dalam kode itu).
  • Ini kehabisan daya normal, bukan kekuatan parasit.
  • Saya memiliki resistor pullup 4.7K di tempatnya.
  • Saya hanya menggunakan sensor tunggal pada setiap platform penginderaan.
  • Sensor ada di PCB yang terpasang pada Arduino yang membacanya.
  • Saya melihat masalah yang sama membaca dari berbagai arduinos yang berbeda (diecimilla, pro-mini, custom buatan sendiri)
edebill
sumber

Jawaban:

5

Saya telah melihat ini dengan sesekali dengan DS18B20. Untuk aplikasi saya, itu cukup sederhana untuk menyaring hasil palsu dengan kode.

pengguna274
sumber
Senang mendengar bahwa orang lain seperti itu. Apa algoritma penyaringan Anda?
edebill
Saya sarankan Anda melakukan apa yang Anda katakan, ambil 3 bacaan, 5 akan lebih baik, 7 lebih baik dari itu, tetapi jika ada kesalahan sesuatu sekitar 1/1000 maka Anda hanya perlu 3. Ambil median. Masalah akan terpecahkan. jika Anda mengambil 5 maka akan terjadi kejadian aneh untuk memiliki masalah.
Kortuk
Saya melakukan 5 sekarang. Saya mencoba hanya mengambil yang lebih tinggi dari 2, tetapi kesalahan masih merayap di tadi malam (saya punya 3 sensor membaca setiap menit, jadi saya mendapatkan ribuan titik data sehari).
edebill
3

Jika Anda tidak dapat menemukan sumber bacaan yang salah, akan mudah untuk menyaringnya dan memperkirakan dari bacaan sebelumnya , atau menyisipkan di antara bacaan jika ditinjau ke belakang adalah penting. Karena Anda mengambil sampel satu kali per menit, Anda bahkan dapat menyalin bacaan terakhir; suhu kamar tidak akan berubah dalam satu menit.

stevenvh
sumber
3

Hal ini dapat disebabkan oleh pengontrol yang salah membaca satu atau lebih bit respons suhu dalam kondisi beban tinggi tertentu, atau karena gangguan listrik yang merusak satu atau lebih bit.

Lihatlah lembar data di sini http://www.rentron.com/Files/ds18b20.pdf

Pada halaman 5, ini menunjukkan bahwa urutan biner yang tepat untuk 85C adalah:

+85°C 0000 0101 0101 0000

Demikian juga, untuk 25C, itu adalah:

+25.0625°C 0000 0001 1001 0001

Dalam beberapa kasus, jika controller kehilangan sedikit, Anda akan mendapatkan nilai yang merupakan suhu aktual, dinyatakan dalam biner dan bit-shifted. Seringkali ini adalah 1 / 2x nilai target dalam C.

Kadang-kadang Anda bisa mendapatkan gangguan listrik di telepon, dan pengontrol membaca seluruh gigitan 1s, Dalam hal ini, Anda akan mendapatkan beberapa angka seperti 15,64, yang dinyatakan dalam biner sebenarnya sangat dekat dengan angka antara 65 dan 70F, kecuali dengan sekelompok 1s di awal.

gbronner
sumber
2

Untuk apa nilainya, saya melakukan sedikit pekerjaan dengan DS18B20 beberapa bulan yang lalu. Saya merekam video pendek dan melakukan penulisan di blog saya, yang memiliki tautan ke contoh dan kode sampel. Semoga ini bisa membantu sedikit! http://dailyduino.com/archives/552

morgellon
sumber
2

Saya memiliki 13 di antaranya berjalan di rumah saya sejak sekitar empat tahun sekarang. Basis data sulit untuk ditangani lagi (saya melacak semua sampel). Tapi, saya tidak melihat perilaku ini. Sebaliknya, setiap sekarang dan dari satu sensor membeku dan memblokir yang lainnya, satu-satunya jalan keluar dari ini (yang saya temukan) adalah mematikan tegangan suplai selama beberapa detik. Jadi saya menambahkan relay kecil ke board saya dan kapan pun mikro merasakan perilaku ini, ia akan mengatur ulang seluruh rangkaian sensor. Itu terjadi beberapa kali dalam seminggu.


sumber
Hmm. Mungkin saya harus memberi mereka kekuatan ketika saya akan membaca.
edebill