Kako realizirati pid kontrolu pomoću mikrokontrolera

Jun 25, 2025 Ostavi poruku

PID kontrolni algoritam je široko korišten kontrolni algoritam, PID kontrola ima prednosti podesivih parametara, širok spektar primjena, visoku preciznost upravljanja. U praktičnom inženjerstvu, PID algoritam se može primijeniti na elektromehaničku kontrolu, industrijsku automatizaciju, upravljanje robotima, mikroprocesorsku kontrolu i mnoga druga polja.


Prilagođavaju se tri parametra PID algoritma: konstanta proporcionalnosti Kp, integralna vremenska konstanta Ti, diferencijalna vremenska konstanta Td. Različiti sistemi trebaju postaviti različite PID parametre i općenito je potrebno dobiti optimalne parametre kroz eksperimente i otklanjanje grešaka. Konstanta proporcionalnosti Kp podešava proporciju, prilagođavajući omjer izlazne i povratne greške u upravljačkom sistemu; integralna vremenska konstanta Ti prilagođava integral, prilagođavajući akumulaciju greške u upravljačkom sistemu; diferencijalna vremenska konstanta Td podešava diferencijal, prilagođavajući stopu promjene greške u upravljačkom sistemu.


Koja je ideja realizacije pid algoritma sa mikrokontrolerom


Da bi se PID upravljački algoritam realizovao na mikrokontroleru, sledeća je opšta ideja realizacije:


1. **Odredite PID parametre**:


- U skladu sa karakteristikama i potrebama stvarnog objekta upravljanja, odaberite odgovarajući koeficijent proporcionalnosti (Kp), vrijeme integracije (Ti) i vrijeme diferencijacije (Td).


2. **Prikupljanje podataka senzora**:


- Koristite odgovarajuće senzore (npr. senzore temperature, senzore položaja, itd.) za prikupljanje povratnih podataka od kontrolnog objekta u realnom vremenu.


3. **Poređenje podešene vrijednosti i povratne vrijednosti**:


- Uporedite postavljenu vrijednost (željena vrijednost) sa povratnom vrijednošću i izračunajte vrijednost greške (Greška).


4. **PID proračun**:


- Kontrolna količina (izlaz) se izračunava prema formuli 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 označava integralni član, a d(Greška)/dt označava diferencijalni član.


5. **Upravljanje ograničenjem** (opciono):


- Za neke aplikacije, možda će biti potrebno ograničiti opseg izlazne vrijednosti kako bi se izbjeglo prekoračenje prihvatljivog opsega kontrolnog objekta.


6. **Izlazni kontrolni signal**:


- Izračunata kontrolna veličina izlazi kao upravljački signal aktuatoru (npr. motoru, ventilu, itd.) radi realizacije regulacije i kontrole kontrolnog objekta.


7. **Podesite kontrolnu frekvenciju**:


- Prema potrebama specifičnih aplikacija, postavite odgovarajuću kontrolnu frekvenciju za kontrolu ciklusa izvršavanja algoritma.


8. **Izvođenje ciklusa PID algoritma**:


- U realnom-ciklusu, gornji koraci se izvode uzastopno kako bi se kontinuirano pratila povratna vrijednost, izračunala kontrolna količina i izdao kontrolni signal kako bi se ostvarila stabilna kontrola objekta.


U stvarnom programiranju mikrokontrolera, možete odabrati odgovarajuće razvojne alate i programski jezik (kao što je C ili asemblerski jezik) prema specifičnom modelu mikrokontrolera i razvojnoj platformi. Treba napomenuti da će u praktičnim primjenama postojati mnoge tehnike za optimizaciju i poboljšanje PID algoritma, kao što su integralno razdvajanje, adaptivni PID, itd., koje se mogu dalje istraživati ​​i implementirati prema specifičnim potrebama.


Princip i tok rada PID regulatora


PID regulator se sastoji od tri dijela: proporcionalnog (P), integralnog (I) i diferencijalnog (D) i generiše upravljački izlaz obradom greške, odstupanja i brzine promjene sistema. Njegov radni tok uključuje sljedeće korake:


- Dobijanje ciljnih i povratnih vrijednosti

- Izračunajte grešku

- Izračunajte kontrolni izlaz na osnovu koeficijenta proporcionalnosti, integralnog člana i diferencijalnog člana.

- Ažuriranje parametara kontrolera

- Izlaz kontrolnih 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; // faktor skale

float Ki=0.2; // Integralni koeficijent

float Kd=0.1; // Diferencijalni koeficijent

// Definirajte varijable memorije

float setpoint=50.0; // ciljna vrijednost

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

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

float last_error=0.0; // zadnja greška

float integral=0.0; // Integralni pojam

// Funkcija proračuna izlaza PID regulatora

float pidController(float dt)

float pidController(float dt) {

// Izračunaj grešku

greška=zadana vrijednost - povratna informacija; // Izračunaj integralni član.

// Izračunaj integralni član

integralna += greška * dt; // izračunati diferencijalni član

// Izračunaj diferencijal

float derivat=(greška - last_error) / dt; // izračunati kontrolni izlaz.

// Izračunati kontrolni izlaz

float output=Kp * greška + Ki * integral + Kd * izvod; // Izračunati kontrolni izlaz.

// Ažuriraj posljednju grešku

last_error=greška; // ažuriranje zadnje greške.

last_error=greška; povratni izlaz; // Izračunati kontrolni izlaz.

}

int main(void)

{

dok (1)

{

// Dobiva povratnu vrijednost

// Dobiva vremenski interval

// Izračunaj PID izlaz

float dt=0.01; // 0.01s kao vremenski interval u primjeru

float control_output=pidController(dt); // izlaz kontrolni signal.

// Izlaz upravljačkog signala

// Odgodi kontrolni signal za određeni vremenski period

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

}

return 0; }

}

Pošaljite upit

whatsapp

Telefon

E-pošte

Upit