Elektronika modelarska

Przy okazji długiego, majowego weekendu rozbudowałem funkcjonalność komputera pokładowego o możliwość zmiany nastaw regulatorów wykonywaną bezpośrednio na wielowirnikowcu w terenie, bez konieczności używania PC. Do tej pory strojąc regulatory ustawiałem zakres nastaw w biurze przy PC, przypisywałem do jednego z dwu potencjometrów na aparaturze i wychodziłem latać. Nierzadko okazywało się że zakres nastaw jest niewystarczający, albo trzeba regulować innym regulatorem. Nawet gdy regulacja zakończyła się sukcesem to często miałem jeszcze wystarczająco dużo prądu w pakiecie aby zrobić jeszcze jakiś test, ale trzeba było wracać do biura.

Kilka miesięcy temu kupiłem w tym celu wyświetlacz OLED 64x128 sterowany po I2C lub SPI, ale byłem zbyt zajęty aby go oprogramować. Teraz znalazło się kilka wolnych dni i wykorzystałem je na oprogramowanie obsługi wyświetlacza i zrobienie na tym układu menu umożliwiającego zmianę nastaw regulatorów. Tak to wygląda:

Na filmie nie wspomniałem o tym że wyświetlacz wyłącza się gdy uzbrajam silniki do lotu i włącza się ponownie po locie. Obsługa podczas lotu nie potrzebnie zużywała by moc obliczeniowa komputera i generowała zakłócenia od pracującej magistrali.

Dzięki temu urządzeniu znacznie efektywnie j wykorzystuję czas na lotnisku. Mam wgląd w ilość zużytej energii, mogę zmieniać nastawy regulatorów zarówno bezpośrednio jak i za pomocą 2 wolnych kanałów na aparaturze. Dzięki temu wreszcie udało mi się dobrać optymalne nastawy dla quadrokoptera.

Nie myśl jednak że wszystko szło tak gładko. Pierwsze podejście do tego narzędzia nie było wcale takie wesołe. Quadrokopter oscylował lekko w osi pochylenia. Oscylacje może wprowadzić każdy z członów, każdego z 2 regulatorów w kaskadzie: regulator podrzędny prędkości kątowej, oraz regulator nadrzędny kąta. Czym teraz kręcić?

Ten problem rozwiązałem wprowadzając pomiar wysterowania regulatora. Liczę to jako średnią pierwiastków z sumy kwadratów odpowiedzi wszystkich członów regulatora. Pierwiastek z kwadratów jest po to aby mierzyć wysterowanie dodatnie i ujemne. Im wyższe wartości przybiera dany człon regulatora tym wynik jest wyższy.

Pomiar ywsterowania regulatorów

Wyniki wyświetlam na ekranie pokazującym nastawy danego regulatora. To są dane w żółtej ramce. Na filmie są zerowe, dopiero po locie pokazują zmierzoną wartość.

Ponieważ uzyskiwane w praktyce wartości były bardzo niskie i miały wartość wyłącznie porównawczą zrezygnowałem z liczenia czasochłonnego pierwiastka i obecnie wyświetlam sam kwadrat odpowiedzi członu. Obecnie ten parametr nazywa się ISE (Integral Square Error) i jak się okazało jest to jeden ze wskaźników pracy regulatora PID.

 

Jeszcze o samych nastawach. Nastawy opisane jako kp, Ti i Td są chyba oczywiste dla każdego kto zetknął się z regulacją PID. Kp oznacza wzmocnienie członu proporcjonalnego, mówi ile razy odpowiedź regulatora ma być większa niż błąd regulacji. Ti to czas zdwojenia członu całkującego. Wyrażony jest w sekundach i określa jak szybko ma przyrastać całka z błędu regulacji. Im czas większy tym całka wolniej narasta. Td to czas różniczkowania, w praktyce sprowadzony do współczynnika wzmocnienia różnicy bieżącą próbką a poprzednimi wartościami.

Wartość oznaczona jako IL to limit całki (Integrator Limit). Jest to wartość wyrażona w procentach i może przybierać wartości +-100%.

Wartość opisana jako SP to zakres wartości zadanej (Set Point) odpowiadającej pełnemu wychyleniu drążka aparatury. Obecnie prędkości kątowe pochylenia, przechylenia i odchylenia mam ustawione na +- 90°/s, co oznacza że w trybie akrobacyjnym wychylając drążek aparatury do końca kopter będzie obracał się z prędkością kątową 90°/s. Wartość ta zleży od dynamiki platformy. Mój quadrokopter jest akurat dosyć wołowaty. Dla zwinniejszych platform ta wartość może być wyższa. Kąty pochylenia i przechylenia mam ustawione na +45° co oznacza że w trybie stabilnym gdy przesuwam drążek aparatury do końca kopter przechyli lub pochyli się o maksymalnie 45°. Dla prędkości pionowej wartość zadana to 4 m/s. Taką wydajność ma napęd w tej platformie. Ustawiając mniej będziemy mieli wolniejszą reakcję w pionie, ustawiając więcej niż może napęd nie uzyskamy odpowiedniego zakresu regulacji.

Analogicznie dla trybu stabilizacji wysokości wychylenie drążka oznacza proporcjonalnie dobraną wysokość względem wartości podanej jako SP. Dodatkowo jest tu zapas 5 m na wysokości ujemne gdy by trzeba było wylądować niżej niż miejsce startu, lub wskazania czujnika odpłynęły w górę. Obecnie ustawiona wartość 25 m pozwala wznieść się kopterowi maksymalnie na 20 m.


Ostatnia nastawa opisana jako DF jest to filtr członu różniczkującego (Derivative Filter). Różniczkowanie numeryczne polega na obliczeniu różnicy między próbką bieżącą a poprzednią. Im szybciej pracuje pętla główna tym krótszy jest czas między próbkami. Dla parametrów wolno zmiennych mierzona w ten sposób różnica jest bardzo niewielka. Dodatkowo  mierzone sygnały obarczone są szumem. Jeżeli od jednej zaszumionej próbki odejmujemy drugą, to wynik ma dwukrotnie większy szum. Często wartość szumu przewyższa rzeczywistą różnicę między próbkami. Aby temu zapobiec wprowadziłem filtr uśredniający N wartości poprzednich. Liczbę próbek mogę regulować tym właśnie filtrem (DF). Im większa jest podstawa czasu uśredniania tym mniej szumu w wartości poprzedniej, dodatkowo średnia uwidacznia lepiej dynamikę zjawiska.

Dzięki posiadanemu narzędziu w postaci wyświetlacza i możliwości szybkiej zmiany nastaw przeprowadziłem serię badań, które pozwoliły mi dobrać optymalne wartości podstawy czasu filtra członu różniczkującego. Tego parametru praktycznie nie czuć w locie, dopiero wnikliwa analiza odpowiedzi regulatora przeprowadzona na dużej prędkości pokazała naturę pracy filtra. Dla małych wartości uśredniania człon różniczkujący podbija głównie szum. Gdy zwiększamy czas uśredniania w odpowiedzi członu różniczkującego zaczyna być widać coraz ładniejszy kształt odpowiadający właściwej akcji różniczkującej, jednak dalsze zwiększanie filtra powoduje że zaburzone zostają zależności fazowe i człon różniczkujący zaczyna upodabniać się do członu proporcjonalnego i wyprzedzenie akcji różniczkującej stopniowo się zmniejsza. Empirycznie ustaliłem że zadowalający zakres zmian dla regulatorów pochylenia i przechylenia oraz prędkości kątowych pochylenia i przechylenia jest w granicach 20-50 ms a dla regulatorów wysokości i prędkości pionowej optymalna wartość jest w okolicy 100 ms. Do tej pory latałem z ustawionymi większymi czasami co skutkowało gorszą pracą członu różniczkującego i mniejszą stabilnością platformy.

 

Po dobraniu wszystkich nastaw próbowałem zarejestrować lot umieszczając na pokładzie aparat fotograficzny syna rejestrujący film. Rezultaty są takie sobie gdyż dołożenie sporej masy 171g zauważalnie wpływa na dynamikę koptera. Tak to wygląda:

Trzeba było by go stroić pod kątem wożenia tego aparatu, jednak to nie jest mój aparat a kręcenie filmów nie jest moim celem, więc dostrojenie regulatora pod tym katem muszę zostawić na jakaś inną okazję. Następnym celem jest dobranie nastaw dla koptera pracującego na innym zestawie śmigieł. Tym razem przesiadłem się z chińskich 12x4,5 na APC 13x4,7. Pierwsze próby pokazały że jestem daleko poza zakresem optymalnych nastaw i cały proces można rozpocząć od zera z czego się niezmiernie cieszę. :-)

Lataj bezpiecznie swoim UAV