Kategori: Litar mikropengawal
Bilangan pandangan: 9996
Komen pada artikel: 0

Mengukur suhu dan kelembapan pada Arduino - pilihan kaedah

 

Untuk membuat stesen cuaca rumah atau termometer, anda perlu belajar bagaimana memasangkan papan Arduino dan alat untuk mengukur suhu dan kelembapan. Pengukuran suhu boleh diuruskan dengan menggunakan termistor atau sensor digital DS18B20, tetapi untuk mengukur kelembapan gunakan peranti yang lebih kompleks - sensor DHT11 atau DHT22. Dalam artikel ini, kami akan menunjukkan kepada anda cara mengukur suhu dan kelembapan menggunakan Arduino dan sensor ini.

Mengukur suhu dan kelembapan pada Arduino - pilihan kaedah

Pengukur Thermistor

Cara termudah untuk menentukan suhu adalah dengan menggunakannya termistor. Ini adalah jenis perintang yang ketahanannya bergantung kepada suhu ambien. Terdapat thermistors dengan pekali rintangan suhu positif dan negatif - PTC (juga dipanggil posistors) dan thermistors NTC, masing-masing.

Dalam graf di bawah, anda dapat melihat ketahanan suhu rintangan. Garis putus-putus menunjukkan kebergantungan untuk thermistor TCS negatif (NTC), dan garis pepejal untuk termistor TCS positif (PTC).

Ketergantungan suhu rintangan

Apa yang kita lihat di sini? Perkara pertama yang menangkap mata anda ialah jadual untuk thermistor PTC rosak dan ia akan menjadi sukar atau mustahil untuk mengukur beberapa nilai suhu, tetapi jadual untuk thermistor NTC adalah lebih kurang seragam, walaupun jelas tidak linear. Apa maksudnya? Menggunakan termistor NTC adalah lebih mudah untuk mengukur suhu, kerana lebih mudah untuk mengetahui fungsi yang mana nilai-nilainya berubah.

Untuk menukar suhu ke rintangan, anda secara manual boleh mengeluarkan nilai-nilai, tetapi ini sukar dilakukan di rumah dan anda memerlukan termometer untuk menentukan nilai sebenar suhu medium. Dalam lembaran data sesetengah komponen, jadual seperti itu diberikan, sebagai contoh, untuk satu siri thermistors NTC dari Vishay.

Thermistors Datashit Vishay TC

Kemudian anda boleh mengatur terjemahan melalui cawangan menggunakan fungsi jika ... lain atau switchcase. Walau bagaimanapun, jika tidak ada jadual sedemikian di dalam lembaran data, anda perlu mengira fungsi yang mana rintangan berubah dengan peningkatan suhu.

Untuk menggambarkan perubahan ini, persamaan Steinhart-Hart wujud.

Persamaan Steinhart-hart

di mana A, B dan C adalah pemalar termistor yang ditentukan dengan mengukur tiga suhu dengan perbezaan sekurang-kurangnya 10 darjah Celsius. Pada masa yang sama, sumber yang berbeza menunjukkan bahawa untuk thermistor 10 kΩ NTC biasa mereka sama dengan:

Pemalar termistor

B - pekali beta, ia dikira berdasarkan ukuran rintangan bagi dua suhu yang berbeza. Ia ditunjukkan sama ada dalam lembaran data (seperti digambarkan di bawah), atau dikira secara berasingan.

B - pekali beta dari datasheet

Dalam kes ini, B ditunjukkan dalam bentuk:

nisbah beta

Ini bermakna pekali dikira atas dasar data yang diperoleh apabila mengukur rintangan pada suhu 25 dan 100 darjah Celsius, dan ini adalah varian yang paling biasa. Kemudian ia dikira dengan formula:

B = (ln (R1) - ln (R2)) / (1 / T1 - 1 / T2)

Gambarajah sambungan tipikal termistor ke mikrokontroler ditunjukkan di bawah.

Rajah rajah termistor ke mikrokontroler

Di sini R1 adalah perintang berterusan, termistor disambungkan kepada sumber kuasa, dan data diambil dari titik tengah di antara mereka, gambarajah secara konduktif menunjukkan bahawa isyarat dibekalkan kepada pin A0 - ini Arduino input analog.

Rajah rajah termistor ke mikrokontroler

Untuk mengira rintangan termistor, anda boleh menggunakan formula berikut:

R termistor = R1⋅ ((Vcc / Voutput) -1)

Untuk menterjemahkan ke dalam bahasa yang boleh difahami untuk arduino, anda perlu ingat bahawa arduino mempunyai ADC 10-bit, sehingga nilai digital maksimum isyarat input (voltan 5V) akan menjadi 1023. Kemudian, secara kondisional:

  • Dmax = 1023;

  • D ialah nilai sebenar isyarat.

Kemudian:

R termistor = R1 ⋅ ((Dmax / D) -1)

Kini kita menggunakan ini untuk mengira rintangan dan kemudian mengira suhu termistor menggunakan persamaan beta dalam bahasa pengaturcaraan untuk Arduino. Lakaran akan seperti ini:

Lakaran

DS18B20

Malah lebih popular untuk mengukur suhu dengan.Arduino mendapati sensor digital DS18B20. Ia berkomunikasi dengan mikrokontroler melalui antara muka 1-wayar, anda boleh menyambung beberapa sensor (sehingga 127) ke satu wayar, dan untuk mengaksesnya, anda perlu mengetahui ID setiap sensor.

Nota: anda harus tahu ID walaupun anda hanya menggunakan 1 sensor.

Sensor Digital DS18B20

Gambar rajah sambungan sensor ds18b20 ke Arduino kelihatan seperti ini:

Gambarajah sambungan sensor ds18b20 ke Arduino
Gambarajah sambungan sensor ds18b20 ke Arduino

Terdapat juga mod kuasa parasit - rajah sambungannya kelihatan seperti ini (anda memerlukan dua wayar bukannya tiga):

Rajah sambungan sensor Arduino

Dalam mod ini, operasi yang betul tidak dijamin apabila mengukur suhu melebihi 100 darjah Celsius.

Sensor suhu digital DS18B20 terdiri daripada satu set keseluruhan nod, seperti mana-mana SIMS lain. Anda boleh menonton peranti dalamannya di bawah:

Sensor Suhu Digital DS18B20

Untuk bekerja dengannya, anda perlu memuat turun pustaka Onewire untuk Arduino, dan untuk sensor sendiri ia disyorkan untuk menggunakan perpustakaan DallasTemperature.

Lakaran

Contoh kod ini menunjukkan asas-asas kerja dengan 1 sensor suhu, hasil darjah Celcius dihasilkan melalui port bersiri selepas setiap bacaan.


DHT11 dan DHT22 - kelembapan dan suhu sensor

DHT11 dan DHT22 - kelembapan dan suhu sensor

Sensor ini popular dan sering digunakan untuk mengukur kelembapan dan suhu ambien. Dalam jadual di bawah, kami menunjukkan perbezaan utama mereka.

 
DHT11
DHT22
Penentuan kelembapan dalam julat
20-80%
0-100%
Ketepatan pengukuran
5%
2-5%
Penentuan suhu
0 ° C hingga + 50 ° C
-40 ° C hingga + 125 ° C
Ketepatan pengukuran
2,5%
ditambah atau tolak 0.5 darjah Celsius
Kekerapan undian
1 kali sesaat
1 kali dalam 2 saat
Rangkaian sambungan untuk sensor kelembapan untuk arduino

Gambar rajah sambungan agak mudah:

  • 1 kesimpulan - pemakanan;

  • 2 kesimpulan - data;

  • 3 kesimpulan - tidak digunakan;

  • 4 kesimpulan - dawai umum.

Sekiranya anda mempunyai sensor dalam bentuk modul, ia akan mempunyai tiga output, tetapi anda tidak memerlukan perintang - ia sudah disalurkan ke papan.

Rangkaian sambungan sensor kelembapan dalam bentuk modul untuk arduino

Untuk kerja, kita memerlukan pustaka dht.h, tidak ada dalam set standard, jadi ia perlu dimuat turun dan dipasang dalam folder perpustakaan dalam folder dengan arduino IDE. Ia menyokong semua sensor dalam keluarga ini:

  • DHT 11;

  • DHT 21 (AM2301);

  • DHT 22 (AM2302, AM2321).

Contoh penggunaan perpustakaan:

Contoh Penggunaan Perpustakaan

Kesimpulannya

Pada masa kini, mewujudkan stesen anda sendiri untuk mengukur suhu dan kelembapan adalah sangat mudah terima kasih kepada platform Arduino. Kos projek sedemikian ialah 3-4 ratus rubel. Untuk hayat bateri, dan bukan output ke komputer, boleh digunakan paparan aksara (kami menerangkannya dalam artikel baru-baru ini), maka anda boleh membina alat mudah alih untuk digunakan di rumah dan di dalam kereta. Tulis di dalam komen apa lagi yang anda ingin pelajari mengenai kraf buatan sendiri yang ringkas di arduino!

Lihat juga topik ini:Sensor popular untuk Arduino - sambungan, gambar rajah, lakaran

Lihat juga di i.electricianexp.com:

  • Sensor yang paling popular untuk Arduino
  • Menyambung sensor analog ke Arduino, membaca sensor
  • Penggunaan jambatan Wheatstone untuk mengukur kuantiti bukan elektrik
  • Sensor suhu. Bahagian Dua Thermistors
  • Sensor kelembapan - bagaimana ia disusun dan berfungsi

  •