niedziela, 23 września 2018

Zdalnie sterowana łódka RC 2,4GHz DIY

Post pokazuje, jak wykorzystać w praktyce 3-kanałowy nadajnik RC 2,4GHz GoolRC oraz mostek H MX1508 do bezprzewodowego sterowania łódką własnej konstrukcji. Inspiracją do realizacji projektu był film pod tytułem "3 Awesome ideas How to Make RC Toys" prezentujący różne pojazdy ze sterowaniem radiowym o prostej konstrukcji wykonanej z łatwo dostępnych materiałów. Pierwszym z projektów przedstawionych w filmie jest pierwowzór mojej łódki. Tworząc własną konstrukcję, opierałem się na konstrukcji z filmu. Samą "elektronikę sterującą" mam już inną, niż ta na filmie.
Moja łódka RC
Opis

Zbudowana łódka umożliwia poruszanie się do przodu, tyłu oraz skręcanie. Całkowity koszt "lekko" licząc zamyka się w 150zł, z czego 2/3 kosztów to cena nadajnika i akumulatorów Li-ion 18650, które można użyć w innych układach. Ostatecznie wymiary pojazdu wyszły następujące: 27 (długość) x 16 (szerokość) x 19 (wysokość) cm. Wysokość uwzględnia uniesione maksymalnie skrzydła. Waga łódki to 326g z czego waga samych akumulatorów Li-ion to 96g przy pojemności 3400mAh każdy. Dla przykładu mam jeszcze akumulatory Lipo o wadze 52g, ale o pojemności 1000mAh.  Dodam jeszcze, że cena tych dwóch Li-ion była prawie taka samo co cena jednego Lipo. Także jeśli nie zależy nam specjalnie na wadze, to korzystniejsze są akumulatory Li-ion. To również dotyczy mojej łódki.

Części

Część Szt. Uwagi
Butelka po pepsi 2 Dowolne dwie butelki ok. 1 litra każda bez fantazyjnych zaokrągleń, aby można łatwo je skleić po bokach. Średnica butelki determinuje rozmiary użytego śmigła
Patyczek po lodach 2 Dodatkowe wzmocnienie konstrukcji. Moje patyczki to kolorowe patyczki kreatywne o długości 11,3cm
Sklejka 1 Kawałek sklejki o grubości 6,5mm kupiony z odpadów w sklepie budowlanym, przycięty we własnym zakresie wyrzynarką.
Pudełko do żywności 1 Hermetyczne pudełko o wymiarach: 14x9,5x4,2cm
Nadajnik i odbiornik RC 1 Zestaw kupiony na Aliexpress o nazwie "GoolRC TG3 2.4GHz 3CH Digital Radio Remote Control Transmitter with Receiver for RC Car or Boat".
Silnik DC 2 Aiyima A4F632 9V, wymiary 10x15mm, średnica osi 1mm.
Śmigło 2 rozpiętość 7,5cm
Wyłącznik 1 przesuwny
Opaski zaciskowe 9 plastikowe (7) i na rzepy (2)
Arduino pro mini 1 wersja 16MHz, zasilanie 5V
Mostek H 1 moduł z MX1508, zasilany bezpośrednio z akumulatorów z pominięciem modułu zasilacza
Stabilizator 1 moduł 5V do zasilania odbiornika RC i Arduino o wydajności prądowej rzędu 500mA
Przewody Zasilania i sygnałowe
Akumulator 2 typu 16850, pojemność 3400mAh battery 3.7V Li-ion 
Koszyk 1 Koszyk na 2 akumulatory 16850
Uchwyty 3 Przyklejane wewnątrz obudowy z uchwytem do zaczepienia opaski zaciskowej. Z kolei opaską obejmowałem poszczególne moduły, tak aby nie "latały" w środku.


Wykonanie

Część mechaniczna

Samo wykonanie konstrukcji mechanicznej pokazuje jasno przytoczony wyżej filmik. Co do podpór silników, ich wymiary dobrałem empirycznie, robiąc wcześniej makiety z tektury, a następnie zastąpiłem je sklejką o grubości 6,5mm. Wysokość podpory dobrałem tak, aby śmigło było ponad obudową z elektroniką. Podstawa ma 6cm, górna krawędź 2cm, natomiast wysunięcie końca górnej krawędzi względem dolnej wynosi 3cm. Zamysł był taki, aby pojemnik ze "sterowaniem" nie zaburzał przepływu powietrza, a śmigła były minimalnie za dnami butelek. Dodatkowo w podporach wywierciłem po dwa otwory, aby przepuścić przez nie opaski zaciskowe, jako dodatkowe mocowanie silników (w oryginale był sam klej).



Wszystkie elementy konstrukcji połączone są klejem (na gorąco). Najpierw połączyłem butelki, które dość dobrze się kleją wchodząc w interakcję z plastikiem. Nawet trochę za mocno, bo lekko zdeformowały mi się górne części butelki. Dodatkowe wzmocnienie konstrukcji stanowiły dwa płaskie patyczki, zabrane dziecku z jakiegoś zestawu kreatywnego (te po lodach mogą być za krótkie). Do patyczków przyczepiłem pudełko z elektroniką za pomocą solidnego paska w rzepem (w sumie dwóch, bo jeden był za krótki). Trochę skupienia wymaga równe sklejenie podpór i do nich silników, ale myślę, że jeśli nawet łódka by skręcała w jedną stronę, to można to skorygować korygując sygnały PWM sterujące silnikami.



Część elektroniczna znajduje się w szczelnym pudełku z minimum otworów na antenę i kabelki od włącznika i od silników. Otwory dodatkowo zabezpieczyłem elastycznym silikonem. Przełącznik jest wyprowadzony dla wygody, aby nie musieć otwierać wieka pudełka. Silniki siłą rzeczy też muszą być na zewnątrz i ewentualny kontakt z wodą chyba im mógłby wyrządzić największą krzywdę. Dlatego starałem się, aby zewnętrzne elementy były jak najwyżej nad powierzchnią wody. Środek ciężkości za sprawą akumulatorów leży bliżej końca łódki, co zapewne (nie mierzyłem) podnosi lekko przód. W każdym razie wyporność jest na tyle duża, że łódce brakuje jeszcze wiele do dotknięcia korkami butelek do tafli wody.



Część elektroniczna

Zasilanie łódki stanowią dwa akumulatory Li-ion dające napięcie w przedziale 7,2 do 8,4V (maksymalnie naładowane). Każdy z nich ma pojemność 3400 mAh.



Parametry zastosowanych silników (ze strony sprzedawcy):
  • Przy napięciu 6V prąd 26 mA (maks. 395 mA) i prędkość 9700 obr/min
  • Przy napięciu 7,2V prąd 33mA (maks. 495mA) i prędkość 11700 obr/min
  • Przy napięciu 9V prąd 58mA (maks. 595mA) i prędkość 14700 obr/min
  • Wymiary w przekroju poprzecznym 10x10mm, długość 14,9mm
  • Średnica osi 1mm, długość wystającej części osi 7mm
  • Waga 5,5g
Schemat blokowy

Zasilanie układu jest odcinane poprzez wyłącznik wyprowadzony na zewnątrz, tak aby można łatwo wyłączyć zasilanie. Wyłącznik raczej jest konieczny z racji na duży prąd spoczynkowy (ok. 50mA).  Bezpośrednio z akumulatorów jest zasilany moduł mostka H (i silniki, a przynajmniej taką mam nadzieję) oraz stabilizator dostarczający napięcie 5V dla Arduino i odbiornika RC. Z racji na napięcie akumulatorów wybrałem silniki o napięciu pracy do 9V. Sygnały (przyspieszenia/przepustnicy i kierunku) odczytywane są przez Arduino (wejścia analogowe) i mapowane na wartości wypełnienia sygnału PWM sterującego mostkiem H i silnikami. W przypadku, gdy odbiornik straci zasięg, silniki są wyłączane. Sygnał PWM przyjmuje wartości od 100 do 255.

Uruchomienie

Pierwszy kontakt z wodą miał miejsce w wannie. Szczęśliwie łódka nie zatonęła, co więcej jakoś się poruszała, tak więc zabrałem ją na większy akwen. Padło na staw jednym z pobliskich parków. Jako że wiał niewielki wiatr, tafla była pofalowana. W tych warunkach wyszły dwa problemy. Za mała moc silników (kilkanaście tysięcy obrotów na minutę patrząc na specyfikację powyżej), także łódka poruszała się dość niemrawo. Druga rzecz, trochę wynikająca z tej pierwszej, problem ze sterownością. Przy teoretycznie jednakowej prędkości obu silników, łódka w taki warunkach nie chciała prosto płynąć, także ciągle musiałem korygować kierunek płynięcia. Przy bezwietrznej pogodzie, można by się pokusić o skorygowanie mocy jednego z silników (przeciwnego do kierunku skrętu), tak aby jednak łódka płynęła w miarę prosto. Wracając do funkcjonalności opisanej wcześniej, teraz dorzuciłbym jednak skręcanie przy jeździe w tył oraz obrót w miejscu (wysterowanie silników w przeciwnych kierunkach) co by poprawiło zwrotność łódki.

Łódka w akcji

Minusem poruszania się łódki przy mniejszych prędkościach jest wyraźnie słyszalny pisk silników. Niestety, póki co skutecznie tego nie wyeliminowałem. W warunkach polowych w sumie i tak go nie słychać, bo pędziłem na pełnej mocy ;)

W trybie czuwania/postoju pobierany prąd do około 55mA, z czego po 20mA zabierały Arduino i odbiornik RC. Silniki przy pełnej prędkości pobierają prąd rzędu 300mA. W sumie zatem wychodzi pobór prądu ok. 350mA.

Kod można znaleźć w repo na bitbucket. Z racji na jego długość, nie wklejam go tutaj. Wysyłka na terminal (debugi) została zakomentowana. Konfiguracja to określenie pinów Arduino łączących się z odbiornikiem RC i mostkiem H. Poza tym minimalne wypełnienie sygnału PWM (stała DC_PWM_MIN), które przekłada się na minimalną prędkość łódki. Wokół wartości dla spoczynkowego położenia przepustnicy określiłem przedział przy którym silniki się nie uruchamiają, aby zapobiec ewentualnemu uruchamianiu się łódki. Chodzi o stałe THROTTLE_DEAD_ZONE_MIN i  THROTTLE_DEAD_ZONE_MAX. Podobne rozwiązanie dodałem dla kierunku. Obsługa kanału 3 pozostała (przycisk AUX), choć nie podpiąłem pod niego żadnej funkcjonalności.

Udoskonalenia

Tradycyjnie już, zrobiłem najprostszą wersję, która by pozwoliła sterować łódką. Przeglądając inne projekty plus to co wyszło przy praktycznym użyciu łódki, doszło kilka pomysłów:
  1. użycie silników o większych obrotach (pow. 20tys.) pracujących dla przedziału napięć 6 - 9V
  2. skręty przy cofaniu oraz skręt w miejscu (tylko proste zmiany w kodzie)
  3. sygnalizacja zbyt rozładowanych akumulatorów (brzęczyk i/lub diody LED) pary akumulatorów lub lepiej - każdego akumulatora osobno. Istnieją dostępne do kupienia moduły o nazwach typu Lipo buzzer itp.
  4. rozwiązanie problemu utraty zasięgu między nadajnikiem a odbiornikiem. Obecnie układ zachowuje się tak, że unieruchamia łódkę. Być może powinien ją cofnąć lub zacząć robić duże koło (skręcać), aby złapać kontakt z nadajnikiem. Można rozważać też użycie modułu GPS
  5. można rozważyć użycie akcelerometru na okoliczność sytuacji typu wywrócenie się łódki przy zbyt silnym skręcie. W takiej sytuacji byłaby korygowana moc silników tak, aby przeciwdziałać wywrotce
  6. zmniejszenie zużycia prądu. Na początek usunięcie diod LED, mikrokontroler na 3,3V z obniżonym taktowaniem do 1MHz.

Źródła:
1) 3 Awesome ideas How to Make RC Toys

Brak komentarzy:

Prześlij komentarz