Kaip realizuoti pid valdymą mikrovaldikliu

Jun 25, 2025 Palik žinutę

PID valdymo algoritmas yra plačiai naudojamas valdymo algoritmas, PID valdymas turi reguliuojamų parametrų, plataus pritaikymo spektro, didelio valdymo tikslumo privalumus. Praktinėje inžinerijoje PID algoritmas gali būti taikomas elektromechaniniam valdymui, pramoninei automatikai, robotų valdymui, mikroprocesorių valdymui ir daugeliui kitų sričių.


Koreguojami trys PID algoritmo parametrai: proporcingumo konstanta Kp, integralinė laiko konstanta Ti, diferencinė laiko konstanta Td. Skirtingoms sistemoms reikia nustatyti skirtingus PID parametrus ir paprastai reikia gauti optimalius parametrus atliekant eksperimentus ir derinant. Proporcingumo konstanta Kp koreguoja proporciją, reguliuoja išėjimo ir grįžtamojo ryšio paklaidos santykį valdymo sistemoje; integralo laiko konstanta Ti koreguoja integralą, koreguojant paklaidų kaupimąsi valdymo sistemoje; diferencialinė laiko konstanta Td sureguliuoja skirtumą, koreguojant paklaidos kitimo greitį valdymo sistemoje.


Kokia idėja realizuoti pid algoritmą su mikrovaldikliu


Norint realizuoti PID valdymo algoritmą mikrovaldiklyje, bendra realizavimo idėja yra tokia:


1. **Nustatykite PID parametrus**:


- Pagal faktinio valdymo objekto charakteristikas ir poreikius pasirinkite atitinkamą proporcingumo koeficientą (Kp), integravimo laiką (Ti) ir diferenciacijos laiką (Td).


2. **Jutiklio duomenų gavimas**:


- Naudokite tinkamus jutiklius (pvz., temperatūros jutiklius, padėties jutiklius ir kt.), kad realiuoju laiku rinktumėte grįžtamojo ryšio duomenis iš valdymo objekto.


3. **Nustatytos vertės ir grįžtamojo ryšio verčių palyginimas**:


- Palyginkite nustatytą vertę (norimą vertę) su grįžtamojo ryšio reikšme ir apskaičiuokite klaidos reikšmę (klaida).


4. **PID skaičiavimas**:


- Kontrolinis kiekis (išvestis) apskaičiuojamas pagal PID algoritmo formulę: PID=Kp * Klaida + Ki * ∫ Klaida dt + Kd * d(Klaida)/dt.


- Kp, Ki ir Kd yra PID parametrai, Error yra klaidos reikšmė, ∫ Error dt reiškia integralinį terminą, o d(Klaida)/dt – diferencialinį terminą.


5. **Apribojimų tvarkymas** (neprivaloma):


- Kai kurioms programoms gali prireikti apriboti išvesties vertės diapazoną, kad nebūtų viršytas priimtinas valdymo objekto diapazonas.


6. **Išėjimo valdymo signalas**:


- Apskaičiuotas valdymo dydis išvedamas kaip valdymo signalas į pavarą (pvz., variklį, vožtuvą ir pan.), kad būtų galima reguliuoti ir valdyti valdymo objektą.


7. **Nustatykite valdymo dažnį**:


- Atsižvelgdami į konkrečių programų poreikius, nustatykite tinkamą valdymo dažnį, kad galėtumėte valdyti algoritmo vykdymo ciklą.


8. **PID algoritmo vykdymo ciklas**:


- Realiojo-laiko cikle pirmiau minėti veiksmai atliekami pakartotinai, siekiant nuolat stebėti grįžtamojo ryšio vertę, apskaičiuoti valdymo kiekį ir išvesti valdymo signalą, kad būtų užtikrintas stabilus objekto valdymas.


Faktiniame mikrovaldiklio programavime galite pasirinkti tinkamus kūrimo įrankius ir programavimo kalbą (pvz., C arba surinkimo kalbą) pagal konkretų mikrovaldiklio modelį ir kūrimo platformą. Pažymėtina, kad praktikoje PID algoritmui optimizuoti ir tobulinti bus daug technikų, tokių kaip integralinis atskyrimas, adaptyvusis PID ir kt., kurias bus galima toliau tirti ir diegti pagal konkrečius poreikius.


PID valdiklio principas ir darbo eiga


PID valdiklis susideda iš trijų dalių: proporcinio (P), integralo (I) ir diferencialinio (D) ir generuoja valdymo išvestį apdorodamas sistemos paklaidą, nuokrypį ir pokyčio greitį. Jo darbo eiga apima šiuos veiksmus:


- Tikslinių ir grįžtamojo ryšio verčių gavimas

- Apskaičiuokite klaidą

- Apskaičiuokite valdymo išvestį pagal proporcingumo koeficientą, integralinį narį ir diferencialinį narį.

- Valdiklio parametrų atnaujinimas

- Valdymo signalų išvedimas

 


STM32 kodo diegimas


Toliau pateikiamas PID valdiklio projektavimo ir įdiegimo naudojant STM32 mikrovaldiklį pavyzdys:


```c

#include "stm32f4xx.h"

// Apibrėžkite PID valdiklio parametrus

plūduriuoti Kp=0.5; // mastelio koeficientas

plūduriuoti Ki=0.2; // Integralinis koeficientas

plūduriuoti Kd=0.1; // Diferencialinis koeficientas

// Apibrėžkite saugyklos kintamuosius

plūdės nustatymo taškas=50.0; // tikslinė vertė

plaukiojantis atsiliepimas=0.0; // grįžtamojo ryšio reikšmė

float error=0.0; // klaida

float last_error=0.0; // paskutinė klaida

plūdinis integralas=0.0; // Integralus terminas

// PID valdiklio išėjimo skaičiavimo funkcija

float pidController (float dt)

float pidController(float dt) {

// Apskaičiuokite klaidą

klaida=setpoint - atsiliepimas; // Apskaičiuokite integralo narį.

// Apskaičiuokite integralo narį

integralinė += klaida * dt; // apskaičiuokite diferencialinį terminą

// Apskaičiuokite skirtumą

plaukiojanti išvestinė=(klaida - paskutinė_klaida) / dt; // apskaičiuoja valdymo išvestį.

// Apskaičiuokite valdymo išvestį

float output=Kp * klaida + Ki * integralas + Kd * išvestinė; // Apskaičiuokite valdymo išvestį.

// Atnaujinti paskutinę klaidą

paskutinė_klaida=klaida; // atnaujinti paskutinę klaidą.

paskutinė_klaida=klaida; grąžinti išvestį; // Apskaičiuokite valdymo išvestį.

}

int main (tuščia)

{

kol (1)

{

// Gaukite grįžtamojo ryšio vertę

// Gaukite laiko intervalą

// Apskaičiuokite PID išvestį

float dt=0.01; // 0,01 s kaip laiko intervalas pavyzdyje

float control_output=pidController(dt); // išveda valdymo signalą.

// Išveda valdymo signalą

// Atidėti valdymo signalą tam tikram laikui

už (int i=0; i 《 10000;i++).

}

grąžinti 0; }

}

Siųsti užklausą

whatsapp

Telefono

El. paštas

Tyrimo