Spisu treści:

Quadkopter przy użyciu płyty Zybo Zynq-7000: 5 kroków
Quadkopter przy użyciu płyty Zybo Zynq-7000: 5 kroków

Wideo: Quadkopter przy użyciu płyty Zybo Zynq-7000: 5 kroków

Wideo: Quadkopter przy użyciu płyty Zybo Zynq-7000: 5 kroków
Wideo: Odlewanie płyty na drona z tkaniny rowingowej à la carbon /Casting of the to drone plate à la carbon 2024, Lipiec
Anonim
Quadkopter przy użyciu płyty Zybo Zynq-7000
Quadkopter przy użyciu płyty Zybo Zynq-7000

Zanim zaczniemy, oto kilka rzeczy, które chcesz do projektu: Lista części 1x płyta Digilent Zybo Zynq-7000 1x rama Quadcoptera z możliwością zamontowania Zybo (załączony plik Adobe Illustrator do cięcia laserowego) 4x silniki bezszczotkowe Turnigy D3530/14 1100KV 4x Turnigy ESC Basic -18A Kontroler prędkości 4x śmigła (muszą być wystarczająco duże, aby podnieść quadkopter) 2x transceiver nRF24L01+ 1x IMU BNO055Wymagania programoweXilinx Vivado 2016.2UWAGA: Powyższe silniki nie są jedynymi silnikami, których można użyć. To tylko te, które wykorzystano w tym projekcie. To samo dotyczy pozostałych części i wymagań oprogramowania. Mam nadzieję, że jest to niewypowiedziane zrozumienie podczas czytania tego Instruktażu.

Krok 1: Uruchom moduł PWM

Zaprogramuj prosty SystemVerilog (lub inny program HDL), aby zarejestrować przepustnicę HI i LO za pomocą przełączników wejściowych. Podłącz PWM do pojedynczego ESC i bezszczotkowego silnika Turnigy. Sprawdź poniższe pliki, aby dowiedzieć się, jak skalibrować ESC. Ostateczny kod dołączony jest w kroku 5 dla modułu PWM. Rozrusznik PWM jest dołączony w tym krokuArkusz danych ESC: Arkusz danych Turnigy ESC PDF (Należy zwrócić uwagę na różne tryby, które można wybrać za pomocą przepustnicy HI i LO)

Krok 2: Skonfiguruj projekt bloku

Utwórz projekt bloku Kliknij dwukrotnie nowo wygenerowany blok Importuj ustawienia XPS pobrane tutaj: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Zmień ustawienia Konfiguracja PS-PL Interfejs M AXI GP0 Peryferia I/ O Piny Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Configuration Timer 0 WatchdogClock Configuration FCLK_CLK0 i ustaw częstotliwość na 100 MHz Zrób zewnętrzne I2C i SPI Podłącz FCLK_CLK0 do M_AXI_GP0_ACLK Uruchom automatyzację bloku Utwórz port i nazwij go "gnd"

Krok 3: Kalibracja IMU

Skalibruj IMU
Skalibruj IMU

Transceiver BNO055 wykorzystuje komunikację I2C. (Sugerowana lektura dla początkujących: https://learn.sparkfun.com/tutorials/i2c)Sterownik do uruchomienia IMU znajduje się tutaj: https://github.com/BoschSensortec/BNO055_driverA quadkopter nie wymaga użycia magnetometru z BNO055. Z tego powodu niezbędnym trybem pracy jest tryb IMU. Zmienia się to poprzez zapisanie liczby binarnej xxxx1000 do rejestru OPR_MODE, gdzie 'x' to 'nie obchodzi'. Ustaw te bity na 0.

Krok 4: Zintegruj bezprzewodowe urządzenie nadawczo-odbiorcze

Zintegruj bezprzewodowy nadajnik-odbiornik
Zintegruj bezprzewodowy nadajnik-odbiornik
Zintegruj bezprzewodowy nadajnik-odbiornik
Zintegruj bezprzewodowy nadajnik-odbiornik

Bezprzewodowy nadajnik-odbiornik wykorzystuje komunikację SPI. W załączniku znajduje się specyfikacja nRF24L01+Dobry samouczek dotyczący nrf24l01+, ale z arduino:

Krok 5: Zaprogramuj Zybo FPGA

PrzeglądModuły te są ostatnimi modułami używanymi do sterowania PWM quadkoptera. motor_ctl_wrapper.svPurpose: Opakowanie przyjmuje kąty Eulera i procent przepustnicy. Wyprowadza skompensowany PWM, który pozwoli na stabilizację quadkoptera. Ta blokada istnieje, ponieważ quadkoptery są podatne na zakłócenia w powietrzu i wymagają pewnego rodzaju stabilizacji. Używamy kątów Eulera, ponieważ nie planujemy przewrotów lub dużych kątów, które mogą powodować blokadę gimbala. Wejście: 25-bitowa szyna danych CTL_IN = { [24] GO, [23:16] Euler X, [15: 8] Euler Y, [7:0] Procent przepustnicy }, Zegar (clk), Synchroniczne CLR (sclr) Wyjście: PWM silnika 1, PWM silnika 2, PWM silnika 3, PWM silnika 4, procent PWM przepustnicy Procent PWM przepustnicy wynosi służy do inicjalizacji ESC, która będzie potrzebować czystego zakresu 30% - 70% PWM, a nie tego z wartości PWM silnika 1-4. Zaawansowane - Bloki IP Vivado Zynq: 8 Dodaje (LUT) 3 Odejmij (LUT) 5 Mnożniki (pamięć bloku (BRAM))clock_div.sv (AKA pwm_fsm.sv) Cel: Kontrola sprzętu, w tym wyjścia MUX, PWM i sclr dla motor_ctl_wrapper. Każda maszyna skończona (FSM) służy do jednego: sterowania innym sprzętem. Każde duże odchylenie od tego celu może spowodować, że domniemany FSM przyjmie postać modułu innego typu (licznik, sumator itp.). pwm_fsm ma 3 stany: INIT, CLR i FLYINIT: Pozwala użytkownikowi zaprogramować ESC jako pożądany. Wysyła sygnał wyboru do mux_pwm, który wysyła prosty PWM do wszystkich silników. Zapętla się do siebie aż do GO == '1'. CLR: Wyczyść dane w motor_ctl_wrapper i module pwm out. FLY: Zapętl na zawsze w celu ustabilizowania quadkoptera (chyba że zostaniemy zresetowani). Wysyła skompensowany PWM przez mux_pwm. Input: GO, RESET, clkOutput: RST dla innych resetów modułu, FullFlight, aby zasygnalizować tryb FLY, Okres do uruchomienia atmux_pwm.svPurpose:Input:Output: PWM dla wszystkich 4 motorspwm.svPurpose:Input:Output:

Zalecana: