Isi kandungan:

Pengawal Rangkaian Sensor Suhu Toleran Kesalahan: 8 Langkah
Pengawal Rangkaian Sensor Suhu Toleran Kesalahan: 8 Langkah

Video: Pengawal Rangkaian Sensor Suhu Toleran Kesalahan: 8 Langkah

Video: Pengawal Rangkaian Sensor Suhu Toleran Kesalahan: 8 Langkah
Video: 6 Ciri-Ciri Sensor ECT Mobil Rusak - (Engine Coolant Temperature Sensor) 2024, November
Anonim
Pengawal Rangkaian Sensor Suhu Toleran Kesalahan
Pengawal Rangkaian Sensor Suhu Toleran Kesalahan

Instructable ini menunjukkan kepada anda cara menukar papan Arduino Uno menjadi pengawal satu tujuan untuk satu set sensor suhu DS18B20 yang mampu mengasingkan sensor yang automatik.

Pengawal boleh menguruskan sehingga 8 sensor dengan Arduino Uno. (Dan lebih banyak lagi dengan Arduino Mega atau dengan sedikit pengubahsuaian perisian.)

Langkah 1: Kisah Di Sebalik…

Beberapa tahun yang lalu saya menyediakan rangkaian sensor suhu DS18B20 di rumah hijau ayah saya untuk alat kawalan pemanasan berasaskan pi saya. Malangnya, kebolehpercayaan alat kawalan buruk terutama disebabkan oleh gangguan sensor yang kerap. Saya mencuba pelbagai persediaan - kuasa parasit, kuasa langsung, menghubungkan rangkaian ke pi serta menyambungkannya ke papan adat berasaskan Atmega (tujuan utamanya adalah untuk menggerakkan motor injap).

Lebih teruk lagi, kebolehpercayaan rangkaian sensor menurun terutamanya pada malam musim sejuk sementara hampir tidak ada masalah pada musim panas! Apa yang sedang berlaku di sini?

Untuk menyiasat sensor mana yang menyebabkan masalah, muncul keperluan untuk menghidupkan / mematikannya satu persatu atau mengaktifkan gabungannya.

Langkah 2: Bagaimana Ia Berfungsi

DS18B20 (sensor suhu) menggunakan protokol 1-wayar proprietari yang membolehkan beberapa sensor berkongsi pautan data biasa (satu wayar). Pautan data biasa ini disambungkan ke salah satu pin GPIO Arduino dan ke + 5 V melalui penahan tarik - tidak jarang, banyak petunjuk yang merangkumi persediaan ini.

Caranya adalah bahawa setiap pendorong kuasa sensor disambungkan ke pin GPIO sendiri (khusus), sehingga mereka dapat dihidupkan dan dimatikan secara berasingan. Sebagai contoh, jika sensor mempunyai plumbum Vcc yang disambungkan ke pin # 3 dan GND ke pin # 2, tetapan pin # 3 ke TINGGI memberikan daya untuk sensor (tidak mengejutkan) sementara menetapkan pin # 2 ke RENDAH memberikan ground (kejutan kecil untuk saya). Menetapkan kedua pin ke mod input akan (hampir) mengasingkan sepenuhnya sensor dan pendawaiannya - tidak kira apa kegagalan (mis. Jalan pintas) di dalamnya, ia tidak akan mengganggu yang lain.

(Adil mengatakan bahawa menyambungkan wayar data ke sesuatu yang lain yang berkaitan dengan Arduino memang akan menyebabkan gangguan, tetapi hampir mustahil dalam penyediaan saya).

Perhatikan bahawa DS18B20 menggunakan hingga 1, 5 mA sementara satu pin Arduino dapat sumber / tenggelam hingga 40 mA, jadi sangat selamat untuk menghidupkan sensor dengan pin GPIO secara langsung.

Langkah 3: Bahan & Alat

Bahan

  • 1 papan Arduino UNO
  • 3 tajuk pin wanita: 1 × 4, 1 × 6 dan 1 × 6 (atau lebih lama - saya memotongnya dari satu tajuk 1 × 40)
  • gam
  • sehelai dawai tembaga telanjang (sekurang-kurangnya 10 cm)
  • pita penebat
  • penggunaan bahan pematerian (wayar, fluks…)

Alat

  • peralatan pematerian (besi, pemegang, …)
  • tang pemotong kecil

Langkah 4: Selesaikan Perkara Bersama

Selesaikan Perkara Bersama
Selesaikan Perkara Bersama

Lekatkan tajuk pin wanita ke tajuk papan Arduino:

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

Perhatikan bahawa tajuk saya sedikit lebih lama … ia tidak mempunyai keburukan dan tidak ada kebaikan yang saya kira.

Langkah 5: Wire Things Bersama

Perkara Kawat Bersama
Perkara Kawat Bersama
Perkara Kawat Bersama
Perkara Kawat Bersama

Pendawaian talian bas 1 wayar:

  1. Sambungkan semua pengepala kepala terpaku pada sisi "digital" (bersebelahan dengan pin 2–13) dengan memateri sekeping wayar telanjang pada mereka
  2. Pateri hujung wayar ini ke plumbum pin SCL (disambungkan secara dalaman ke A5)
  3. Sambungkan semua petunjuk kepala terpaku pada sisi "analog" (pin A0 – A3) dengan memateri sekeping wayar telanjang pada mereka
  4. Selesaikan hujung wayar ini ke petunjuk A4 dan A5 (Saya menggunakan A5 dan A6 kerana saya mempunyai papan yang mempunyai A6 & A7)
  5. Pateri perintang 4k7 antara hujung wayar ini yang lain dan plumbum pin +5 V

Catatan:

  • Pin A0 – A5, walaupun ditandakan sebagai "analog", boleh juga digunakan sebagai pin digital GPIO.
  • Pin SCL di sisi "digital" dihubungkan secara dalaman ke A5 di sebelah "analog"; disambungkan ke header, ini membentuk talian bus 1 wayar
  • A4 (digunakan sebagai input analog) mengukur voltan bas untuk tujuan diagnostik. Itulah sebab mengapa ia dihubungkan terus ke bas.
  • Saya menggunakan A6 dan bukan A4 kerana saya mempunyai papan yang mempunyai A6 & A7; pada asalnya saya mahu menggunakan A7 sebagai master bus 1 wayar tetapi kedua pin ini tidak dapat dikonfigurasikan untuk menjadi GPIO digital.
  • Untuk mengelakkan penyambungan penyambung sensor yang salah, anda boleh menghilangkan / memotong kenalan yang tidak digunakan (tidak disambungkan ke wayar apa pun) dari setiap penyambung lelaki dan memasukkannya ke lubang yang sesuai pada header pin terpaku.

Langkah 6: Menyambungkan Sensor

Menyambungkan Sensor
Menyambungkan Sensor

Anda baru membuat susunan lapan soket 2 × 2. Anda boleh menyolder dan memasang penyambung 2 × 2 Dupont ke kabel sensor dan menyambungkannya ke soket ini. Perisian ini mengkonfigurasi pin sehingga pin gen adalah pin GND dan pin ganjil adalah pin Vcc. Untuk setiap sensor, pin Vcc hanyalah pin GND + 1. Salah satu pin lain dari soket 2 × 2 (salah satu dari kedua di kepala terpaku & dipateri) adalah untuk wayar data sensor. Tidak kira yang anda gunakan.

Langkah 7: Perisian Pengawal

Perisian Pengawal
Perisian Pengawal

Lakaran SerialThermometer menjalankan pengawal. Anda boleh menemuinya di github. Buka dan muat naik menggunakan Arduino IDE.

Langkah demi langkah:

  1. Buka Arduino IDE anda dan pasang perpustakaan DallasTemperature dan semua pergantungannya melalui Sketch | Sertakan Perpustakaan | Urus Perpustakaan.
  2. Repositori klon git. Sekiranya tidak biasa dengan git, muat turun dan bongkar zip ini di mana sahaja di komputer anda.
  3. Buka lakaran SerialThermometer di Arduino IDE anda.
  4. Sambungkan papan Arduino yang diubah suai ke komputer anda dengan kabel USB (cara standard)
  5. Muat naik lakaran menggunakan Arduino IDE anda
  6. Buka Monitor Bersiri melalui Alat | Monitor Bersiri
  7. Anda harus melihat output diagnostik yang mengandungi beberapa pengukuran fizikal diikuti dengan bacaan suhu - setiap soket sensor pada satu baris. Sekiranya bilangan sensor berbeza apabila dihidupkan secara berasingan dan ketika semuanya dihidupkan bersama), gelung diagnostik sehingga diselesaikan. Tetapi jangan risau, diagnostik juga menyediakan pengukuran suhu!

Lihat gambar beranotasi untuk lebih terperinci mengenai output diagnostik.

Langkah 8: Kesimpulannya

Saya mempunyai perasaan kuat bahawa kegagalan rangkaian sensor saya disebabkan oleh kapasiti tinggi pendawaian panjang saya - sekitar 10 m kabel LIYY 314 (3 × 0, 14 mm²) untuk setiap sensor. Eksperimen saya menunjukkan bahawa komunikasi terputus jika terdapat kapasitansi sekitar atau lebih tinggi dari 0,01 μF antara bus 1-wayar dan tanah, saya rasa kerana perintang pull-up 4k7 tidak dapat menarik bus hingga + 5 V cukup pantas untuk mematuhi had protokol.

Dalam persediaan saya, ia berlaku apabila lebih daripada 3 sensor disambungkan bersama. Kemudian, pengawal bergerak dalam kitaran diagnostik, mengukur suhu dengan sensor (apa yang sejuk juga …)

Tetapi juga sensor ke-5 (28: ff: f2: 41: 51: 17: 04: 31) kelihatan agak sakit (mungkin salah pematerian), jadi saya boleh menyiasat lebih lanjut!

Disyorkan: