Kaip mikrovaldiklis įgyvendina PID valdymą?

Jul 23, 2026 Palik žinutę

PID valdymo algoritmas šiuo metu yra vienas plačiausiai naudojamų valdymo algoritmų. PID valdymas siūlo tokius privalumus kaip reguliuojami parametrai, platus pritaikymo spektras ir didelis valdymo tikslumas. Praktinėje inžinerijoje PID algoritmas gali būti taikomas įvairiose srityse, įskaitant elektromechaninį valdymą, pramoninę automatiką, robotiką ir mikroprocesorių valdymą.


Trys PID algoritmo parametrai yra: proporcinis stiprinimas Kp, integralinė laiko konstanta Ti ir išvestinė laiko konstanta Td. Skirtingoms sistemoms reikalingi skirtingi PID parametrai, o optimalūs parametrai paprastai gaunami eksperimentuojant ir derinant. Proporcinė konstanta Kp reguliuoja proporcinį stiprinimą, valdydama sistemos išėjimo ir grįžtamojo ryšio paklaidos santykį veikimo metu; integralinio laiko konstanta Ti reguliuoja integralinį stiprinimą, valdydama klaidų kaupimąsi sistemos veikimo metu; o išvestinė laiko konstanta Td koreguoja išvestinį stiprinimą, kontroliuodama valdymo sistemos klaidų kitimo greitį.


Koks yra PID algoritmo diegimas mikrovaldiklyje?


Norint įdiegti PID valdymo algoritmą mikrovaldiklyje, bendras metodas yra toks:

1. **Nustatykite PID parametrus**:

- Pasirinkite tinkamą proporcinį stiprinimą (Kp), integravimo laiką (Ti) ir išvestinį laiką (Td), atsižvelgdami į faktinio valdomo objekto charakteristikas ir reikalavimus.


2. **Jutiklio duomenų gavimas**:

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


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

- Palyginkite nustatytą vertę (norimą vertę) su grįžtamojo ryšio reikšme, kad apskaičiuotumėte klaidą (klaidą).


4. **PID skaičiavimas**:

- Apskaičiuokite valdymo kintamąjį (išėjimą) naudodami PID algoritmo formulę: PID=Kp * Error + Ki * ∫ Error dt + Kd * d(Error)/dt.

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


5. **Apribojimas** (neprivaloma):

- Tam tikroms programoms gali prireikti apriboti išvesties vertės diapazoną, kad jis neviršytų priimtino valdomo objekto diapazono.


6. **Išvesties valdymo signalas**:

- Apskaičiuotas valdymo kintamasis naudojamas kaip valdymo signalas ir siunčiamas į pavarą (pvz., variklį arba vožtuvą), kad būtų galima reguliuoti ir valdyti valdomą objektą.


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

- Nustatykite tinkamą valdymo dažnį-valdymo algoritmo vykdymo ciklą-, atsižvelgdami į konkrečius programos reikalavimus.


8. **Pakartokite PID algoritmą**:

- Realaus laiko cikle pakartotinai atlikite anksčiau nurodytus veiksmus, kad nuolat stebėtumėte grįžtamojo ryšio vertę, apskaičiuotumėte valdymo kintamąjį ir išvestumėte valdymo signalą, kad sistema būtų valdoma stabiliai.


Realiai programuodami mikrovaldiklius, galite pasirinkti tinkamus kūrimo įrankius ir programavimo kalbas (pvz., C arba asamblėjos kalbą), atsižvelgdami į konkretų mikrovaldiklio modelį ir kūrimo platformą. Reikėtų pažymėti, kad praktikoje yra daug PID algoritmo optimizavimo ir tobulinimo metodų, tokių kaip integralus atskyrimas ir adaptyvusis PID, kuriuos galima toliau tirti ir įdiegti pagal specifinius reikalavimus.

 

PID valdiklių principai ir veikimas


PID valdiklis susideda iš trijų komponentų: proporcinio (P), integralo (I) ir išvestinės (D). Jis generuoja valdymo išvestį apdorodamas sistemos klaidą, nuokrypį ir pokyčio greitį. Jo veikimas apima šiuos veiksmus:


- Gaukite nustatytosios vertės ir grįžtamojo ryšio reikšmes

- Apskaičiuokite klaidą

- Apskaičiuokite valdymo išvestį pagal proporcinį stiprinimą, integralinį narį ir išvestinį narį

- Atnaujinkite valdiklio parametrus

- Išveskite valdymo signalą


STM32 kodo įgyvendinimas

 

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; // Proporcinis pelnas

plūduriuoti Ki=0.2; // Integralinis padidėjimas

plūduriuoti Kd=0.1; // Išvestinis pelnas

// Apibrėžkite saugojimo kintamuosius

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

plaukiojantis atsiliepimas=0.0; // Atsiliepimo reikšmė

float error=0.0; // Klaida

float last_error=0.0; // Ankstesnė klaida

plūdinis integralas=0.0; // Integralus terminas

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

float pidController (float dt)

{

// Apskaičiuokite klaidą

klaida=setpoint - atsiliepimas;

// Apskaičiuokite integralinį terminą

integralinė += klaida * dt;

// Apskaičiuokite išvestinį terminą

plaukiojanti išvestinė=(klaida - paskutinė_klaida) / dt;

// Apskaičiuokite valdymo išvestį

float output=Kp * klaida + Ki * integralas + Kd * išvestinė;

// Atnaujinti ankstesnę klaidą

paskutinė_klaida=klaida;

grąžinti išvestį;

}

int main (tuščia)

{

kol (1)

{

// Gauti grįžtamojo ryšio reikšmę

// Nustatykite laiko intervalą

// Apskaičiuokite PID išvestį

float dt=0.01; // Šiame pavyzdyje laiko intervalas yra 0,01 s

float control_output=pidController(dt);

// Išveda valdymo signalą

// Atidėti tam tikrą laikotarpį

už (int i=0; i < 10000; i++);

}

grąžinti 0;

}

Siųsti užklausą

whatsapp

Telefono

El. paštas

Tyrimo