POL
ENG

Regulator PID z funkcją autotuningu

Zagadnienie regulacji różnych wielkości jest bardzo złożone. Zależy od wielu czynników takich jak na przykład to, co chcemy regulować (temperatura, obroty, poziom oświetlenia, itp.) i czym będziemy regulować (zawory, przekaźniki, przetwornice, silniki). Wszystkie te rzeczy są dalekie od modeli idealnych, tak więc nie da się w prosty sposób określić prostej zależności między nimi. W „przyrodzie” występuje kilka głównych typów regulatorów:


  • PI – proporcjonalno-całkujący
  • PD – proporcjonalno-różniczkujący
  • PID – proporcjonalno-całkująco-różniczkuący

Ze względu na zapotrzebowanie stosuje się odpowiedni regulator. Mimo, że ostatni łączy w sobie cechy pozostałych dwóch to nie jest on idealnym rozwiązaniem dla każdej z sytuacji. Często okazuje się, że na przykład regulator PI jest w zupełności wystarczający. Jak wiadomo, wraz ze skomplikowaniem urządzenia rośnie też jego koszt. Dlatego nie ma sensu stosować drogich rozwiązań tam gdzie można zastosować tańsze.

Prezentowane urządzenie powstało jako przedmiot pracy magisterskiej zaprojektowanej i stworzonej na zlecenie firmy PREVAC. Z powodu obowiązujących mnie praw autorskich należących do firmy, nie mogę umieścić kodów źródłowych wszystkich plików (proszę o wyrozumiałość).


Urządzenie reguluje temperaturę. Całość można podzielić na trzy układy:

  • pomiaru temperatury
  • regulatora
  • sterowania wyjściem

Układ pomiaru temperatury

Jako czujnik zastosowałem termoparę. Istnieje możliwość podpięcia kilku typów termopar: J, K, B i czujnika PT100. Zagadnienie pomiaru takimi czujnikami jest bardzo szeroko opisane w dostępnej literaturze i internecie, więc nie będę się w niego zagłębiał. Przypomnę jedynie, że występuje tutaj konieczność kompensacji efektu tzw. zimnych końców termopary. Jako że czujnik jest podłączony bezpośrednio do płytki, więc do tego celu użyłem dodatkowego termometru cyfrowego produkowanego przez firmę Dallas. Temperatura zmierzona na tych końcach jest dodawana do temperatury wskazywanej przez termoparę. Wszystko odbywa się w mikrokontrolerze Atmega128. Jako, że sygnał z tych czujników jest na poziomie miliwoltów [mV], to należy go wstępnie wzmocnić. Do tego celu został użyty wzmacniacz różnicowy. Jego wzmocnienie jest tak dobrane, by dla najczulszej termopary wymagany zakres zmian temperatury (od -100 do +1200 stopni Celsjusza) przekładał się w pełni na zakres napięcia (od 0 do +5V). Taki zakres jest podyktowany użytym przetwornikiem analogowo-cyfrowym o rozdzielczości 24-bitów. Jest on w stanie zmierzyć jedynie napięcia z tego przedziału. Wartość zmierzona jest przesyłana do układu regulatora za pomocą interfejsu SPI.


Układ sterowania wyjściem

Po przeliczeniu przez algorytm regulatora wartości jaka musi zostać wysłana na wyjście, jest ona przesyłana do przetwornika cyfrowo-analogowego. Wyjście z przetwornika jest wzmacniane tak, by na wyjściu z układu uzyskać zakres napięć sterujących od 0V do 10V.


Układ regulatora

Jego działanie jest proste. Dane odebrane z wejścia są linearyzowane (charakterystyka termopary jest nieliniowa) za pomocą tablicy LUT. Następnie wielkość zmierzona jest przeliczana wg wzoru regulatora PID:


y = P*e + I*(e[0] + e[1] + … + e[n]) + D*(e[1]-e[0])



gdzie:

e – różnica między wielkością zadaną, a wielkością zmierzoną (tzw. uchyb, błąd, error)

P – współczynnik części proporcjonalnej

I – współczynnik części całkującej

D – współczynnik części różniczkującej

Jakość działania tj. szybkość, dokładność, stabilność zależą od tych właśnie parametrów (P, I, D). Ludzie z wieloletnim doświadczeniem są w stanie dobrać te wielkości ręcznie znając obiekt regulacji i szybkość odpowiedzi na zmianę. Przedmiotem pracy magisterskiej było opracowanie algorytmu automatycznego doboru parametrów. Posłużyłem się tutaj szeroko opisaną metodą Nicholsa-Zeiglera. Nie będę się wdawał w szczegóły, bo jak już wspomniałem, ciążą na mnie prawa autorskie, a ja cenię sobie wolność ;). Gdy algorytm wyliczy wartość wyjścia, która powinna zapewnić otrzymanie temperatury zadanej, to jest ona przesyłana do układu sterowania wyjściem opisanym wyżej.


Komunikacja zewnętrzna z układem odbywa się za pomocą portu RS232. Dzięki niemu można wprowadzić swoje współczynniki P, I, D, odczytać aktualną temperaturę, wpisać nową temperaturę zadaną, wydać polecenie ponownego strojenia się i zmienić typ podłączonej termopary.


Wszelkie prawa zastrzeżone. Projekt i wykonanie strony SrcPro.pl