Pomysł
Pomysł na urządzenie narodził się wraz z innym projektem, który realizuję w tle. Potrzebowałem do niego urządzenia, które pozwoliłoby na nagranie panoramowanego timelapse’a.
Timelapse jest po prostu filmem, w którym czas płynie znacznie szybciej niż w rzeczywistości – obrazuje zwykle pewien proces lub zjawisko, które normalnie zachodzi bardzo wolno – na przykład wyrastanie ciasta, chmury lub rośnięcie roślin. Większość kamer sportowych oferuje odpowiedni tryb pracy pozwalający na osiągnięcie takiego efektu – odbywa się to przez nagrywanie klatek w tempie – na przykład – jednej na pięć sekund.
Jeżeli nagrywane zjawisko jest relatywnie szybkie (na przykład płynące chmury), nagranie można panoramować, czyli obracać kamerą w jednej osi w trakcie nagrywania – powoduje to bardzo ciekawy efekt końcowy. Problem polega jednak na tym, że trzeba osiągnąć w miarę płynny obrót kamery w stosunkowo długim czasie (np. 60 stopni w czasie 20 minut).
Najprostsze rozwiązanie, jakie można znaleźć w Internecie to zastosowanie timera kuchennego (“egg-timer”). Jest to pomysł bardzo kreatywny, jednak – niestety – mało konfigurowalny. Zdecydowałem się więc wykorzystać moją wiedzę elektroniczno-programistyczną do zbudowania dedykowanego urządzenia.
Moje założenia były następujące:
- Uniwersalny montaż dowolnej kamerki sportowej (korzystam z GoPro i Mobiusów)
- W miarę estetyczna obudowa – ułatwiająca przenoszenie i zwiększająca trwałość urządzenia
- Możliwość w miarę dowolnego konfigurowania czasu trwania obrotu oraz jego zakresu
- Jak najbardziej płynny ruch, by osiągnąć wysokiej jakości efekt końcowy.
Pierwsze próby
Na początku zaryzykowałem skorzystanie z zestawu pan-tilt działającego na zwykłych serwach modelarskich. Skonstruowanie prototypu poszło bardzo szybko, bo podłączenie serw do Arduino jest stosunkowo prostym zadaniem – szczególnie przy użyciu 16-kanałowego kontrolera PWM. Napisałem program, wrzuciłem na płytkę, przetestowałem… i niestety klapa – okazało się, że serwo porusza się zbyt mało płynnie i film wychodzi bardzo poszarpany.
Zastosowanie serw miało swoje zalety – mają to do siebie, że można łatwo ustawić je w dowolnym położeniu. Niestety jednak jakość filmiku była tak niska, że pomysł upadł i musiałem wrócić do deski kreślarskiej.
Matematyka
Trzeba było wykonać trochę obliczeń. Załóżmy, że minimalnym wymaganiem jest nagranie timelapse’a o 30 klatkach na sekundę. Kąt obrotu kamery to 60 stopni, czas trwania nagrania – 20 minut, zaś kamera robi zdjęcia raz na 5 sekund.
Cały film składałby się więc z 20 * 60 / 5 = 240 klatek. Musiałbym mieć więc pewność, że urządzenie w czasie trwania nagrania obróci kamerę o 60 stopni minimum w 240 krokach – w ten sposób “szarpanie” byłoby zminimalizowane. Nie jest łatwo – jeden “krok” musiałby zostać wykonany o 60/240=0,25 stopnia.
Jako-taką płynność zapewniłby mi oczywiście silnik krokowy. Jednak większość z nich pozwala na wykonanie 200 kroków na obrót, co daje nam aż 1,8 stopnia na krok – to 7 razy zbyt dużo w stosunku do moich wymagań. Wniosek był prosty – musiałem skonstruować do mojego urządzenia przekładnię zębatą.
Obudowa
Założyłem na początku, że całość będzie ładnie opakowana w obudowę, więc od tej obudowy zacząłem, bo definiowała ona sporo parametrów (na przykład miejsce na przekładnię zębatą). Przygotowałem się nawet na spory koszt i miło się rozczarowałem, bo okazało się, że obudowa pulpitowa, która najbardziej mi podpasowała kosztuje szalone 9 PLN.
Teraz mogłem zacząć szukać silnika i zębatek. W pierwszym przypadku mój wybór padł na silnik SY35ST26-0284A (znalazłem go w sklepie botland.pl) – oprócz wymaganych 200 kroków na obrót można go zasilić napięciem 7,4V, co idealnie mi odpowiadało – mogłem dzięki temu zasilić całe urządzenie (kontroler, kontroler silnika i silnik) jednym akumulatorem LiPo 2S, a takie akurat mam pod ręką.
Zębatki
No i tu zaczęły się schody. Wiecie, jak mało jest miejsc w Internecie, gdzie można kupić koła zębate? Wysłałem nawet zapytanie ofertowe do podkrakowskiej firmy, która specjalizuje się w odlewaniu takich właśnie komponentów, jednak z obliczeń wynikło, że zestaw 4 kół zębatych potrzebnych do zrealizowania mojego projektu pochłonie przeszło 900 PLN, co oczywiście nie wchodziło w grę. W końcu znalazłem potrzebne koła w sklepie conrad.pl. Przeszkodą stała się również oś silnika (5mm), bo przeważająca większość zębatek była na wał 6mm, ale na szczęście znalazłem jedną, która stała się zębatką napędową, a do pozostałych kupiłem wał 6mm, z którego wyciąłem odpowiedniej długości odcinki.
Dwie zębatki z lewej strony (30-tki) kupiłem na wszelki wypadek, gdyby 40-stki się nie zmieściły, ale na szczęście miejsca wystarczyło na te większe. Przekładnia składa się z trzech osi – z pierwszej na drugą mamy przełożenie 12:40, zaś z drugiej na trzecią – 15:40. W sumie mamy przełożenie (12/40)*(15/40) ~= 1:8,(8). Oznacza to, że z 200 kroków na obrót uda się wycisnąć 1777,(7) kroków na obrót, co daje 0,2025 stopnia na krok. Czyli cel osiągnięty!
Do całości potrzebny był mi jeszcze kontroler – skorzystałem tu z taniego klonu Arduino Uno oraz mojego ulubionego LCD Shielda, dzięki któremu za pół-darmo dostałem możliwość interakcji z użytkownikiem (pół darmo, bo shield “pożera” bodaj 5 pinów cyfrowych i 1 analogowy – ale na szczęście pozostałe wystarczyły)
Przekładnia
Przekładnia stała się chyba najtrudniejszym elementem do zmontowania, bo trzeba było stosunkowo precyzyjnie wymierzyć otwory w płytkach aluminiowych, które tworzyły jej dwie ściany. Całość musiała dodatkowo zmieścić się w przedniej części obudowy, a nie było tam jakoś specjalnie dużo miejsca.
Pierwszą próbę przeprowadziłem, mierząc otwory suwmiarką – i przekładnię udało się zbudować, ale niestety otwory nie były wymierzone dostatecznie dokładnie i jeden z nich trzeba było rozwiercić pilnikiem, co spowodowałoby dodatkowe problemy. Wpadłem więc na inny pomysł: wymierzyłem wszystko dokładnie przy pomocy suwmiarki i wprowadziłem do CADa – od dłuższego czasu korzystam z fenomenalnego Solid Edge Drafting (w wersji 2D jest darmowy). Wyglądało to mniej więcej tak:
Z prawej strony widać przygotowany wzór na górną i dolną płytkę przekładni. Z lewej zaś – rozmieszczenie całości wewnątrz obudowy.
Niestety nie mam łatwego dostępu do frezarki cyfrowej, więc wydrukowałem wzór z prawej strony na cienkim papierze samoprzylepnym (dostępnym w sklepach artystycznych), a następnie nakleiłem na płytkę aluminiową. Potem zacząłem mozolnie ciąć i wiercić wszystkie otwory, zrobiwszy wcześniej punktakiem dziurki w punktach środkowych, by obróbka nie spowodowała przesunięcia papieru. Tak wyglądała przekładnia w połowie pracy:
Najwięcej pracy kosztowało mnie wywiercenie otworu na silnik – zastosowałem klasyczną, domową metodę: otwory wiertarką, potem imadło i ręczne cięcie frezem, na koniec pilniki – od zdzieraka do delikatnego, którym wyszlifowałem krawędzie.
Z duszą na ramieniu chwyciłem za imbus… tak! Udało się wszystko spasować prawidłowo.
Teraz mogłem zacząć lutować część elektroniczną. Zdecydowałem się zamontować sterownik silnika tak, by dało się go potem łatwo usunąć – na płytce prototypowej przylutowałem żeńskie złącza goldpin, ojciec pomógł mi zrobić po drugiej stronie płytki ścieżki, a potem zostało już tylko lutowanie przewodów.
Przewód zasilający wyprowadziłem na zewnątrz, ponieważ korzystam z dużych akumulatorów 5000mAh od terenowego samochodu zdalnie sterowanego – zapewniają one aż zanadto energii. Do sterowania silnikiem potrzebny był oczywiście sterownik – użyłem DRV8834 od Pololu, ponieważ potrafi on pracować z silnikami obsługującymi microstepping na poziomie 32 kroków oraz pracuje z silnikami o niskim napięciu (od 2,5V do 10,8V). Aha – poza tym w locie ciągnie sobie 5V do części logicznej z zasilania silnika – nie trzeba go osobno zasilać z Arduino, a to zawsze o jeden przewód mniej.
Po zakończeniu lutowania i zamocowaniu elektroniki w środku (przykręciłem ją do obudowy od spodu), pozostało mi tylko zamocowanie huba i przygotowanie płytki montażowej pod kamerkę. Hub zamocowany, próbuję wkręcić śrubę M3… za duża. Ok, może uda się wkręcić M2,5… za mała, przelatuje na wylot. O co chodzi?
Złapałem hub i kopnąłem się do wrocławskiego sklepu Śruba na Jedności Narodowej – sklep z praktycznie samymi śrubami, mają je we wszystkich rozmiarach i odmianach. Pani rzuciła okiem i od razu stwierdziła – “no tak, bo ma pan otwór calowy”. Nie chcąc niszczyć fabrycznego gwintu, rad nierad kupiłem więc śruby calowe – oczywiście wraz z odpowiednimi imbusami, których też nie miałem na stanie. Teraz mogłem już skonstruować odpowiedni montaż pod kamerkę. Efekt końcowy wygląda następująco:
Przykładowy filmik nagrałem z wałbrzyskiej Strefy Ekonomicznej, nie jest on może oszałamiający, ale widać, że urządzonko robi swoją robotę. Nie ukrywam, że pomogłem sobie trochę deshakerem dla VirtualDuba, ale gdybym nawet puścił oryginalny film, wielkiego dramatu by nie było.
Uczymy się na błędach
Choć projekt udało się zrealizować i urządzenie spełnia swoje zadanie, to kilka rzeczy można byłoby poprawić.
Po pierwsze, użyłem bodaj najbardziej przeciwpancernych zębatek, jakie są na rynku modelarskim – jeżeli nawet na mojej przekładni nie da się powiesić słonia, to samochód osobowy na pewno. Stalowe zębatki spełniły swoje zadanie, ale z powodzeniem można byłoby użyć tutaj znacznie lżejszych zębatek plastikowych. Ramię z kamerką nie wykonuje tak dużej pracy, by wymagało aż tak trwałej przekładni. Plusem jest natomiast to, że można na hubie zamontować cięższą kamerkę albo na przykład GoPro na dodatkowym montażu, który przedłuży ramię, a przekładnia (a tym bardziej silnik) nawet nie sapnie.
Po drugie, całość niemiłosiernie hałasuje. Podczas pracy jest to zwykle kilka stuknięć i ogólnie timelapse wykonuje się dosyć bezszelestnie, ale dźwięk podczas ustawiania zakresu ruchu kamery przypomina skrzyżowanie miksera i spalinowej kosiarki do trawy. Winnych jest kilka: sam silnik krokowy, który dosyć wyraźnie brzęczy podczas pracy, stalowe wały, które lekko “chodzą” w otworach, stalowe zębatki, które również dodają do tej kakofonii trochę własnych tonów i wreszcie obudowa, która robi za świetne pudło rezonansowe. Mój ojciec wpadł na pomysł, żeby przyciągnąć osie do siebie, na przykład przy pomocy sprężynki i faktycznie nieco zredukowało to hałas, ale jego zlikwidowanie wymagałoby bardzo precyzyjnego wymierzenia otworów na wały – tak, by nie miały one luzów oraz by zębatki zazębiały się “do końca”, bez minimalnego zapasu, który zostawiłem na wszelki wypadek. Lub po prostu zastosowanie wałów i zębatek plastikowych.
Moja przekładnia ma niestety trochę luzu – nie jest on dramatyczny, ale podczas pracy od czasu do czasu powoduje przeskok, którego chciałem uniknąć. Tego się już niestety łatwo nie pozbędę – musiałbym jeszcze raz bardzo dokładnie pomierzyć zębatki i wyciąć otwory pod wały na jakiejś frezarce numerycznej – to zredukowałoby luz do minimum. Inną opcją byłoby zastosowanie smaru, jednak nie mam żadnej ścianki pomiędzy częścią mechaniczną a elektroniczną, więc pewnie niebawem miałbym ten smar w każdym możliwym miejscu we wnętrzu urządzenia.
Pliki
Do artykułu załączam kilka plików.
- Timelapse tool.zip zawiera plik .dft otwierany przez SolidEdge Drafting – zawiera on szkic przekładni, którego zrzut jest wewnątrz artykułu.
- TimelapseTool-arduino.zip zawiera cały projekt programu pracującego na Arduino Uno. Można go oczywiście otworzyć przy pomocy Arduino IDE.
Schemat
Załączam też poniżej schemat podłączeń – uproszczony, no i niestety nie znalazłem we Fritzingowej bibliotece mojego sterownika silników. Myślę jednak, że podłączenie silnika krokowego nikomu nie sprawi szczególnego problemu.
Na koniec jeszcze rozpiska pinów:
- 0 – niepodłączony
- 1 – niepodłączony
- 2 – M0
- 3 – M1
- 4 – używa shield
- 5 – używa shield
- 6 – używa shield
- 7 – używa shield
- 8 – używa shield
- 9 – używa shield
- 10 – używa shield (sterowanie podświetleniem)
- 11 – SLEEP
- 12 – STEP
- 13 – DIR
Świetny projekt. Chętnie zobaczyłbym więcej filmów!
Poszukiwania kół zębatych zacząłbym od: https://botland.com.pl/szukaj?controller=search&orderby=position&orderway=desc&search_query=ko%C5%82o+z%C4%99bate&submit_search=
ale na początku zakładałeś że będą metalowe, więc pewnie dlatego odrzuciłeś botland.
Ależ proszę :)
Witam, świetny projekt – tylko zastanawia mnie po co ta cała solidna przekładania skoro sam silnik krokowy posiada wystarczający moment obrotowy aby obrócić kamerę nawet sporą, a zastosowanie drivera daje możliwość sterowania mikro-krokowego np. 1/8 kroku co z silnikiem 200 kroków daje wynik: 200*8= 1600 kroków/ obrót – czyli 1 krok to 0,225 stopnia. Jak założono w projekcie.
Źle rozumiesz mikrokroki, ja też się dałem na to złapać i specjalnie kupiłem silnik, który potrafi zrobić chyba nawet 1/32. One nie służą do tego, żeby zwiększyć sumaryczną liczbę kroków, tylko żeby wykonać obrót bardziej płynnie. Nie możesz więc obrócić silnika o 1/8 czy 1/16 kroku, tylko o 1 krok w 8 albo 16 “szarpnięciach”. Powoduje to, że obrót jest nieco bardziej płynny, ale wciąż zostawia tylko 200 kroków do dyspozycji, a to jest za mało do takich zastosowań.
Mało tego, gdzieś czytałem, że nie ma nawet gwarancji, że 1/8 kroku to będzie dokładnie 1/8 kroku. Gwarancja jest jedynie taka, że wszystkie mikrokroki posumują się do jednego kroku. Efektywnie różnica jest zauważalna, ale niewiele – a mnie nie robi żadnej różnicy, czy silnik obróci się płynnie, czy nie – robię przecież zdjęcia, a nie film.
Jest kolega tego pewien?
“Źle rozumiesz mikrokroki, ja też się dałem na to złapać i specjalnie kupiłem silnik, który potrafi zrobić chyba nawet 1/32.” jeszcze z posta niżej:
“Gdyby silnik dało się obrócić o 1 mikrokrok, to po co byłoby rozróżnienie na kroki i mikrokroki? Wystarczyłoby napisać, że silnik ma 6400 kroków.”
mikrokroki to nie cecha silnika – jego parametrem są kroki. Mikrokroki to opcja oferowana przez sterownik – poszczególne mikrokroki są uzyskiwane za pomocą odpowiedniego sterowania prądem – a nie jak w przypadku kroków/półkroków “chamskiego” przełączenia napięć na wyprowadzeniach bez zwracania uwagi na prąd. Co do trzymania pozycji – właśnie wadą mikrokroków jest to że gdy silnik jest na jakiejś pozycji korzystającej z nich to potrzeba mniejszej zewnętrznej siły, żeby go wybić z tej pozycji – ale to coś kosztem czegoś.
Odnośnie płynniejszego przechodzenia – mikrokroki też są na plus, ponieważ przekazujemy do silnika mniejsze “dawki” energii wymagane do przejścia na kolejny krok co ogranicza efekty przeregulowania itp – czyli jak sterujemy krokowo to silnik bardziej “szarpnie”, a także przekroczy swoją pozycję minimalnie, żeby potem do niej wrócić (aczkolwiek tu mowa jakbyśmy sobie 1 krok co sekundę robili, bo w ruchu jeszcze bezwładność dochodzi).
Znalazłem fajny tekst na ten temat: http://silniki-krokowe.com.pl/informacje-techniczne/sterowanie-polkrokowe-i-mikrokrokowe-silnikow-krokowych/
Gratuluję cierpliwości przy wykonywaniu przekładni. Wizualnie wyszła całkiem nieźle, szkoda że tak hałasuje.
Jednej rzeczy jednak nie rozumiem. Skoro posiadasz silnik 200 krokowy(1,8°) oraz stepstick z 32 mikrokrokami to po co przekładnia? Wykorzystujące te 32 mikrokroki oraz to że silnik obraca się o kąt 1.8°/krok, możesz obracać wałem silnika o 0,05625°, a więc niemal 5 razy dokładniej niż zalożyłeś że potrzebujesz, a w dodatku bez jakiegokolwiek luzu jak w przypadku przekładni. Zrozumiałbym tworzenie takiej przekładni w momencie gdybys nie użył stepsticka i nie mógł wykorzystać mikrokroków. Jednak użycie naraz przekładni oraz stepsticka wydaje się być przerostem formy nad treścią ;) Daj znać co skłoniło Cie do tego “podwójnego” rozwiązania problemu.
Poza tą nieścisłością projekt jak najbardziej mi się podoba.
Jak wyżej. Nie da się obrócić silnika o 1/32 kroku, da się obrócić o 1 krok w 32 “szarpnięciach”. To zwiększa płynność obrotów, ale niewiele zmienia w moim przypadku.
Gdyby silnik dało się obrócić o 1 mikrokrok, to po co byłoby rozróżnienie na kroki i mikrokroki? Wystarczyłoby napisać, że silnik ma 6400 kroków.
Super projekt! Czy wartości przesłony i czasu mają być stałe? Czy próbowałeś robić “timelapsy” w mocno zmieniających się warunkach oświetlenia, np wschód słońca?
Powiedziałbym raczej, że wręcz nie powinny być stałe, bo warunki oświetleniowe się zmieniają i np. przepływająca chmura może spowodować, że fragment filmu będzie niedoświetlony albo błysk odbitego światła – prześwietlony. Prezentowany filmik (jak i wszystkie inne, które robiłem na tej maszynce) jest zrobiony na GoPro, która sama dobiera sobie parametry ekspozycji. W ten sposób każde zdjęcie jest (średnio) tak samo jasne i wychodzi z tego ładny filmik.
Co najwyżej rozważyłbym skorzystanie z kamerki, która zapewnia szerszy zakres dynamiki – jak na przykład GoPro czy Mobius. Zwykły aparat wycelowany w scenę, na której jest słońce może spalić całe zdjęcie, a GoPro i Mobius sobie z tym radzą (wprawdzie na niebie jest biała plama, ale wszystko dookoła jest dobrze widoczne)