Spisu treści:

Suwak kamery do śledzenia obiektów z osią obrotową. Wydrukowany w 3D i zbudowany na kontrolerze silnika prądu stałego RoboClaw i Arduino: 5 kroków (ze zdjęciami)
Suwak kamery do śledzenia obiektów z osią obrotową. Wydrukowany w 3D i zbudowany na kontrolerze silnika prądu stałego RoboClaw i Arduino: 5 kroków (ze zdjęciami)

Wideo: Suwak kamery do śledzenia obiektów z osią obrotową. Wydrukowany w 3D i zbudowany na kontrolerze silnika prądu stałego RoboClaw i Arduino: 5 kroków (ze zdjęciami)

Wideo: Suwak kamery do śledzenia obiektów z osią obrotową. Wydrukowany w 3D i zbudowany na kontrolerze silnika prądu stałego RoboClaw i Arduino: 5 kroków (ze zdjęciami)
Wideo: Video produktowe - zobacz jak nakręcić je kreatywnie! 2024, Lipiec
Anonim
Image
Image
Projektowanie sprzętu + budowa + drukowanie 3D
Projektowanie sprzętu + budowa + drukowanie 3D

Projekty Fusion 360 »

Ten projekt jest jednym z moich ulubionych projektów, odkąd udało mi się połączyć moje zainteresowanie tworzeniem wideo z majsterkowaniem. Zawsze przyglądałem się i chciałem naśladować te kinowe ujęcia w filmach, w których kamera porusza się po ekranie podczas panoramowania, aby śledzić obiekt. Dodaje to bardzo interesujący efekt głębi do wideo 2D. Chcąc to powtórzyć bez wydawania tysięcy dolarów na hollywoodzki sprzęt, postanowiłem sam zbudować taki slider.

Cały projekt zbudowany jest na częściach, które można wydrukować w 3D, a kod działa na popularnej płytce Arduino. Wszystkie pliki projektu, takie jak pliki CAD i kod, są dostępne do pobrania poniżej.

Pliki do druku CAD/ 3D dostępne tutaj

Plik z kodem Arduino dostępny tutaj

Projekt koncentruje się wokół 2 przekładniowych silników szczotkowych prądu stałego i sterownika Basic Micro Roboclaw Motor. Ten sterownik silnika może przekształcić szczotkowane silniki prądu stałego w najwyższej klasy serwomechanizm z niesamowitą dokładnością pozycjonowania, tonami momentu obrotowego i pełnym 360 stopniami obrotu. Więcej o tym później.

Zanim przejdziemy dalej, najpierw obejrzyj samouczek wideo, do którego link znajduje się tutaj. Ten samouczek zawiera przegląd tego, jak zbudować ten projekt, a ten przewodnik Instructables będzie bardziej szczegółowo opisywać sposób, w jaki zbudowałem ten projekt.

Materiały-

  • Pręty gwintowane o długości 2 x 1 m m10 używane do łączenia wszystkich części
  • 8x nakrętki M10 do mocowania części do prętów gwintowanych
  • 2x pręty stalowe gładkie o długości 95 cm 8mm do wsuwania suwaka
  • 4x łożyska lm8uu dla suwaka, aby płynnie ślizgał się po stalowych prętach
  • 4x 10mm długie nakrętki m3 do montażu silnika
  • 2 x łożyska deskorolkowe (średnica zewnętrzna 22mm, średnica wewnętrzna 8mm) dla osi obrotu
  • 1x15mm łożysko po stronie koła pasowego luźnego
  • 1x śruba m4 o długości 4 cm z nakrętką zabezpieczającą m4 do montażu łożyska koła pasowego do drukowanej części koła pasowego.
  • Koło zębate 20 zębów o średnicy wewnętrznej 4 mm do silnika suwakowego. Dokładne koło pasowe nie jest bardzo ważne, ponieważ silnik prądu stałego powinien być nastawiony na wystarczający moment obrotowy. Tylko upewnij się, że to ten sam ton, co twój pasek
  • Pas GT2 o długości 2 metrów. Znowu możesz użyć dowolnego pasa, o ile odpowiada on podziałce zębów twojego koła pasowego.

Elektronika

  • 2 * Motoreduktory prądu stałego z enkoderami (jeden steruje ruchem poprzecznym, a drugi osią obrotową). Oto ten, którego użyłem. Więcej na ten temat w części poradnika Elektronika
  • Sterownik silnika RoboClaw DC. (Użyłem podwójnego kontrolera 15Amp, ponieważ pozwalał mi on sterować obydwoma silnikami za pomocą jednego kontrolera)
  • Dowolne Arduino. Użyłem Arduino UNO
  • Bateria/ źródło zasilania. (użyłem 2 ogniw LiPo 7,4V)
  • Ekran (do wyświetlania menu. Każdy ekran kompatybilny z U8G będzie działał, użyłem tego ekranu OLED o przekątnej 1,3 cala)
  • Enkoder obrotowy (do nawigacji i konfiguracji opcji w menu)
  • Fizyczny przycisk (do wyzwalania ruchu suwaka)

Krok 1: Projektowanie sprzętu + budowa + drukowanie 3D

Elektronika
Elektronika

Przejdźmy teraz do elektroniki. W elektronice ten projekt ma dużą elastyczność.

Zacznijmy od rdzenia tego projektu – 2 szczotkowanych silników prądu stałego.

Wybrałem szczotkowane silniki prądu stałego z kilku powodów.

  1. Silniki szczotkowane są znacznie prostsze w okablowaniu i obsłudze w porównaniu z silnikami krokowymi
  2. Szczotkowane silniki prądu stałego są znacznie lżejsze niż silniki prądu stałego, co jest szczególnie ważne w przypadku silnika osi obrotu, ponieważ silnik ten fizycznie porusza się bocznie z kamerą, a zapewnienie jak najlżejszego jest ważne, aby zapobiec nadmiernemu obciążeniu głównego silnika suwaka kamery.

Wybrałem ten konkretny silnik prądu stałego. Ten silnik dał mi niezwykle wysoki moment obrotowy, który był niezbędny do przeniesienia tak dużego obciążenia kamery. Co więcej, wysoka przekładnia oznaczała, że szczytowe obroty na minutę były wolne, co oznaczało, że mogłem filmować wolniejsze ruchy, a wysoka przekładnia prowadziła również do większej dokładności pozycjonowania, ponieważ jeden obrót wału wyjściowego o 360 stopni oznaczał 341.2 zliczeń enkodera silnika.

To prowadzi nas do kontrolera ruchu RoboClaw. Podwójny sterownik silnika prądu stałego Roboclaw pobiera proste instrukcje z Arduino za pomocą prostych poleceń kodu i wykonuje wszystkie ciężkie przetwarzanie i dostarczanie mocy, aby silnik działał zgodnie z przeznaczeniem. Arduino może wysyłać sygnały do Roboclawa przez PWM, napięcie analogowe, prosty serial lub pakiet szeregowy. Serial pakietowy jest najlepszym sposobem, ponieważ pozwala uzyskać informacje z powrotem z Roboclaw, które są niezbędne do śledzenia pozycji. W następnym kroku zagłębię się w część oprogramowania/programowania Roboclawa (programowanie).

Zasadniczo Roboclaw może przekształcić szczotkowy silnik prądu stałego z enkoderem, aby był bardziej jak serwomechanizm dzięki zdolności RoboClaw do kontrolowania pozycji. Jednak w przeciwieństwie do tradycyjnego serwomechanizmu, teraz twój szczotkowany silnik prądu stałego ma znacznie większy moment obrotowy, znacznie większą dokładność pozycjonowania dzięki wysokiej przekładni silnika, a co najważniejsze, twój silnik prądu stałego może obracać się w sposób ciągły o 360 stopni, czego nie może zrobić tradycyjny serwomechanizm.

Kolejną częścią elektroniki jest ekran. Do mojego ekranu wybrałem ten panel OLED ze względu na jego rozmiar i wysoki kontrast. Ten wysoki kontrast jest niesamowity i sprawia, że ekran jest bardzo łatwy w użyciu w bezpośrednim świetle słonecznym, jednocześnie nie emitując zbyt dużo światła, które mogłoby zakłócać potencjalne ciemne ujęcie kamery. Ten ekran można łatwo zamienić na inny ekran kompatybilny z U8G. Pełna lista kompatybilnych ekranów dostępna jest tutaj. W rzeczywistości ten projekt został celowo zakodowany wokół biblioteki U8G, aby budowniczowie DIY, tacy jak Ty, mieli większą elastyczność w swoich częściach

Ostatnimi elementami elektroniki do tego projektu były enkoder obrotowy i przycisk uruchamiający ruch suwaka. Enkoder umożliwia poruszanie się po menu ekranu i konfigurowanie całego menu suwaka za pomocą jednego pokrętła. Enkoder obrotowy nie ma pozycji „końcowej”, jak tradycyjny potencjometr, co jest szczególnie przydatne przy dostosowywaniu współrzędnych xiy śledzenia obiektu na ekranie. Przycisk służy wyłącznie do uruchomienia ruchu slidera bez konieczności majstrowania przy enkoderze obrotowym.

Krok 3: Programowanie suwaka kamery

Programowanie suwaka kamery
Programowanie suwaka kamery
Programowanie suwaka kamery
Programowanie suwaka kamery

Kodowanie było zdecydowanie najtrudniejszym wyzwaniem tego projektu. Widzisz, od samego początku chciałem, aby suwakiem można było sterować z ekranu. Aby projekt był kompatybilny z jak największą liczbą ekranów, musiałem użyć biblioteki U8Glib dla Arduino. Ta biblioteka obsługuje ponad 32 ekrany. Jednak biblioteka U8Glib używała pętli obrazu do rysowania menu na ekranie, co kolidowało ze zdolnością Arduino do jednoczesnego zbierania informacji o położeniu kamery, co było wymagane do funkcji obliczania kąta kamery (jest to omówione w następnych kilku akapitach). U8Glib2 ma alternatywę dla pętli obrazu, używając czegoś, co nazywa się opcją pełnego bufora strony, ale biblioteka zużywa zbyt dużo pamięci i utrudnia dopasowanie reszty kodu, biorąc pod uwagę ograniczenia pamięci Arduino Uno. Oznaczało to, że utknąłem z U8G i musiałem obejść ten problem, uniemożliwiając aktualizację ekranu za każdym razem, gdy suwak był w ruchu, a Arduino musiało zbierać dane pozycyjne z Roboclawa. Zostałem również zmuszony do uruchomienia suwaka, aby zaczął wychodzić poza pętlę menu, ponieważ po wejściu do podmenu znalazłbym się w pętli obrazu, a suwak nie działałby zgodnie z przeznaczeniem. Obszedłem również ten problem, mając osobny fizyczny przycisk wyzwalający ruch suwaka.

Następnie porozmawiajmy o elemencie śledzenia rotacyjnego. Ta część wydaje się bardzo skomplikowana do zintegrowania, ale w rzeczywistości jest raczej prosta. Implementacja do tego znajduje się pod funkcją „motor()” w moim kodzie Arduino. Pierwszym krokiem jest stworzenie dwuwymiarowej siatki i ustalenie, gdzie znajduje się obiekt, który chcesz śledzić. Na tej podstawie możesz narysować trójkąt do swojej aktualnej lokalizacji. Możesz uzyskać aktualną lokalizację z wartości enkodera silnika. Jeśli chcesz skonfigurować pozycję śledzonego obiektu w cm/mm, musisz przetłumaczyć wartość enkodera na wartość cm/mm. Można to po prostu zrobić, przesuwając suwak kamery o 1 cm i mierząc wzrost wartości enkodera. Możesz wprowadzić tę wartość w górnej części kodu pod zmienną encoder_mm.

Idąc dalej, teraz użyjemy funkcji odwrotnej stycznej, aby uzyskać kąt, pod którym musi być skierowana kamera, aby skierować ją na twój obiekt. Styczna odwrotna przyjmuje przeciwną i przyległą stronę trójkąta. Przeciwna strona trójkąta nigdy się nie zmienia, ponieważ jest to odległość y od suwaka do obiektu. Zmienia się jednak sąsiednia strona suwaka aparatu. Ten sąsiedni bok można obliczyć, biorąc pozycję x obiektu i odejmując od niej aktualną pozycję. Gdy suwak porusza się w swoim zakresie ruchu, będzie aktualizował Arduino na wartości enkodera. Arduino wielokrotnie przekonwertuje tę wartość enkodera na wartość pozycyjną cm/mm x, a następnie obliczy długość sąsiedniego boku, a na koniec obliczy kąt, pod którym kamera musi być skierowana przez cały czas, aby wskazać obiekt.

Teraz, gdy nasze Arduino dynamicznie przetwarza kąt kamery, możemy zająć się konwersją tego kąta na wartość pozycyjną, do której ma się poruszać silnik obrotowy. To prowadzi nas do największej funkcji RoboClaw w tym projekcie. Dając Roboclawowi wartość pozycji, może on zasadniczo sprawić, że szczotkowany silnik prądu stałego będzie zachowywał się jak serwomechanizm. Poza tym, że w przeciwieństwie do serwomechanizmu, nasz silnik ma o wiele większy moment obrotowy, znacznie wyższą dokładność, a także może obracać się o 360 stopni.

Kod Arduino, który przenosi Roboclaw do określonej pozycji, wygląda następująco:

roboclaw. SpeedAccelDeccelPositionM1(adres, 'prędkość', 'przyspieszenie', 'hamowanie', 'pozycja, do której chcesz się udać', 1);

Aby dostroić wartość położenia silnika, aby odpowiadała kątowi kamery, musisz ręcznie przesunąć płytę kamery o 180 stopni. Następnie zobacz, jak bardzo zmieniła się wartość enkodera od przesunięcia płyty kamery z 0 stopni do 180 stopni. To daje ci zasięg enkodera. Możesz wprowadzić ten zakres w funkcji silnika, która mapuje kąt kamery Arduino na wartość pozycyjną. Jest to również skomentowane w kodzie, więc powinno być łatwe do znalezienia *****

RoboClaw dał mi również możliwość dostrojenia innych czynników, takich jak przyspieszenie, opóźnienie i wartości PID. To dodatkowo pozwoliło mi wygładzić ruch osi obrotowej, zwłaszcza gdy zmiany kąta były niewielkie i dodano szarpnięcia bez wysokiej wartości „D” PID. Możesz także automatycznie dostroić swoje wartości PID za pomocą aplikacji komputerowej Roboclaw.

Krok 4: Obsługa suwaka aparatu

Obsługa suwaka aparatu
Obsługa suwaka aparatu

Przejdźmy teraz do części zabawnej, obsługi suwaka Menu składa się z 4 głównych zakładek. Górna zakładka dedykowana jest do kontroli prędkości. Środkowy rząd menu zawiera zakładki do konfiguracji pozycji X i Y śledzonego obiektu w mm, a także do konfiguracji, jeśli chcemy, aby suwak obracał się i śledził nasz obiekt, czy po prostu wykonywał prosty ruch przesuwania bez obracania. Przekręcenie obrotowego enkodera pozwala nam poruszać się po różnych opcjach menu. Aby skonfigurować dowolną z opcji, przejdź do opcji i naciśnij enkoder obrotowy. Po naciśnięciu, obracanie enkodera obrotowego zmieni wartość podświetlonego podmenu, zamiast przewijać menu. Po osiągnięciu żądanej wartości możesz ponownie kliknąć enkoder obrotowy. Teraz wróciłeś do głównego menu i możesz poruszać się między różnymi zakładkami. Gdy będziesz gotowy, po prostu naciśnij przycisk Go obok ekranu, a suwak zrobi swoje!

Upewnij się, że po zakończeniu korzystania z suwaka aparatu kamera znajduje się w pozycji „domowej”: bok suwaka, od którego się zaczął. Powodem tego jest to, że enkoder silnika nie jest enkoderem absolutnym, co oznacza, że Roboclaw/Arduino nie może stwierdzić, gdzie znajduje się enkoder. Mogą tylko stwierdzić, jak bardzo zmienił się koder od ostatniego włączenia. Oznacza to, że po wyłączeniu suwaka aparatu suwak „zapomni” pozycję suwaka i zresetuje enkoder do 0. Dlatego też, jeśli wyłączysz suwak po drugiej stronie, po jego włączeniu suwak spróbuj przesunąć się dalej niż krawędź i uderzyć w ścianę suwaka. To zachowanie enkodera jest również powodem, dla którego kamera resetuje swój kąt obrotu po każdym ruchu przesuwania kamery. Oś obrotowa zabezpiecza się również przed zderzeniem z końcem swojego zakresu ruchu.

Możesz to naprawić, dodając ograniczniki końcowe i procedurę naprowadzania podczas uruchamiania. To jest to, czego używają drukarki 3D.

Krok 5: Ostatnie myśli + przyszłe ulepszenia

Zdecydowanie zalecam, aby każdy budowniczy tworzył własne wersje tego suwaka, zamiast budować dokładnie ten sam suwak. Modyfikowanie mojego projektu pozwoli Ci zbudować suwak zgodnie z dokładnymi specyfikacjami, a także lepiej zrozumieć, jak działa elektronika i kod.

Stworzyłem kod tak czytelny i konfigurowalny, jak to tylko możliwe, dzięki czemu można dostosować/kalibrować różne zmienne kodu dla specyfikacji suwaka. Kod jest również w pełni zbudowany wokół funkcji, więc jeśli chcesz skopiować/ulepszyć/przepisać pewne zachowania suwaka, nie musisz odtwarzać kodu i przerabiać całego kodu, a raczej tylko te części, które chcesz edytować.

Wreszcie, gdybym stworzył wersję 2.0, oto kilka ulepszeń, które chciałbym wprowadzić

  1. Wyższe przełożenie dla silnika osi obrotowej. Wyższy przełożenie oznacza, że mogę wykonywać bardziej precyzyjne małe ruchy. Jest to szczególnie ważne, gdy kamera znajduje się daleko od obiektu, a kąt kamery zmienia się bardzo powoli. Obecnie mój silnik nie jest przestawiony zbyt wysoko i może to powodować lekkie szarpanie, gdy suwak kamery działa zbyt wolno lub gdy zmiana kąta obrotu jest niewielka. Dodanie wysokiej wartości PID „D” pomogło mi się tego pozbyć, ale kosztem nieco niższej dokładności śledzenia obiektów.
  2. Długość modułowa. Jest to dalekosiężny cel, ale chciałbym, aby suwak aparatu miał modułową długość, co oznacza, że można łatwo przymocować dłuższe ścieżki, po których będzie się przesuwał aparat. Jest to dość trudne, ponieważ trzeba będzie idealnie wyrównać obie gąsienice i wymyślić, jak uruchomić system pasów. Niemniej jednak byłoby to fajne ulepszenie!
  3. Niestandardowe klatki kluczowe ruchu. Chciałbym wprowadzić koncepcję ruchów w klatkach kluczowych do tego suwaka aparatu. Keyframeming to technika bardzo często stosowana w produkcji wideo i audio. Umożliwiłoby to nieliniowe ruchy kamery, gdzie kamera przechodzi do pozycji, czeka, a następnie przesuwa się do innej pozycji z inną prędkością, czeka, a następnie przechodzi do trzeciej pozycji itp.
  4. Sterowanie telefonem Bluetooth/bezprzewodowym. Byłoby naprawdę fajnie móc bezprzewodowo konfigurować parametry suwaka aparatu i móc go rozmieścić w trudno dostępnych miejscach. Aplikacja na telefon może również otworzyć możliwości integracji klatek kluczowych, jak wspomniano w ostatnim akapicie.

To wszystko w tym samouczku. Zachęcamy do zadawania pytań w sekcji komentarzy poniżej.

Aby uzyskać więcej samouczków dotyczących treści i elektroniki, możesz również sprawdzić mój kanał na YouTube tutaj.

Zalecana: