Isi kandungan:

Pengawal Suhu PID: 7 Langkah
Pengawal Suhu PID: 7 Langkah

Video: Pengawal Suhu PID: 7 Langkah

Video: Pengawal Suhu PID: 7 Langkah
Video: Memahami PID Controller (seri PID Controller part1) 2024, Julai
Anonim
Pengawal Suhu PID
Pengawal Suhu PID

Rakan saya sedang membina alat penyemperit plastik untuk kitar semula plastik (https://preciousplastic.com). Dia perlu mengawal suhu penyemperitan. Untuk tujuan itu dia menggunakan band pemanas muncung. Di muncung ini, ada termokopel dan unit pemanas yang memungkinkan kita mengukur suhu dan akhirnya mencapai suhu yang diinginkan (buat gelung penarikan semula).

Apabila saya mendengar bahawa dia perlu dilakukan oleh beberapa pengawal PID untuk mengendalikan semua jalur pemanas muncung ini, ia segera memberi saya keinginan untuk mencuba membuat sendiri.

Langkah 1: Alat dan Bahan

Alat

  • soldering wire, solder wire dan fluks
  • pinset
  • mesin penggilingan (pengukiran kimia juga mungkin untuk prototaip PCB) (anda juga boleh memesan PCB dengan fail helang saya)
  • termometer (untuk penentukuran)
  • arduino (jenis apa pun) atau pengaturcara AVR
  • Kabel USB siri FTDI TTL-232
  • pemotong laser (pilihan)
  • multimeter (ohmmeter dan voltmeter)

Bahan

  • Plat tembaga tunggal Bakelite (minimum 60 * 35 mm) (Saya merosakkan gergaji saya membeli kaca gentian jadi berhati-hatilah: Bakelite)
  • Pengawal mikro Attiny45
  • Pengatur voltan LM2940IMP-5
  • Penguat operasi AD8605
  • Transistor NDS356AP
  • sekumpulan perintang dan kapasitor (saya mempunyai buku adafruit SMT 0603)
  • Pengubah ac-dc 230V-9V
  • 1N4004 dioda
  • geganti keadaan pepejal
  • cat kuku (pilihan)

Langkah 2: Tetapkan PCB

Tetapkan PCB
Tetapkan PCB
Tetapkan PCB
Tetapkan PCB
Tetapkan PCB
Tetapkan PCB

Saya menggunakan Proxxon MF70 CNC saya yang diubah dan sedikit hujung kon untuk mengisar PCB. Saya fikir bahawa mana-mana bahagian akhir ukiran akan berfungsi. Fail Gcode dihasilkan secara langsung oleh eagle dan plugin pcb-gcode. Hanya tiga hantaran yang dilakukan untuk memastikan pemisahan laluan yang baik tetapi tanpa menghabiskan berjam-jam menggiling semua tembaga. Semasa PCB keluar dari mesin CNC, saya membersihkan laluan dengan pemotong dan mengujinya dengan multimeter.

Parameter: kadar suapan 150mm / min, kedalaman 0.2mm, kelajuan putaran 20'000 t / min

Langkah 3: Memateri Komponen

Memateri Komponen
Memateri Komponen

Dengan pinset dan besi pematerian, letakkan komponen di tempat yang betul dan pateri menggunakan fluks (ia membantu) dan mulakan dengan komponen terkecil. Sekali lagi, periksa dengan multimeter bahawa anda tidak mempunyai litar pintas atau elemen yang tidak berkaitan.

Anda boleh memilih penguat penguat dengan memilih perintang yang anda mahukan (keuntungan = (R3 + R4) / R4). Saya mengambil 1M dan 2.7k jadi dalam kes saya, keuntungannya lebih kurang 371. Saya tidak dapat mengetahui nilai yang tepat kerana saya menggunakan perintang toleransi 5%.

Termokopel saya adalah jenis J. Ini bermaksud bahawa ia memberikan 0.05mV untuk setiap darjah. Dengan perolehan 371, saya memperoleh 18.5mV setiap darjah dari output penguat (0,05 * 371). Saya mahu mengukur sekitar 200 ° C sehingga output penguat mestilah sekitar 3.7V (0.0185 * 200). Hasilnya tidak boleh melebihi 5V kerana saya menggunakan voltan rujukan 5V (luaran).

Gambar sesuai dengan versi pertama (tidak berfungsi) yang saya buat tetapi prinsipnya sama. Dalam versi pertama ini, saya menggunakan geganti dan meletakkannya tepat di tengah papan. Sebaik sahaja saya menukar dengan voltan tinggi, saya mempunyai lonjakan yang membuat pengawal dimulakan semula.

Langkah 4: Programkan Pengawal Mikro

Programkan Pengawal Mikro
Programkan Pengawal Mikro

Menggunakan arduino seperti dalam arahan ini: https://www.instructables.com/id/How-to-Program-a… anda boleh memuatkan kodnya.

Saya menggunakan trinket pro dengan kabel FTDI-USB untuk memprogramkan Attiny 45 tetapi kaedah ini setara. Saya kemudian memasang pin PB1 dan GDN terus ke RX dan GND kabel FTDI-USB untuk menerima data bersiri dan dapat melakukan debug.

Anda harus meletakkan semua parameter ke sifar (P = 0, I = 0, D = 0, K = 0) dalam lakaran arduino. Mereka akan ditetapkan semasa langkah penalaan.

Sekiranya anda tidak melihat asap atau bau terbakar, anda boleh melangkah ke langkah seterusnya!

Langkah 5: Menghimpun dan Menentukur

Berkumpul dan Menentukur
Berkumpul dan Menentukur
Berkumpul dan Menentukur
Berkumpul dan Menentukur

Perhatian: Jangan sesekali pasangkan bekalan kuasa dan 5V dari pengaturcara pada masa yang sama! Jika tidak, anda akan melihat asap yang saya ambil pada langkah sebelumnya. Sekiranya anda tidak dapat menghormatinya, anda boleh melepaskan pin 5v untuk pengaturcara. Saya membiarkannya kerana lebih mudah bagi saya untuk memprogram pengawal tanpa bekalan kuasa dan menguji pengawal tanpa pemanasan pemanas seperti gila di depan wajah saya.

Sekarang anda boleh mencabut termokopel pada penguat dan melihat apakah anda mengukur sesuatu (menghormati kekutuban). Sekiranya sistem pemanasan anda berada pada suhu bilik, anda mesti mengukur sifar. Memanaskannya dengan tangan sudah semestinya membawa kepada beberapa nilai kecil.

Bagaimana membaca nilai-nilai ini? Cukup pasangkan pin PB1 dan GDN terus ke RX dan GND kabel FTDI-USB dan buka monitor bersiri arduino.

Apabila pengawal dimulakan, ia menghantar nilai merah oleh termometer dalaman cip. Ini adalah bagaimana saya mengimbangi suhu (tanpa menggunakan cip khusus). Ini bermaksud bahawa jika suhu berubah semasa operasi, suhu tidak akan diambil kira. Nilai ini sangat berbeza dari satu chip ke chip yang lain sehingga harus dimasukkan secara manual dalam definisi REFTEMPERATURE pada awal lakaran.

Sebelum menyambungkan relay keadaan pepejal, pastikan output voltan berada dalam julat yang disokong oleh geganti anda (3V hingga 25V dalam kes saya, litar menghasilkan sekitar 11V). (hormati kekutuban)

Nilai ini bukan suhu dalam darjah atau Fahrenheit tetapi hasil penukaran analog ke digital sehingga bervariasi antara 0 dan 1024. Saya menggunakan voltan rujukan 5V sehingga ketika output penguat mendekati 5V, hasil penukaran mendekati 1024.

Langkah 6: Penalaan PID

Penalaan PID
Penalaan PID

Saya perlu menyebut bahawa saya bukan pakar kawalan, jadi saya menjumpai beberapa parameter yang sesuai untuk saya tetapi saya tidak menjamin bahawa ia berfungsi untuk semua orang.

Pertama sekali, saya harus menerangkan apa yang dilakukan oleh program ini. Saya melaksanakan sejenis perisian PWM: penghitung bertambah pada setiap lelaran sehingga mencapai 20'000 (dalam hal ini diset semula ke 0). Kelewatan melambatkan gelung hingga satu milisaat. Yang paling arif dari kita akan menyedari bahawa tempoh kawalan adalah sekitar 20 saat. Setiap gelung dimulakan dengan perbandingan antara pembilang dan ambang. Sekiranya kaunter lebih rendah dari ambang, maka saya mematikan geganti. Sekiranya lebih besar, saya hidupkan. Jadi saya mengatur kekuatan dengan menetapkan ambang. Pengiraan ambang berlaku setiap saat.

Apakah pengawal PID?

Apabila anda ingin mengawal proses, anda mempunyai nilai yang anda ukur (analogData), nilai yang ingin anda capai (tempCommand) dan cara untuk mengubah keadaan proses tersebut (seuil). Dalam kes saya, ia dilakukan dengan ambang ("seuil" dalam bahasa Perancis tetapi jauh lebih mudah untuk menulis dan menyebut (mengucapkan "sey")) yang menentukan berapa lama suis akan dihidupkan dan dimatikan (kitaran tugas) sehingga jumlah tenaga masukkan ke dalam sistem.

Semua orang bersetuju bahawa jika anda jauh dari titik yang anda ingin capai, anda boleh membuat pembetulan besar dan jika anda dekat, pembetulan kecil diperlukan. Ini bermaksud bahawa pembetulan adalah fungsi kesalahan (error = analogData-tempComand). Ya tetapi berapa? Katakan bahawa kita mengalikan kesalahan dengan faktor (P). Ini adalah pengawal Berkadar. Spring secara mekanikal membuat pembetulan berkadar kerana daya spring berkadar dengan pemampatan spring.

Anda mungkin tahu bahawa penggantungan kereta anda terdiri daripada spring dan peredam (penyerap kejutan). Peranan peredam ini adalah untuk mengelakkan kereta anda melonjak seperti trampolin. Inilah yang dilakukan oleh istilah terbitan. Sebagai peredam, ia menghasilkan reaksi yang sebanding dengan variasi kesalahan. Sekiranya ralat berubah dengan cepat, pembetulan akan diturunkan. Ia mengurangkan ayunan dan overhoot.

Istilah integrator ada di sini untuk mengelakkan ralat kekal (ia mengintegrasikan kesalahan). Secara konkrit, ini adalah pembilang yang bertambah atau dikurangkan sekiranya kesalahan itu positif atau negatif. Kemudian pembetulan dinaikkan atau diturunkan mengikut pembilang ini. Ia tidak mempunyai kesetaraan mekanikal (atau anda mempunyai idea?). Mungkin ada kesan yang serupa semasa anda membawa kereta anda ke tempat servis dan mekanik menyedari bahawa kejutan secara sistematik terlalu rendah dan memutuskan untuk menambahkan beberapa pramuat lagi.

Semua ini diringkaskan dalam formula: pembetulan = P * e (t) + I * (de (t) / dt) + D * integral (e (t) dt), P, I dan D menjadi tiga parameter yang mempunyai untuk ditala.

Dalam versi saya, saya menambah istilah keempat yang merupakan perintah "a priori" (feed forward) yang diperlukan untuk mengekalkan suhu tertentu. Saya memilih arahan berkadar dengan suhu (ini adalah penghampiran kerugian pemanasan yang baik. Memang benar jika kita mengabaikan kehilangan radiasi (T ^ 4)). Dengan istilah ini, integrator menjadi lebih ringan.

Bagaimana mencari parameter ini?

Saya mencuba kaedah konvensional yang boleh anda temui dengan "pengawal suhu penalaan pid" googling tetapi saya merasa sukar untuk menerapkannya dan akhirnya menggunakan kaedah saya sendiri.

Kaedah saya

Pertama letakkan P, I, D ke sifar dan letakkan "K" dan "tempCommand" ke nilai kecil (contohnya K = 1 dan tempCommand = 100). Hidupkan sistem dan tunggu, tunggu, tunggu … sehingga suhu stabil. Pada ketika ini anda tahu bahawa dengan "seuil" 1 * 100 = 100, suhu cenderung ke X. Oleh itu, anda tahu bahawa dengan perintah 100/20000 = 5% anda boleh mencapai X. Tetapi tujuannya adalah untuk mencapai 100 kerana ia adalah "tempCommand". Dengan menggunakan perkadaran, anda boleh mengira K untuk mencapai 100 (tempCommand). Dengan berhati-hati saya menggunakan nilai yang lebih kecil daripada yang dikira. Memang lebih mudah memanaskan lebih daripada menyejukkan. Jadi akhirnya

Kfinal = K * tempCommand * 0.9 / X

Sekarang semasa anda memulakan pengawal, ia semestinya cenderung pada suhu yang anda mahukan tetapi ia adalah proses yang sangat perlahan kerana anda hanya dapat mengimbangi kerugian pemanasan. Sekiranya anda ingin pergi dari satu suhu ke suhu yang lain, kuantiti tenaga haba harus ditambah dalam sistem. P menentukan pada kadar mana anda memasukkan tenaga ke dalam sistem. Tetapkan P ke nilai kecil (untuk contoh P = 10). Cuba permulaan yang hampir (hampir). Sekiranya anda tidak mempunyai overshoot yang besar, cubalah dengan double (P = 20) jika sekarang anda sudah mencuba sesuatu di antaranya. Sekiranya anda mempunyai lebihan 5%, itu bagus.

Sekarang tingkatkan D sehingga anda tidak mempunyai berlebihan. (selalu mencuba, saya tahu ini bukan sains) (saya mengambil D = 100)

Kemudian tambahkan I = P ^ 2 / (4 * D) (Ini berdasarkan kaedah Ziegler-Nicholts, ia harus menjamin kestabilan) (bagi saya I = 1)

Mengapa semua ujian ini, mengapa tidak sains?

Saya tahu saya tahu! Terdapat teori besar dan anda boleh mengira fungsi pemindahan dan transformasi Z dan blablabla. Saya mahu menghasilkan lompatan kesatuan dan kemudian merakam reaksi selama 10 minit dan menulis fungsi perpindahan dan kemudian apa? Saya tidak mahu membuat aritmetik dengan 200 istilah. Oleh itu, jika ada yang mempunyai idea, saya akan senang belajar bagaimana melakukannya dengan betul.

Saya juga berfikir kepada rakan baik saya Ziegler dan Nichols. Mereka menyuruh saya mencari P yang menghasilkan ayunan dan kemudian menggunakan kaedahnya. Saya tidak pernah menemui ayunan ini. Satu-satunya perkara yang saya dapati ialah menjelajah ke langit.

Dan bagaimana memodelkan fakta bahawa pemanasan tidak sama dengan penyejukan?

Saya akan meneruskan penyelidikan saya tetapi sekarang mari kita bungkus pengawal anda jika anda berpuas hati dengan prestasi yang anda perolehi.

Langkah 7: Kemaskan

Kemaslah
Kemaslah
Kemaslah
Kemaslah
Kemaslah
Kemaslah
Kemaslah
Kemaslah

Saya mempunyai akses ke fablab Moscow (fablab77.ru) dan pemotong laser mereka dan saya bersyukur. Kesempatan ini membolehkan saya membuat pakej bagus yang dihasilkan dalam satu klik oleh pemalam yang membuat kotak dengan dimensi yang dikehendaki (h = 69 l = 66 d = 42 mm). Terdapat dua lubang (diam = 5mm) di bahagian atas untuk led dan suis dan satu celah di sisi untuk pin pengaturcaraan. Saya mengikat pengubah dengan dua kepingan kayu dan PCB dengan dua skru. Saya menyolder blok terminal ke wayar dan ke PCB, menambahkan peralihan antara transformer dan input kuasa PCB, menghubungkan LED ke PBO dengan perintang (300 Ohms) secara bersiri. Saya juga menggunakan cat kuku untuk penebat elektrik. Selepas ujian terakhir, saya menempelkan kotak itu. Itu sahaja.

Disyorkan: