Isi kandungan:

PID Controller VHDL: 10 Langkah
PID Controller VHDL: 10 Langkah

Video: PID Controller VHDL: 10 Langkah

Video: PID Controller VHDL: 10 Langkah
Video: Lecture 73: Digital PID Control Implementation using Verilog HDL Programming 2024, November
Anonim
Pengawal PID VHDL
Pengawal PID VHDL
Pengawal PID VHDL
Pengawal PID VHDL

Projek ini adalah projek terakhir saya untuk menamatkan Ijazah Sarjana Muda Kepujian saya dari Institut Teknologi Cork. Tutorial ini dibahagikan kepada dua bahagian yang pertama akan merangkumi badan utama kod PID yang merupakan tujuan utama projek dan bahagian kedua merangkumi antara muka kod yang dilaksanakan pada papan pengembangan Basys 3 dan kemudian dihubungkan ke bola ping pong pelantar levitasi. Pelantar teori dan binaan ditunjukkan dalam gambar yang dilampirkan.

Bekalan

Simulasi

Vivado Design Suite

Pelaksanaan (dalam kurungan adalah yang digunakan untuk projek saya)

  • Papan FPGA yang dapat memasukkan dan mengeluarkan isyarat Digital / Analog (Basys 3)
  • sistem yang dapat dikawal dengan satu sumber maklum balas (Ping Pong Ball Levitation Rig)

Rig

  • Tiub Polikarbonat
  • Kipas 5V
  • Sensor IR
  • Pangkalan Bercetak 3D (Tutorial ini mendokumentasikan pembinaan pelantar yang ditambahkan sensor untuk memberi maklum balas tetapi pelantar umumnya sama)
  • Perintang 1k
  • Papan roti dengan Rel 5V dan GND

Langkah 1: Teori Kawalan Asas

Teori Kawalan Asas
Teori Kawalan Asas

Saya berpendapat bahawa menambahkan dalam beberapa teori kawalan asas akan memberi sesiapa sahaja yang ingin mencuba dan menerapkan kod ini asas yang baik untuk bermula.

Gambar rajah yang dilampirkan adalah susun atur pengawal gelung tunggal.

r- Adakah rujukan. Ini menentukan ke mana pengawal dikehendaki pergi.

e-Adakah kesalahan. Ini adalah perbezaan antara nilai pada sensor anda dan rujukan anda. cth. e = r- (d + output sensor).

K-Ini adalah pengawal. Pengawal boleh terdiri daripada tiga istilah. Istilah ini adalah P, I dan D. Ketiga-tiga istilah mempunyai pengganda yang disebut Kp, Ki dan Kd. Nilai-nilai ini menentukan tindak balas pengawal.

  • P-Berkadar. Pengawal P yang ketat akan mempunyai output yang setanding dengan ralat semasa. Pengawal P mudah dilaksanakan dan berfungsi dengan pantas tetapi tidak akan pernah mencapai nilai yang anda tetapkan (rujukan).
  • I-Integral. Pengawal yang betul-betul terpadu akan merangkumi ralat sebelumnya yang akhirnya akan mencapai rujukan yang diinginkan. Pengawal ini pada amnya terlalu lambat untuk dilaksanakan. Menambah istilah P akan mengurangkan masa yang diperlukan untuk mencapai rujukan. Masa input disampel mesti diambil kira istilah integral digabungkan dengan masa.
  • D-Derivatif. Istilah Derivatif akan mempunyai output yang bergantung pada kadar perubahan kesalahan. Istilah ini umumnya digunakan dengan istilah P atau dengan istilah PI. Oleh kerana ini berkadar dengan kadar perubahan ralat maka single yang bising akan meningkatkan kebisingannya yang dapat menyebabkan sistem menjadi tidak stabil. Masa juga mesti diambil kira kerana istilah terbitan juga berkaitan dengan masa.

U- Ini adalah isyarat kawalan. Isyarat ini adalah input ke rig. Dalam kes projek ini, u adalah input isyarat PWM kepada kipas untuk mengubah kelajuan.

G- Ini adalah sistem yang dikendalikan. Sistem ini dapat dimodelkan secara matematik dalam Domain S atau Z. Sistem boleh mengikut urutan ke-9 tetapi bagi seseorang yang memulakan kawalan sistem pesanan pertama mungkin harus diandaikan kerana ini lebih mudah dikira. Ini adalah Banyak maklumat mengenai sistem pemodelan yang terdapat dalam talian. Bergantung pada masa pensampelan sensor model sistem sama ada diskrit atau berterusan. Ini memberi kesan drastik pada pengawal sehingga disarankan untuk meneliti keduanya.

d- Ini adalah gangguan yang ditambahkan ke sistem. Gangguan adalah kekuatan luar yang tidak diperhitungkan oleh model sistem. Contoh mudah dari ini ialah drone yang anda mahu letakkan pada jarak 5 meter angin sepoi-sepoi datang dan menjatuhkan drone 1 meter pengawal akan mengubah semula drone setelah gangguan itu berlaku. Ini dikenali sebagai gangguan kerana angin tidak dapat diulang sehingga ini tidak dapat dimodelkan.

Untuk menyesuaikan pengawal, terlalu banyak peraturan untuk dinamakan tetapi beberapa peraturan baik yang saya mulakan ialah Cohen Coon dan Zieger Nichols.

Pemodelan sistem secara amnya merupakan bahagian yang paling penting tanpa model yang tepat pengawal yang telah dirancang tidak akan bertindak balas seperti yang diinginkan.

Harus ada cukup maklumat di sini untuk memahami bagaimana pengawal berfungsi bersama dengan beberapa penyelidikan individu dan kod di bawah pengawal dengan kombinasi ketiga-tiga istilah dapat dilaksanakan.

Langkah 2: Menulis Kod PID

Menulis Kod PID
Menulis Kod PID

Prinsip asas kod yang terdapat pada pautan berikut diambil dan diubahsuai kerana kod ini tidak berfungsi tetapi mempunyai banyak prinsip yang betul yang memberikan titik permulaan yang baik. PID Asal Kod mempunyai beberapa kesalahan seperti

  • Operasi Berterusan - pengawal secara warisan diskrit sehingga pengawal harus disiapkan untuk hanya mengira ketiga-tiga istilah apabila input baru tersedia. Penyelesaian untuk simulasi ini adalah untuk memeriksa apakah input telah berubah sejak terakhir kali. ini hanya berfungsi untuk mensimulasikan kod yang berfungsi dengan betul.
  • Waktu Sampel tidak berpengaruh pada istilah integral dan derivatif - Pengawal juga tidak mempertimbangkan masa di mana sampel diambil, jadi nilai yang disebut pembahagi untuk waktu ditambahkan untuk memastikan istilah integral dan derivatif beroperasi melebihi yang betul selang waktu.
  • Kesalahan hanya boleh bersifat pasif - ketika menghitung ralat, ada juga masalah kerana kesalahan itu tidak akan bererti negatif apabila isyarat maklum balas telah melampaui nilai rujukan bahawa pengawal akan terus meningkatkan output ketika harus dikurangkan.
  • Nilai keuntungan untuk 3 istilah itu adalah bilangan bulat - dalam pengalaman saya, saya selalu mendapati bahawa nilai untuk 3 istilah dalam pengawal selalu menjadi nombor titik terapung kerana Basys 3 tidak mempunyai nombor titik terapung, nilai tersebut harus diberi nilai pengangka dan nilai penyebut yang akan berfungsi sebagai mengatasi masalah ini.

Kod dilampirkan di bawah ini terdapat badan utama kod dan tempat ujian untuk mensimulasikan kod tersebut. Folder zip mengandungi kod dan testbench yang sudah ada di Vivado sehingga boleh dibuka untuk menjimatkan masa. ada juga uji simulasi kod yang menunjukkan output mengesan rujukan ini membuktikan bahawa kod tersebut berfungsi seperti yang diharapkan.

Langkah 3: Cara Mengubah Sistem anda

Pertama, tidak semua sistem yang sama mesti menganalisis input dan output sistem. Dalam kes saya, output rig saya yang memberi saya nilai untuk kedudukan adalah isyarat analog dan input dari sistem adalah isyarat PWM. Bermaksud bahawa penukaran ADC diperlukan. Nasib baik Basys 3 mempunyai ADC bawaan jadi ini tidak menjadi masalah output sensor IR harus diturunkan ke 0V-1V kerana ini adalah jarak maksimum ADC onboard. Ini dilakukan dengan menggunakan rangkaian pembahagi voltan yang dibuat dari perintang 1k yang disusun sebagai perintang 3k secara bersiri dengan perintang 1k. Isyarat analog kini berada dalam jarak ADC. Input PWM ke kipas dapat didorong secara langsung oleh output port PMOD di Basys 3.

Langkah 4: Memanfaatkan I / O di Basys 3

Terdapat sebilangan I / O pada Basys 3 yang membolehkan proses penyahpepijatan lebih mudah semasa kod sedang berjalan. I / O ditubuhkan seperti berikut.

  • Paparan Tujuh Segmen - Ini digunakan untuk menunjukkan nilai rujukan dan nilai pada ADC dalam volt. Dua digit pertama dari paparan tujuh segmen menunjukkan dua digit selepas tempat perpuluhan nilai ADC kerana nilainya antara 0-1V. Angka tiga dan empat pada paparan tujuh segmen menunjukkan nilai rujukan dalam volt, ini juga menunjukkan dua digit pertama selepas tempat perpuluhan kerana julatnya juga antara 0-1V.
  • 16 LED - LED digunakan untuk menunjukkan nilai output untuk memastikan bahawa output tepu dan output berubah dengan betul.

Langkah 5: Kebisingan pada Output Sensor IR

Terdapat bunyi pada output sensor untuk menyelesaikan masalah ini, blok rata-rata dipasang kerana ini sudah mencukupi dan memerlukan sedikit kerja untuk diselesaikan.

Langkah 6: Susun Atur Kod Keseluruhan

Susun Atur Kod Keseluruhan
Susun Atur Kod Keseluruhan

Ada satu kod yang belum dibincangkan. Kod ini adalah pembahagi jam yang dipanggil pencetus. bit kod ini mencetuskan kod ADC untuk dijadikan sampel. kod ADC memerlukan maksimum 2us untuk diselesaikan sehingga input semasa dan input sebelumnya rata-rata. 1us selepas ini rata-rata pengawal mengira istilah P, I dan D. keseluruhan susun atur kod dan antara muka ditunjukkan dalam rajah sambungan sementara.

Langkah 7: Menguji

Ujian
Ujian

Kod digunakan pada Basys 3 dan tindak balas berikut direkodkan. rujukan berubah antara 2 nilai. yang berlaku dalam kod projek siap dilampirkan. Video yang dilampirkan menunjukkan tindak balas ini dalam masa nyata. Pengayun semakin cepat di bahagian atas tiub kerana alat kawalan dirancang untuk wilayah ini tetapi pengawal tidak berfungsi dengan baik di bawah tiub kerana sistemnya tidak linier.

Langkah 8: Pengubahsuaian untuk Meningkatkan Projek

Projek ini berfungsi sebagaimana mestinya tetapi ada beberapa modifikasi yang saya akan lakukan sekiranya projek itu dapat diperpanjang.

  • Laksanakan penapis digital untuk mengurangkan kebisingan sepenuhnya
  • sediakan kod ADC, Kod purata dan kod Integrasi untuk mencetuskan secara berurutan.
  • gunakan sensor yang berbeza untuk maklum balas kerana tindak balas tidak linear sensor ini menyebabkan pelbagai masalah dengan projek ini tetapi lebih kepada bahagian kawalan bukan sisi pengekodan.

Langkah 9: Kerja Tambahan

Sepanjang musim panas, saya menulis kod untuk pengawal lata dan melaksanakan pengubahsuaian yang saya cadangkan untuk pengawal PID gelung tunggal.

Pengubahsuaian dilakukan pada pengawal PID biasa

· Templat penapis FIR yang dilaksanakan pekali mesti diubah untuk mencapai frekuensi pemotongan yang diinginkan. Pelaksanaan semasa adalah penapis cemara 5-tekan.

· Waktu kod telah disiapkan sehingga saringan akan menyebarkan sampel baru hingga dan ketika output siap istilah integral akan dipicu yang akan bermaksud kod dapat diubah untuk bekerja pada selang waktu yang berbeda dengan usaha yang lebih sedikit untuk berubah kod.

· Gelung utama yang menggerakkan program juga telah dikurangkan kerana ini untuk gelung mengambil 7 kitaran sebelumnya ini melambatkan kelajuan operasi maksimum Pengawal tetapi dengan mengurangkan gelung t 4 menyatakan ini bermaksud bahawa blok utama kod dapat beroperasi dalam masa 4 kitaran jam.

Ujian

Alat kawalan ini diuji dan dilakukan sebagaimana mestinya. Saya tidak mengambil gambar bukti ini kerana bahagian projek ini hanya untuk menjaga minda aktif. Kod untuk pengujian dan juga testbench akan tersedia di sini supaya anda dapat menguji program sebelum pelaksanaan.

Mengapa menggunakan pengawal lata

Pengawal lata mengawal dua bahagian sistem. Dalam kes ini, pengawal lata akan mempunyai gelung luar yang merupakan pengawal yang mempunyai maklum balas dari sensor IR. Gelung dalam mempunyai maklum balas dalam bentuk masa antara denyutan dari tachometer yang menentukan kelajuan putaran kipas. Dengan melaksanakan kawalan, tindak balas yang lebih baik dapat dicapai di luar sistem.

Bagaimana pengawal lata berfungsi?

Gelung luar pengawal akan memberi nilai untuk masa antara nadi ke pengawal gelung dalam. Pengawal ini kemudian akan meningkatkan atau menurunkan kitaran tugas untuk mencapai masa yang diinginkan antara denyutan.

Pelaksanaan pengubahsuaian pada rig

Malangnya, saya tidak dapat melaksanakan pengubahsuaian ini di pelantar kerana saya tidak dapat mengaksesnya. Saya menguji pengawal gelung tunggal yang disemak semula yang berfungsi seperti yang diharapkan. Saya belum menguji cascade controller. Saya yakin pengawal akan berfungsi tetapi mungkin memerlukan sedikit pengubahsuaian untuk berfungsi seperti yang diharapkan.

Ujian

Saya tidak dapat menguji pengawal kerana sukar untuk mensimulasikan dua sumber input. Satu-satunya masalah yang dapat saya lihat dengan pengawal kaskade ialah ketika gelung luar berusaha meningkatkan titik seting yang dibekalkan ke gelung dalam bahawa titik set yang lebih besar sebenarnya adalah RPS yang lebih rendah untuk kipas tetapi ini dapat diperbaiki dengan mudah. ambil titik set dari nilai maksimum isyarat titik titik (4095 - setpoint - tacho_result).

Langkah 10: Kesimpulannya

Secara keseluruhan projek berfungsi seperti yang saya mahukan ketika projek itu dimulakan jadi saya gembira dengan hasilnya. Terima kasih kerana meluangkan masa untuk membaca percubaan saya untuk mengembangkan pengawal PID di VHDL. Sekiranya ada yang berusaha untuk menerapkan beberapa variasi ini pada sistem dan memerlukan bantuan untuk memahami kod tersebut, hubungi saya, saya akan memberi respons secepat mungkin. Sesiapa yang mencuba kerja tambahan yang dipatuhi tetapi tidak dilaksanakan, sila hubungi saya untuk mendapatkan bantuan. Saya sangat menghargainya jika ada yang melaksanakannya memberitahu saya bagaimana keadaannya.

Disyorkan: