środa, 20 stycznia 2016

Zasada działania regulatora PID

W tym poście opiszę teorię dotycząca działania regulatora PID. W oddzielnych postach przedstawię sposób jego wykonania na mikrokontrolerze STM32 oraz na ATmega w oparciu o środowisko programistyczne Arduino IDE.


Wstęp


Regulator PID - jest to regulator proporcjonalno-całkująco-różniczkowy, który składa się z trzech członów o przytoczonych nazwach. Jego celem jest przeważnie utrzymanie wartości wyjściowej na poziomie wartości zadanej. Co w praktyce sprowadza się do odpowiedniego postępowania z występującymi odchyleniami od wartości zadanych.

Pracuje on w pętli sprzężenia zwrotnego. Oblicza wartość różnicy pomiędzy parametrem zadanym a zmierzonym. Działa on w taki sposób aby zredukować różnicę poprzez dostosowanie sygnału jaki jest podawany na wejście układu.

Stosuje się go przeważnie w obiektach które poddawane są wpływom zakłóceń, charakteryzujących się dużymi, gwałtownymi zmianami. 

Na rysunku 1 przedstawiono schemat blokowy idealnego regulatora PID. 

Rys. 1. Regulator PID

Ogólnie działa to tak, że ustawiona jest pewna wartość stała np. temperatura. Sprawdzana jest jej wartości gdy jest za wysoka ogrzewanie jest wyłączane, gdy spadnie ona poniżej zadanej wartości ogrzewanie zostaje ponownie załączone. I tak w kółko do momentu osiągnięcia zaprogramowanej wartości. Ważna jest zastosowana pętla sprzężenia zwrotnego podająca aktualny stan na początek całego procesu, pozwala to na zapewnienie pełnej kontroli dla całego układu. Co pozwoli na maksymalne zmniejszenie występowania błędów w zależności od czasu działania układu.

Zgodnie z rysunkiem pierwszym działanie układu wygląda następującą. Sygnał podawany jest na wejście po czym zostaje on wzmocniony o wartość Kp. Następnie następuje przesłanie go na trzy układy. W członie proporcjonalnym wartość zostaje przemnożona przez 1, czyli nie ulega ona zmianie. Część całkująca wykorzystuje wartość Tis. Jest to czas jaki jest potrzebny do osiągnięcia przez sygnał wyjściowy wartości podwojonego sygnału wyjściowego. Zapewnia to likwidację uchybu pomiędzy wartością zadaną a wartością sygnału wyjściowego ustalonego oraz wprowadza przesunięcie fazowe o wartość -90 st. Ostania część wykorzystuje tzw. czas wyprzedzania. Jest to czas potrzebny do osiągnięcia podwójnej wartości sygnału wejściowego. Pozwala to na regulację przeregulowania, czyli stosunku wartości zmierzonej do zakładanej. Ta część także wprowadza przesunięcie fazowe tym razem o wartość 90 st.

Regulator PID realizuje następujący algorytm:



W części proporcjonalnej na wyjściu otrzymana będzie dana dotycząca wielkości błędu z odpowiednim znakiem tj. dodatnim, ujemny lub zero. Przykładowy wykres przedstawiłem na rysunku 2.


Rys. 2. Wykres działania członu proporcjonalnego

Działanie części różniczkującej przedstawiłem na rysunku 3. W związku z tym, że jest to całka liczy się pole jakie zostaje utworzone pod wykresem, znaczenie ma oczywiście czy znajduje się w części ujemnej czy dodatniej wykresu. Błąd zostaje sumowany, co po pewnym czasie działania układu może doprowadzić do jego znacznej wartości.

Rys. 3. Wykres działania członu całkującego

Cały człon pozwala na eliminację stałych błędów jakie wystąpią w systemie.

Ostanim członem jest część różniczkująca. W tej części znaczenie ma szybkość dokonywania zmian poprzez układ. Im zmiany są bardziej gwałtowne tym wartość całego członu będzie większa. Przykładowy wykres przedstawiłem na rysunku 4.

Rys. 4. Wykres działania członu różniczkującego

Nie zawsze trzeba korzystać z tak zaawansowanego kontrolera. Przeważnie wystarczy zastosować jeden lub dwa pierwsze części.

W tym poście opisałem tylko podstawowe teoretyczne informacje. Postaram się dalej rozwinąć tą tematykę za pomocą mikrokontrolerów.