Saya perlu mengatur suhu antara 20 ° C dan 300 ° C. Saya menggunakan output PWM dengan resolusi siklus tugas 1%. Bisakah periode PWM keseluruhan, dan PID loop timing, mendapatkan akurasi lebih dari 1% dari rentang suhu dalam beban?
Saya perlu mengatur suhu antara 20 ° C dan 300 ° C. Saya menggunakan output PWM dengan resolusi siklus tugas 1%. Bisakah periode PWM keseluruhan, dan PID loop timing, mendapatkan akurasi lebih dari 1% dari rentang suhu dalam beban?
Jawaban:
Itu tergantung pada konstanta waktu beban. Beban yang dipanaskan akan sering merespons dalam 10 detik.
Jika Anda menghasilkan 30% PWM selama satu detik, maka 31% PWM untuk detik berikutnya, itu akan terlihat seperti 30,5% rata-rata selama beberapa detik.
Termostat oven cenderung beroperasi selama satu menit, satu menit, dan masih mencapai suhu oven yang stabil hingga satu digit C. Satu PWM 1% yang disesuaikan sekali per detik dapat melakukan beberapa kali lipat lebih baik dari itu.
Mengingat fakta bahwa relatif terhadap peraturan lain (tegangan, arus, dll), pengaturan suhu cukup lambat, apa yang dapat Anda lakukan adalah menggunakan mikrokontroler (saya kira Anda sudah melakukannya), tetapi tambahkan variasi siklus dari sinyal PWM lebar.
bayangkan bahwa agar sistem Anda menjadi stabil, Anda harus memiliki lebar pulsa 3,8%. Anda cukup menerapkan siklus tugas 3% selama 20% dari waktu, dan 4% selama 80% sisanya. melakukan itu lebih dari satu detik akan memungkinkan Anda untuk mencapai ketepatan yang Anda butuhkan.
Pertanyaan dengan kata yang aneh, tapi yang saya pikir Anda tanyakan adalah apakah suhu kenaikan beban sebesar 1% langkah dengan PWM resolusi langkah 1%. yaitu 2,828C per langkah.
Meskipun kedengarannya memang seharusnya, jawabannya mungkin tidak.
Alasannya, agar hal itu terjadi harus ada hubungan 1 banding 1 antara daya dan kenaikan suhu dalam beban. Namun, tergantung pada geometri dan lingkungan dari beban, itu tidak mungkin benar.
Untuk memanaskan sesuatu pada suhu tertentu, Anda perlu menambahkan daya yang cukup untuk menyeimbangkan daya benda yang hilang ke sekelilingnya pada suhu itu. Masalahnya adalah, ketika suhu naik, efisiensi perpindahan panas dari permukaan yang Anda pemanasan biasanya juga berubah.
Untuk rentang suhu kecil, daya ke suhu, dapat dianggap hampir linier, tetapi 300C bukan kisaran suhu kecil.
Seberapa linier apapun yang Anda rencanakan untuk pemanasan, dan seberapa akurat 1% perlu (yaitu 1% plus atau minus apa?), Tentu saja, di luar cakupan pertanyaan ini, dan jawabannya. Tapi saya akan curiga Anda harus menggunakan BANYAK kekuatan tambahan lebih banyak untuk mendapatkan 50C terakhir daripada yang Anda lakukan untuk mendapatkan hingga 70C.
TAMBAHAN
Sangat tidak jelas dari pertanyaan Anda apakah Anda telah memasukkan penginderaan suhu dalam loop kontrol Anda. Saya curiga, karena Anda mengajukan pertanyaan, bahwa jawabannya tidak, maka fokus dalam jawaban ini.
Jika Anda perlu mengatur suhu secara akurat dalam semua kondisi, Anda benar-benar harus mengikat pengukuran itu kembali ke loop kontrol sistem. Pada saat itu Anda dapat memvariasikan modulasi PWM untuk menahan suhu seakurat yang Anda bisa mengukurnya, semua itu dengan beberapa lag termal dan histeresis.
Tapi tentu saja, mengukur suhu secara akurat pada benda besar bisa menjadi tantangan bagi dirinya sendiri.
Jika pengontrol Anda, atau kode algoritma kontrol, dapat mengukur suhu beban dan melacak output yang diinginkan dengan lebih baik daripada 'resolusi 1%' (mencatat bahwa hubungan output ke suhu tidak linier), maka mungkin untuk mencapai jauh lebih baik daripada 1% resolusi output efektif dengan dithering, seperti yang disarankan oleh Neil_UK . Peningkatan aktual yang dapat Anda kelola akan tergantung pada berapa lama konstanta waktu beban relatif terhadap waktu siklus output Anda.
Jika controller atau kode Anda tidak dapat melakukan ini, maka Anda akan mendapatkan beberapa fluktuasi pada suhu beban. Sebagai contoh jika setpoint dan kondisi lingkungan sedemikian rupa sehingga output 'benar' untuk suhu beban yang diperlukan adalah 30,5% maka output terdekat yang bisa didapat adalah 30%, dalam hal ini beban akan mendingin sedikit di bawah setpoint , atau 31% dalam hal ini akan memanas sedikit di atas setpoint, dan hanya dengan 'memperhatikan' penyimpangan ini pada suhu beban aktual, pengontrol dapat mengubah outputnya untuk memperbaiki penyimpangan.
Saya kira ukuran fluktuasi dalam kasus terakhir akan tergantung pada koefisien proporsional dan derivatif dalam algoritma kontrol Anda, dan tugas Anda akan (seperti biasa) menyetel pengontrol untuk akurasi terbaik tanpa risiko ketidakstabilan atau overshoot yang berlebihan.
Juga, pikirkan tentang apa yang Anda maksud dengan akurasi . Apakah Anda memerlukan akurasi absolut (setpoint 100 ° C memberikan nilai terkontrol yang benar-benar 100 ± 0,1 ° C) atau hanya stabilitas (nilai terkontrol dapat stabil di mana saja dari 98 hingga 102 ° C tetapi kemudian tetap stabil hingga ± 0,1 ° C)? Keakuratan absolut pengukuran suhu lebih sulit untuk dicapai daripada yang diasumsikan orang, tetapi ada banyak aplikasi di mana akurasi absolut tidak begitu penting selama stabilitas itu baik.
Kemungkinan besar ya. Saya telah melakukan persis apa yang Anda tanyakan dalam produk komersial.
Alasan saya mengatakan "kemungkinan besar" bukan hanya "ya" adalah bahwa mendapatkan resolusi suhu yang lebih tinggi daripada resolusi PWM membutuhkan periode PWM secara signifikan lebih kecil daripada konstanta waktu termal yang dominan. Kecuali Anda memiliki pemanas yang sangat tidak biasa (filamen bola lampu pijar mungkin menjadi salah satu contoh), persyaratan ini akan dipenuhi.
Saya sedang menulis firmware yang mengontrol arus dan tegangan melalui tabung Xray. Logika level yang lebih tinggi akan menentukan tegangan dan arus apa yang akan digunakan, dan tugas firmware saya adalah membuatnya demikian.
Dalam hal ini, tabung itu hanya katoda dan anoda, tanpa kisi. Arus sinar dikendalikan dengan mengubah level drive pemanas katoda. Itu sekitar kecil dan gesit dari pemanas karena mendapat, tetapi waktu yang konstan masih banyak milidetik.
PWM ke pemanas bekerja pada beberapa kHz, berkali-kali lebih cepat daripada frekuensi respons pemanas yang berarti. Sayangnya, resolusi PWM terlalu rendah untuk mencapai beberapa arus yang diinginkan dalam toleransi kesalahan yang diinginkan. Ini tidak terbantu oleh fungsi temperatur katoda untuk mengalirkan arus yang sangat non-linear.
Jika ini adalah satu-satunya kendala pada PWM, saya bisa saja meningkatkan periode PWM untuk mendapatkan resolusi yang lebih tinggi. Namun, prosesor ini melakukan banyak hal, dan karena pembatasan perangkat keras, jam yang sama digunakan untuk hal-hal lain dan tidak dapat diubah.
Solusinya adalah menerapkan dithering dari siklus tugas PWM. Jika saya ingat benar, saya menggunakan 8 nilai siklus tugas yang berbeda. Dalam hal ini saya bisa menggunakan mesin DMA di mikrokontroler untuk mengurutkan melalui 8 nilai secara otomatis. Pengaturan rutin siklus kerja menghitung dan menyesuaikan 0 hingga 7 dari nilai yang dihitung lebih tinggi dari yang pertama.
Ini secara efektif memberikan resolusi PWM 8x lebih tinggi. PWM periode x8 masih relatif pendek dibandingkan dengan konstanta waktu pemanas, sehingga pemanas masih mudah rata-rata nilai siklus beberapa tugas.
Kulihat Trevor sudah menyentuh ini. Suhu pemanas seringkali bisa sangat non-linear dengan daya input. Ini biasanya disebabkan oleh konveksi yang tidak bereaksi secara linear dengan suhu, dan karenanya mendinginkan objek panas secara tidak proporsional lebih dari yang lebih dingin. Pada suhu yang jauh lebih tinggi, radiasi benda hitam menjadi signifikan. Daya radiasi juga cukup non-linear dengan suhu.
Dalam kasus saya, tidak hanya katoda yang sebagian besar didinginkan oleh radiasi benda hitam (itu dalam ruang hampa), tetapi fungsi temperatur untuk mengalirkan arus juga sangat non-linear.
Sistem non-linear sulit dikendalikan. Sederhana berarti seperti PID, atau apa pun yang berasal dari analisis S-domain tidak bekerja dengan baik dengan sistem non-linear. Jika Anda mencoba, Anda akan mendapatkan bagian berlebih dari rentang hanya untuk menjaga stabilitas di bagian rentang lainnya. Hal itu dapat menyebabkan waktu pengendapan yang terlalu lama di bagian kisaran yang terlalu lembab.
Solusi yang saya gunakan dalam kasus ini, dan yang telah saya gunakan pada beberapa proyek lain juga, adalah untuk linierisasi sistem dari sudut pandang loop kontrol.
Saya melakukan ini dengan memasukkan lookup linear-sedikit antara output controller dan input sistem. Selama manufaktur, sistem dijalankan loop terbuka di sejumlah titik yang ditetapkan. Hasilnya digunakan untuk mengisi tabel pencarian yang disimpan dalam memori non-volatile yang unik untuk setiap unit.
Sistem ini masih non-linear dalam setiap segmen dari tabel pencarian. Namun, segmen ini adalah sebagian kecil dari rentang sistem, sehingga karakteristik sistem tidak banyak berubah pada satu segmen. Jika ya, gunakan lebih banyak segmen.
Hasilnya bekerja dengan sangat baik. Ya, semua ini berjalan dalam produk komersial yang dapat Anda beli hari ini.
Beberapa orang sudah menyebutkan ini, tetapi saya lebih suka menjelaskan.
Catatan: jika pemanas Anda memiliki kontrol suhu elektronik bawaan, silakan langsung ke bagian terakhir dari jawaban saya.
Alih-alih itu mengontrol berapa banyak energi yang dikeluarkan oleh pemanas. Jika pemanas ruang dalam idealnya terisolasi, sinyal PWM konstan akan mengontrol seberapa cepat kenaikan suhu - sampai pemanas mencair sendiri atau penutupnya.
Pada kenyataannya panas tak terhindarkan hilang melalui konveksi, radiasi atau proses lainnya, sehingga keseimbangan yang stabil dapat terbentuk: jika pemanas dipanaskan hingga siklus 100% itu dapat dinilai untuk memanaskan hingga 300 ° C dalam beberapa keadaan yang telah ditentukan.
Namun keadaan itu tidak akan pernah bisa diandalkan: angin, tekanan udara, kelembaban dan suhu sekitar dapat memudarkan peringkat duty-cycle-to-temperature pemanas Anda.
Jika suhu Anda sangat tinggi (lebih tinggi dari sekitar 200 ° C), Anda mungkin bisa lolos dengan variasi karena faktor-faktor luar agak dapat diabaikan, tetapi dalam hal ini suhu tepatnya tidak terlalu tepat, jadi penyesuaian sub-1% akan tidak masuk akal.
Cara yang dapat diandalkan untuk mengontrol suhu akan menggunakan sensor suhu: Jika suhu yang diinginkan lebih tinggi daripada yang dirasakan, nyalakan pemanas dengan daya 100%; jika lebih rendah, potong daya sepenuhnya.
Alasan untuk menggunakan daya 100% atau tidak ada adalah bahwa pemanas selalu reaktif, dan Anda kemungkinan besar ingin suhu mencapai tingkat yang diinginkan secepat mungkin.
Misalkan Anda memiliki pemanas yang biasanya dapat melakukan 20 hingga 300 ° C, dan Anda perlu memanas dari suhu kamar hingga 100 °.
Jika Anda memberinya daya dengan siklus kerja 30% PWM, ia akan mulai mendapatkan suhu dengan cepat, tetapi kemudian secara bertahap melambat. Tergantung pada jenis pemanasnya, butuh waktu berjam-jam sebelum benar-benar mencapai suhu yang diinginkan. Itu karena kehilangan panas meningkat dengan perbedaan panas, sehingga beberapa derajat terakhir paling lama.
Sebaliknya Anda harus menyalakan pemanas dengan daya 100% tersedia untuk membuatnya mencapai suhu yang diinginkan jauh lebih cepat.
Ketika suhu mencapai nilai yang diinginkan, Anda masih perlu bereaksi cepat terhadap hembusan angin mendadak yang ditiupkan pada pemanas Anda atau konsekuensi serupa.
Dalam beberapa kasus pemanas, bebannya, dan sensor mungkin semuanya cukup reaktif, sehingga rangkaian mungkin perlu memperkirakan perubahan suhu yang disebabkan oleh pemanas sampai batas tertentu.
Jika itu tidak layak, memberi makan pemanas dengan kekuatan fraksional mungkin sebenarnya berguna untuk membuat suhu tetap pada tingkat yang diinginkan.
Dalam hal itu detail yang tepat (termasuk jawaban atas pertanyaan Anda) dapat bergantung pada parameter fisik pemanas, bebannya, dan lingkungannya. Atau suhu harus benar-benar stabil.
Dalam kasus-kasus itu, sinyal PWM tidak perlu tepat, tetapi sinyal harus tetap naik dan turun tergantung pada pembacaan probe.
Pemanas listrik mungkin tidak dirancang untuk bekerja dengan daya PWM. Tergantung pada bagaimana tepatnya itu dibangun itu mungkin mulai bergetar dan akhirnya menghancurkan dirinya sendiri atau menyebabkan masalah lain yang tidak terduga.
Hampir semua pemanas mengkonsumsi banyak daya. Thyristor atau transistor kontrol PWM untuk aplikasi seperti itu bisa sangat tidak efisien dan memerlukan pendinginan yang substansial selain menjadi mahal.
Pada topik thyristor fase-benar (untuk AC), presisi sub-1% mungkin tidak dapat dicapai dengan andal karena daya AC mungkin bukan sinus sempurna.
Beberapa "pemanas" sebenarnya adalah perangkat elektronik yang merasakan suhu dan mengendalikan daya sendiri. Suhu yang diinginkan dapat diatur melalui sinyal PWM. Itu jarang tetapi itu adalah satu-satunya teori yang bisa menjelaskan hubungan langsung antara siklus tugas dan suhu.
Dalam hal ini, jawaban atas pertanyaan Anda tergantung pada elektronik kontrol bawaan pemanas. Penyesuaian tepat yang dijelaskan dalam pertanyaan mungkin akan bekerja dengan anggapan elektronik itu sendiri cukup tepat - fakta itu harus dinyatakan dalam dokumentasinya.
Karena hampir semua pemanas seperti itu bekerja secara internal seperti yang saya jelaskan sebelumnya, mereka sering melakukan siklus on-off-off yang cukup lama, sehingga suhu aktual dapat berfluktuasi dari waktu ke waktu tanpa peduli seberapa akurat sinyal PWM.