Trójkołowiec z dwoma niezależnymi silnikami napędowymi stanowi zwykle w projektach Arduino mobilną bazę dla pojazdów autonomicznych, wyposażonych w różne czujniki rozpoznające otoczenie. W tym przypadku będzie to prosty pojazd sterowany zdalnie przy pomocy typowej aparatury modelarskiej z wykorzystaniem 2 kanałów. Podstawowym celem jest sprawdzenie, czy opisywany przez mnie wcześniej sposób dekodowania sygnału RC działa w praktyce.
Napęd pojazdu stanowią dwa przerobione standardowe serwomechanizmy, opisane we wcześniejszym artykule. Są one mocowane do płyty bazowej za pomocą kątowników aluminiowych z nagwintowanymi otworami.
Płyta podwozia wykonana jest z laminatu gr. 1,6mm o wymiarach 160x106mm. Z przodu ściąłem dwa narożniki, co ułatwia identyfikację położenia pojazdu, a także jest przygotowaniem pod ew. montaż czujników dotykowych, gdybym w przyszłości zdecydował się na eksperymenty z pojazdem autonomicznym.
Serwa z przodu są montowane przy pomocy ceownika, zastosowałem to rozwiązanie, bo przewiduję w przyszłości w tym miejscu zamocowanie pomocniczej płytki na dodatkowe czujniki.
Poprawna trakcja trójkołowca wymaga zastosowania trzeciego obrotowego kółka (tzw. „koło wleczone”), takie rozwiązanie spotyka się np. w wózkach sklepowych. Fotki poniżej pokazują jak wykonać takie kółko samodzielnie. Ja użyłem do tego następujących materiałów: kółko z myszki komputerowej, kawałek drutu fi 1,5mm, kawałek ceownika aluminiowego i tulejka blokująca drut pomiędzy ramionami ceownika. W tulejce jest nawiercony prostopadle do osi otwór, który służy do jej unieruchomienia przy pomocy kropli kleju.
Tak wygląda platforma, gotowa do zamontowania elektroniki. Od spodu zamocowany jest na rzep pakiet 4xNiMh zasilający odbiornik i serwa. Płytka Arduino będzie zamocowana na 3 tulejkach dystansowych, a mała płytka stykowa przyklejona na taśmę dwustronną umożliwi połączenie podzespołów przewodami montażowymi.
Schemat elektryczny przedstawia się następująco:
Dla ułatwienia montażu część elementów połączyłem w 2 pomocnicze moduły, zmontowane na małych kawałkach płytki uniwersalnej. Są to: sumator sygnału PPM (dwie diody i rezystor) oraz gniazdo do podłączenia serw i rozprowadzenia zasilania z pakietu 4xNiMh.
Następnie zamontowałem na podwoziu płytkę Arduino, akumulator 9V 6F22 i odbiornik, oraz zgodnie ze schematem połączyłem przewodami wszystkie podzespoły.
Pierwsze testy były przeprowadzone z użyciem odbiornika Fr-Sky D6Fr (2,4GHz), a potem pojazd został sprawdzony z odbiornikiem Jeti Rex5+ (35Mhz).
Program RC-bot1 (pobierz) używa jednego ze sposobów detekcji sygnału PPM, opisanych we wcześniejszym artykule.
Wykorzystany napęd działa ze stałą prędkością i możliwością zmiany kierunku. W związku z tym w programie wykorzystuję konwersję szerokości impulsu kanałowego w mikrosekundach (zakres 1000-2000, odpowiadający zakresowi 1-2 milisekund) na liczby 0-9, co działa jak filtr drobnych zakłóceń oraz ułatwia sterowanie kombinacjami wychyleń drążka. Położenie neutralne odpowiada po konwersji liczbie 4, a polecenie obsługujące konwersję to: wart. po konwersji = map(PPM, 1000, 2000, 0, 9).
Schemat sterowania silnikami w zależności od położenia drążka, obsługującego w modelach latających kanały lotki/wysokość przedstawia się następująco:
Aby przekonać się ile czasu zajmuje przeliczenie odczytanych sygnałów PPM na impulsy dla serwo-silników, podłączyłem do Arduino analizator. Poniższe zrzuty pokazują, że obliczenia zajmują zaledwie 2msek, a sygnały dla serw są wytwarzane zgodnie ze standardem RC, czyli co ok. 20 msek.
Na zakończenie krótki film, demonstrujący jak porusza się opisany wyżej pojazd: