A PID szabályozási algoritmus jelenleg az egyik legszélesebb körben használt vezérlési algoritmus. A PID szabályozás olyan előnyöket kínál, mint az állítható paraméterek, az alkalmazások széles skálája és a nagy szabályozási pontosság. A gyakorlati tervezésben a PID algoritmus számos területen alkalmazható, beleértve az elektromechanikus vezérlést, az ipari automatizálást, a robotikát és a mikroprocesszoros vezérlést.
A PID algoritmus három paramétere: a Kp arányos erősítés, a Ti integrál időállandó és a Td derivált időállandó. A különböző rendszerek eltérő PID-paramétereket igényelnek, és az optimális paramétereket általában kísérletezéssel és hibakereséssel érik el. A Kp arányos állandó beállítja az arányos erősítést, szabályozva a rendszer kimenetének és a működés közbeni visszacsatolási hibának az arányát; a Ti integrálási időállandó beállítja az integrál erősítést, szabályozva a hibák felhalmozódását a rendszer működése során; és a Td derivált időállandó beállítja a derivált erősítést, szabályozva a vezérlőrendszerben előforduló hibák változási sebességét.
Mi a PID-algoritmus megvalósításának módja egy mikrokontrolleren?
A PID vezérlési algoritmus mikrokontrolleren való megvalósításához az általános megközelítés a következő:
1. **Határozza meg a PID-paramétereket**:
- Válassza ki a megfelelő arányos erősítést (Kp), az integrálási időt (Ti) és a deriválási időt (Td) az aktuális vezérelt objektum jellemzői és követelményei alapján.
2. **Érzékelő adatgyűjtés**:
- Használjon megfelelő érzékelőket (például hőmérséklet-érzékelőket, helyzetérzékelőket stb.) a valós idejű-visszacsatolási adatok gyűjtéséhez a vezérelt objektumtól.
3. **Az alapjel és a visszacsatolási értékek összehasonlítása**:
- Hasonlítsa össze az alapjelet (kívánt értéket) a visszacsatolási értékkel a hiba (Hiba) kiszámításához.
4. **PID-számítás**:
- Számítsa ki a vezérlőváltozót (kimenetet) a PID algoritmus képletével: PID=Kp * Hiba + Ki * ∫ Hiba dt + Kd * d(Hiba)/dt.
- Kp, Ki és Kd PID paraméterek; Az Error a hiba értéke; ∫ A dt hiba az integrál tagot jelöli; és d(Hiba)/dt jelenti a származékos kifejezést.
5. **Korlátozás** (opcionális):
- Bizonyos alkalmazások esetén szükség lehet a kimeneti érték tartományának korlátozására, hogy az ne lépje túl a vezérelt objektum elfogadható tartományát.
6. **Kimeneti vezérlőjel**:
- A számított vezérlőváltozót a rendszer vezérlőjelként használja, és elküldi a működtetőelemnek (például motornak vagy szelepnek) a vezérelt objektum szabályozására és vezérlésére.
7. **Állítsa be a vezérlési frekvenciát**:
- Állítsa be a megfelelő vezérlési gyakoriságot-a vezérlőalgoritmus végrehajtási ciklusát- az alkalmazási követelmények alapján.
8. **Iterálja meg a PID algoritmust**:
- Valós idejű hurokban, ismételten hajtsa végre a fenti lépéseket a visszacsatolási érték folyamatos figyeléséhez, a vezérlőváltozó kiszámításához és a vezérlőjel kiadásához a rendszer stabil vezérlése érdekében.
A tényleges mikrokontroller-programozás során kiválaszthatja a megfelelő fejlesztőeszközöket és programozási nyelveket (például C vagy assembly nyelvet) az adott mikrovezérlő modell és fejlesztői platform alapján. Megjegyzendő, hogy a gyakorlati alkalmazásokban számos technika létezik a PID algoritmus optimalizálására és javítására, mint például az integrált elválasztás és az adaptív PID, amelyek tovább kutathatók és speciális követelményeknek megfelelően implementálhatók.
A PID-szabályozók alapelvei és működése
A PID-szabályozó három összetevőből áll: arányos (P), integrál (I) és derivált (D). A rendszer hibájának, eltérésének és változási sebességének feldolgozásával vezérlőkimenetet állít elő. Működése a következő lépésekből áll:
- Szerezze meg az alapjelet és a visszacsatolási értékeket
- Számítsa ki a hibát
- Számítsa ki a vezérlőkimenetet az arányos erősítés, az integráltag és a derivált tag alapján
- Frissítse a vezérlő paramétereit
- Kiadja a vezérlőjelet
STM32 kód implementáció
A következő példakód egy PID-szabályozó STM32 mikrokontrollerrel történő tervezéséhez és megvalósításához:
```c
#include "stm32f4xx.h"
// PID-szabályozó paramétereinek meghatározása
float Kp=0.5; // Arányos nyereség
úszó Ki=0.2; // Integrális nyereség
float Kd=0.1; // Derivatív nyereség
// Tárolási változók meghatározása
float alapjel=50.0; // Alapjel
float feedback=0.0; // Visszacsatolási érték
float error=0.0; // Hiba
float last_error=0.0; // Előző hiba
float integrál=0.0; // Integrált kifejezés
// PID-szabályozó kimenet számítási funkciója
float pidController(float dt)
{
// Hibaszámítás
hiba=setpoint - visszajelzés;
// Integráltag kiszámítása
integrál += hiba * dt;
// A derivált kifejezés kiszámítása
float derivált=(hiba - last_error) / dt;
// Vezérlő kimenet kiszámítása
float output=Kp * hiba + Ki * integrál + Kd * derivált;
// Frissítse az előző hibát
last_error=error;
visszatérő kimenet;
}
int main(üres)
{
míg (1)
{
// Visszajelzési érték lekérése
// Időintervallum beállítása
// A PID kimenet kiszámítása
float dt=0.01; // Ebben a példában az időintervallum 0,01 s
float control_output=pidController(dt);
// Kiadja a vezérlőjelet
// Késleltetés egy ideig
for (int i=0; i < 10000; i++);
}
visszatérés 0;
}




