Daftar Isi:

Pengontrol Jaringan Sensor Suhu Fault-Tolerant: 8 Langkah
Pengontrol Jaringan Sensor Suhu Fault-Tolerant: 8 Langkah

Video: Pengontrol Jaringan Sensor Suhu Fault-Tolerant: 8 Langkah

Video: Pengontrol Jaringan Sensor Suhu Fault-Tolerant: 8 Langkah
Video: 11 Sensor Suhu (menggunakan thermistor dan transistor) 2024, November
Anonim
Pengontrol Jaringan Sensor Suhu Toleran Kesalahan
Pengontrol Jaringan Sensor Suhu Toleran Kesalahan

Instruksi ini menunjukkan kepada Anda cara mengubah papan Arduino Uno menjadi pengontrol tujuan tunggal untuk satu set sensor suhu DS18B20 yang mampu mengisolasi sensor yang salah secara otomatis.

Kontroler dapat mengelola hingga 8 sensor dengan Arduino Uno. (Dan masih banyak lagi dengan Arduino Mega atau dengan sedikit modifikasi perangkat lunak.)

Langkah 1: Cerita Dibalik…

Beberapa tahun yang lalu saya membuat jaringan sensor suhu DS18B20 di rumah kaca ayah saya untuk pengontrol pemanas berbasis pi saya. Sayangnya, keandalan pengontrol buruk terutama karena seringnya sensor padam. Saya mencoba beberapa pengaturan - daya parasit, daya langsung, menghubungkan jaringan ke pi serta menghubungkannya ke papan kustom berbasis Atmega (yang tujuan utamanya adalah untuk menggerakkan motor katup).

Lebih buruk lagi, keandalan jaringan sensor turun terutama selama malam musim dingin sementara hampir tidak ada masalah di musim panas! Apa yang terjadi di sini?

Untuk menyelidiki sensor mana yang menyebabkan masalah, muncul kebutuhan untuk mengaktifkan/menonaktifkannya satu per satu atau mengaktifkan kombinasi apa pun.

Langkah 2: Cara Kerjanya

DS18B20 (sensor suhu) menggunakan protokol 1-kawat berpemilik yang memungkinkan beberapa sensor berbagi tautan data umum (satu kabel itu). Tautan data umum ini terhubung ke salah satu pin GPIO Arduino dan ke + 5 V melalui resistor pull-up – tidak jarang, banyak instruksi yang mencakup pengaturan ini.

Triknya adalah setiap kabel daya sensor terhubung ke pin GPIO sendiri (khusus), sehingga dapat dinyalakan dan dimatikan secara terpisah. Misalnya, jika sebuah sensor memiliki kabel Vcc yang terhubung ke pin #3 dan GND ke pin #2, menyetel pin #3 ke HIGH memberikan daya untuk sensor (tidak mengejutkan) sementara menyetel pin #2 ke LOW memberikan ground (sedikit kejutan untuk Aku). Menyetel kedua pin ke mode input akan (hampir) sepenuhnya mengisolasi sensor dan kabelnya – tidak peduli kegagalan apa pun (misalnya pintasan) yang terjadi di dalamnya, hal itu tidak akan mengganggu yang lain.

(Adil untuk mengatakan bahwa menghubungkan kabel data ke sesuatu yang lain yang terhubung entah bagaimana ke Arduino memang akan menyebabkan gangguan, tetapi hampir tidak mungkin dalam pengaturan saya).

Perhatikan bahwa DS18B20 mengkonsumsi hingga 1,5 mA sementara satu pin Arduino dapat sumber / tenggelam hingga 40 mA, sehingga sangat aman untuk menyalakan sensor oleh pin GPIO secara langsung.

Langkah 3: Bahan & Alat

Bahan

  • 1 papan Arduino UNO
  • 3 pin header perempuan: 1×4, 1×6 dan 1×6 (atau lebih lama – saya memotongnya dari satu header 1×40)
  • sebuah lem
  • sepotong kawat tembaga telanjang (minimal 10 cm)
  • pita isolasi
  • menyolder bahan habis pakai (kawat, fluks …)

Peralatan

  • peralatan solder (besi, pemegang, …)
  • tang potong kecil

Langkah 4: Perbaiki Hal Bersama

Perbaiki Hal Bersama
Perbaiki Hal Bersama

Rekatkan pin header perempuan ke header papan Arduino:

  1. Header 1×4 di sebelah header pin "analog", berdampingan dengan pin A0–A4
  2. Header 1×6 di sebelah header pin digital pertama, berdampingan dengan pin 2–7
  3. Header 1×6 di sebelah header pin digital kedua, berdampingan dengan pin 8–13

Perhatikan bahwa tajuk saya sedikit lebih panjang … saya kira tidak ada kontra dan tidak ada pro.

Langkah 5: Hubungkan Hal-hal Bersama

Kawat Hal Bersama
Kawat Hal Bersama
Kawat Hal Bersama
Kawat Hal Bersama

Pengkabelan jalur bus 1-kawat:

  1. Hubungkan semua ujung tajuk yang direkatkan di sisi "digital" (berdekatan dengan pin 2–13) dengan menyolder seutas kawat kosong ke sana
  2. Solder ujung kabel ini ke pin pin SCL (terhubung secara internal ke A5)
  3. Hubungkan semua ujung tajuk yang direkatkan di sisi "analog" (pin A0–A3) dengan menyolder sepotong kawat kosong ke sana
  4. Solder ujung kabel ini ke lead A4 dan A5 (saya menggunakan A5 dan A6 karena saya memiliki papan yang memiliki A6 & A7)
  5. Solder resistor 4k7 antara ujung kabel ini dan kabel pin +5 V

Catatan:

  • Pin A0–A5, meskipun ditandai "analog", dapat digunakan sebagai pin digital GPIO juga.
  • Pin SCL di sisi "digital" terhubung secara internal ke A5 di sisi "analog"; terhubung ke header, ini membentuk jalur bus 1-kawat
  • A4 (digunakan sebagai input analog) mengukur tegangan bus untuk tujuan diagnostik. Itulah alasan mengapa terhubung langsung ke bus.
  • Saya menggunakan A6 bukan A4 karena saya memiliki papan yang memiliki A6 & A7; awalnya saya ingin menggunakan A7 sebagai master bus 1-kawat tetapi kedua pin ini tidak dapat dikonfigurasi menjadi GPIO digital.
  • Untuk mencegah koneksi yang salah dari konektor sensor, Anda dapat menghilangkan / memotong kontak yang tidak digunakan (tidak terhubung ke kabel apa pun) dari setiap konektor laki-laki dan memasukkannya ke lubang yang sesuai di header pin yang direkatkan.

Langkah 6: Menghubungkan Sensor

Menghubungkan Sensor
Menghubungkan Sensor

Anda baru saja membuat larik delapan soket 2×2. Anda dapat menyolder dan merakit konektor Dupont 2x2 ke kabel sensor dan menghubungkannya ke soket ini. Perangkat lunak mengonfigurasi pin sehingga pin genap adalah pin GND dan pin ganjil adalah pin Vcc. Untuk setiap sensor, pin Vcc hanyalah pin GND + 1. Salah satu dari dua pin lainnya dari soket 2x2 (salah satunya di header yang direkatkan & disolder) adalah untuk kabel data sensor. Tidak masalah yang Anda gunakan.

Langkah 7: Perangkat Lunak Pengontrol

Perangkat Lunak Pengontrol
Perangkat Lunak Pengontrol

Sketsa SerialThermometer menjalankan pengontrol. Anda dapat menemukannya di github. Buka dan unggah menggunakan Arduino IDE.

Selangkah demi selangkah:

  1. Buka Arduino IDE Anda dan instal perpustakaan DallasTemperature dan semua dependensinya melalui Sketch | Sertakan Perpustakaan | Kelola Perpustakaan.
  2. Kloning repositori git. Jika tidak terbiasa dengan git, unduh dan buka paket zip ini di mana saja di komputer Anda.
  3. Buka sketsa SerialThermometer di Arduino IDE Anda.
  4. Hubungkan papan Arduino Anda yang dimodifikasi ke komputer Anda dengan kabel USB (cara standar)
  5. Unggah sketsa menggunakan Arduino IDE Anda
  6. Buka Serial Monitor melalui Alat | Pemantau Berseri
  7. Anda akan melihat keluaran diagnostik yang berisi beberapa pengukuran fisik diikuti dengan pembacaan suhu – setiap soket sensor pada satu baris. Jika jumlah sensor berbeda saat dihidupkan secara terpisah dan saat semua dihidupkan bersama-sama), loop diagnostik hingga diselesaikan. Tapi jangan khawatir, diagnostik juga menyediakan pengukuran suhu!

Lihat gambar beranotasi untuk detail lebih lanjut tentang keluaran diagnostik.

Langkah 8: Kesimpulan

Saya merasa bahwa kegagalan jaringan sensor saya disebabkan oleh kapasitansi tinggi dari kabel panjang saya – sekitar 10 m kabel LIYY 314 (3 × 0, 14 mm²) untuk setiap sensor. Eksperimen saya menunjukkan bahwa komunikasi terputus jika ada kapasitansi sekitar atau lebih tinggi dari 0,01 F antara bus 1-kawat dan ground, saya pikir karena resistor pull-up 4k7 tidak mampu menarik bus ke + 5 V cukup cepat untuk mematuhi batas protokol.

Dalam pengaturan saya itu terjadi ketika lebih dari 3 sensor terhubung bersama. Kemudian, pengontrol berputar dalam siklus diagnostik, mengukur sensor suhu demi sensor (yang keren juga…)

Tetapi juga sensor ke-5 (28:ff:f2:41:51:17:04:31) terlihat cukup sakit (mungkin salah menyolder), jadi saya bisa menyelidiki lebih lanjut!

Direkomendasikan: