Spisu treści:
- Krok 1: Konfiguracja sprzętu Vivado
- Krok 2: Konfiguracja projektu blokowego
- Krok 3: Utwórz niestandardowy blok IP PWM
- Krok 4: Dodaj blok IP PWM do projektu
- Krok 5: Skonfiguruj opakowanie HDL i skonfiguruj plik ograniczeń
- Krok 6: Generowanie strumienia bitów
- Krok 7: Konfiguracja projektu w SDK
- Krok 8: Modyfikacje kodu FreeRTOS
- Krok 9: Drukowanie 3D dla stabilizatora
- Krok 10: Montaż części
- Krok 11: Podłączanie Zybo do stabilizatora
- Krok 12: Korekta rzeczywistej północy
- Krok 13: Uruchamianie programu
Wideo: Ręczny stabilizator aparatu: 13 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
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
Zacznijmy od stworzenia podstawowego projektu bloku dla projektu.
- Otwórz Vivado 2016.2, kliknij ikonę „Utwórz nowy projekt” i kliknij „Dalej>”.
- Nazwij swój projekt i kliknij „Dalej >”.
- Wybierz projekt RTL i naciśnij „Dalej >”.
- 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.
- W panelu po lewej stronie, pod IP Integrator, kliknij "Utwórz projekt blokowy", a następnie kliknij "OK".
- Kliknij prawym przyciskiem myszy w zakładce "Diagram" i wybierz "Dodaj IP…".
- Wpisz „ZYNQ7 Processing System” i kliknij wybór.
- Kliknij dwukrotnie wyświetlony blok Zynq.
- Kliknij „Importuj ustawienia XPS” i zaimportuj dostarczony plik „ZYBO_zynq_def.xml”.
- Przejdź do „Konfiguracja MIO” i wybierz „Jednostka procesora aplikacji” i włącz zegary Timer 0 i Watchdog.
- 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.
- W sekcji „GPIO” sprawdź GPIO MIO, ENET Reset, USB Reset i I2C Reset.
- 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.
- Teraz na karcie Narzędzia w lewym górnym rogu kliknij „Utwórz i spakuj adres IP…” i naciśnij Dalej.
- Następnie wybierz „Utwórz nowe urządzenie peryferyjne AXI4” i naciśnij Dalej.
- 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.
- Teraz kliknij „Edytuj IP” i naciśnij Zakończ. Spowoduje to otwarcie nowego okna do edycji bloku pwm.
- 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.
- 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.
- 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ą.
- Teraz przejdź do zakładki „IP pakietu – nazwa” i wybierz „Parametry dostosowywania”.
- Na tej karcie u góry będzie żółty pasek z połączonym tekstem. Wybierz to, a w polu pojawi się „Ukryte parametry”.
- Teraz przejdź do „Customization GUI” i kliknij prawym przyciskiem myszy na Pwm Counter Max i wybierz „Edit Parameter…”.
- Zaznacz pola „Widoczne w GUI dostosowywania” i „Określ zakres”.
- 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.
- 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
Dodamy blok IP do projektu bloku, aby umożliwić użytkownikowi dostęp do bloku IP PWM przez procesor.
- Kliknij prawym przyciskiem myszy na karcie diagramu i kliknij „Ustawienia IP…”. Przejdź do zakładki „Menedżer repozytorium”.
- 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.
- Kliknij prawym przyciskiem myszy na karcie diagramu i kliknij „Dodaj IP…”. Wpisz nazwę bloku IP PWM i wybierz go.
- 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.
- Kliknij dwukrotnie blok PWM i zmień Pwm Counter Max na 1024 z 128.
- 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ł.
- Powtórz krok 6 również dla PWM1 i PWM2.
- 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ń
Teraz wygenerujemy projekt wysokiego poziomu dla naszego projektu blokowego, a następnie zmapujemy PWM0, PWM1 i PWM2 na piny Pmod na płycie Zybo.
- 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.
- Pmod, do którego będziemy wyprowadzać, to JE.
- W obszarze Plik wybierz „Dodaj źródła…” i wybierz „Dodaj lub utwórz ograniczenia” i kliknij Dalej.
- 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.
- 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.
- Popraw wszystkie wyskakujące błędy, ale ostrzeżenia można zignorować.
- 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.
- Zacznij od pobrania najnowszej wersji FreeRTOS tutaj.
- 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.
- Przejdź do „FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702” w folderze FreeRTOS. Importuj tylko "RTOSDemo" z tej lokalizacji.
- Teraz wygeneruj pakiet wsparcia płyty (BSP), klikając Plik->Nowy pakiet wsparcia płyty.
- Wybierz „ps7_cortexa9_0” i zaznacz „lwip141” i kliknij OK.
- Kliknij prawym przyciskiem myszy na niebieski folder RTOSDemo i wybierz „Referencje do projektów”.
- 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ć.
- Najłatwiejszym sposobem modyfikacji pliku main.c jest zastąpienie kodu skopiowanym kodem z dołączonego pliku main.c.
- Aby utworzyć nowy plik, kliknij prawym przyciskiem myszy folder src pod RTOSDemo i wybierz C Source File. Nazwij ten plik „iic_main_thread.c”.
- Skopiuj kod z dołączonego „iic_main_thread.c” i wklej go do nowo utworzonego pliku.
- Powtórz kroki 2 i 3 z pozostałymi plikami.
- wymaga instrukcji łączenia w gcc. Aby dodać to do ścieżki kompilacji, kliknij prawym przyciskiem myszy RTOSDemo i wybierz "Ustawienia kompilacji C/C++".
- 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.
- Zbuduj projekt za pomocą Ctrl + B, aby potwierdzić, że wszystko działa. Sprawdź ostrzeżenia, które są generowane, ale możesz je zignorować.
- 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
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.
- Użyj dostarczonych plików, aby wydrukować ramię i uchwyt do GoPro.
- Musisz dodać rusztowanie do pliku.stl.
- Przytnij/oczyść części nadmiaru rusztowania po wydrukowaniu.
- Jeśli chcesz, możesz zastąpić drewniany kołek częścią wydrukowaną w 3D.
Krok 10: 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.
- Przylutuj 8 pinów do złącza IMU, po 4 z każdej strony.
- IMU jest przymocowany do wydrukowanego w 3D uchwytu do GoPro w środku uchwytu.
- 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.
- Podłącz HS-5485HB do wspornika serwomechanizmu, który jest zintegrowany z ramieniem wydrukowanym w 3D.
- Przykręć wspornik GoPro do serwomechanizmu przymocowanego do ramienia, upewniając się, że serwo jest ustawione tak, że znajduje się w środku zakresu ruchu.
- 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.
- 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ę.
- 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.
- Na koniec możesz dodać uchwyt połączony z dolnym wspornikiem serwomechanizmu.
Krok 11: 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.
- Aby przymocować Zybo do stabilizatora, potrzebujesz 15 swetrów męskich do męskich i 4 męskich do żeńskich.
- Najpierw podłącz dwie zworki do zasilacza 5 V wzdłuż szyn + i - płytki stykowej. Będą one zasilać serwomechanizmy.
- Następnie podłącz 3 pary zworek do szyn + i - płytki stykowej. To będą moc dla każdego z serwomechanizmów.
- Podłącz drugi koniec zworek + i - do każdego z serw.
- 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.
- 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.
- 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).
- 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
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ą.
- 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.
- Skorzystaj z Map Google, aby znaleźć swoją szerokość i długość geograficzną swojej aktualnej lokalizacji.
- Weź swoją aktualną długość i szerokość geograficzną i podłącz ją do kalkulatora pola magnetycznego.
- 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
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.
- Najpierw skompiluj wszystko w SDK, można to zrobić, naciskając Ctrl + B.
- Upewnij się, że zasilanie jest włączone i ustawione na 5V. Dokładnie sprawdź, czy wszystkie przewody idą we właściwe miejsca.
- Następnie, aby uruchomić program, naciśnij zielony trójkąt w górnej środkowej części paska zadań.
- 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.
- 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.
- 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.
- Po kalibracji kod stabilizacji zostanie zainicjowany, a urządzenie utrzyma stabilną kamerę.
Zalecana:
Ręczny komputer BASIC: 6 kroków (ze zdjęciami)
Ręczny komputer BASIC: Ten Instruktaż opisuje mój proces budowania małego podręcznego komputera z systemem BASIC. Komputer jest zbudowany wokół układu ATmega 1284P AVR, który również zainspirował głupią nazwę komputera (HAL 1284). Ta kompilacja jest BARDZO inspirowana
SKARA- Autonomous Plus Ręczny robot do czyszczenia basenu: 17 kroków (ze zdjęciami)
SKARA- Autonomous Plus Ręczny robot do czyszczenia basenu: Czas to pieniądz, a praca ręczna jest kosztowna. Wraz z nadejściem i postępem w technologiach automatyki należy opracować bezproblemowe rozwiązanie dla właścicieli domów, stowarzyszeń i klubów, aby oczyścić baseny z gruzu i brudu codziennego życia, a
Stabilizator aparatu Arduino DIY: 4 kroki (ze zdjęciami)
Arduino Camera Stabilizer DIY: Zrobiłem stabilizator kamery za pomocą arduino do szkolnego projektu. Będziesz potrzebował: 1x Arduino Uno3x Servo motor1x Żyroskop MP60502x Button1x Potencjometr1x Breadboard (1x Zewnętrzny zasilacz)
Wysuwany ręczny gimbal dla GoPro/SJ4000/Xiaomi Yi/iLook: 9 kroków (ze zdjęciami)
Wysuwany ręczny gimbal do GoPro/SJ4000/Xiaomi Yi/iLook: Ten samouczek pokaże Ci, jak zhakować kij do selfie i gimbal 2D, aby stworzyć wysuwany ręczny gimbal, który może montować kamery takie jak GoPro SJ4000/5000/6000 Xiaomi Yi Walkera iLook. Gimbal to mechanizm stabilizacji, który rem
Stabilizator aparatu dla ENV2 lub innych telefonów z aparatem: 6 kroków
Stabilizator aparatu dla ENV2 lub innych telefonów z aparatem: Czy kiedykolwiek chciałeś nagrać wideo, ale masz tylko telefon z aparatem? Czy kiedykolwiek nagrywałeś wideo telefonem z aparatem, ale nie możesz go zatrzymać? Cóż, niż to jest pouczające dla ciebie