PID-säätöalgoritmi on tällä hetkellä yksi yleisimmin käytetyistä ohjausalgoritmeista. PID-säätö tarjoaa etuja, kuten säädettävät parametrit, laajan valikoiman sovelluksia ja korkeaa ohjaustarkkuutta. Käytännön suunnittelussa PID-algoritmia voidaan soveltaa useilla aloilla, mukaan lukien sähkömekaaninen ohjaus, teollisuusautomaatio, robotiikka ja mikroprosessoriohjaus.
PID-algoritmin kolme parametria ovat: suhteellinen vahvistus Kp, integraaliaikavakio Ti ja derivaatan aikavakio Td. Eri järjestelmät vaativat erilaisia PID-parametreja, ja optimaaliset parametrit saadaan tyypillisesti kokeilemalla ja virheenkorjauksella. Suhteellinen vakio Kp säätää suhteellista vahvistusta ohjaten järjestelmän lähdön suhdetta takaisinkytkentävirheeseen toiminnan aikana; integraaliaikavakio Ti säätää integraalivahvistusta ohjaten virheiden kertymistä järjestelmän toiminnan aikana; ja derivaatan aikavakio Td säätää derivaattavahvistusta ohjaten virheiden muutosnopeutta ohjausjärjestelmässä.
Mikä on lähestymistapa PID-algoritmin toteuttamiseen mikro-ohjaimessa?
PID-säätöalgoritmin toteuttamiseksi mikro-ohjaimessa yleinen lähestymistapa on seuraava:
1. **Määritä PID-parametrit**:
- Valitse sopiva suhteellinen vahvistus (Kp), integrointiaika (Ti) ja derivointiaika (Td) todellisen ohjatun kohteen ominaisuuksien ja vaatimusten perusteella.
2. **Anturitietojen hankinta**:
- Käytä sopivia antureita (kuten lämpötila-antureita, sijaintiantureita jne.) saadaksesi reaaliaikaista-palautetietoa ohjatusta kohteesta.
3. **Asetusarvon ja palautearvojen vertailu**:
- Vertaa asetuspistettä (haluttu arvo) takaisinkytkentäarvoon virheen (virheen) laskemiseksi.
4. **PID-laskenta**:
- Laske ohjausmuuttuja (lähtö) käyttämällä PID-algoritmin kaavaa: PID=Kp * Virhe + Ki * ∫ Virhe dt + Kd * d(Virhe)/dt.
- Kp, Ki ja Kd ovat PID-parametreja; Error on virheen arvo; ∫ Virhe dt edustaa integraalitermiä; ja d(Virhe)/dt edustaa johdannaistermiä.
5. **Rajoitus** (valinnainen):
- Tietyissä sovelluksissa voi olla tarpeen rajoittaa lähtöarvon aluetta, jotta se ei ylitä ohjatun kohteen hyväksyttävää aluetta.
6. **Lähdön ohjaussignaali**:
- Laskettua ohjausmuuttujaa käytetään ohjaussignaalina ja lähetetään toimilaitteeseen (kuten moottoriin tai venttiiliin) ohjattavan kohteen säätämiseksi ja ohjaamiseksi.
7. **Aseta ohjaustaajuus**:
- Aseta sopiva ohjaustaajuus-ohjausalgoritmin suoritusjakso-sovelluskohtaisten vaatimusten perusteella.
8. **Iteroi PID-algoritmi**:
- Reaaliaikaisessa silmukassa toistuvasti suorita yllä olevat vaiheet seurataksesi jatkuvasti palautearvoa, laskeaksesi ohjausmuuttujan ja lähettääksesi ohjaussignaalin järjestelmän vakaan ohjauksen saavuttamiseksi.
Varsinaisessa mikro-ohjainohjelmoinnissa voit valita sopivat kehitystyökalut ja ohjelmointikielet (kuten C tai assembly-kieli) tietyn mikro-ohjainmallin ja kehitysalustan perusteella. On huomattava, että käytännön sovelluksissa PID-algoritmin optimoimiseksi ja parantamiseksi on monia tekniikoita, kuten integraalierotus ja adaptiivinen PID, joita voidaan edelleen tutkia ja toteuttaa erityisvaatimusten mukaan.
PID-säätimien periaatteet ja toiminta
PID-säädin koostuu kolmesta osasta: suhteellinen (P), integraali (I) ja derivaatta (D). Se generoi ohjauslähdön käsittelemällä järjestelmän virhettä, poikkeamaa ja muutosnopeutta. Sen toiminta sisältää seuraavat vaiheet:
- Hanki asetuspiste- ja palautearvot
- Laske virhe
- Laske ohjauslähtö suhteellisen vahvistuksen, integraalitermin ja derivaatan perusteella
- Päivitä ohjaimen parametrit
- Lähettää ohjaussignaalin
STM32-koodin käyttöönotto
Seuraavassa on esimerkkikoodi STM32-mikrokontrolleria käyttävän PID-säätimen suunnitteluun ja toteuttamiseen:
```c
#include "stm32f4xx.h"
// Määritä PID-säätimen parametrit
float Kp=0.5; // Suhteellinen voitto
kellua Ki=0.2; // Integraalivahvistus
float Kd=0.1; // Johdannainen voitto
// Määritä tallennusmuuttujat
float-asetuspiste=50.0; // Asetusarvo
kelluva palaute=0.0; // Palautearvo
float error=0.0; // Virhe
float last_error=0.0; // Edellinen virhe
float-integraali=0.0; // Integraalitermi
// PID-säätimen lähdön laskentatoiminto
float pidController(float dt)
{
// Laske virhe
virhe=asetuspiste - palaute;
// Laske integraalitermi
integraali += virhe * dt;
// Laske johdannaistermi
float derivaatta=(virhe - last_error) / dt;
// Laske ohjausteho
float output=Kp * virhe + Ki * integraali + Kd * derivaatta;
// Päivitä edellinen virhe
last_error=error;
tuotto;
}
int main(tyhjä)
{
kun (1)
{
// Hae palautearvo
// Aseta aikaväli
// Laske PID-lähtö
float dt=0.01; // Tässä esimerkissä aikaväli on 0,01 s
float control_output=pidController(dt);
// Lähettää ohjaussignaalin
// Viive tietyn ajan
for (int i=0; i < 10000; i++);
}
paluu 0;
}




