IMPLEMENTACJA STEROWANIA NIELINIOWYM MODELEM DOŚWIADCZALNYM ŚMIGŁOWCA Aleksander Nawrat, Krzysztof Jaskot Politechnika Śląska, ul. Akademicka 16, 44-100 Gliwice Streszczenie W pracy rozpatrywano problem sterowania modelem laboratoryjnym śmigłowca z wykorzystaniem algorytmu PID. Rozpatrywany w pracy model śmigłowca ma dwa stopnie swobody i został dostarczony jako stanowisko laboratoryjne do badania obiektów nieliniowych przez firmę HUMOSOFT Ltd. W oparciu sterownik własnej konstrukcji PICv001 zaimplementowano regulatory PID do autonomicznego sterowania wybranym modelem. Odczyty kąta pochylenia wykonano w oparciu o własnej konstrukcji czujniki przyspieszenia. Przedstawiono i porównano wyniki implementacji regulatorów w oparciu o dostarczone drivery przez firmę HUMOSOFT Ltd. z implementacją tych samych regulatorów na własnej platformie doświadczalnej PICv001. 1. Wstęp Autonomiczny model latający z założenia jest obiektem, który powinien poruszać się w nieznanym i dynamicznie zmieniającym się środowisku bez ingerencji ze strony człowieka. Kluczem do autonomiczności jest układ sterowania zbudowany w oparciu o informację dotyczącą położenia. W pracy rozważany był problem zastosowania regulatora PID do sterowania modelem laboratoryjnym śmigłowca. Model laboratoryjny, który został przedstawiony schematycznie na rys. 1 został dostarczony przez firmę Humusoft Ltd., a jego matematyczny model otrzymano na podstawie [1]. Z punktu widzenia teorii sterowania jest on wielowymiarowy i nieliniowy. Celem sterowania jest uzyskanie zbieżności asymptotycznej pochylenia i odchylenia do zadanego położenia. Problem sterowania nieliniowymi obiektami interesował intensywnie badaczy, szczególnie w ostatniej dekadzie [2,3,4]. Zaproponowane regulatory nie są jednak odporne na zakłócenia parametrów, które pojawiają się w układzie. Prowadzi to do ograniczonego błędu nadążania, który może być większy niż pewne górne
ograniczenie. Istnieje wiele metod redukcji wpływu zakłóceń w nieliniowych układach regulacji ([3,5]). W oparciu o własnej konstrukcji sterownik o nazwie PICv001 oraz pomiary kąta pochylenia przy pomocy własnej konstrukcji czujnika przyspieszenia ADXL202 zrealizowano autonomiczne sterowanie z wykorzystaniem regulatora PID. Nastawy do tak zrealizowanego regulatora dobrano doświadczalnie. Wyniki porównano z aplikacją napisaną w języku C, a korzystającą z funkcji bibliotecznych dostarczonych wraz ze stanowiskiem doświadczalnym CE150. Rys. 1. Edukacyjny model śmigłowca CE150. Fig. 1. Educational helicopter model CE150. 2. Konstrukcja sterownika PICv001 Do budowy autonomicznego układu sterowania modelu śmigłowca CE150 wykorzystano mikrokontroler rodziny PIC16F87X firmy Microchip [6]. Parametry tego mikrokontrolera zostały przedstawione w tabeli 1. Za wyborem właśnie tego mikrokontrolera przemawia dobre wsparcie ze strony producenta w środowiska programistyczne Asembler/C, możliwość programowania w układzie (ang. ICSP In-Circuit Serial Programming) bez konieczności posiadania zewnętrznego programatora, oraz moduł debuggera (ang. ICD In-Circuit Debugger), co w przypadku procesu tworzenia i testowania algorytmów sterowania umożliwia w łatwy sposób obserwowanie zmiennych oraz usuwanie ewentualnych błędów w programie. Tablica 1. Parametry mikrokontrolera PIC16F87X. Podstawowe cechy procesora PIC 16F877 Architektura RISC Szybkość zegara 20 MHz Pamięć FLASH 8 KB Pamięć RAM 368 bajtów Pamięć EEPROM 256 bajtów Przerwania 14 Przetwornik A/C 10-bit 8
Głównym zadaniem skonstruowanego sterownika jest sterowanie silnikami napędowymi modelu śmigłowca, na podstawie przetworzonych informacji z pomiaru kąta pochylenia i odchylenia modelu oraz obsługa komunikacji ze sterownikiem nadrzędnym. Sterownik eksperymentalny PICV001 jest konstrukcją prototypowa, w której ciągle wprowadzane są zmiany. Został on zmontowany na uniwersalnej płytce drukowanej, co w przypadku prac prototypowych ma swoje uzasadnienie. Konstrukcja sterownika została podzielona na dwa odrębne moduły: moduł sterownika zawierający mikrokontroler, gniazda podłączeniowe lewego i prawego silnika, wejścia enkoderów, regulator napięcia oraz źródła zasilania 7-30[V]. Moduł sterownika PICv001 (rys.2) zbudowano wykorzystując procesor jednoukładowy PIC 16F877 firmy Microchip [6]. Podstawowe cechy procesora to: architektura RISC, szybkość zegara taktującego 20 MHz, 8 Kb pamięci FLASH, 368 bajtów pamięci na dane RAM, 256 bajtów pamięci danych zapisywanej w pamięci EEPROM, 14 przerwań sprzętowych, 3 timery, 2 moduły PWM, szeregowa transmisja danych, równoległa transmisja danych i programowanie w układzie. Rys. 2. Sterownik PICv001. Fig.2. PICv001 controller. Do pomiaru kąta pochylenia wykorzystano dwuosiowy monolityczny czujnik ADXL 202 [7] z masą zabudowaną na płytce, mierzący przyspieszenia dodatnie jak i ujemne w zakresie ±2g (g - przyspieszeni ziemskie). Pomiar przyśpieszenia z tego czujnika odbywa się za pomocą zliczania czasu trwania sygnału T 1 [ms] do czasu całkowitego T 2 [ms]. Wartość przyśpieszenia otrzymuje się stosując następującą zależność ( gdzie 0g = 50 % z cyklu pracy): T (1) A( g ) = ( 1 0, 5 )/ 12. 5%. T2 Wadą tego rozwiązania jest maksymalna częstotliwość próbkowania wynosząca 1000Hz. W proponowanym rozwiązaniu czujnik pomiaru przyśpieszenia pracuje w zmodyfikowanym układzie pomiarowym w stosunku do zalecanego przez producenta. Zmiana polegała na rezygnacji z cyfrowego wyjścia z przetwornika DCM (Duty Cycle Modulation), co oznacza pominięcie wewnętrznej konwersji z postaci analogowej na cyfrową. Do pomiaru wykorzystano dostępny sygnał analogowy. Wyjście analogowe z układu zostało podane na wzmacniacz, a sygnał pochodzący ze wzmacniacza może być mierzony przez układ A/C mikrokontrolera. Zmiana sposobu pomiaru pozwoliła zwiększyć częstotliwość próbkowania z 1000Hz do częstotliwości zależnej od przetwornika A/C znajdującego się w mikrokontrolerze. Dla naszego układu pomiarowego wynosi on 100kHz.
Model laboratoryjny śmigłowca CE150 wyposażony jest w układ pomiaru zarówno kąta pochylenia jak i odchylenia w oparciu o wyniki uzyskiwane z enkoderów optycznych. Optyczny enkoder jest prostym urządzeniem elektronicznym wykorzystującym strumień światła. Fotodedektor cyklicznie blokuje strumień światła. Typowy przykład zastosowania tego typu sensorów to myszki komputerowe ( z drobnymi modyfikacjami). Pojedynczy kanał enkodera nie byłby w stanie dostarczyć wystarczającej informacji do zdeterminowania automatycznego kierunku poruszania się, z tego powodu w praktycznych zastosowaniach stosuje się dwa kanały. Kanały A i B są przesunięte w stosunku do siebie o 90 0. Dzięki temu można zdeterminować kierunek poruszania się bez większych problemów (jak to zostało schematycznie pokazane na rys. 3). Rys. 3. Przykład enkodera optycznego stosowanego w modelu laboratoryjnym CE150. Fig. 3. Example of incremental optical encoder. 3. Autonomiczne sterowanie modelem CE150 Autonomiczne sterowanie modelem śmigłowca CE150 zrealizowano w oparciu o pomiar kąta pochylenia w oparciu o własnej konstrukcji czujnik przyspieszenia ADXL202, pomiar kąta odchylenia zrealizowany w oparciu o wbudowany w model CE150 czujnik enkodera optycznego oraz o sterowanik PICv001. W pierwszej próbie implementacji sterowania autonomicznego w oparciu o sterownik pojawił się problem ze sterowaniem silnikami wbudowanymi w model laboratoryjny. Z uwagi na duże prądy chwilowe (5A wirnik nośny, 3A śmigło ogonowe) zrezygnowano z rozwiązania polegającego na sterowaniu silnikami w oparciu o układ L298N z uwagi na jego niską obciążalność prądową (rys. 4a). a. b. Rys. 4. Schemat podłączenia sterownika PICv001 do modelu laboratoryjnego. Fig. 4. Scheme connection of the PICv001 controller to the laboratory model.
Zdecydowano się na wykorzystanie zasilania silników dostarczonego przez producenta w/w stanowiska (na rys.4b oznaczone jako Motor driver CE) i sterowania nimi przy pomocy proponowanego sterownika. Sterownik na etapie programowania był podłączony do PC przy użyciu RS232. Program realizujący sterowanie z wykorzystaniem algorytmu PID został napisany w języku C. 4. Algorytm sterowania modelem CE150 W pracy zastosowano następującą znaną z literatury fachowej [8] ciągłą postać regulatora PID: (2) u ( t) = k e ( t) + k e ( t) dt + k i= ψ, ϕ i P i I t 0 i D dei ( t), dt gdzie: φ kąt odchylenia, ψ kąt pochylenia, k P, k I, k D współczynniki członów odpowiednio: proporcjonalnego, całkującego i różniczkującego, e wartość uchybu. Regulator w postaci dyskretnej otrzymaliśmy po zastosowaniu kwadratury interpolacyjnej metodą prostokątów do całkowania, oraz pochodnej przy użyciu ilorazu różnicowego wstecznego następującej postaci: kd (3) ui ( kts ) = kpei ( kts ) + [ I( kts ) + kitsei ( kts )] [ yi( kts ) yi ( kts Ts )], Ts gdzie: T S oznacza czas próbkowania. W oparciu o wyżej przedstawioną formułę dobrano doświadczalnie następujące nastawy regulatora: w torze odchylenia k P =0.6, k I = 0.001, k D =800 i w torze pochylenia k P =1.8, k I = 0.0036, k D =3000. Zrealizowano regulator w oparciu o modyfikację biblioteki driver ów dostarczonej przez producenta stanowiska laboratoryjnego CE150 i własny program o nazwie ConsolePID.exe napisany w języku C++. Wyniki implementacji algorytmu PID przedstawiono na rys. 5. Rys. 5. Implementacja algorytmu PID przy użyciu programu ConsolePID.exe. Fig. 5. Implementation of the PID algorithm using the ConsolePID.exe program.
Z otrzymanych rezultatów wynika, że zastosowany regulator satysfakcjonująco steruje modelem śmigłowca do zadanego położenia zarówno pochylenia jak i odchylenia. Obserwowane rozbieżności w sterowaniu w torze pochylenia mogą być wynikiem silnej nieliniowości modelu w tym torze. Dla porównania zaimplementowano regulator PID w sterowniku doświadczalnym PICv001. Wyniki przedstawiono na rys.6. Rys.6. Implementacja algorytmu PID w sterowniku PICv001. Fig. 6. Implementation of the PID algorithm in the PICv001 controller. Na wykresach można zauważyć, że otrzymane rezultaty dla implementacji algorytmu PID w sterowniku PICv001 są bardzo podobne do rezultatów otrzymanych w wyniku implementacji algorytmu w oparciu o rozwiązania techniczne dostarczone przez firmę Humusoft Ltd. Również i w tym eksperymencie widać silny wpływ nieliniowości w kanale kąta pochylenia na przebieg sterowania w czasie. Trzeba w tym miejscu zaznaczyć, że próby sterownika w tym eksperymencie nie były autonomiczne. Pomimo tego, że algorytm sterujący był zaprogramowany w sterowniku to podgląd kątów pochylenia i odchylenia zrealizowany był przy użyciu komunikacji RS232 i terminala. Aby wykonać w pełni autonomiczny lot, postanowiono odłączyć połączenie z PC poprzez RS232. Otrzymane w ten sposób rezultaty przedstawiono na rys. 7. Można zauważyć, że przedstawione rezultaty pokazują jednoznacznie, że sterowanie przy użyciu regulatora PID w tym przypadku daje gorsze rezultaty. Nasuwa się pytanie czym to może być spowodowane. Poprzez RS232 wysyłane są pewne dane kontrolne do PC, co wprowadza opóźnienia w sterowaniu. W związku z tym zastosowanie identycznych nastaw regulatora PID może dawać odmienne rezultaty.
Rys. 7. Implementacja algorytmu PID w sterowniku PICv001 (lot autonomiczny) Fig. 6. Implementation of the PID algorithm in the PICv001 controller(autonomous flight). 5. Wnioski i podsumowanie W oparciu o własnej konstrukcji sterownik PICv001 i własną metodę pomiaru kąta pochylenia zrealizowano sterowanie silnie nieliniowym obiektem modelu śmigłowca. Jak pokazano na przebadanych przykładach praktycznych, zastosowany regulator PID z dobranymi doświadczalnie nastawami regulatora jest w stanie efektywnie sterować modelem do zadanego położenia pochylenia jak i odchylenia. Zaprezentowany sterownik, będący ciągle platformą zarówno rozwojową jak i doświadczalną, wykazuje duże możliwości aplikacji różnego rodzaju sterowań zarówno do stanowisk laboratoryjnych jak i manipulatorów czy prostych robotów. Bibliografia 1. Horacek P.: Raport on helicopter model, Educational Manual, Czech Technical University in Prague, June 1993. 2. Isidori A., Byrnes C.I.,: Output regulation of nonlinear systems, IEEE Trans. Autom. Control, 35, pp. 131-140, 1990. 3. Huang J., Rugh W.J.: On a nonlinear multivariable servomechanism problem, Automatica, 26, pp. 963-972, 1990. 4. Celikovsky S., Hunag J.: Continuous feedback asymptotic output regulation for a lass of non-linear systems having nonstabilizable linearization, Proceedings of the 37th IEEE Conference on Decision Control, Tamp., Florida USA, pp. 3087-3092, 1998. 5. Tomczyk A.: Pokładowe cyfrowe systemy sterowania samolotem. Oficyna Wydawni-
cza Politechniki Rzeszowskiej, ISBN 83-7199-093-6, Rzeszów, 1999. 6. Priscoli F.D., Isidori A.: Robust tracking for a class on nonlinear systems, Proc. 1 st European Control Conference, Grenoble, France, pp. 1814-1818, 1991. 7. PIC16F87x Data Sheet, Microchip 2001. 8. ADXL 202 Karta katalogowa, Analog Devices Inc., 2000. 9. Gessing R.: Control Fundamentals, Wydawnictwo Politechniki Śląskiej, Gliwice 2004. IMPLEMENTATION OF CONTROL OF NONLINEAR LABORATORY HELICOPTER MODEL Aleksander Nawrat 1, Krzysztof Jaskot 2 Silesian University of Technology, 16 Akademicka St., 44-100 Gliwice fax. (+ 48 32) 2371165 1 tel. (+ 48 32) 2371093, e-mail: anawrat@ia.polsl.gliwice.pl 2 tel. (+ 48 32) 2372750, e-mail: kjaskot@ia.polsl.gliwice.pl In this paper problem of automatic control of laboratory helicopter model using PID controller was considered. Considered in this work laboratory helicopter model had two degrees of freedom and it was delivered by the Humusoft Ltd. Company, as a laboratory model to make researches on non-linear objects. On the ground of self-designed and constructed controller PICv001 it was implemented the PID algorithm to autonomous control of considered model. Scanning of the elevation angle, which is necessary to implement control algorithm, was made on the base of self-constructed dual axis accelerometer sensor. Results of implementation of controllers program based on the delivered by the company Humusoft Ltd. driver libraries was compared with the results obtained from application of the same controllers applied on the experimental platform PICv001.