Kako mikrokontroler implementira PID kontrolu?

Jul 23, 2026 Ostavi poruku

PID kontrolni algoritam je trenutno jedan od najčešće korištenih algoritama upravljanja. PID kontrola nudi prednosti kao što su podesivi parametri, širok spektar primjena i visoka preciznost upravljanja. U praktičnom inženjeringu, PID algoritam se može primijeniti na različita polja, uključujući elektromehaničku kontrolu, industrijsku automatizaciju, robotiku i mikroprocesorsku kontrolu.


Tri parametra PID algoritma su: proporcionalni dobitak Kp, integralna vremenska konstanta Ti i vremenska konstanta derivacije Td. Različiti sistemi zahtevaju različite PID parametre, a optimalni parametri se obično dobijaju eksperimentisanjem i otklanjanjem grešaka. Proporcionalna konstanta Kp podešava proporcionalno pojačanje, kontrolišući odnos izlaza sistema i greške povratne sprege tokom rada; integralna vremenska konstanta Ti podešava integralno pojačanje, kontrolišući akumulaciju grešaka tokom rada sistema; a vremenska konstanta derivacije Td prilagođava derivacioni dobitak, kontrolišući stopu promene grešaka u sistemu upravljanja.


Kakav je pristup implementaciji PID algoritma na mikrokontroler?


Za implementaciju PID upravljačkog algoritma na mikrokontroler, opći pristup je sljedeći:

1. **Odredite PID parametre**:

- Odaberite odgovarajuće proporcionalno pojačanje (Kp), integralno vrijeme (Ti) i vrijeme derivacije (Td) na osnovu karakteristika i zahtjeva stvarnog kontroliranog objekta.


2. **Prikupljanje podataka senzora**:

- Koristite odgovarajuće senzore (kao što su senzori temperature, senzori položaja, itd.) za prikupljanje-povratnih podataka u stvarnom vremenu od kontroliranog objekta.


3. **Poređenje zadanih i povratnih vrijednosti**:

- Uporedite zadatu vrijednost (željena vrijednost) sa vrijednošću povratne informacije da izračunate grešku (Greška).


4. **PID proračun**:

- Izračunajte kontrolnu varijablu (izlaz) koristeći formulu PID algoritma: PID=Kp * Greška + Ki * ∫ Greška dt + Kd * d(Greška)/dt.

- Kp, Ki i Kd su PID parametri; Greška je vrijednost greške; ∫ Greška dt predstavlja integralni pojam; a d(Greška)/dt predstavlja derivatni pojam.


5. **Ograničavanje** (opciono):

- Za određene aplikacije, možda će biti potrebno ograničiti opseg izlazne vrijednosti kako bi se spriječilo da ona premaši prihvatljivi opseg kontroliranog objekta.


6. **Izlazni kontrolni signal**:

- Izračunata kontrolna varijabla se koristi kao kontrolni signal i šalje se aktuatoru (kao što je motor ili ventil) za regulaciju i kontrolu kontroliranog objekta.


7. **Postavite kontrolnu frekvenciju**:

- Postavite odgovarajuću kontrolnu frekvenciju-ciklus izvršenja kontrolnog algoritma-na osnovu specifičnih zahtjeva aplikacije.


8. **Ponovite PID algoritam**:

- U petlji u realnom vremenu-uzastopno izvršavajte gore navedene korake kako biste kontinuirano pratili povratnu vrijednost, izračunali kontrolnu varijablu i izbacili kontrolni signal kako biste postigli stabilnu kontrolu sistema.


U stvarnom programiranju mikrokontrolera, možete odabrati odgovarajuće razvojne alate i programske jezike (kao što je C ili asemblerski jezik) na osnovu specifičnog modela mikrokontrolera i razvojne platforme. Treba napomenuti da u praktičnim primenama postoje mnoge tehnike za optimizaciju i poboljšanje PID algoritma, kao što su integralno razdvajanje i adaptivni PID, koji se mogu dalje istraživati ​​i implementirati prema specifičnim zahtevima.

 

Principi i rad PID regulatora


PID regulator se sastoji od tri komponente: proporcionalne (P), integralne (I) i derivative (D). On generiše kontrolni izlaz obradom sistemske greške, odstupanja i stope promjene. Njegov rad uključuje sljedeće korake:


- Dobijte zadanu vrijednost i povratne vrijednosti

- Izračunajte grešku

- Izračunajte kontrolni izlaz na osnovu proporcionalnog dobitka, integralnog člana i derivativnog člana

- Ažurirajte parametre kontrolera

- Izlaz kontrolnog signala


Implementacija STM32 koda

 

Slijedi primjer koda za dizajniranje i implementaciju PID kontrolera pomoću STM32 mikrokontrolera:

```c

#include "stm32f4xx.h"

// Definirajte parametre PID regulatora

float Kp=0.5; // Proporcionalni dobitak

float Ki=0.2; // Integralni dobitak

float Kd=0.1; // Dobitak derivata

// Definirajte varijable memorije

float setpoint=50.0; // Zadana vrijednost

plutajuća povratna informacija=0.0; // Vrijednost povratne informacije

float greška=0.0; // Greška

float last_error=0.0; // Prethodna greška

float integral=0.0; // Integralni pojam

// Funkcija proračuna izlaza PID regulatora

float pidController(float dt)

{

// Izračunaj grešku

greška=zadana vrijednost - povratna informacija;

// Izračunaj integralni član

integralna += greška * dt;

// Izračunaj derivirani pojam

float derivat=(greška - last_error) / dt;

// Izračunaj kontrolni izlaz

float output=Kp * greška + Ki * integral + Kd * izvod;

// Ažuriraj prethodnu grešku

last_error=greška;

povratni izlaz;

}

int main(void)

{

dok (1)

{

// Dohvati povratnu vrijednost

// Postavi vremenski interval

// Izračunaj PID izlaz

float dt=0.01; // U ovom primjeru, vremenski interval je 0,01 s

float control_output=pidController(dt);

// Izlaz upravljačkog signala

// Odgoda na određeno vrijeme

for (int i=0; i < 10000; i++);

}

return 0;

}

Pošaljite upit

whatsapp

Telefon

E-pošte

Upit