Innholdsfortegnelse:

Quadcopter som bruker Zybo Zynq-7000 Board: 5 trinn
Quadcopter som bruker Zybo Zynq-7000 Board: 5 trinn

Video: Quadcopter som bruker Zybo Zynq-7000 Board: 5 trinn

Video: Quadcopter som bruker Zybo Zynq-7000 Board: 5 trinn
Video: Эта Находка Вызвала Шок у Археологов во Всём Мире 2024, November
Anonim
Quadcopter som bruker Zybo Zynq-7000 Board
Quadcopter som bruker Zybo Zynq-7000 Board

Før vi begynner, er det noen ting du vil ha for prosjektet: Deleliste1x Digilent Zybo Zynq-7000 board 1x Quadcopter Frame som kan monteres Zybo (Adobe Illustrator-fil for laserskjæring vedlagt) 4x Turnigy D3530/14 1100KV børsteløse motorer 4x Turnigy ESC Basic -18A Speed Controller 4x Propeller (disse må være store nok til å løfte quadcopter) 2x nRF24L01+ transceiver 1x IMU BNO055Software KravXilinx Vivado 2016.2 MERK: Motorene ovenfor er ikke de eneste motorene som kan brukes. Det er bare de som brukes i dette prosjektet. Det samme gjelder resten av delene og programvarekravene. Forhåpentligvis er det en uuttalt forståelse når du leser denne instruksjonsboken.

Trinn 1: Få PWM -modulen i gang

Programmer en enkel SystemVerilog (eller et annet HDL -program) for å registrere HI -gass og LO -gass ved hjelp av inngangsbrytere. Fest PWM med en enkelt ESC og Turnigy børsteløs motor. Kontroller følgende filer for å finne ut hvordan du kalibrerer ESC. Den endelige koden er vedlagt i trinn 5 for PWM -modulen. En PWM -starter er vedlagt i dette trinnet ESC -datablad: Turnigy ESC -datablad PDF (ting du må ta hensyn til er de forskjellige modusene du kan velge ved hjelp av HI- og LO -gass)

Trinn 2: Sett opp blokkdesign

Opprett blokkdesign Dobbeltklikk på den nylig genererte blokken Importer XPS-innstillinger lastet ned her: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Endre innstillinger PS-PL-konfigurasjon M AXI GP0-grensesnitt Perifer I/ O Pins Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Konfigurasjonstidsur 0 WatchdogClock Configuration FCLK_CLK0 og sett frekvensen til 100 MHz Gjør I2C og SPI ekstern Koble FCLK_CLK0 til M_AXI_GP0_ACLK Kjør blokkering Opprett g.

Trinn 3: Kalibrer IMU

Kalibrer IMU
Kalibrer IMU

BNO055 -transceiveren bruker I2C -kommunikasjon. (Nybegynner foreslått lesing: https://learn.sparkfun.com/tutorials/i2c) Sjåføren for å kjøre IMU ligger her: https://github.com/BoschSensortec/BNO055_driver Et quadcopter krever ikke bruk av magnetometeret fra BNO055. På grunn av dette er nødvendig driftsmodus IMU -modus. Dette endres ved å skrive et binært tall xxxx1000 til OPR_MODE -registeret, der 'x' er et 'ikke bryr seg'. Sett disse bitene til 0.

Trinn 4: Integrer den trådløse mottakeren

Integrer den trådløse senderen
Integrer den trådløse senderen
Integrer den trådløse senderen
Integrer den trådløse senderen

Den trådløse senderen mottar SPI -kommunikasjon. Vedlagt er spesifikasjonsarket for nRF24L01+ En god opplæring om nrf24l01+ men med arduino:

Trinn 5: Programmer Zybo FPGA

Oversikt Disse modulene er de siste modulene som brukes for kontroll av quadcopter's PWM. motor_ctl_wrapper.sv Formål: Pakningen tar inn Euler -vinkler og en gassprosent. Den sender ut en kompensert PWM som lar quadcopter stabilisere seg. Denne blokken eksisterer, fordi quadcopters er utsatt for forstyrrelser i luften og krever en slags stabilisering. Vi bruker Euler-vinkler, ettersom vi ikke planlegger å snu eller tunge vinkler som kan forårsake Gimbal Lock. Inndata: 25-biters buss med data CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euler Y, [7: 0] Gassprosent}, Klokke (clk), Synkron CLR (sclr) Utgang: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Gassprosent PWM Gassprosenten PWM er brukes til å initialisere ESC, som vil ha et rent 30% - 70% PWM -område, ikke det fra motor 1-4 PWM -verdier. avansert - Vivado Zynq IP -blokker: 8 tillegg (LUT) 3 trekk (LUT) 5 Multiplikatorer (Block Memory (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Formål: Kontroller maskinvaren, inkludert MUX, PWM -utgang og sclr for motor_ctl_wrapper. Enhver Finite State Machine (FSM) brukes for en ting: kontroll annen maskinvare. Enhver stor avvik fra dette målet kan føre til at den antatte FSM tar form av en annen type modul (teller, adder, etc.). Pwm_fsm har 3 tilstander: INIT, CLR og FLYINIT: La brukeren programmere ESC som ønsket. Sender et utvalgssignal til mux_pwm som sender rett PWM til alle motorer. Går tilbake til seg selv til GO == '1'. CLR: Slett data i motor_ctl_wrapper og pwm out -modulen. FLY: Sløyfe for alltid for å stabilisere quadcopter (med mindre vi blir tilbakestilt). Sender den kompenserte PWM gjennom mux_pwm. Input: GO, RESET, clkOutput: RST for andre moduler tilbakestilles, FullFlight for å signalisere FLY -modus, Periode for å kjøre atmux_pwm.sv Formål: Input: Output: PWM for alle 4 motorspwm.sv Formål: Input: Output:

Anbefalt: