Obserwacja pracy podwozia chowanego w modelu EDF (Freewing Avanti S) podczas ostatniego spotkania na lotach, przypomniała mi, że jakiś czas temu opracowałem program na Arduino, który wykonuje podobną pracę jak dedykowany moduł, zamontowany w modelu Piotrka. To projekt nie zawierający mechaniki, wykorzystujący standardowe serwa. Zdecydowałem się go zaprezentować ze względów edukacyjnych, bo akurat fabryczne mechanizmy podwozia chowanego są obecnie łatwo dostępne i już nie tak drogie jak kiedyś. Może się ew. przydać miłośnikom DIY albo w jakichś nietypowych zastosowaniach, gdzie trudno znaleźć gotowe rozwiązanie.
W sprzedaży są dostępne proste moduły typu „slow servo” (spowalniacz serwa), często kupowane po to aby spowolnić działanie serwa otwierającego podwozie, czyniąc tę operację bardziej realistyczną. Funkcjonalność opisanego tutaj układu jest bardziej złożona, ma on 3 wyjścia, które obsługują grupę dwóch serw do obsługi podwozia głównego, działających jednocześnie (ale w przeciwnych kierunkach), oraz trzecie serwo, do obsługi kółka dziobowego lub ogonowego.
Schemat jest bardzo prosty i da się zrealizować w kompaktowej wersji, podobnie jak wcześniej opisane inne moje projekty, oparte o Arduino Pro Mini.
Założenia projektu:
- realizacja funkcji "slow servo" dla servo2 i pary serwo1, servo3 od położenia 'servo1min' do położenia 'servo1max' (kierunek normalny lub z rewersem),
- wykorzystanie 1 kanału RC z przełącznikiem 3-położeniowym (Low-->Mid-->Max),
- serwo1 i serwo3 działają synchronicznie (ale z rewersem w stosunku do siebie), uruchamiane przy zmianie pozycji switch'a z min --> 1/2 (Low --> Mid),
- serwo2 uruchamiane przy zmianie pozycji switch'a z 1/2 --> max (Mid -->Max),
- zworka JP do „uzbrajania” modułu, blokuje po włączeniu zasilania dekodowanie sygnału RC, w tym czasie na wyjściach serw sygnał „minimum”,
- pomiar impulsu RC na wejściu (D2) w oparciu o przerwanie; obsługa przerwania --> procedury: void pulse_rising(), void pulse_falling() - dozwolony zakres długości impulsu RC: 900-2100uS,
- serwa podłączone do wyjść: D10 (serwo3), D11 (serwo1), D12 (serwo2),
- praca „pełnymi cyklami” - zmiana położenia przełącznika RC w trakcie cyklu, nie zakłóca cyklu,
- status zmierzonego impulsu (przełącznika RC) na diodzie LED D13: powolne miganie --> SW=Low, szybkie miganie --> SW=Mid, ciągłe świecenie --> SW=High,
- opcjonalnie (na potrzeby uruchamiania) wydruk zmierzonych wartości impulsu RC na port szeregowy,
- pomiar czasu przy użyciu standardowej funkcji micros(),
- uśrednianie zmierzonego sygnału RC (4 ostatnie próbki),
- możliwość korekty parametrów przez użytkownika (w tym zakres ruchu serw i ich szybkość).
Definicje parametrów znajdują się w programie w jednym miejscu (jak wyżej) i są opisane komentarzem. Za szybkość ruchu orczyków serw odpowiadają 2 parametry: serwo1step (serwo2step), oraz tGapS1 (tGapS2). Pierwszy oznacza o ile mikrosekund zwiększamy/zmniejszamy długość impulsu wyjściowego serwa, drugi co ile mikrosekund następuje ta. Parametry można dobrać do własnych potrzeb (i serw), użyte przeze mnie wartości (5/20) są efektem wielu prób i zapewniają dość płynny niezbyt szybki ruch. Przy zmianie tych parametrów w pierwszym kroku należy manipulować wartością tGapS1 (tGapS2), a w drugiej kolejności serwo1step (serwo2step). Co dość oczywiste, płynność ruchu zależy od rozdzielczości serw, te standardowe z większymi przekładniami zapewniają płynność ruchu przy różnych wartościach serwo1step (serwo2step), z kolei serwa mini dają dość wyraźny efekt skokowy, nawet przy małych wartościach tego parametru.
Na zdjęciach powyżej pokazane jest stanowisko testowe na bazie Arduino Uno. Zamiast przełącznika 3-położeniowego został użyty tester serw z potencjometrem. Ponieważ to projekt edukacyjny, nie zrobiłem do tego modułu dedykowanej płytki, ale gdybym go chciał zastosować w modelu, użyłbym tej (nadaje się bez przeróbek po dodaniu zewnętrznej płytki ze złączami wyjściowymi do serw) z wcześniejszego projektu.
To o czym trzeba pamiętać, to kwestia zasilania, w żadnym przypadku (głównie dotyczy to prób) serwa nie powinny być zasilane ze stabilizatora wbudowanego na płytkach Arduino.
Oczywiście moduł może być wykorzystany z mniejszą ilością serw - np. jako spowalniacz tylko jednego serwa, jak również w innych zastosowaniach (np. pokrywy komór).
Film poniżej ilustruje sposób pracy modułu:
Program SGM-SlowServo, wersja 1.1 --> <pobierz>
Uwaga! Nie ponosimy odpowiedzialności za ewentualne błędy i uszkodzenia związane z budową i podłączaniem urządzenia, każdy robi to na własne ryzyko. Projekt do wykorzystania wyłącznie na własny użytek.