Spisu treści:

Ręczny stabilizator aparatu: 13 kroków (ze zdjęciami)
Ręczny stabilizator aparatu: 13 kroków (ze zdjęciami)

Wideo: Ręczny stabilizator aparatu: 13 kroków (ze zdjęciami)

Wideo: Ręczny stabilizator aparatu: 13 kroków (ze zdjęciami)
Wideo: Tani stabilizator do kamer/smartfonów - unboxing i test 2024, Lipiec
Anonim
Ręczny stabilizator kamery
Ręczny stabilizator kamery

Wstęp

To jest przewodnik po tworzeniu 3-osiowej ręcznej stabilizacji kamery dla GoPro przy użyciu płytki rozwojowej Digilent Zybo Zynq-7000. Ten projekt został opracowany dla klasy CPE Real-Time Operating Systems (CPE 439). Stabilizator wykorzystuje trzy serwa i IMU do korekcji ruchu użytkownika, aby utrzymać poziom kamery.

Części wymagane do projektu

  • Płyta rozwojowa Digilent Zybo Zynq-7000
  • Sparkfun IMU Breakout - MPU 9250
  • 2 Serwa HiTec HS-5485HB (kup ruch 180 stopni lub program od 90 do 180 stopni)
  • 1 HiTec HS-5685MH Servo (kup ruch 180 stopni lub program od 90 do 180 stopni)
  • 2 standardowe wsporniki serwomechanizmu
  • 1 deska do krojenia chleba
  • 15 przewodów połączeniowych męsko-męskich
  • 4 przewody połączeniowe męskie-żeńskie
  • Gorący klej
  • Uchwyt lub uchwyt
  • Kołek drewniany o średnicy 5 mm
  • GoPro lub inna kamera i sprzęt montażowy
  • Zasilacz zdolny do wyprowadzania 5V.
  • Dostęp do drukarki 3D

Krok 1: Konfiguracja sprzętu Vivado

Konfiguracja sprzętu Vivado
Konfiguracja sprzętu Vivado

Zacznijmy od stworzenia podstawowego projektu bloku dla projektu.

  1. Otwórz Vivado 2016.2, kliknij ikonę „Utwórz nowy projekt” i kliknij „Dalej>”.
  2. Nazwij swój projekt i kliknij „Dalej >”.
  3. Wybierz projekt RTL i naciśnij „Dalej >”.
  4. Wpisz w pasek wyszukiwania xc7z010clg400-1, a następnie wybierz część i naciśnij „Dalej >” i „Zakończ”.

Krok 2: Konfiguracja projektu blokowego

Teraz zaczniemy generować projekt bloku, dodając i konfigurując blok IP Zynq.

  1. W panelu po lewej stronie, pod IP Integrator, kliknij "Utwórz projekt blokowy", a następnie kliknij "OK".
  2. Kliknij prawym przyciskiem myszy w zakładce "Diagram" i wybierz "Dodaj IP…".
  3. Wpisz „ZYNQ7 Processing System” i kliknij wybór.
  4. Kliknij dwukrotnie wyświetlony blok Zynq.
  5. Kliknij „Importuj ustawienia XPS” i zaimportuj dostarczony plik „ZYBO_zynq_def.xml”.
  6. Przejdź do „Konfiguracja MIO” i wybierz „Jednostka procesora aplikacji” i włącz zegary Timer 0 i Watchdog.
  7. W tej samej zakładce, w "I/O Peripherals", wybierz ENET 0 (i zmień menu rozwijane na "MIO 16.. 27", USB 0, SD 0, UART 1, I2C 0.
  8. W sekcji „GPIO” sprawdź GPIO MIO, ENET Reset, USB Reset i I2C Reset.
  9. Teraz przejdź do „Konfiguracji zegara”. Wybierz FCLK_CLK0 w PL Fabric Clocks. Następnie kliknij "OK".

Krok 3: Utwórz niestandardowy blok IP PWM

Ten blok IP pozwala płytce na wysyłanie sygnału PWM w celu sterowania ruchem serw. Praca była w dużej mierze oparta na tutorialu Digitronix Nepal, który można znaleźć tutaj. Dodano logikę, aby spowolnić zegar, aby impuls był wysyłany z odpowiednią prędkością. Blok przyjmuje liczbę od 0 do 180 i zamienia ją na impuls od 750-2150 usec.

  1. Teraz na karcie Narzędzia w lewym górnym rogu kliknij „Utwórz i spakuj adres IP…” i naciśnij Dalej.
  2. Następnie wybierz „Utwórz nowe urządzenie peryferyjne AXI4” i naciśnij Dalej.
  3. Nazwij swój blok IP PWM (nazywaliśmy go pwm_core) i kliknij Dalej, a następnie kliknij Dalej również na następnej stronie.
  4. Teraz kliknij „Edytuj IP” i naciśnij Zakończ. Spowoduje to otwarcie nowego okna do edycji bloku pwm.
  5. Na karcie „Źródła” i w sekcji „Źródła projektu” rozwiń „pwm_core_v1_0” (zastąp pwm_core swoją nazwą) i otwórz plik, który stanie się widoczny.
  6. Skopiuj i wklej kod podany w 'pwm_core_v1_0_S00_AXI.v' w pliku zip na dole projektu. Ctrl + Shift + R i zastąp „pwm_core” swoją nazwą bloku ip.
  7. Następnie otwórz ' name _v1_0' i skopiuj podany kod do pliku 'pwm_core_v1_0.v'. Ctrl + Shift + R i zastąp 'pwm_core' nazwą.
  8. Teraz przejdź do zakładki „IP pakietu – nazwa” i wybierz „Parametry dostosowywania”.
  9. Na tej karcie u góry będzie żółty pasek z połączonym tekstem. Wybierz to, a w polu pojawi się „Ukryte parametry”.
  10. Teraz przejdź do „Customization GUI” i kliknij prawym przyciskiem myszy na Pwm Counter Max i wybierz „Edit Parameter…”.
  11. Zaznacz pola „Widoczne w GUI dostosowywania” i „Określ zakres”.
  12. Zmień menu rozwijane "Typ:" na Zakres liczb całkowitych i ustaw minimum na 0, a maksimum na 65535 i zaznacz pole "Pokaż zakres". Teraz kliknij OK.
  13. Przeciągnij Pwm Counter Max pod drzewo „Strona 0”. Teraz przejdź do „Przejrzyj i spakuj” i kliknij przycisk „Ponownie zapakuj adres IP”.

Krok 4: Dodaj blok IP PWM do projektu

Dodaj blok IP PWM do projektu
Dodaj blok IP PWM do projektu

Dodamy blok IP do projektu bloku, aby umożliwić użytkownikowi dostęp do bloku IP PWM przez procesor.

  1. Kliknij prawym przyciskiem myszy na karcie diagramu i kliknij „Ustawienia IP…”. Przejdź do zakładki „Menedżer repozytorium”.
  2. Kliknij zielony przycisk plusa i wybierz go. Teraz znajdź ip_repo w Menedżerze plików i dodaj to do projektu. Następnie naciśnij Zastosuj, a następnie OK.
  3. Kliknij prawym przyciskiem myszy na karcie diagramu i kliknij „Dodaj IP…”. Wpisz nazwę bloku IP PWM i wybierz go.
  4. U góry ekranu powinien pojawić się zielony pasek, najpierw wybierz „Uruchom automatyzację połączenia” i kliknij OK. Następnie kliknij „Uruchom blok automatyzacji” i kliknij OK.
  5. Kliknij dwukrotnie blok PWM i zmień Pwm Counter Max na 1024 z 128.
  6. Umieść wskaźnik myszy nad PWM0 na bloku PWM. Powinien być mały ołówek, który pojawi się, kiedy to zrobisz. Kliknij prawym przyciskiem myszy i wybierz „Utwórz port…” i kliknij OK, gdy otworzy się okno. Tworzy to port zewnętrzny, do którego ma być przesyłany sygnał.
  7. Powtórz krok 6 również dla PWM1 i PWM2.
  8. Znajdź małą okrągłą ikonę podwójnej strzałki na pasku bocznym i kliknij ją. Zregeneruje układ, a projekt bloku powinien wyglądać jak na powyższym obrazku.

Krok 5: Skonfiguruj opakowanie HDL i skonfiguruj plik ograniczeń

Skonfiguruj opakowanie HDL i skonfiguruj plik ograniczeń
Skonfiguruj opakowanie HDL i skonfiguruj plik ograniczeń

Teraz wygenerujemy projekt wysokiego poziomu dla naszego projektu blokowego, a następnie zmapujemy PWM0, PWM1 i PWM2 na piny Pmod na płycie Zybo.

  1. Przejdź do zakładki „Źródła”. Kliknij prawym przyciskiem myszy plik projektu bloku w sekcji „Źródła projektu” i kliknij „Utwórz opakowanie HDL…”. Wybierz „Kopiuj wygenerowane opakowanie, aby zezwolić na edycję użytkownika” i kliknij OK. To generuje projekt wysokiego poziomu dla projektu blokowego, który stworzyliśmy.
  2. Pmod, do którego będziemy wyprowadzać, to JE.
  3. W obszarze Plik wybierz „Dodaj źródła…” i wybierz „Dodaj lub utwórz ograniczenia” i kliknij Dalej.
  4. Kliknij Dodaj pliki i wybierz dołączony plik „ZYBO_Master.xdc”. Jeśli zajrzysz do tego pliku, zauważysz, że wszystko jest odkomentowane z wyjątkiem sześciu linii "set_property" pod "##Pmod Header JE". Zauważysz, że PWM0, PWM1 i PWM2 są argumentami dla tych linii. Są one mapowane na pin 1, pin 2 i pin 3 JE Pmod.

Krok 6: Generowanie strumienia bitów

Musimy wygenerować strumień bitów, aby projekt sprzętu wyeksportował do SDK, zanim przejdziemy dalej.

  1. W sekcji „Programuj i debuguj” na pasku bocznym wybierz „Generuj strumień bitów”. Uruchomi to syntezę, następnie implementację, a następnie wygeneruje strumień bitów dla projektu.
  2. Popraw wszystkie wyskakujące błędy, ale ostrzeżenia można zignorować.
  3. Przejdź do Plik->Uruchom SDK i kliknij OK. To otworzy Xilinx SDK.

Krok 7: Konfiguracja projektu w SDK

Ta część może być trochę frustrująca. W razie wątpliwości zrób nowy BSP i wymień stary. To zaoszczędziło nam sporo czasu na debugowanie.

  1. Zacznij od pobrania najnowszej wersji FreeRTOS tutaj.
  2. Wyodrębnij wszystko z pobranego pliku i zaimportuj FreeRTOS do SDK, klikając Plik->Importuj, a następnie w sekcji „Ogólne” kliknij „Istniejące projekty w obszarze roboczym”, a następnie kliknij Dalej.
  3. Przejdź do „FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702” w folderze FreeRTOS. Importuj tylko "RTOSDemo" z tej lokalizacji.
  4. Teraz wygeneruj pakiet wsparcia płyty (BSP), klikając Plik->Nowy pakiet wsparcia płyty.
  5. Wybierz „ps7_cortexa9_0” i zaznacz „lwip141” i kliknij OK.
  6. Kliknij prawym przyciskiem myszy na niebieski folder RTOSDemo i wybierz „Referencje do projektów”.
  7. Odznacz „RTOSDemo_bsp” i sprawdź nowy BSP, który właśnie utworzyliśmy.

Krok 8: Modyfikacje kodu FreeRTOS

Dostarczony przez nas kod można podzielić na 7 różnych plików. main.c, iic_main_thread.c, xil_printfloat.c, xil_printfloat.h, IIC_funcs.c, IIC_funcs.h i iic_imu.h. Kod w iic_main_thread.c został zaadaptowany z biblioteki Krisa Winera, którą można znaleźć tutaj. Przekształciliśmy głównie jego kod, aby zawierał zadania i działał z tablicą Zybo. Dodaliśmy również funkcje obliczania korekcji orientacji kamery. Zostawiliśmy kilka instrukcji print, które są przydatne do debugowania. Większość z nich jest skomentowana, ale jeśli czujesz taką potrzebę, możesz je odkomentować.

  1. Najłatwiejszym sposobem modyfikacji pliku main.c jest zastąpienie kodu skopiowanym kodem z dołączonego pliku main.c.
  2. Aby utworzyć nowy plik, kliknij prawym przyciskiem myszy folder src pod RTOSDemo i wybierz C Source File. Nazwij ten plik „iic_main_thread.c”.
  3. Skopiuj kod z dołączonego „iic_main_thread.c” i wklej go do nowo utworzonego pliku.
  4. Powtórz kroki 2 i 3 z pozostałymi plikami.
  5. wymaga instrukcji łączenia w gcc. Aby dodać to do ścieżki kompilacji, kliknij prawym przyciskiem myszy RTOSDemo i wybierz "Ustawienia kompilacji C/C++".
  6. Otworzy się nowe okno. Przejdź do konsoli ARM v7 gcc->Biblioteki. Wybierz mały plik dodawania w prawym górnym rogu i wpisz „m”. Obejmuje to bibliotekę matematyczną w projekcie.
  7. Zbuduj projekt za pomocą Ctrl + B, aby potwierdzić, że wszystko działa. Sprawdź ostrzeżenia, które są generowane, ale możesz je zignorować.
  8. Istnieje kilka miejsc, które będą wymagały modyfikacji, głównie deklinacja magnetyczna Twojej obecnej lokalizacji. Wyjaśnimy, jak to zmienić w części samouczka poświęconej kalibracji.

Krok 9: Drukowanie 3D dla stabilizatora

Drukowanie 3D dla stabilizatora
Drukowanie 3D dla stabilizatora

Musisz wydrukować w 3D kilka części do tego projektu. Prawdopodobnie można kupić części, które mają podobne wymiary/rozmiary do naszych części drukowanych.

  1. Użyj dostarczonych plików, aby wydrukować ramię i uchwyt do GoPro.
  2. Musisz dodać rusztowanie do pliku.stl.
  3. Przytnij/oczyść części nadmiaru rusztowania po wydrukowaniu.
  4. Jeśli chcesz, możesz zastąpić drewniany kołek częścią wydrukowaną w 3D.

Krok 10: Montaż części

Montaż części
Montaż części

Jest kilka części do montażu stabilizatora. Zakupione wsporniki są dostarczane z 4 wkrętami samogwintującymi i 4 śrubami z nakrętkami. Ponieważ są 3 serwa, jeden z rogów serwomechanizmu musi być wstępnie nakręcony, aby umożliwić przejście 2 śrub.

  1. Przylutuj 8 pinów do złącza IMU, po 4 z każdej strony.
  2. IMU jest przymocowany do wydrukowanego w 3D uchwytu do GoPro w środku uchwytu.
  3. Ustaw wspornik tak, aby otwory montażowe serwomechanizmu znajdowały się po lewej stronie. Umieść IMU na najbliższej krawędzi, tak aby szpilki zwisały z krawędzi. Następnie umieść uchwyt GoPro na górze IMU, przyklejając IMU i uchwyt do wspornika.
  4. Podłącz HS-5485HB do wspornika serwomechanizmu, który jest zintegrowany z ramieniem wydrukowanym w 3D.
  5. Przykręć wspornik GoPro do serwomechanizmu przymocowanego do ramienia, upewniając się, że serwo jest ustawione tak, że znajduje się w środku zakresu ruchu.
  6. Następnie przymocuj serwo HS-5685MH do wspornika serwomechanizmu. Następnie uderz w klakson serwa jedną ze śrub. Teraz przymocuj serwo do dolnej części ostatniego wspornika serwa.
  7. Teraz przymocuj ostatnie serwo do wspornika, w który wkręca się serwo HS-5685MH. Następnie wkręć ramię w to serwo, upewniając się, że ramię jest przykręcone, aby mogło poruszać się o 90 stopni w każdą stronę.
  8. Aby zakończyć konstrukcję gimbala, dodaj mały kawałek drewnianego kołka, aby połączyć wspornik GoPro z wydrukowanym ramieniem 3D. Teraz zmontowałeś stabilizator.
  9. Na koniec możesz dodać uchwyt połączony z dolnym wspornikiem serwomechanizmu.

Krok 11: Podłączanie Zybo do stabilizatora

Podłączanie Zybo do stabilizatora
Podłączanie Zybo do stabilizatora

Jest kilka rzeczy, na które należy uważać, gdy to robisz. Chcesz mieć pewność, że 5V z zasilacza nigdy nie trafi do płyty Zybo, ponieważ doprowadziłoby to do problemów z płytą. Upewnij się, że dokładnie sprawdziłeś zworki, aby upewnić się, że żadne przewody nie są przełączane.

  1. Aby przymocować Zybo do stabilizatora, potrzebujesz 15 swetrów męskich do męskich i 4 męskich do żeńskich.
  2. Najpierw podłącz dwie zworki do zasilacza 5 V wzdłuż szyn + i - płytki stykowej. Będą one zasilać serwomechanizmy.
  3. Następnie podłącz 3 pary zworek do szyn + i - płytki stykowej. To będą moc dla każdego z serwomechanizmów.
  4. Podłącz drugi koniec zworek + i - do każdego z serw.
  5. Podłącz zworkę między szyną - płytki stykowej a jednym z pinów GND na Zybo JE Pmod (patrz rysunek Krok 5). Stworzy to wspólną płaszczyznę między płytą Zybo a zasilaczem.
  6. Następnie podłącz przewód sygnałowy do pinów 1, pin 2 i pin 3 JE Pmod. Przypnij 1 mapuje do dolnego serwomechanizmu, przypnij 2 mapy do serwomechanizmu na końcu ramienia, a przypnij 3 mapy do środkowego serwomechanizmu.
  7. Podłącz 4 żeńskie przewody do pinów GND, VDD, SDA i SCL złącza IMU. GND i VDD podłącz do GND i 3V3 na pinach JF. Podłącz pin SDA do pinu 8, a SCL do pinu 7 w JF (patrz rysunek w kroku 5).
  8. Na koniec podłącz komputer do płytki za pomocą kabla microUSB. Umożliwi to komunikację uart i pozwoli zaprogramować płytkę Zybo.

Krok 12: Korekta rzeczywistej północy

Korekta prawdziwej północy
Korekta prawdziwej północy

Kalibracja magnetometru w IMU jest ważna dla prawidłowego działania urządzenia. Deklinacja magnetyczna, która koryguje północ magnetyczną na północ rzeczywistą.

  1. Aby skorygować różnicę między magnetyczną a prawdziwą północą, musisz użyć kombinacji dwóch usług, Google Maps i kalkulatora pola magnetycznego NOAA.
  2. Skorzystaj z Map Google, aby znaleźć swoją szerokość i długość geograficzną swojej aktualnej lokalizacji.
  3. Weź swoją aktualną długość i szerokość geograficzną i podłącz ją do kalkulatora pola magnetycznego.
  4. Zwracana jest deklinacja magnetyczna. Podłącz to obliczenie do kodu w wierszu 378 pliku „iic_main_thread.c”. Jeśli twoja deklinacja jest na wschód, odejmij od wartości odchylenia, jeśli na zachód, dodaj do wartości odchylenia.

*zdjęcie pochodzi z przewodnika podłączania MPU 9250 firmy Sparkfun, który można znaleźć tutaj.

Krok 13: Uruchamianie programu

Uruchamianie programu
Uruchamianie programu

Moment, na który czekałeś! Najlepszą częścią projektu jest obserwowanie, jak działa. Jednym z problemów, które zauważyliśmy, jest odchylenie od wartości zgłaszanych przez IMU. Filtr dolnoprzepustowy może pomóc skorygować ten dryf, a majstrowanie przy kalibracji magnetometru, przyspieszenia i żyroskopu również pomoże skorygować ten dryf.

  1. Najpierw skompiluj wszystko w SDK, można to zrobić, naciskając Ctrl + B.
  2. Upewnij się, że zasilanie jest włączone i ustawione na 5V. Dokładnie sprawdź, czy wszystkie przewody idą we właściwe miejsca.
  3. Następnie, aby uruchomić program, naciśnij zielony trójkąt w górnej środkowej części paska zadań.
  4. Po uruchomieniu programu wszystkie serwa zostaną zresetowane do pozycji 0, więc przygotuj się na ruch platformy. Po zainicjowaniu programu serwa powrócą do swoich pozycji 90 stopni.
  5. Uruchomiona zostanie funkcja kalibracji magnetometru, a wskazówki zostaną wydrukowane do terminala UART, do którego można podłączyć monitor szeregowy, taki jak „putty” lub monitor szeregowy dostarczony w SDK.
  6. Kalibracja sprawi, że przesuniesz urządzenie w figurze 8 przez około 10 sekund. Możesz usunąć ten krok, komentując wiersz 273 z „iic_main_thread.c”. Jeśli to skomentujesz, musisz odkomentować linie 323 - 325 "iic_main_thread.c". Te wartości zostały początkowo zebrane z powyższej kalibracji magnetometru, a następnie wprowadzone jako wartości.
  7. Po kalibracji kod stabilizacji zostanie zainicjowany, a urządzenie utrzyma stabilną kamerę.

Zalecana: