Daftar Isi:

Pengontrol Suhu PID: 7 Langkah
Pengontrol Suhu PID: 7 Langkah

Video: Pengontrol Suhu PID: 7 Langkah

Video: Pengontrol Suhu PID: 7 Langkah
Video: Memahami PID Controller (seri PID Controller part1) 2024, November
Anonim
Pengontrol Suhu PID
Pengontrol Suhu PID

Teman saya sedang membangun ekstruder plastik untuk daur ulang plastik (https://preciousplastic.com). Dia perlu mengontrol suhu ekstrusi. Untuk tujuan itu dia menggunakan pita pemanas nozzle. Pada nozzle ini terdapat termokopel dan unit pemanas yang memungkinkan kita untuk mengukur suhu dan akhirnya mencapai suhu yang diinginkan (membuat loop retroaction).

Ketika saya mendengar bahwa dia perlu oleh beberapa pengontrol PID untuk mengontrol semua pita pemanas nosel ini, itu segera memberi saya keinginan untuk mencoba membuatnya sendiri.

Langkah 1: Alat dan Bahan

Peralatan

  • besi solder, kawat solder dan fluks
  • mencabut dgn penyepit
  • mesin penggilingan (pengetsaan kimia juga dimungkinkan untuk pembuatan prototipe PCB) (Anda juga dapat memesan PCB dengan file elang saya)
  • termometer (untuk kalibrasi)
  • arduino (jenis apa saja) atau programmer AVR
  • Kabel USB TTL-232 serial FTDI
  • pemotong laser (opsional)
  • multimeter (ohmmeter dan voltmeter)

Bahan

  • Bakelite pelat tembaga satu sisi (minimal 60*35 mm) (saya merusak gergaji saya membeli yang fiberglass jadi hati-hati: Bakelite)
  • Mikrokontroler Attiny45
  • Regulator tegangan LM2940IMP-5
  • Penguat operasional AD8605
  • transistor NDS356AP
  • sekelompok resistor dan kapasitor (saya punya buku adafruit SMT 0603)
  • 230V-9V ac-dc transformator
  • 1N4004 dioda
  • relai keadaan padat
  • cat kuku (opsional)

Langkah 2: Etsa PCB

Menggores PCB
Menggores PCB
Menggores PCB
Menggores PCB
Menggores PCB
Menggores PCB

Saya menggunakan Proxxon MF70 CNC saya yang diubah dan ujung berbentuk kerucut untuk menggiling PCB. Saya pikir bit ujung ukiran apa pun akan berfungsi. File Gcode dibuat langsung oleh eagle dan plugin pcb-gcode. Hanya tiga lintasan yang dilakukan untuk memastikan pemisahan rute yang baik tetapi tanpa menghabiskan waktu berjam-jam untuk menggiling semua tembaga. Ketika PCB keluar dari mesin CNC, saya membersihkan rute dengan pemotong dan mengujinya dengan multimeter.

Parameter: laju umpan 150mm/menit, kedalaman 0.2mm, kecepatan rotasi 20'000 t/menit

Langkah 3: Solder Komponen

Solder Komponen
Solder Komponen

Dengan pinset dan besi solder, letakkan komponen di tempat yang tepat dan solder menggunakan fluks (ini membantu) dan mulai dengan komponen terkecil. Sekali lagi, periksa dengan multimeter bahwa Anda tidak memiliki korsleting atau elemen yang tidak terhubung.

Anda dapat memilih penguatan amplifier dengan memilih resistor yang Anda inginkan (gain=(R3+R4)/R4). Saya mengambil 1M dan 2.7k jadi dalam kasus saya, keuntungannya kira-kira sama dengan 371. Saya tidak dapat mengetahui nilai pastinya karena saya menggunakan resistor toleransi 5%.

Termokopel saya adalah tipe J. Ini berarti memberikan 0,05mV untuk setiap derajat. Dengan gain 371, saya memperoleh 18.5mV per derajat dari output amplifier (0,05*371). Saya ingin mengukur sekitar 200 ° C sehingga output amplifier harus sekitar 3.7V (0,0185*200). Hasilnya tidak boleh melebihi 5V karena saya menggunakan tegangan referensi 5V (eksternal).

Gambar sesuai dengan versi pertama (tidak berfungsi) yang saya buat tetapi prinsipnya sama. Pada versi pertama ini, saya menggunakan relay dan meletakkannya tepat di tengah papan. Segera setelah saya beralih dengan tegangan tinggi, saya memiliki paku yang membuat pengontrol reboot.

Langkah 4: Program Mikrokontroler

Program Mikrokontroler
Program Mikrokontroler

Menggunakan arduino seperti dalam instruksi ini: https://www.instructables.com/id/How-to-Program-a… Anda dapat memuat kode.

Saya menggunakan perhiasan pro dengan kabel FTDI-USB untuk memprogram Attiny 45 tetapi metode ini setara. Saya kemudian mencolokkan pin PB1 dan GDN langsung ke RX dan GND kabel FTDI-USB untuk menerima data serial dan dapat melakukan debug.

Anda harus meletakkan semua parameter ke nol (P=0, I=0, D=0, K=0) di sketsa arduino. Mereka akan diatur selama langkah penyetelan.

Jika Anda tidak melihat asap atau bau terbakar, Anda dapat melompat ke langkah berikutnya!

Langkah 5: Perakitan dan Kalibrasi

Perakitan dan Kalibrasi
Perakitan dan Kalibrasi
Perakitan dan Kalibrasi
Perakitan dan Kalibrasi

Perhatian: Jangan pernah mencolokkan catu daya dan 5V dari programmer secara bersamaan! Jika tidak, Anda akan melihat asap yang saya ambil di langkah sebelumnya. Jika Anda tidak yakin dapat menghargainya, Anda cukup melepas pin 5v untuk programmer. Saya membiarkannya karena lebih nyaman bagi saya untuk memprogram pengontrol tanpa catu daya dan menguji pengontrol tanpa pemanas yang memanas seperti orang gila di depan wajah saya.

Sekarang Anda dapat mencabangkan termokopel pada amplifier dan melihat apakah Anda mengukur sesuatu (menghormati polaritas). Jika sistem pemanas Anda berada pada suhu kamar, Anda harus mengukur nol. Memanaskannya dengan tangan seharusnya sudah menghasilkan beberapa nilai kecil.

Bagaimana cara membaca nilai-nilai ini? Cukup tancapkan pin PB1 dan GDN langsung ke RX dan GND kabel FTDI-USB dan buka monitor serial arduino.

Ketika pengontrol dimulai, ia mengirimkan nilai merah oleh termometer internal chip. Beginilah cara saya mengkompensasi suhu (tanpa menggunakan chip khusus). Artinya, jika suhu berubah selama operasi, itu tidak akan diperhitungkan. Nilai ini sangat berbeda dari satu chip ke chip lainnya sehingga harus dimasukkan secara manual dalam definisi REFTEMPERATURE di awal sketsa.

Sebelum menghubungkan relai keadaan padat, pastikan bahwa keluaran tegangan berada dalam kisaran yang didukung oleh relai Anda (3V hingga 25V dalam kasus saya, rangkaian menghasilkan sekitar 11V). (menghormati polaritas)

Nilai-nilai ini bukan suhu dalam derajat atau Fahrenheit tetapi hasil konversi analog ke digital sehingga bervariasi antara 0 dan 1024. Saya menggunakan tegangan referensi 5V sehingga ketika output penguat mendekati 5V, hasil konversi mendekati 1024.

Langkah 6: Penyetelan PID

Penyetelan PID
Penyetelan PID

Saya perlu menyebutkan bahwa saya bukan ahli kontrol, jadi saya menemukan beberapa parameter yang cocok untuk saya, tetapi saya tidak menjamin bahwa itu berfungsi untuk semua orang.

Pertama-tama, saya harus menjelaskan apa program itu. Saya menerapkan semacam perangkat lunak PWM: penghitung bertambah pada setiap iterasi hingga mencapai 20.000 (dalam hal ini diatur ulang ke 0). Penundaan memperlambat loop hingga satu milidetik. Yang paling cerdas dari kita akan melihat bahwa periode kontrol adalah sekitar 20 detik. Setiap loop dimulai dengan perbandingan antara counter dan threshold. Jika penghitung lebih rendah dari ambang batas, maka saya mematikan relai. Jika lebih besar, saya menyalakannya. Jadi saya mengatur daya dengan mengatur ambang batas. Perhitungan ambang batas terjadi setiap detik.

Apa itu pengontrol PID?

Saat Anda ingin mengontrol suatu proses, Anda memiliki nilai yang Anda ukur (analogData), nilai yang ingin Anda capai (tempCommand) dan cara untuk mengubah status proses tersebut (seuil). Dalam kasus saya ini dilakukan dengan ambang ("seuil" dalam bahasa Prancis tetapi lebih mudah untuk menulis dan mengucapkan (ucapkan "sey")) yang menentukan berapa lama sakelar akan hidup dan mati (siklus tugas) sehingga jumlah energi dimasukkan ke dalam sistem.

Semua orang setuju bahwa jika Anda jauh dari titik yang ingin Anda capai, Anda dapat melakukan koreksi besar dan jika Anda dekat, diperlukan koreksi kecil. Ini berarti bahwa koreksi adalah fungsi dari kesalahan (error=analogData-tempComand). Ya tapi berapa? Katakanlah kita mengalikan kesalahan dengan faktor (P). Ini adalah pengontrol proporsional. Secara mekanis pegas membuat koreksi proporsional karena gaya pegas sebanding dengan kompresi pegas.

Anda mungkin tahu bahwa suspensi mobil Anda terdiri dari pegas dan peredam (shock absorber). Peran peredam ini adalah untuk menghindari mobil Anda memantul seperti trampolin. Inilah tepatnya yang dilakukan oleh istilah turunan. Sebagai peredam, ia menghasilkan reaksi yang sebanding dengan variasi kesalahan. Jika kesalahan berubah dengan cepat, koreksi diturunkan. Ini mengurangi osilasi dan overshoot.

Istilah integrator di sini untuk menghindari kesalahan permanen (mengintegrasikan kesalahan). Konkretnya, itu adalah penghitung yang bertambah atau berkurang jika kesalahannya positif atau negatif. Kemudian koreksi dinaikkan atau diturunkan menurut counter ini. Ini tidak memiliki kesetaraan mekanis (atau Anda punya ide?). Mungkin ada efek yang sama ketika Anda membawa mobil Anda ke bengkel dan mekanik memperhatikan bahwa guncangan secara sistematis terlalu rendah dan memutuskan untuk menambahkan beberapa beban awal.

Semua ini diringkas dalam rumus: koreksi=P*e(t)+I*(de(t)/dt)+D*integral(e(t)dt), P, I dan D menjadi tiga parameter yang memiliki untuk disetel.

Dalam versi saya, saya menambahkan istilah keempat yang merupakan perintah "apriori" (maju terus) yang diperlukan untuk mempertahankan suhu tertentu. Saya memilih perintah proporsional dengan suhu (ini adalah perkiraan yang baik dari kerugian pemanasan. Memang benar jika kita mengabaikan kerugian radiasi (T^4)). Dengan istilah ini, integrator menjadi ringan.

Bagaimana menemukan parameter ini?

Saya mencoba metode konvensional yang dapat Anda temukan dengan googling "pengontrol suhu penyetelan pid" tetapi saya merasa sulit untuk menerapkannya dan berakhir dengan metode saya sendiri.

Metode saya

Pertama-tama letakkan P, I, D ke nol dan masukkan "K" dan "tempCommand" ke nilai kecil (misalnya K=1 dan tempCommand=100). Nyalakan sistem dan tunggu, tunggu, tunggu… sampai suhu stabil. Pada titik ini Anda tahu bahwa dengan "seuil" 1*100=100, suhunya cenderung X. Jadi Anda tahu bahwa dengan perintah 100/20000=5% Anda dapat mencapai X. Tetapi tujuannya adalah untuk mencapai 100 karena itu adalah "tempCommand". Menggunakan proporsi Anda dapat menghitung K untuk mencapai 100 (tempCommand). Dengan hati-hati saya menggunakan nilai yang lebih kecil dari yang dihitung. Memang lebih mudah untuk memanaskan daripada mendinginkan. Jadi akhirnya

Kfinal=K*tempCommand*0.9/X

Sekarang ketika Anda memulai pengontrol, itu secara alami akan cenderung ke suhu yang Anda inginkan tetapi ini adalah proses yang sangat lambat karena Anda hanya mengkompensasi kerugian pemanasan. Jika Anda ingin berpindah dari satu suhu ke suhu lainnya, sejumlah energi panas harus ditambahkan ke dalam sistem. P menentukan pada tingkat mana Anda memasukkan energi ke dalam sistem. Atur P ke nilai kecil (misalnya P=10). Cobalah awal yang (hampir) dingin. Jika Anda tidak memiliki overshoot yang besar, coba dengan double (P=20) jika sekarang Anda memiliki satu, coba sesuatu di antaranya. Jika Anda memiliki 5% overshoot, itu bagus.

Sekarang tingkatkan D sampai Anda tidak memiliki overshoot. (selalu cobaan, saya tahu ini bukan sains) (saya ambil D=100)

Kemudian tambahkan I=P^2/(4*D) (Ini didasarkan pada metode Ziegler-Nicholts, itu harus menjamin stabilitas)(untuk saya I=1)

Mengapa semua cobaan ini, mengapa bukan sains?

Saya tahu saya tahu! Ada teori besar dan Anda dapat menghitung fungsi transfer dan transformasi Z dan blablabla. Saya ingin menghasilkan lompatan kesatuan dan kemudian merekam reaksi selama 10 menit dan menulis fungsi transfer dan lalu apa? Saya tidak ingin membuat aritmatika dengan 200 suku. Jadi, jika ada yang punya ide, saya akan dengan senang hati mempelajari cara melakukannya dengan benar.

Saya juga memikirkan sahabat saya Ziegler dan Nichols. Mereka mengatakan kepada saya untuk menemukan P yang menghasilkan osilasi dan kemudian menerapkan metode mereka. Saya tidak pernah menemukan osilasi ini. Satu-satunya hal yang saya temukan adalah ooooooooovershoot ke langit.

Dan bagaimana memodelkan fakta bahwa pemanasan bukanlah proses yang sama dengan pendinginan?

Saya akan melanjutkan penelitian saya, tetapi sekarang mari kita kemas pengontrol Anda jika Anda puas dengan kinerja yang Anda peroleh.

Langkah 7: Kemas Itu

Kemas
Kemas
Kemas
Kemas
Kemas
Kemas
Kemas
Kemas

Saya memiliki akses ke fablab Moskow (fablab77.ru) dan pemotong laser mereka dan saya berterima kasih. Kesempatan ini memungkinkan saya untuk membuat paket bagus yang dihasilkan dalam satu klik oleh plugin yang membuat kotak dengan dimensi yang diinginkan (h=69 l=66 d=42 mm). Ada dua lubang (diameter = 5mm) di bagian atas untuk led dan sakelar dan satu celah di samping untuk pin pemrograman. Saya mengamankan transformator dengan dua potong kayu dan PCB dengan dua sekrup. Saya menyolder blok terminal ke kabel dan ke PCB, menambahkan sakelar antara transformator dan input daya PCB, menghubungkan led ke PBO dengan resistor (300 Ohm) secara seri. Saya juga menggunakan cat kuku untuk isolasi listrik. Setelah tes terakhir, saya merekatkan kotak itu. Itu dia.

Direkomendasikan: