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:

  1. Ustaw Ki = 0 i Kd = 0, po czym zwiększaj Kp do uzyskania stabilnych, krytycznych oscylacji (wyznacz Ku – wzmocnienie krytyczne oraz Tu – okres oscylacji).
  2. 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.