Isi kandungan:

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

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

Video: Menguji Sensor Suhu - Yang Mana Satu untuk Saya?: 15 Langkah (dengan Gambar)
Video: Kecurangan penjual gas elpiji!!!!! 2024, November
Anonim
Menguji Sensor Suhu - Yang Mana Satu untuk Saya?
Menguji Sensor Suhu - Yang Mana Satu untuk Saya?

Salah satu sensor pertama yang ingin dicuba oleh pendatang baru dalam pengkomputeran fizikal adalah mengukur suhu. Empat dari sensor yang paling popular adalah TMP36, yang mempunyai output analog dan memerlukan penukar analog ke digital, DS18B20, yang menggunakan sambungan satu dawai, DHT22, atau DHT11 yang sedikit lebih murah, yang hanya memerlukan pin digital, tetapi juga memberikan bacaan kelembapan, dan terakhir BME680 yang menggunakan I2C (dengan SPI juga pada beberapa papan pelarian) dan memberikan suhu, kelembapan, gas (VOC) dan tekanan atmosfera tetapi harganya lebih mahal.

Saya ingin melihat sejauh mana tepatnya, dan mengetahui kelebihan atau kekurangan. Saya sudah memiliki termometer merkuri yang tepat, yang tersisa dari percetakan fotografi warna pada masa pemprosesan kimia, untuk membandingkannya. (Jangan sekali-kali membuang sesuatu - anda akan memerlukannya kemudian!)

Saya akan menggunakan CircuitPython dan papan pengembangan Adafruit Itsybitsy M4 untuk ujian ini. Pemacu yang sesuai tersedia untuk semua peranti.

Bekalan

Senarai awal saya:

  • Mikrokontroler Itsybitsy M4 Express
  • kabel USB mikro - untuk pengaturcaraan
  • TMP36
  • DS18B20
  • Perintang Ohm 4.7K
  • DHT22
  • BME680
  • Berbilang meter
  • Papan roti atau papan jalur
  • Wayar penyambung

Langkah 1: Litar

Litar
Litar

Wayar oren berukuran 3.3 V

Wayar hitam adalah GND

Di bahagian bawah papan terdapat titik ujian untuk mengukur voltan. (Output analog 3.3v, GND dan TMP36)

Soket tengahnya, dari kiri ke kanan:

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

Penyambung belakang, untuk sambungan ke papan IB M4E, dari kiri ke kanan

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

Perintang Ohm 4.7K adalah penarikan dari isyarat ke 3.3v untuk sambungan 0ne-wire pada DS18B20.

Terdapat 2 jalur pemotongan di bahagian belakang papan:

Di bawah hujung kiri wayar merah jambu dan putih. (Di bawah wayar kuning.)

Langkah 2: Kaedah

Kaedah
Kaedah

Untuk setiap sensor saya akan menulis skrip pendek untuk membaca suhu (dan item lain jika ada) beberapa kali dan memeriksa suhu terhadap termometer merkuri (Hg) saya. Saya akan melihat sejauh mana suhu dibandingkan dengan bacaan merkuri dan jika bacaannya stabil / konsisten.

Saya juga akan melihat dokumentasi untuk melihat apakah bacaan sesuai dengan ketepatan yang diharapkan dan jika ada yang boleh dilakukan untuk membuat penambahbaikan.

Langkah 3: TMP36 - Percubaan Awal

TMP36 - Percubaan Awal
TMP36 - Percubaan Awal
TMP36 - Percubaan Awal
TMP36 - Percubaan Awal

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

Jadi, 750 milivolt memberi suhu 25 C

Nampaknya terdapat beberapa masalah di sini. Suhu dari 'normal', termometer merkuri, jauh lebih rendah daripada dari TMP36 dan pembacaannya tidak begitu konsisten - terdapat 'jitter' atau bunyi bising.

Sensor TMP36 menghantar voltan berkadar dengan suhu. Ini mesti dibaca oleh penukar A / D sebelum suhu dikira. Mari baca voltan terus dari kaki tengah sensor dengan jarak beberapa meter dan bandingkan dengan hasil dari A / D. Bacaan dari kaki tengah dengan meter pelbagai saya ialah 722 milivolt, jauh lebih rendah dan bacaannya sangat mantap.

Ada dua perkara yang boleh kita cuba. Gantikan potensiometer untuk TMP36 dan sesuaikan voltan dalam pengiraan dengan voltan sebenar mikrokontroler. Kami kemudian akan melihat apakah voltan yang dikira lebih dekat dan jika bunyi / jitter dikurangkan.

Mari kita ukur voltan sebenar yang digunakan mikrokontroler saya dan A / D. Ini dianggap 3.3v tetapi sebenarnya hanya 3.275v.

Langkah 4: Hasil Penggantian Potensiometer

Hasil Penggantian Potensiometer
Hasil Penggantian Potensiometer

Ini jauh lebih baik. Pembacaannya dalam beberapa milivolt dengan kebisingan yang jauh lebih sedikit. Ini menunjukkan bahawa kebisingan adalah dari TMP36 dan bukannya A / D. Bacaan pada meter sentiasa stabil - tidak ada kegelisahan. (Meter mungkin 'melicinkan' output kegelisahan.)

Salah satu cara untuk memperbaiki keadaan adalah dengan membaca rata-rata. Ambil sepuluh bacaan dengan cepat dan gunakan purata. Saya juga akan mengira sisihan piawai semasa saya mengubah program, untuk memberi petunjuk penyebaran hasilnya. Saya juga akan mengira bilangan bacaan dalam 1 sisihan piawai dari min - semakin tinggi semakin baik.

Langkah 5: Bacaan Purata dan Hasilnya

Bacaan Purata dan Hasilnya
Bacaan Purata dan Hasilnya

Masih banyak bunyi dan bacaan dari TMP36 masih lebih tinggi daripada termometer merkuri. Untuk mengurangkan bunyi, saya telah memasukkan kapasitor 100NF antara isyarat dan GND

Saya kemudian mencari penyelesaian lain di internet dan menjumpainya: https://www.doctormonk.com/2015/02/tepat-dan-re… Dr Monk mencadangkan memasukkan perintang 47 k Ohm antara isyarat dan GND.

www.desert-home.com/2015/03/battery-operate… Sementara lelaki ini mencadangkan menyusun 15 bacaan mengikut urutan dan rata-rata pusat 5.

Saya mengubah suai skrip dan litar untuk memasukkan cadangan ini dan memasukkan bacaan dari termometer merkuri.

Akhirnya! Sekarang kita mempunyai bacaan yang stabil dalam julat ketepatan keterangan peranti.

Ini adalah banyak usaha untuk membuat sensor berfungsi yang hanya mempunyai ketepatan pengeluar:

Ketepatan - Tertinggi (Terendah): ± 3 ° C (± 4 ° C) Mereka hanya berharga kira-kira $ 1,50 (£ 2)

Langkah 6: DS18B20 - Ujian Awal

DS18B20 - Ujian Awal
DS18B20 - Ujian Awal

Berhati-hati. Pakej ini kelihatan sangat mirip dengan TMP36 tetapi kaki adalah sebaliknya dengan 3.3v di sebelah kanan dan GND di sebelah kiri. Isyarat keluar berada di tengah. Untuk membolehkan peranti ini berfungsi, kita memerlukan perintang Ohm 4,7 k antara isyarat dan 3.3v. Peranti ini menggunakan protokol satu wayar dan kita perlu memuat turun beberapa pemacu ke dalam folder lib di Itsybitsy M4 Express.

Ini berharga kira-kira $ 4 / £ 4 Spesifikasi teknikal:

  • Julat suhu yang boleh digunakan: -55 hingga 125 ° C (-67 ° F hingga + 257 ° F)
  • Resolusi 9 hingga 12 bit yang boleh dipilih
  • Menggunakan antara muka 1-Wire - hanya memerlukan satu pin digital untuk komunikasi
  • ID 64 bit unik dibakar menjadi cip
  • Pelbagai sensor boleh berkongsi satu pin
  • ± 0.5 ° C Ketepatan dari -10 ° C hingga + 85 ° C
  • Sistem penggera had suhu
  • Masa pertanyaan kurang daripada 750ms
  • Boleh digunakan dengan kuasa 3.0V hingga 5.5V

Masalah utama sensor ini ialah ia menggunakan antara muka Dallas 1-Wire dan tidak semua pengawal mikro mempunyai pemacu yang sesuai. Kami bernasib baik, ada pemandu untuk Itsybitsy M4 Express.

Langkah 7: DS18B20 Berfungsi Dengan Baik

DS18B20 Berfungsi Dengan Baik
DS18B20 Berfungsi Dengan Baik

Ini menunjukkan hasil yang luar biasa.

Satu set bacaan yang stabil tanpa perlu ada kerja tambahan dan perbelanjaan pengiraan. Pembacaan berada dalam julat ketepatan yang diharapkan ± 0.5 ° C jika dibandingkan dengan termometer merkuri saya.

Terdapat juga versi kalis air sekitar $ 10 yang telah saya gunakan pada masa lalu dengan kejayaan yang sama.

Langkah 8: DHT22 dan DHT11

DHT22 dan DHT11
DHT22 dan DHT11

DHT22 menggunakan termistor untuk mendapatkan suhu dan harganya sekitar $ 10 / £ 10 dan merupakan saudara DHT11 yang lebih tepat dan mahal. Ia juga menggunakan antara muka satu wayar tetapi TIDAK serasi dengan protokol Dallas yang digunakan dengan DS18B20. Ia merasakan kelembapan dan suhu. Peranti ini kadangkala memerlukan perintang penarik antara 3.3 v dan pin isyarat. Pakej ini sudah dipasang.

  • Kos rendah
  • Kuasa 3 hingga 5V dan I / O
  • 2.5mA penggunaan semasa maksimum semasa penukaran (semasa meminta data)
  • Baik untuk bacaan kelembapan 0-100% dengan ketepatan 2-5%
  • Baik untuk bacaan suhu -40 hingga 80 ° C ketepatan ± 0.5 ° C
  • Tidak lebih dari 0,5 Hz kadar persampelan (sekali setiap 2 saat)
  • Ukuran badan 27mm x 59mm x 13.5mm (1.05 "x 2.32" x 0.53 ")
  • 4 pin, jarak 0.1"
  • Berat (hanya DHT22): 2.4g

Berbanding dengan DHT11, sensor ini lebih tepat, lebih tepat dan berfungsi dalam julat suhu / kelembapan yang lebih besar, tetapi lebih besar dan lebih mahal.

Langkah 9: Hasil DHT22

Keputusan DHT22
Keputusan DHT22

Ini adalah hasil yang sangat baik dengan sedikit usaha. Bacaannya cukup stabil dan dalam toleransi yang diharapkan. Bacaan kelembapan adalah bonus.

Anda hanya boleh membaca setiap saat.

Langkah 10: Ujian DTH11

Ujian DTH11
Ujian DTH11

Termometer merkuri saya menunjukkan 21.9 darjah C. Ini adalah DHT11 yang cukup lama yang saya ambil dari projek lama dan nilai kelembapannya sangat berbeza dengan bacaan DHT22 dari beberapa minit yang lalu. Harganya sekitar $ 5 / £ 5.

Penerangannya merangkumi:

  • Baik untuk bacaan kelembapan 20-80% dengan ketepatan 5%
  • Baik untuk bacaan suhu 0-50 ° C ketepatan ± 2 ° C - kurang daripada DTH22

Suhu nampaknya masih dalam julat ketepatan tetapi saya tidak mempercayai bacaan kelembapan dari peranti lama ini.

Langkah 11: BME680

BME680
BME680

Sensor ini mengandungi keupayaan penginderaan suhu, kelembapan, tekanan barometrik, dan gas VOC dalam satu paket tetapi sensor yang paling mahal diuji di sini. Harganya sekitar £ 18.50 / $ 22. Terdapat produk serupa tanpa sensor gas yang sedikit lebih murah.

Ini adalah sensor standard emas dari lima. Sensor suhu tepat, dan dengan pemacu yang sesuai, sangat mudah digunakan. Versi ini menggunakan I2C tetapi Adafruit breakout board juga dapat menggunakan SPI.

Seperti BME280 & BMP280, sensor ketepatan dari Bosch ini dapat mengukur kelembapan dengan ketepatan ± 3%, tekanan barometrik dengan ketepatan mutlak ± 1 hPa, dan suhu dengan ketepatan ± 1.0 ° C. Kerana tekanan berubah dengan ketinggian, dan pengukuran tekanan sangat baik, anda juga dapat menggunakannya sebagai altimeter dengan ± 1 meter atau ketepatan yang lebih baik!

Dokumentasi mengatakan bahawa ia memerlukan sedikit masa bakar untuk sensor gas.

Langkah 12: Mana Yang Harus Saya Gunakan?

Mana Yang Perlu Saya Gunakan?
Mana Yang Perlu Saya Gunakan?
  • TMP36 sangat murah, kecil dan popular tetapi agak sukar digunakan dan mungkin tidak tepat.
  • DS18B20 kecil, tepat, murah, sangat mudah digunakan dan mempunyai versi kalis air.
  • DTH22 juga menunjukkan kelembapan, harganya sederhana dan mudah digunakan tetapi mungkin terlalu perlahan.
  • BME680 jauh lebih banyak daripada yang lain tetapi mahal.

Sekiranya saya mahukan suhu, saya akan menggunakan DS18B20 dengan ketepatan ± 0.5 ° C tetapi kegemaran saya adalah BME680 kerana ia melakukan lebih banyak lagi dan dapat digunakan dalam sebilangan besar projek yang berbeza.

Satu pemikiran terakhir. Pastikan anda menjauhkan sensor suhu anda dari mikropemproses. Beberapa HAT Raspberry Pi membenarkan haba dari papan utama memanaskan sensor, memberikan bacaan yang salah.

Langkah 13: Pemikiran dan Eksperimen Lebih Lanjut

Pemikiran dan Eksperimen Lebih Lanjut
Pemikiran dan Eksperimen Lebih Lanjut

Terima kasih gulliverrr, ChristianC231 dan pgagen atas komen anda mengenai apa yang telah saya lakukan setakat ini. Saya minta maaf atas kelewatan itu tetapi saya telah bercuti di Ireland, tanpa akses ke alat elektronik saya selama beberapa minggu.

Berikut adalah percubaan pertama untuk menunjukkan sensor bekerjasama.

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

Saya memasukkan kit ke dalam peti sejuk selama satu jam, untuk menyejukkan semuanya. Saya memasangkannya ke PC dan mendapat Mu untuk mencetak hasilnya. Hasilnya kemudian disalin, berubah menjadi file.csv (pemboleh ubah yang dipisahkan dengan koma) dan grafik diambil dari hasil di Excel.

Ia mengambil masa kira-kira tiga minit dari mengeluarkan kit dari peti sejuk sebelum hasilnya direkodkan, sehingga kenaikan suhu berlaku dalam selang waktu ini. Saya mengesyaki bahawa keempat-empat sensor mempunyai kapasiti terma yang berbeza dan akan menjadi panas pada kadar yang berbeza. Laju pemanasan dijangka menurun ketika sensor mendekati suhu bilik. Saya mencatatkan ini sebagai 24.4 ° C dengan termometer merkuri saya.

Perbezaan suhu yang luas pada permulaan lengkung mungkin bergantung pada kapasiti terma yang berbeza dari sensor. Saya gembira melihat bahawa garis-garis bercantum hingga akhir ketika menghampiri suhu bilik. Saya bimbang bahawa TMP36 selalu jauh lebih tinggi daripada sensor lain.

Saya mencari helaian data untuk memeriksa semula ketepatan peranti yang dinyatakan

TMP36

  • Ketepatan ± 2 ° C melebihi suhu (tip)
  • Lineariti ± 0.5 ° C (tip)

DS18B20

± 0.5 ° C Ketepatan dari -10 ° C hingga + 85 ° C

DHT22

suhu ± 0.5 ° C

BME680

suhu dengan ketepatan ± 1.0 ° C

Langkah 14: Grafik Penuh

Graf Penuh
Graf Penuh

Anda kini dapat melihat bahawa sensor akhirnya meratakan dan menyetujui suhu lebih kurang dalam ketepatan yang dijelaskan. Sekiranya 1,7 darjah dilepaskan dari nilai TMP36 (± 2 ° C diharapkan) ada persetujuan yang baik antara semua sensor.

Kali pertama saya menjalankan eksperimen ini, sensor DHT22 menyebabkan masalah:

output utama.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

Ralat membaca DHT: ('Sensor DHT tidak dijumpai, periksa pendawaian',)

Jejak balik (panggilan terakhir terakhir):

Fail "main.py", baris 64, dalam

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

NameError: pemboleh ubah tempatan yang dirujuk sebelum tugasan

Oleh itu, saya mengubah suai skrip untuk mengatasi masalah ini dan memulakan semula rakaman:

Ralat membaca DHT: ('Sensor DHT tidak dijumpai, periksa pendawaian',)

25.9, 22.6, -999.0, 22.6

Ralat membaca DHT: ('Sensor DHT tidak dijumpai, periksa pendawaian',)

25.9, 22.8, -999.0, 22.7

25.9, 22.9, 22.1, 22.8

25.9, 22.9, 22.2, 22.9

Ralat membaca DHT: ('Sensor DHT tidak dijumpai, periksa pendawaian',)

27.1, 23.0, -999.0, 23.0

Ralat membaca DHT: ('Sensor DHT tidak dijumpai, periksa pendawaian',)

27.2, 23.0, -999.0, 23.1

25.9, 23.3, 22.6, 23.2

Ralat membaca DHT: ('Sensor DHT tidak dijumpai, periksa pendawaian',)

28.4, 23.2, -999.0, 23.3

Ralat membaca DHT: ('Sensor DHT tidak dijumpai, periksa pendawaian',)

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 mempunyai masalah dengan larian kedua. Dokumentasi Adafruit memberi amaran bahawa kadang-kadang sensor DHT tidak membaca bacaan.

Langkah 15: Kesimpulan

Kesimpulannya
Kesimpulannya

Lengkung ini jelas menunjukkan bahawa kapasiti termal yang lebih tinggi dari beberapa sensor meningkatkan masa tindak balas mereka.

Semua sensor mencatatkan suhu naik dan turun.

Mereka tidak terlalu cepat untuk mencapai suhu baru.

Mereka tidak begitu tepat. (Adakah mereka cukup baik untuk stesen cuaca?)

Anda mungkin perlu mengkalibrasi sensor anda terhadap termometer yang dipercayai.

Disyorkan: