Turinys:

Keturkopteris naudojant „Zybo Zynq-7000“plokštę: 5 žingsniai
Keturkopteris naudojant „Zybo Zynq-7000“plokštę: 5 žingsniai

Video: Keturkopteris naudojant „Zybo Zynq-7000“plokštę: 5 žingsniai

Video: Keturkopteris naudojant „Zybo Zynq-7000“plokštę: 5 žingsniai
Video: How to Share Audio on Zoom 2024, Lapkritis
Anonim
Keturkopteris naudojant „Zybo Zynq-7000“plokštę
Keturkopteris naudojant „Zybo Zynq-7000“plokštę

Prieš pradėdami, štai keli dalykai, kurių norite projektui: Dalių sąrašas 1x „Digilent Zybo Zynq-7000“plokštė 1x „Quybocopter“rėmas, galintis pritvirtinti „Zybo“(pridedamas „Adobe Illustrator“failas lazeriniam pjovimui) 4x „Turnigy D3530/14 1100KV Brushless Motors 4x Turnigy ESC Basic“-18A greičio reguliatorius 4x sraigtai (jie turi būti pakankamai dideli, kad pakeltų jūsų keturkojį) 2x nRF24L01+ siųstuvas -imtuvas 1x IMU BNO055 Programinės įrangos reikalavimai Xilinx Vivado 2016.2 PASTABA: Aukščiau pateikti varikliai nėra vieninteliai varikliai, kuriuos galima naudoti. Jie yra tik tie, kurie naudojami šiame projekte. Tas pats pasakytina apie likusias dalis ir programinės įrangos reikalavimus. Tikimės, kad tai yra neišsakytas supratimas skaitant šią instrukciją.

1 veiksmas: paleiskite PWM modulį

Užprogramuokite paprastą „SystemVerilog“(arba kitą HDL programą), kad įvesties jungikliais užregistruotumėte HI ir LO droselius. Sujunkite PWM su vienu ESC ir „Turnigy Brushless“varikliu. Patikrinkite šiuos failus, kad sužinotumėte, kaip sukalibruoti ESC. PWM modulio 5 veiksme pridedamas galutinis kodas. Šiame žingsnyje pridedamas PWM starteris ESC duomenų lapas: Turnigy ESC duomenų lapas PDF (Į ką reikia atkreipti dėmesį, yra skirtingi režimai, kuriuos galite pasirinkti naudodami HI ir LO droselius)

2 veiksmas: nustatykite bloko dizainą

Sukurti bloko dizainą Dukart spustelėkite naujai sukurtą bloką Importuoti XPS nustatymus, atsisiųstus čia: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Nustatymų keitimas PS-PL konfigūracija M AXI GP0 sąsaja Periferinis I/ O kaiščiai „Ethernet“0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO konfigūracijos laikmatis 0 „WatchdogClock“konfigūracija FCLK_CLK0 ir nustatykite 100 MHz dažnį

3 žingsnis: kalibruokite IMU

Kalibruokite IMU
Kalibruokite IMU

BNO055 siųstuvas -imtuvas naudoja I2C ryšį. (Siūlomas pradedančiųjų skaitymas: https://learn.sparkfun.com/tutorials/i2c) IMU paleidimo tvarkyklė yra čia: https://github.com/BoschSensortec/BNO055_driver Keturkopteriui nereikia naudoti magnetometro iš BNO055. Dėl šios priežasties būtinas darbo režimas yra IMU režimas. Tai pakeičiama įrašant dvejetainį skaičių xxxx1000 į OPR_MODE registrą, kur „x“yra „nesvarbu“. Nustatykite tuos bitus į 0.

4 žingsnis: integruokite belaidį siųstuvą -imtuvą

Integruokite belaidį siųstuvą -imtuvą
Integruokite belaidį siųstuvą -imtuvą
Integruokite belaidį siųstuvą -imtuvą
Integruokite belaidį siųstuvą -imtuvą

Belaidis siųstuvas -imtuvas naudoja SPI ryšį. Pridedamas „nRF24L01+“specifikacijų lapas. Gera pamoka apie nrf24l01+, bet su arduino:

5 veiksmas: užprogramuokite „Zybo FPGA“

Šie moduliai yra paskutiniai moduliai, naudojami keturkojo PWM valdymui. motor_ctl_wrapper.sv Tikslas: Apvyniojimas apima Eulerio kampus ir droselio procentą. Jis išleidžia kompensuotą PWM, kuris leis keturkojui stabilizuotis. Šis blokas egzistuoja, nes kvadrokopteriai yra linkę į oro sutrikimus ir reikalauja tam tikro stabilizavimo. Mes naudojame „Euler“kampus, nes neplanuojame apversti ar didelių kampų, kurie gali sukelti „Gimbal Lock“. Įvestis: 25 bitų duomenų magistralė CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euleris Y, [7: 0] droselio procentas}, laikrodis (clk), sinchroninis CLR (sclr) išėjimas: 1 variklis PWM, 2 variklis PWM, 3 variklis PWM, 4 variklis variklis, droselio procentas PWM Droselio procentas PWM naudojamas ESC inicijavimui, kuris norės gryno 30–70% PWM diapazono, o ne to, kuris yra iš variklio 1–4 PWM verčių. Išplėstiniai - „Vivado Zynq“IP blokai: 8 pridėjimai (LUT) 3 atimtys (LUT) 5 Daugikliai (blokinė atmintis (BRAM)) clock_div.sv (dar žinomas kaip pwm_fsm.sv) Tikslas: valdykite aparatinę įrangą, įskaitant MUX, PWM išvestį ir motor_ctl_wrapper „sclr“. Bet kuri baigtinės būsenos mašina (FSM) naudojama vienam dalykui: valdyti kitą aparatūrą. Bet koks didelis nukrypimas nuo šio tikslo gali sukelti tariamą FSM kitokio tipo modulio (skaitiklio, sumavimo ir kt.) Formą. Pwm_fsm turi 3 būsenas: INIT, CLR ir FLYINIT: leiskite vartotojui užprogramuoti ESC kaip norima. Siunčia pasirinktą signalą mux_pwm, kuris visiems varikliams perduoda tiesioginį PWM. Kilpos atgal į save, kol GO == '1'. CLR: Išvalykite duomenis motor_ctl_wrapper ir pwm out modulyje. FLY: Visą laiką kartokite, kad stabilizuotumėte keturkojį (nebent būsime atstatyti). Siunčia kompensuotą PWM per mux_pwm. Įvestis: GO, RESET, clk:

Rekomenduojamas: