Mengontrol suhu air secara akurat

9

Saya memiliki pengaturan berikut:

  • Arduino Duemilanove
  • Pemanas air kecil terhubung dengan relay optik (PWM baik-baik saja)
  • Sensor suhu tahan air DS18B20
  • Jumlah air yang tidak diketahui (tetapi sensor suhu dan pemanas selalu di bawah air).

Bagaimana cara mengontrol suhu air secara akurat, berdasarkan pembacaan sensor suhu? Secara akurat, maksud saya hingga keakuratan sensor suhu (dalam hal ini, ± 0,5 ° C). Semuanya harus berjalan di Arduino, jadi tidak ada penyimpanan data tambahan atau kekuatan pemrosesan yang tersedia. Untuk debugging, saya jelas dapat menggunakan komputer.

Saya sudah mencoba menjalankan PID, tetapi sepertinya sangat sulit

  1. Hindari overshooting - melampaui suhu target baik pada awalnya, atau ketika air (dingin) ditambahkan
  2. Stabilkan dengan benar setelah menambahkan air dingin.
Olli
sumber
Apakah Anda menyetel PID Anda, atau Anda hanya menggunakan nilai standar?
Peter Bloomfield
Saya mencoba untuk menyetel parameter PID dengan berbagai panduan 'bagaimana menyetel PID', tanpa hasil. Saya juga mencoba PIDAutotune , tetapi tidak bisa mendapatkan yang lebih baik darinya. Saya tidak mengatakan PID tidak cocok untuk ini.
Olli
Dengan pemanas air, Anda akan memiliki banyak ketidakkonsistenan. Di mana pemanas di tangki Anda relatif terhadap probe suhu?
Matt Clark
1
Anda mungkin harus menambahkan sesuatu yang mencampur air untuk menyeragamkan suhu di seluruh. Maka Anda harus mempertimbangkan sifat termal dari elemen pemanas Anda, berapa lama untuk mendingin setelah dinonaktifkan, dll ... Itu tergantung pada berapa banyak air dalam sistem juga. Jika Anda dapat mengontrol suhu elemen pemanas, itu akan berpengaruh besar.
Daniel
Bukan bagian dari ATM masalah Anda, tetapi patut dicatat: Jangan bingung akurasi, presisi, dan pengulangan. Akurasi berarti seberapa dekat suhu yang dilaporkan dengan suhu aktual. Presisi adalah perbedaan terkecil yang dapat dibedakan perangkat (0,625 degC untuk DS18b20). Repeatability adalah seberapa banyak pengukuran yang dilaporkan dengan suhu yang sama berbeda satu sama lain. Dua yang terakhir lebih memprihatinkan daripada yang pertama. Bahkan dengan +/- sensor akurat 0,5degC, Anda masih dapat menahan suhu di dalam (atau setidaknya membedakan perbedaan, yang merupakan kondisi yang diperlukan) dari beberapa 1 / 16ths degC ....
JRobert

Jawaban:

2

Anda perlu mengetahui waktu respons sistem Anda dan pengulangan pengukuran Anda untuk mengkarakterisasi data Anda (membangun kepercayaan diri). Saya sarankan mengambil sampel dan rata-rata sebelum menyalakan pemanas kembali.

Imho, air tidak akan dengan senang hati tetap dalam 0,5 ° C. Bisakah Anda mengizinkan mode kasar dan halus? Gunakan PWM yang lebih tinggi untuk perbedaan besar dan PWM yang lebih rendah ketika dekat dengan target.

Setelah diarahkan pada target Anda, ada beberapa cara yang dapat Anda coba untuk meningkatkan stabilitas suhu. Sementara hal-hal yang sudah dibuat sebelumnya seperti PID berfungsi untuk banyak orang, saya biasanya mengimplementasikan fungsionalitas seperti ini secara manual.

Chris K
sumber
0

BrettAM, dE (laju perubahan kesalahan) akan berubah sebagai parameter kontrol, dalam hal ini lebar pulsa sinyal elemen pemanas dimodulasi, divariasikan oleh PID. Kata-kata saya mengatakan bahwa tingkat perubahan kesalahan suhu adalah pilihan yang buruk. Istilah turunan juga akan berfungsi untuk merawat variasi kecil dalam panas air spesifik dengan suhu (4,186 kJ / (kg K) @ 20C hingga 4,219 kJ / (kg K) @ 100C).

Maksud saya adalah, ya istilah turunannya menghitung tingkat perubahan dE. Karena kesalahan di sini adalah perbedaan antara suhu yang diinginkan dan suhu aktual, turunan kemudian menghitung perubahan dalam tingkat di mana air dipanaskan.

Masalahnya adalah seringkali sulit untuk membuat sistem yang stabil dengan istilah turunan. Sistem PID harus didasarkan terutama pada istilah proporsional. Ketika Anda memvariasikan jumlah air, menurut pendapat saya, Anda menciptakan lebih banyak non-linearitas daripada yang bisa dikompensasi oleh PID. Untuk alasan ini, PID perlu diulang dan jika level air sangat bervariasi, sistemnya tidak lagi dapat diulang.

KEPADA OP: Dalam desain saya yang serupa, saya akan mencoba menggunakan radiator / fan combo kecil dan pompa 12V DC untuk mengalirkan air sebagai metode pendinginan air kembali. Saya merasa ini mungkin bekerja lebih baik. Jika berhasil, saya akan memberi tahu Anda.

MattEE
sumber
Selamat Datang di Arduino SE! Ini tidak langsung menjawab pertanyaan (sepertinya lebih banyak membalas komentar lain). Bisakah Anda menggunakan tombol edit untuk menjelaskan bagaimana informasi ini menjawab pertanyaan? Terima kasih!
Penguin Anonim
-2

Anda perlu menjaga agar jumlah air yang dipanaskan konstan. Laju kenaikan suhu air akan berubah ketika Anda memvariasikan jumlah air (menambahkan air dingin seperti yang Anda sebutkan). Pengontrol derivatif proporsional-integral (PID) bekerja dengan mengamati turunan (laju perubahan) dari variabel yang Anda coba kendalikan. PID Anda tidak akan pernah berfungsi dengan baik jika laju perubahan suhu tidak (wajar) konstan.

Lihatlah panas air tertentu, terutama persamaan Q = cm dT. Q adalah panas yang ditambahkan, yang saya anggap konstan dalam pengaturan Anda. m adalah massa zat yang dipanaskan (harus dijaga konstan!). c adalah panas spesifik air, yaitu 4,186 Joule / gram * derajat C. Jika Q, m, dan c adalah konstan maka dT, laju di mana suhu air Anda akan naik juga akan konstan (pada kenyataannya c bervariasi sedikit dengan suhu tetapi saya akan mengatakan ini dapat diabaikan jika Anda bekerja dari 0 100C). Coba setel PID Anda dengan jumlah air yang konstan dan Anda mungkin mendapatkan hasil yang lebih baik.

Pemanas air apa yang Anda gunakan? Saat ini saya melakukan sesuatu yang serupa tetapi mencoba menggunakan plat panas dari laboratorium kimia dan mengalami overshoot besar. Saya sudah mempertimbangkan beralih ke pemanas akuarium tetapi ingin tahu apa yang Anda gunakan?

-Matt

Mat
sumber
PID tidak menganggap laju perubahan adalah konstan. Jika dE (laju perubahan kesalahan) konstan, istilah "D" tidak akan ada di sana. selain itu, air akan memanaskan lebih lambat pada suhu tinggi karena lebih banyak panas yang hilang ke uap, seberapa banyak air yang ada. PID mungkin idealnya disetel untuk massa termal tertentu, tetapi ia masih bisa bekerja untuk berbagai level air dan suhu / tekanan luar.
BrettAM