Daftar Isi:

Termostat Berbasis Arduino: 6 Langkah
Termostat Berbasis Arduino: 6 Langkah

Video: Termostat Berbasis Arduino: 6 Langkah

Video: Termostat Berbasis Arduino: 6 Langkah
Video: Cara Setting Modul XH-W1209 12V kontrol suhu Otomatis On Off 2024, November
Anonim
Termostat Berbasis Arduino
Termostat Berbasis Arduino
Termostat Berbasis Arduino
Termostat Berbasis Arduino
Termostat Berbasis Arduino
Termostat Berbasis Arduino

Kali ini kita akan membuat Thermostat berbasis Arduino, sensor suhu dan relay. Anda dapat menemukannya di github

Langkah 1: Konfigurasi

Konfigurasi
Konfigurasi

Seluruh konfigurasi disimpan di Config.h. Anda dapat mengubah PIN yang mengontrol relai, suhu pembacaan, ambang batas, atau pengaturan waktu.

Langkah 2: Mengkonfigurasi Relay

Mari kita asumsikan bahwa kita ingin memiliki 3 relay:

  • ID:0, PIN: 1, Titik setel suhu: 20
  • ID: 1, PIN: 10, Titik setel suhu: 30
  • ID:2, PIN: 11, Titik setel suhu: 40

Pertama, Anda harus memastikan bahwa PIN pilihan Anda belum diambil. Semua pin dapat ditemukan di Config.h, mereka didefinisikan oleh variabel yang dimulai dengan DIG_PIN.

Anda harus mengedit Config.h dan mengonfigurasi PIN, ambang batas, dan jumlah relai. Jelas beberapa properti sudah ada, jadi Anda tinggal mengeditnya.

const static uint8_t DIG_PIN_RELAY_0 = 1;const static uint8_t DIG_PIN_RELAY_1 = 10; const static uint8_t DIG_PIN_RELAY_2 = 11;

const static uint8_t RELAYS_AMOUNT = 3;

const static int16_t RELAY_TEMP_SET_POINT_0 = 20;

const static int16_t RELAY_TEMP_SET_POINT_1 = 30; const static int16_t RELAY_TEMP_SET_POINT_2 = 40;

Sekarang kita harus mengatur relai dan pengontrol, ini terjadi di RelayDriver.cpp

initRelayHysteresisController(0, DIG_PIN_RELAY_0, RELAY_TEMP_SET_POINT_0);initRelayHysteresisController(1, DIG_PIN_RELAY_1, RELAY_TEMP_SET_POINT_1); initRelayHysteresisController(2, DIG_PIN_RELAY_2, RELAY_TEMP_SET_POINT_2);

xxx

Langkah 3: Pengontrol Histeresis

Itu yang dipilih dalam contoh di atas, ia memiliki beberapa konfigurasi tambahan:

const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 menitconst static uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;

RELAY_DELAY_AFTER_SWITCH_MS memberikan waktu tunggu untuk mengganti relai berikutnya. Bayangkan bahwa konfigurasi dari contoh kita akan mulai bekerja di lingkungan 40 derajat. Ini akan menghasilkan pengaktifan ketiga relai secara bersamaan. Ini pada akhirnya dapat menyebabkan konsumsi daya yang tinggi - tergantung pada apa yang Anda kendalikan, mesin listrik misalnya mengkonsumsi lebih banyak daya saat start. Dalam kasus kami, relai pensaklaran memiliki aliran berikut: relai pertama berjalan, tunggu 5 menit, kedua berjalan, tunggu 5 menit, ketiga berjalan.

RHC_RELAY_MIN_SWITCH_MS mendefinisikan histeresis, frekuensi minimum untuk relai tertentu untuk mengubah statusnya. Setelah aktif, itu akan tetap menyala setidaknya selama periode waktu ini, mengabaikan perubahan suhu. Ini sangat berguna jika Anda mengendalikan motor listrik, karena setiap sakelar memiliki dampak negatif pada waktu hidup.

Langkah 4: Pengontrol PID

Pengontrol PID
Pengontrol PID
Pengontrol PID
Pengontrol PID

Ini adalah topik lanjutan. Menerapkan pengontrol semacam itu adalah tugas yang sederhana, menemukan pengaturan amplitudo yang tepat adalah cerita yang berbeda.

Untuk menggunakan pengontrol PID, Anda harus mengubah initRelayHysteresisController(…..) menjadi initRelayPiDController(…) dan Anda perlu menemukan pengaturan yang tepat untuk itu. Seperti biasa Anda akan menemukannya di Config.h

Saya telah mengimplementasikan simulator sederhana di Java, sehingga memungkinkan untuk memvisualisasikan hasilnya. Ini dapat ditemukan di folder: pidsimulator. Di bawah ini Anda dapat melihat simulasi untuk dua pengontrol PID a P. PID tidak sepenuhnya stabil karena saya tidak menerapkan algoritma canggih untuk menemukan nilai yang benar.

Pada kedua plot suhu yang dibutuhkan diatur ke 30 (biru). Suhu saat ini menunjukkan garis baca. Relay memiliki dua keadaan ON dan OFF. Saat diaktifkan, suhu turun 1,5, saat dinonaktifkan, naik 0,5.

Langkah 5: Pesan Bus

Pesan Bus
Pesan Bus
Pesan Bus
Pesan Bus
Bis Pesan
Bis Pesan
Bis Pesan
Bis Pesan

Modul perangkat lunak yang berbeda harus berkomunikasi satu sama lain, semoga tidak dua arah;)

Sebagai contoh:

  • modul statistik harus tahu kapan relai tertentu hidup dan mati,
  • menekan tombol harus mengubah konten tampilan dan juga harus menangguhkan layanan yang akan menghabiskan banyak siklus CPU, misalnya pembacaan suhu dari sensor,
  • setelah beberapa waktu pembacaan suhu harus diperbarui,
  • dan seterusnya….

Setiap modul terhubung ke Bus Pesan dan dapat mendaftar untuk acara tertentu, dan dapat menghasilkan acara apa pun (diagram pertama).

Pada diagram kedua kita dapat melihat aliran acara dengan menekan tombol.

Beberapa komponen memiliki beberapa tugas yang perlu dijalankan secara berkala. Kami dapat memanggil metode yang sesuai dari loop utama, karena kami memiliki Bus Pesan, itu hanya perlu untuk menyebarkan acara yang tepat (diagram ketiga)

Langkah 6: Lib

  • https://github.com/maciejmiklas/Termostat
  • https://github.com/milesburton/Arduino-Temperature…
  • https://github.com/maciejmiklas/ArdLog.git

Direkomendasikan: