W robotyce, elektronice i automatyce regulator PID (proporcjonalno–całkująco–różniczkujący) to jeden z najbardziej wszechstronnych algorytmów sterowania, który minimalizuje uchyb między wartością zadaną a zmierzoną, wykorzystując pętlę sprzężenia zwrotnego.
Trzy człony – proporcjonalny (P), całkujący (I) i różniczkujący (D) – pozwalają precyzyjnie sterować prędkością, pozycją lub temperaturą, utrzymując stabilność układu i skracając czas regulacji.
Podstawy działania regulatora PID
Regulator PID oblicza uchyb jako różnicę między wartością zadaną (np. 1000 obr/min) a wartością zmierzoną (sprzężenie zwrotne z czujnika). Na tej podstawie generuje sygnał sterujący, który wpływa na obiekt regulacji (np. silnik DC), dążąc do zredukowania uchybu do zera.
Schemat blokowy działania jest prosty: od wartości zadanej odejmuje się wartość zmierzoną, uzyskany uchyb e(t) trafia do członów P, I, D, a ich suma tworzy sygnał sterujący u(t). Matematycznie algorytm PID opisuje równanie:
u(t) = Kp · e(t) + Ki · ∫_0^t e(τ) dτ + Kd · de(t)/dt
gdzie Kp, Ki i Kd to odpowiednio wzmocnienia: proporcjonalne, całkujące i różniczkujące.
W praktyce cyfrowej stosuje się wersję dyskretną z określonym czasem próbkowania T (np. na Arduino czy STM32), co upraszcza implementację i pozwala lepiej filtrować szumy.
Składniki regulatora PID – szczegółowy rozkład
Człon proporcjonalny (P) reaguje na bieżący uchyb i proporcjonalnie zmienia sygnał sterujący. Im większy Kp, tym szybsza reakcja, ale rośnie ryzyko oscylacji i przeregulowania.
Człon całkujący (I) akumuluje sumę uchybów z przeszłości, dzięki czemu eliminuje uchyb statyczny (np. wynikający z tarcia). Zbyt duże Ki może powodować przeregulowanie i oscylacje.
Człon różniczkujący (D) reaguje na szybkość zmian uchybu (de/dt), co tłumi oscylacje i poprawia stabilność, zwłaszcza przy szybkich manewrach i nagłych zmianach obciążenia.
W zależności od charakteru obiektu wyróżnia się następujące warianty regulatora:
- P – tylko proporcjonalny (Ti = ∞, Td = 0);
- PI – bez różniczkowania (Td = 0);
- PD – bez całkowania (Ti = ∞);
- PID – pełny dla złożonych systemów.
Zastosowania w robotyce i elektronice
W robotyce PID steruje prędkością kół robotów mobilnych, pozycją serwomechanizmów i stabilizacją dronów. W pętli z enkoderem PID koryguje wypełnienie PWM, redukując drgania i skracając czas narastania.
W elektronice stosuje się go m.in. w zasilaczach (regulacja napięcia/prądu), sterowaniu temperaturą (lutownice, komory) czy utrzymywaniu poziomu medium w zbiornikach. W falownikach PID utrzymuje stałą prędkość silnika na podstawie sprzężenia zwrotnego z tachometru.
Kaskadowa regulacja PID łączy szybki regulator wewnętrzny (np. prądu) z wolniejszym zewnętrznym (np. prędkości lub pozycji), co zwiększa odporność na zakłócenia i poprawia dynamikę układu.
Metody dostrajania regulatora PID
Dostrojenie parametrów to klucz do stabilnej, szybkiej i dokładnej regulacji – błędne nastawy prowadzą do oscylacji, przeregulowania lub niestabilności.
Metoda prób i błędów (Ziegler–Nichols)
Aby zastosować klasyczną metodę Zieglera–Nicholsa, postępuj według kroków:
- Ustaw Ki = 0 i Kd = 0, po czym zwiększaj Kp do uzyskania stabilnych, krytycznych oscylacji (wyznacz Ku – wzmocnienie krytyczne oraz Tu – okres oscylacji).
- Oblicz nastawy dla PID: Kp = 0,6 · Ku, Ki = 2 · Kp / Tu, Kd = Kp · Tu / 8.
Inne metody
W praktyce stosuje się także inne strategie strojenia:
- Metoda matematyczna – odpowiedź skokowa i analiza częstotliwościowa; dobra dla wolnych procesów;
- Autotuning – regulator sam dobiera nastawy na podstawie kontrolowanego testu;
- Inżynieryjna – strojenie oparte na doświadczeniu: najpierw zwiększanie P do oscylacji, następnie dodanie I i D.
Porównanie najpopularniejszych metod dostrajania wygląda tak:
| Metoda dostrajania | Zalety | Wady | Zastosowanie |
|---|---|---|---|
| Ziegler–Nichols | Prosta, empiryczna | Ryzyko oscylacji | Szybkie prototypy w robotyce |
| Matematyczna | Precyzyjna dla wolnych procesów | Wymaga modelu układu | Procesy przemysłowe |
| Autotuning | Automatyczna | Zależna od oprogramowania | Nowoczesne falowniki |
Implementacja w praktyce – przykłady kodowe
W mikrokontrolerach (np. STM32, Arduino) PID zwykle wywołuje się cyklicznie w stałym kroku czasowym. Przykładowy kod w C++ (Arduino):
float Kp = 2.0f, Ki = 5.0f, Kd = 1.0f;
float error = 0.0f, previousError = 0.0f, integral = 0.0f;
const float dt = 0.01f; // czas próbkowania [s]
float pidUpdate(float setpoint, float measured) {
error = setpoint - measured;
integral += error * dt; // I: akumulacja uchybu
float derivative = (error - previousError) / dt; // D: pochodna uchybu
float output = Kp * error + Ki * integral + Kd * derivative;
previousError = error;
return output; // -> sygnał sterujący (np. PWM)
}
Kod kompensuje bieżący, przeszły i przewidywany uchyb; w sterownikach PLC (np. Siemens) PID jest dostępny jako blok funkcyjny często z funkcją autotuningu.
Zalety, wady i wskazówki
Zalety – uniwersalność bez konieczności dokładnego modelu obiektu, wysoka precyzja i dobra odporność na zakłócenia w robotyce.
Wady – trudne strojenie, wrażliwość członu D na szumy, ryzyko niestabilności przy złych nastawach.
Wskazówki dla robotyków:
- filtruj składową D (np. filtrem dolnoprzepustowym),
- zastosuj mechanizm anti-windup dla członu I,
- testuj w symulatorach, takich jak MATLAB, przed uruchomieniem na sprzęcie.
Regulator PID pozostaje fundamentem nowoczesnej automatyki i stanowi punkt wyjścia do rozwiązań adaptacyjnych oraz fuzzy-PID dla złożonych układów.