Cara merealisasikan kawalan PID oleh mikrokontroler

Jun 25, 2025 Tinggalkan pesanan

Algoritma kawalan PID adalah algoritma kawalan yang digunakan secara meluas, kawalan PID mempunyai kelebihan parameter laras, pelbagai aplikasi, ketepatan kawalan tinggi. Dalam kejuruteraan praktikal, algoritma PID boleh digunakan untuk kawalan elektromekanik, automasi perindustrian, kawalan robot, kawalan mikropemproses dan banyak bidang lain.


Tiga parameter algoritma PID diselaraskan: KP malar berkadar, masa integral tetap Ti, TD berterusan masa yang berlainan. Sistem yang berbeza perlu menetapkan parameter PID yang berbeza, dan secara amnya perlu untuk mendapatkan parameter optimum melalui eksperimen dan debugging. KP tetap berkadar menyesuaikan perkadaran, menyesuaikan nisbah output dan kesilapan maklum balas dalam sistem kawalan; Masa tetap integral TI menyesuaikan integral, menyesuaikan pengumpulan ralat dalam sistem kawalan; TD berterusan masa pembezaan menyesuaikan perbezaan, menyesuaikan kadar perubahan ralat dalam sistem kawalan.


Apakah idea untuk merealisasikan algoritma PID dengan mikrokontroler


Untuk merealisasikan algoritma kawalan PID pada mikrokontroler, berikut adalah idea umum untuk merealisasikan:


1. ** Tentukan parameter PID **:


- Menurut ciri -ciri dan keperluan objek kawalan sebenar, pilih pekali proporsionaliti yang sesuai (KP), masa integrasi (Ti) dan masa pembezaan (TD).


2. ** Pengambilalihan data sensor **:


- Gunakan sensor yang sesuai (misalnya, sensor suhu, sensor kedudukan, dan lain -lain) untuk mengumpul data maklum balas dari objek kawalan dalam masa nyata.


3. ** Tetapkan nilai dan perbandingan nilai maklum balas **:


- Bandingkan nilai set (nilai yang dikehendaki) dengan nilai maklum balas dan hitung nilai ralat (ralat).


4. ** Pengiraan PID **:


- Jumlah kawalan (output) dikira mengikut formula algoritma PID: pid=kp * error + ki * ∫ error dt + kd * d (error)/dt.


- kp, ki dan kd adalah parameter PID, ralat adalah nilai ralat, ∫ ralat DT menandakan istilah integral dan d (ralat)/dt menandakan istilah pembezaan.


5. ** Had pengendalian ** (pilihan):


- Untuk sesetengah aplikasi, mungkin perlu untuk mengehadkan julat nilai output untuk mengelakkan melebihi julat objek kawalan yang boleh diterima.


6. ** Isyarat kawalan output **:


- Kuantiti kawalan yang dikira adalah output sebagai isyarat kawalan kepada penggerak (contohnya motor, injap, dan lain -lain) untuk merealisasikan peraturan dan kawalan objek kawalan.


7. ** Tetapkan kekerapan kawalan **:


- Menurut keperluan aplikasi tertentu, tetapkan kekerapan kawalan yang sesuai untuk mengawal kitaran pelaksanaan algoritma.


8. ** Pelaksanaan kitaran algoritma PID **:


- Dalam kitaran masa - sebenar, langkah -langkah di atas dilaksanakan berulang kali untuk memantau nilai maklum balas secara berterusan, mengira kuantiti kawalan, dan mengeluarkan isyarat kawalan untuk merealisasikan kawalan stabil objek.


Dalam pengaturcaraan mikrokontroler sebenar, anda boleh memilih alat pembangunan dan bahasa pengaturcaraan yang sesuai (seperti bahasa C atau pemasangan) mengikut model mikrokontroler tertentu dan platform pembangunan. Harus diingat bahawa dalam aplikasi praktikal, terdapat banyak teknik untuk mengoptimumkan dan meningkatkan algoritma PID, seperti pemisahan integral, PID adaptif, dan lain -lain, yang boleh dikaji dan dilaksanakan selanjutnya mengikut keperluan tertentu.


Prinsip dan aliran kerja PID


Pengawal PID terdiri daripada tiga bahagian: berkadar (p), integral (i) dan perbezaan (d), dan menghasilkan output kawalan dengan memproses kesilapan, sisihan dan kadar perubahan sistem. Aliran kerja termasuk langkah -langkah berikut:


- Mendapatkan nilai sasaran dan maklum balas

- Kirakan ralat

- Kirakan output kawalan berdasarkan pekali proporsional, istilah integral dan istilah pembezaan.

- Mengemas kini parameter pengawal

- Output isyarat kawalan

 


Pelaksanaan kod STM32


Berikut adalah kod sampel untuk mereka bentuk dan melaksanakan pengawal PID menggunakan mikrokontroler STM32:


```c

#Enclude "STM32F4XX.H"

// Tentukan parameter pengawal PID

float kp=0.5; // Faktor Skala

float ki=0.2; // pekali integral

float kd=0.1; // pekali pembezaan

// Tentukan pembolehubah penyimpanan

float setpoint=50.0; // nilai sasaran

Maklum balas terapung=0.0; // Nilai maklum balas

ralat terapung=0.0; // ralat

float last_error=0.0; // Kesalahan terakhir

float integral=0.0; // istilah integral

// fungsi pengiraan output pengawal PID

Float PidController (Float DT)

Float pidController (float dt) {

// Kirakan ralat

error=setpoint - maklum balas; // Kirakan istilah integral.

// Kirakan istilah yang penting

integral += error * dt; // Kirakan istilah pembezaan

// Kirakan perbezaannya

Float Derivative=(error - last_error) / dt; // Kirakan output kawalan.

// Kirakan output kawalan

output float=kp * error + ki * integral + kd * derivatif; // Kirakan output kawalan.

// kemas kini ralat terakhir

last_error=error; // Kemas kini ralat terakhir.

last_error=error; output pulangan; // Kirakan output kawalan.

}

int main (tidak sah)

{

Semasa (1)

{

// Dapatkan nilai maklum balas

// Dapatkan selang masa

// Kirakan output PID

float dt=0.01; // 0.01s sebagai selang waktu dalam contoh

float control_output=pidController (dt); // output isyarat kawalan.

// output isyarat kawalan

// melambatkan isyarat kawalan untuk jangka waktu tertentu

untuk (int i=0; i 《10000; i ++).

}

kembali 0; }

}

Hantar pertanyaan

whatsapp

Telefon

E-mel

Siasatan