Daftar Isi:

Menguji Sensor Suhu - Yang Mana untuk Saya?: 15 Langkah (dengan Gambar)
Menguji Sensor Suhu - Yang Mana untuk Saya?: 15 Langkah (dengan Gambar)

Video: Menguji Sensor Suhu - Yang Mana untuk Saya?: 15 Langkah (dengan Gambar)

Video: Menguji Sensor Suhu - Yang Mana untuk Saya?: 15 Langkah (dengan Gambar)
Video: Fungsi dan cara kerja sensor WTS/ECT(sensor temperatur mesin) mobil injeksi 2024, November
Anonim
Menguji Sensor Suhu - Yang Mana untuk Saya?
Menguji Sensor Suhu - Yang Mana untuk Saya?

Salah satu sensor pertama yang ingin dicoba oleh pendatang baru dalam komputasi fisik adalah sesuatu untuk mengukur suhu. Empat dari sensor yang paling populer adalah TMP36, yang memiliki output analog dan memerlukan konverter analog ke digital, DS18B20, yang menggunakan konektivitas satu kabel, DHT22, atau DHT11 yang sedikit lebih murah, yang hanya membutuhkan pin digital, tetapi juga memberikan pembacaan kelembaban, dan terakhir BME680 yang menggunakan I2C (dengan SPI juga pada beberapa papan breakout) dan memberikan suhu, kelembaban, gas (VOC) dan tekanan atmosfer tetapi harganya sedikit lebih mahal.

Saya ingin melihat seberapa akurat mereka, dan menemukan kelebihan atau kekurangannya. Saya sudah memiliki termometer air raksa yang akurat, sisa dari pencetakan foto berwarna pada masa pemrosesan kimia, untuk membandingkannya. (Jangan pernah membuang apa pun - Anda akan membutuhkannya nanti!)

Saya akan menggunakan CircuitPython dan papan pengembangan Adafruit Itsybitsy M4 untuk pengujian ini. Driver yang sesuai tersedia untuk semua perangkat.

Perlengkapan

Daftar awal saya:

  • Mikrokontroler Itsybitsy M4 Express
  • kabel micro USB - untuk pemrograman
  • TMP36
  • DS18B20
  • Resistor 4.7K Ohm
  • DHT22
  • BME680
  • Multimeter
  • Papan tempat memotong roti atau papan strip
  • Menghubungkan kabel

Langkah 1: Sirkuit

sirkuit
sirkuit

Kabel oranye adalah 3,3 V

Kabel hitam adalah GND

Di bagian bawah papan adalah titik uji untuk mengukur tegangan. (output analog 3.3v, GND dan TMP36)

Soket tengah adalah, dari kiri ke kanan:

  • TMP36: 3.3v, sinyal analog keluar, GND
  • DS18B20: GND, sinyal digital keluar, 3.3v
  • DHT22: 3.3v, sinyal keluar, kosong, GND
  • BME680: 3.3v, SDA, SCL, kosong, GND

Konektor belakang, untuk koneksi ke papan IB M4E, dari kiri ke kanan

  • 3.3v
  • TMP36 - analog keluar ke pin A2
  • GND
  • DS18B20 digital keluar ke pin D3 - hijau
  • DHT22 digital keluar ke pin D2 - kuning
  • SDA - putih
  • SCL - merah muda

Resistor 4.7K Ohm adalah pullup dari sinyal ke 3.3v untuk koneksi 0ne-wire pada DS18B20.

Ada 2 trek yang dipotong di bagian belakang papan:

Di bawah ujung kiri dari kedua kabel merah muda dan putih. (Di bawah kabel kuning.)

Langkah 2: Metode

metode
metode

Untuk setiap sensor saya akan menulis skrip singkat untuk membaca suhu (dan item lainnya jika tersedia) beberapa kali dan memeriksa suhu terhadap termometer air raksa(Hg) saya. Saya akan mencari untuk melihat seberapa dekat suhu dibandingkan dengan pembacaan merkuri dan apakah pembacaannya stabil/konsisten.

Saya juga akan melihat dokumentasi untuk melihat apakah pembacaan sesuai dengan akurasi yang diharapkan dan jika ada sesuatu yang dapat dilakukan untuk melakukan perbaikan.

Langkah 3: TMP36 - Percobaan Awal

TMP36 - Percobaan Awal
TMP36 - Percobaan Awal
TMP36 - Percobaan Awal
TMP36 - Percobaan Awal

Kaki kiri adalah 3.3v, kaki kanan adalah GND dan kaki tengah adalah tegangan analog yang mewakili suhu menggunakan rumus berikut. TempC = (milivolt - 500) / 10

Jadi, 750 milivolt menghasilkan suhu 25 C

Tampaknya ada beberapa masalah di sini. Suhu dari 'normal', termometer air raksa, jauh lebih rendah daripada dari TMP36 dan pembacaannya tidak terlalu konsisten - ada beberapa 'jitter' atau kebisingan.

Sensor TMP36 mengirimkan tegangan yang sebanding dengan suhu. Ini harus dibaca oleh konverter A/D sebelum suhu dihitung. Mari kita baca tegangan langsung dari kaki tengah sensor dengan multi-meter dan bandingkan dengan hasil dari A/D. Pembacaan dari kaki tengah dengan multi-meter saya adalah 722 milivolt, jauh lebih rendah dan pembacaan yang sangat stabil.

Ada dua hal yang bisa kita coba. Ganti potensiometer untuk TMP36 dan sesuaikan tegangan dalam perhitungan dengan tegangan aktual mikrokontroler. Kami kemudian akan melihat apakah tegangan yang dihitung lebih dekat dan jika noise/jitter berkurang.

Mari kita ukur tegangan aktual yang digunakan mikrokontroler dan A/D saya. Ini diasumsikan 3.3v tetapi sebenarnya hanya 3.275v.

Langkah 4: Hasil Substitusi Potensiometer

Hasil Substitusi Potensiometer
Hasil Substitusi Potensiometer

Ini jauh lebih baik. Pembacaan berada dalam beberapa milivolt dengan lebih sedikit noise. Ini menunjukkan bahwa kebisingan berasal dari TMP36 daripada A/D. Pembacaan pada meteran selalu stabil - tidak ada jitter. (Pengukur mungkin 'memuluskan' output yang gelisah.)

Salah satu cara untuk memperbaiki situasi mungkin dengan membaca rata-rata. Ambil sepuluh bacaan dengan cepat dan gunakan rata-rata. Saya juga akan menghitung simpangan baku saat saya mengubah program, untuk memberikan indikasi penyebaran hasil. Saya juga akan menghitung jumlah pembacaan dalam 1 standar deviasi rata-rata - semakin tinggi semakin baik.

Langkah 5: Rata-rata Bacaan dan Hasil

Rata-Rata Bacaan dan Hasil
Rata-Rata Bacaan dan Hasil

Masih banyak noise dan pembacaan dari TMP36 masih lebih tinggi daripada dari termometer air raksa. Untuk mengurangi kebisingan saya telah menyertakan kapasitor 100NF antara sinyal dan GND

Saya kemudian mencari solusi lain di internet dan menemukan ini: https://www.doctormonk.com/2015/02/accurate-and-re… Dr Monk menyarankan untuk menyertakan resistor 47 k Ohm antara sinyal dan GND.

www.desert-home.com/2015/03/battery-operate… Sementara orang ini menyarankan untuk menyortir 15 bacaan ke dalam urutan dan rata-rata pusat 5.

Saya memodifikasi skrip dan sirkuit untuk memasukkan saran-saran ini dan menyertakan pembacaan dari termometer air raksa.

Akhirnya! Sekarang kami memiliki pembacaan yang stabil dalam kisaran akurasi deskripsi perangkat.

Ini cukup banyak upaya untuk membuat sensor bekerja yang hanya memiliki akurasi pabrikan:

Akurasi - Tertinggi (Terendah): ±3°C (±4°C) Harganya hanya sekitar $1,50 (£2)

Langkah 6: DS18B20 - Pengujian Awal

DS18B20 - Pengujian Awal
DS18B20 - Pengujian Awal

Berhati-hatilah. Paket ini terlihat sangat mirip dengan TMP36 tetapi kaki-kakinya sebaliknya dengan 3.3v di sebelah kanan dan GND di sebelah kiri. Sinyal keluar berada di tengah. Agar perangkat ini berfungsi, kita memerlukan resistor 4,7 k Ohm antara sinyal dan 3,3v. Perangkat ini menggunakan protokol satu kabel dan kita perlu mengunduh beberapa driver ke dalam folder lib Itsybitsy M4 Express.

Harganya sekitar $4 / £4Spesifikasi teknis:

  • Kisaran suhu yang dapat digunakan: -55 hingga 125°C (-67°F hingga +257°F)
  • 9 hingga 12 bit resolusi yang dapat dipilih
  • Menggunakan antarmuka 1-Wire - hanya membutuhkan satu pin digital untuk komunikasi
  • ID 64 bit unik dibakar menjadi chip
  • Beberapa sensor dapat berbagi satu pin
  • ±0,5 °C Akurasi dari -10 °C hingga +85 °C
  • Sistem alarm batas suhu
  • Waktu kueri kurang dari 750ms
  • Dapat digunakan dengan daya 3.0V hingga 5.5V

Masalah utama dengan sensor ini adalah bahwa ia menggunakan antarmuka Dallas 1-Wire dan tidak semua mikrokontroler memiliki driver yang sesuai. Kami beruntung, ada driver untuk Itsybitsy M4 Express.

Langkah 7: DS18B20 Bekerja Dengan Baik

DS18B20 Bekerja Dengan Baik
DS18B20 Bekerja Dengan Baik

Ini menunjukkan hasil yang bagus.

Satu set bacaan yang stabil tanpa pekerjaan tambahan dan biaya perhitungan. Pembacaan berada dalam kisaran akurasi yang diharapkan ±0,5°C bila dibandingkan dengan termometer air raksa saya.

Ada juga versi tahan air sekitar $ 10 yang telah saya gunakan di masa lalu dengan kesuksesan yang sama.

Langkah 8: DHT22 dan DHT11

DHT22 dan DHT11
DHT22 dan DHT11

DHT22 menggunakan termistor untuk mendapatkan suhu dan biaya sekitar $10 / £10 dan merupakan saudara yang lebih akurat dan mahal dari DHT11 yang lebih kecil. Ini juga menggunakan antarmuka satu kabel tetapi TIDAK kompatibel dengan protokol Dallas yang digunakan dengan DS18B20. Ia merasakan kelembapan dan juga suhu. Perangkat ini terkadang membutuhkan resistor pull up antara 3,3 v dan pin sinyal. Paket ini memiliki satu yang sudah diinstal.

  • Biaya rendah
  • Daya 3 hingga 5V dan I/O
  • 2.5mA max penggunaan saat ini selama konversi (saat meminta data)
  • Baik untuk pembacaan kelembaban 0-100% dengan akurasi 2-5%
  • Baik untuk pembacaan suhu -40 hingga 80 ° C ± 0,5 ° C akurasi
  • Tidak lebih dari 0.5 Hz sampling rate (setiap 2 detik sekali)
  • Ukuran tubuh 27mm x 59mm x 13.5mm (1,05" x 2,32" x 0,53")
  • 4 pin, jarak 0,1"
  • Berat (hanya DHT22): 2.4g

Dibandingkan dengan DHT11, sensor ini lebih presisi, lebih akurat dan bekerja dalam rentang suhu/kelembaban yang lebih besar, tetapi lebih besar dan lebih mahal.

Langkah 9: Hasil DHT22

Hasil DHT22
Hasil DHT22

Ini adalah hasil yang sangat baik dengan sedikit usaha. Pembacaan cukup stabil dan dalam toleransi yang diharapkan. Pembacaan kelembaban adalah bonus.

Anda hanya dapat melakukan pembacaan setiap detik.

Langkah 10: Tes DTH11

Tes DTH11
Tes DTH11

Termometer air raksa saya menunjukkan 21,9 derajat C. Ini adalah DHT11 lama yang saya ambil dari proyek lama dan nilai kelembapannya sangat berbeda dengan pembacaan DHT22 dari beberapa menit yang lalu. Biayanya sekitar $5 / £5.

Deskripsinya meliputi:

  • Baik untuk pembacaan kelembaban 20-80% dengan akurasi 5%
  • Baik untuk pembacaan suhu 0-50 ° C ± 2 ° C akurasi - kurang dari DTH22

Suhu tampaknya masih dalam kisaran akurasi tetapi saya tidak percaya pembacaan kelembaban dari perangkat lama ini.

Langkah 11: BME680

BME680
BME680

Sensor ini berisi suhu, kelembaban, tekanan barometrik, dan kemampuan penginderaan gas VOC dalam satu paket tetapi merupakan sensor yang paling mahal yang diuji di sini. Biayanya sekitar £18,50 / $22. Ada produk serupa tanpa sensor gas yang harganya sedikit lebih murah.

Ini adalah sensor standar emas dari lima. Sensor suhu akurat, dan dengan driver yang sesuai, sangat mudah digunakan. Versi ini menggunakan I2C tetapi papan breakout Adafruit juga dapat menggunakan SPI.

Seperti BME280 & BMP280, sensor presisi dari Bosch ini dapat mengukur kelembaban dengan akurasi ±3%, tekanan barometrik dengan akurasi absolut ±1 hPa, dan suhu dengan akurasi ±1,0°C. Karena tekanan berubah dengan ketinggian, dan pengukuran tekanan sangat baik, Anda juga dapat menggunakannya sebagai altimeter dengan akurasi ±1 meter atau lebih baik!

Dokumentasi mengatakan perlu beberapa 'waktu pembakaran' untuk sensor gas.

Langkah 12: Yang Mana Yang Harus Saya Gunakan?

Yang Mana Yang Harus Saya Gunakan?
Yang Mana Yang Harus Saya Gunakan?
  • TMP36 sangat murah, kecil dan populer tetapi cukup sulit digunakan dan mungkin tidak akurat.
  • DS18B20 kecil, akurat, murah, sangat mudah digunakan dan memiliki versi tahan air.
  • DTH22 juga menunjukkan kelembapan, dengan harga sedang dan mudah digunakan tetapi mungkin terlalu lambat.
  • BME680 melakukan lebih banyak daripada yang lain tetapi mahal.

Jika saya hanya menginginkan suhu, saya akan menggunakan DS18B20 dengan akurasi ±0,5°C tetapi favorit saya adalah BME680 karena ia melakukan lebih banyak hal dan dapat digunakan dalam sejumlah besar proyek yang berbeda.

Satu pemikiran terakhir. Pastikan Anda menjaga sensor suhu Anda jauh dari mikroprosesor. Beberapa HAT Raspberry Pi memungkinkan panas dari papan utama untuk menghangatkan sensor, memberikan pembacaan yang salah.

Langkah 13: Pemikiran dan Eksperimen Lebih Lanjut

Pikiran dan Eksperimen Lebih Lanjut
Pikiran dan Eksperimen Lebih Lanjut

Terima kasih gulliverrr, ChristianC231 dan pgagen atas komentar Anda tentang apa yang telah saya lakukan sejauh ini. Saya minta maaf atas keterlambatannya, tetapi saya sedang berlibur di Irlandia, tanpa akses ke peralatan elektronik saya selama beberapa minggu.

Berikut adalah upaya pertama untuk menunjukkan sensor bekerja sama.

Saya menulis skrip untuk membaca sensor secara bergantian dan mencetak nilai suhu setiap 20 detik atau lebih.

Saya memasukkan kit ke dalam lemari es selama satu jam, untuk mendinginkan semuanya. Saya menghubungkannya ke PC dan meminta Mu untuk mencetak hasilnya. Outputnya kemudian disalin, diubah menjadi file.csv (variabel yang dipisahkan koma) dan grafik diambil dari hasil di Excel.

Dibutuhkan sekitar tiga menit dari mengeluarkan kit dari lemari es sebelum hasilnya dicatat, sehingga beberapa kenaikan suhu telah terjadi dalam interval ini. Saya menduga bahwa keempat sensor memiliki kapasitas termal yang berbeda sehingga akan memanas pada tingkat yang berbeda. Laju pemanasan diperkirakan akan menurun saat sensor mendekati suhu kamar. Saya mencatat ini sebagai 24,4°C dengan termometer air raksa saya.

Perbedaan suhu yang lebar pada awal kurva dapat disebabkan oleh perbedaan kapasitas termal sensor. Saya senang melihat bahwa garis-garis itu menyatu menjelang akhir saat mendekati suhu kamar. Saya khawatir TMP36 selalu jauh lebih tinggi daripada sensor lainnya.

Saya mencari lembar data untuk memeriksa kembali keakuratan yang dijelaskan dari perangkat ini

TMP36

  • ±2°C akurasi di atas suhu (ketik)
  • ±0,5°C linearitas (tip)

DS18B20

±0,5°C Akurasi dari -10 °C hingga +85 °C

DHT22

suhu ± 0,5 ° C

BME680

suhu dengan akurasi ± 1,0 ° C

Langkah 14: Grafik Penuh

Grafik Penuh
Grafik Penuh

Anda sekarang dapat melihat bahwa sensor akhirnya turun dan menyetujui suhu kurang lebih dalam akurasi yang dijelaskan. Jika 1,7 derajat diambil dari nilai TMP36 (±2°C diharapkan) ada kesepakatan yang baik antara semua sensor.

Pertama kali saya menjalankan eksperimen ini, sensor DHT22 menyebabkan masalah:

keluaran main.py:

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

Kesalahan pembacaan DHT: ('Sensor DHT tidak ditemukan, periksa kabel',)

Traceback (panggilan terakhir terakhir):

File "main.py", baris 64, di

File "main.py", baris 59, di get_dht22

NameError: variabel lokal direferensikan sebelum penugasan

Jadi saya memodifikasi skrip untuk mengatasi masalah ini dan memulai kembali perekaman:

Kesalahan pembacaan DHT: ('Sensor DHT tidak ditemukan, periksa kabel',)

25.9, 22.6, -999.0, 22.6

Kesalahan pembacaan DHT: ('Sensor DHT tidak ditemukan, periksa kabel',)

25.9, 22.8, -999.0, 22.7

25.9, 22.9, 22.1, 22.8

25.9, 22.9, 22.2, 22.9

Kesalahan pembacaan DHT: ('Sensor DHT tidak ditemukan, periksa kabel',)

27.1, 23.0, -999.0, 23.0

Kesalahan pembacaan DHT: ('Sensor DHT tidak ditemukan, periksa kabel',)

27.2, 23.0, -999.0, 23.1

25.9, 23.3, 22.6, 23.2

Kesalahan pembacaan DHT: ('Sensor DHT tidak ditemukan, periksa kabel',)

28.4, 23.2, -999.0, 23.3

Kesalahan pembacaan DHT: ('Sensor DHT tidak ditemukan, periksa kabel',)

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

Saya tidak punya masalah dengan putaran kedua. Dokumentasi Adafruit memang memperingatkan bahwa terkadang sensor DHT tidak membaca.

Langkah 15: Kesimpulan

Kesimpulan
Kesimpulan

Kurva ini dengan jelas menunjukkan bahwa kapasitas termal yang lebih tinggi dari beberapa sensor meningkatkan waktu reaksinya.

Semua sensor merekam suhu naik dan turun.

Mereka tidak terlalu cepat untuk menyesuaikan diri dengan suhu baru.

Mereka tidak terlalu akurat. (Apakah mereka cukup baik untuk stasiun cuaca?)

Anda mungkin perlu mengkalibrasi sensor Anda dengan termometer tepercaya.

Direkomendasikan: