[PRZYKŁAD] Sterowanie serwomechanizmem za pomocą joysticka oraz KA-NUCLEO-F411CE
Niniejszy przykład realizuje sterowanie serwomechanizmem za pomocą Joysticka analogowego. Wychylenie osy Y powinno odpowiadać kątowi skrętu serwa. Jako bazę do projektu wykorzystano mikrokontroler STM32 znajdujący się na płytce rozwojowej KA-NUCLEO-F411CE.
Do realizacji projektu potrzebne będą następujące komponenty:
- Płytka ewaluacyjna KA-NUCLEO-F411CE
- Serwomechanizm TowerPro SG5010
- Moduł z joystickiem analogowym modJOY2
- Zasilacz sieciowy 5V 2A, wtyk 5.5×4.1
- Przewody do płytek stykowych męsko-męskie oraz żeńsko-męskie
Serwomechanizm to silnik, przekładnia oraz dedykowany sterownik zamknięte w jednej obudowie. Napędy te najczęściej (tak jak w tym przypadku) przystosowane są do poruszania się w zakresie ok. 0…180°. Serwo SG5010 ma moment obrotowy ok. 5,5 kg, waży 39g oraz ma podwójne łożyskowanie na łożyskach kulkowych. Tego typu urządzenia są sterowane przeważnie sygnałem PWM, a więc sygnałem prostokątnym z regulowanym wypełnieniem. Przedstawienie rysunkowe tej koncepcji znajduje się poniżej:
Na obrazku widać, że wszystkie sygnały maja identyczną częstotliwość, napięcie w stanie wysokim oraz niskim. Zmienia się tylko wypełnienie – stosunek czasu w jakim sygnał jest w stanie wysokim oraz niskim podczas trwania jednego okresu. Serwomechanizmem łatwo jest sterować takim sygnałem, nawet biorąc pod uwagę fakt, że układ nie do końca reaguje na sygnał PWM, a raczej na długość impulsu/stanu wysokiego. Częstotliwość sygnału nie jest więc sztywno ustalona. Serwo TowerPro SG5010 ustawia się w położeniach skrajnych dla impulsów równych ok. 0,6 ms i 2,5 ms. Pozycja neutralna odpowiada długości impulsu ok. 1,55 ms. Sterowanie wychyleniem odbywa się więc przez ustawienie sygnału PWM o długości impulsu pomiędzy tymi wartościami. Serwomechanizmy posiadają standardowo trzy wyprowadzenia: Zasilanie (przewód czerwony), masę (przewód brązowy/czarny) oraz linię, po której przesyłany jest sygnał sterujący (przewód żółty/pomarańczowy).
Moduł modJOY2 to moduł z joystickiem analogowym działającym w dwóch osiach. Napięcie na wyprowadzeniach VRx i VRy są zależne od wychylenia pozycji joysticka i wahają się od 0 V do ok. napięcia zasilania. W pozycji neutralnej linie VRx i VRy sa na potencjale równym ok. połowy napięcia zasilania. Dodatkowo moduł posiada pin SW, który jest wyprowadzeniem przycisku w joysticku. Naciśnięcie przycisku powoduje zwarcie pinu do masy.
Elementy należy połączyć zgodnie z poniższym schematem:
Sposób połączenia został także przedstawiony w tabelach poniżej:
Pin KA-NUCLEO-F411CE | Pin serwa SG5010 |
GND | Masa (przewód brązowy) |
+5V | Zasilanie (przewód czerwony) |
D9 | Sygnał (przewód pomarańczowy) |
Pin KA-NUCLEO-F411CE | Pin modJOY2 |
GND | GND |
+3,3V | +5V |
A1 | VRy |
Połączenie pinów 3,3 V i 5 V może się wydać nieco dziwne, ale ma swoje uzasadnienie. Po pierwsze przetwornik ADC procesora STM32 ma napięcie referencyjne ok. 3,3 V, a więc nie ma sensu doprowadzać do niego napięć wyższych. Po drugie serwomechanizm zasilany napięciem 5 V podczas zmiany kąta wychylenia wprowadza duże zakłócenia na linii zasilania, co może skutkować zaburzeniami odczytu sygnału analogowego. Można temu przeciwdziałać, albo filtrując zasilanie, albo oddzielając zasilanie serwomechanizmu od zasilania innych części systemu, co zastosowano w tym przypadku. Po dokładnym przyjrzeniu się modułowi modJOY2 widać, że elementy odpowiedzialne za reakcję sygnału na ruch joysticka to potencjometry. W module nie ma żadnych elementów, które mogły by źle zareagować na zasilanie napięciem 3,3 V. Dodatkowo należy mieć świadomość, że serwomechanizmy potrzebują dużego prądu i można się spodziewać, że zasilanie przez port microUSB nie wystarczy. Autor projektu zaleca użyć zewnętrznego źródła np. takiego zasilacza.
Połączone elementy prezentują się następująco: