PID-kontrolalgoritmen er i øjeblikket en af de mest udbredte kontrolalgoritmer. PID-styring giver fordele såsom justerbare parametre, en bred vifte af applikationer og høj kontrolnøjagtighed. I praktisk teknik kan PID-algoritmen anvendes på forskellige områder, herunder elektromekanisk styring, industriel automation, robotteknologi og mikroprocessorstyring.
De tre parametre i PID-algoritmen er: den proportionale forstærkning Kp, den integrale tidskonstant Ti og den afledte tidskonstant Td. Forskellige systemer kræver forskellige PID-parametre, og optimale parametre opnås typisk gennem eksperimentering og debugging. Den proportionale konstant Kp justerer den proportionale forstærkning og styrer forholdet mellem systemets output og feedbackfejlen under drift; integraltidskonstanten Ti justerer integralforstærkningen og kontrollerer akkumuleringen af fejl under systemdrift; og den afledte tidskonstant Td justerer den afledte forstærkning, og styrer hastigheden for ændring af fejl i styresystemet.
Hvad er tilgangen til at implementere PID-algoritmen på en mikrocontroller?
For at implementere en PID-kontrolalgoritme på en mikrocontroller er den generelle tilgang som følger:
1. **Bestem PID-parametre**:
- Vælg passende proportional forstærkning (Kp), integraltid (Ti) og afledt tid (Td) baseret på karakteristika og krav til det faktiske kontrollerede objekt.
2. **Sensordataopsamling**:
- Brug passende sensorer (såsom temperatursensorer, positionssensorer osv.) til at indhente feedbackdata i realtid fra det kontrollerede objekt.
3. **Sammenligning af sætpunkts- og feedbackværdier**:
- Sammenlign sætpunktet (ønsket værdi) med feedbackværdien for at beregne fejlen (fejl).
4. **PID-beregning**:
- Beregn kontrolvariablen (output) ved hjælp af PID-algoritmeformlen: PID=Kp * Error + Ki * ∫ Error dt + Kd * d(Error)/dt.
- Kp, Ki og Kd er PID-parametre; Fejl er fejlværdien; ∫ Fejl dt repræsenterer integralleddet; og d(Fejl)/dt repræsenterer det afledte led.
5. **Begrænset** (valgfrit):
- For visse applikationer kan det være nødvendigt at begrænse rækkevidden af outputværdien for at forhindre den i at overskride det acceptable område for det kontrollerede objekt.
6. **Udgangskontrolsignal**:
- Den beregnede styrevariabel bruges som et styresignal og sendes til aktuatoren (såsom en motor eller ventil) for at regulere og styre det kontrollerede objekt.
7. **Indstil kontrolfrekvensen**:
- Indstil en passende kontrolfrekvens-udførelsescyklussen for kontrolalgoritmen-baseret på de specifikke applikationskrav.
8. **Gentag PID-algoritmen**:
- I en realtidsløkke skal du gentagne gange udføre ovenstående trin for løbende at overvåge feedbackværdien, beregne kontrolvariablen og udsende styresignalet for at opnå stabil kontrol af systemet.
I egentlig mikrocontrollerprogrammering kan du vælge passende udviklingsværktøjer og programmeringssprog (såsom C eller assemblersprog) baseret på den specifikke mikrocontrollermodel og udviklingsplatform. Det skal bemærkes, at der i praktiske applikationer er mange teknikker til at optimere og forbedre PID-algoritmen, såsom integral separation og adaptiv PID, som kan undersøges yderligere og implementeres i henhold til specifikke krav.
Principper og drift af PID-controllere
En PID-regulator består af tre komponenter: proportional (P), integral (I) og afledt (D). Det genererer et kontroloutput ved at behandle systemets fejl, afvigelse og ændringshastighed. Dens drift involverer følgende trin:
- Få sætpunkts- og feedbackværdierne
- Beregn fejlen
- Beregn kontroloutput baseret på proportional forstærkning, integralled og afledt led
- Opdater controllerens parametre
- Udsend styresignalet
STM32 Kode Implementering
Følgende er eksempelkode til design og implementering af en PID-controller ved hjælp af en STM32-mikrocontroller:
```c
#include "stm32f4xx.h"
// Definer PID-regulatorparametre
flyde Kp=0.5; // Proportional gevinst
flyde Ki=0.2; // Integral forstærkning
flyde Kd=0.1; // Afledt gevinst
// Definer lagervariabler
flydende sætpunkt=50.0; // Sætpunkt
flydende feedback=0.0; // Feedback værdi
flydefejl=0.0; // Fejl
float last_error=0.0; // Tidligere fejl
flydende integral=0.0; // Integral term
// PID controller output beregning funktion
float pidController(float dt)
{
// Beregn fejl
fejl=sætpunkt - feedback;
// Beregn integralled
integral += fejl * dt;
// Beregn afledt led
flydende afledt=(fejl - sidste_fejl) / dt;
// Beregn kontroloutput
float output=Kp * fejl + Ki * integral + Kd * afledet;
// Opdater tidligere fejl
sidste_fejl=fejl;
returnere output;
}
int main(void)
{
mens (1)
{
// Hent feedbackværdi
// Indstil tidsinterval
// Beregn PID output
float dt=0.01; // I dette eksempel er tidsintervallet 0,01 s
float control_output=pidController(dt);
// Udsender styresignalet
// Forsinkelse i en periode
for (int i=0; i < 10000; i++);
}
retur 0;
}




