Indholdsfortegnelse:

Quadcopter Brug af Zybo Zynq-7000 Board: 5 trin
Quadcopter Brug af Zybo Zynq-7000 Board: 5 trin

Video: Quadcopter Brug af Zybo Zynq-7000 Board: 5 trin

Video: Quadcopter Brug af Zybo Zynq-7000 Board: 5 trin
Video: Раффаэлло Д'Андреа: Восхитительный атлетизм квадролётов 2024, Juli
Anonim
Quadcopter ved hjælp af Zybo Zynq-7000 Board
Quadcopter ved hjælp af Zybo Zynq-7000 Board

Inden vi går i gang, er der nogle ting, du vil have til projektet: Deleliste 1x Digilent Zybo Zynq-7000 board 1x Quadcopter Frame, der kan monteres Zybo (Adobe Illustrator-fil til laserskæring vedhæftet) 4x Turnigy D3530/14 1100KV børsteløse motorer 4x Turnigy ESC Basic -18A Speed Controller 4x Propeller (disse skal være store nok til at løfte din quadcopter) 2x nRF24L01+ transceiver 1x IMU BNO055SoftwarekravXilinx Vivado 2016.2BEMÆRK: Motorerne ovenfor er ikke de eneste motorer, der kan bruges. Det er kun dem, der bruges i dette projekt. Det samme gælder for resten af delene og softwarekravene. Forhåbentlig er det en uudtalt forståelse, når man læser denne Instructable.

Trin 1: Få PWM -modulet til at køre

Programmer en simpel SystemVerilog (eller et andet HDL -program) til at registrere HI -gas og LO -gas ved hjælp af inputkontakter. Tilslut PWM med en enkelt ESC og Turnigy børsteløs motor. Kontroller følgende filer for at finde ud af, hvordan du kalibrerer ESC. Den endelige kode er vedhæftet i trin 5 til PWM -modulet. En PWM -starter er vedhæftet i dette trin ESC -datablad: Turnigy ESC -datablad PDF (ting at være opmærksom på er de forskellige tilstande, du kan vælge ved hjælp af HI- og LO -gas)

Trin 2: Konfigurer blokdesignet

Opret blokdesign Dobbeltklik på den nyoprettede blok Importer XPS-indstillinger downloadet her: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Rediger indstillinger PS-PL-konfiguration M AXI GP0 interface Perifer I/ O Pins Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Konfigurationstimer 0 WatchdogClock Configuration FCLK_CLK0 og indstil frekvens til 100 MHz Lav I2C og SPI ekstern Tilslut FCLK_CLK0 til M_AXI_GP0_ACLK Kør blokeringsoprett "og gendan" opret g "Opret" gendan "og opret" gendan "og opret gendannelse" gendan "og gend"

Trin 3: Kalibrer IMU

Kalibrer IMU
Kalibrer IMU

BNO055 -transceiveren bruger I2C -kommunikation. (Begynderforslag: https://learn.sparkfun.com/tutorials/i2c) Driveren til at køre IMU er placeret her: https://github.com/BoschSensortec/BNO055_driver En quadcopter kræver ikke brug af magnetometeret fra BNO055. På grund af dette er den nødvendige driftstilstand IMU -tilstand. Dette ændres ved at skrive et binært tal xxxx1000 til OPR_MODE -registret, hvor 'x' er et 'ligeglad'. Indstil disse bits til 0.

Trin 4: Integrer den trådløse transceiver

Integrer den trådløse transceiver
Integrer den trådløse transceiver
Integrer den trådløse transceiver
Integrer den trådløse transceiver

Den trådløse transceiver bruger SPI -kommunikation. Vedhæftet er specifikationsarket til nRF24L01+ En god vejledning om nrf24l01+ men med arduino:

Trin 5: Programmer Zybo FPGA

Oversigt Disse moduler er de sidste moduler, der bruges til styring af quadcopterens PWM. motor_ctl_wrapper.sv Formål: Indpakningen optager Euler -vinkler og en gasprocent. Det udsender et kompenseret PWM, der gør det muligt for quadcopteren at stabilisere sig. Denne blok eksisterer, fordi quadcopters er tilbøjelige til forstyrrelser i luften og kræver en form for stabilisering. Vi bruger Euler-vinkler, da vi ikke planlægger at vende eller tunge vinkler, som kan forårsage Gimbal Lock. Input: 25-bit bus med data CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euler Y, [7: 0] Gassprocent}, Ur (clk), Synkron CLR (sclr) Output: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Gasprocent PWM Gasprocenten PWM er bruges til at initialisere ESC, som vil have et rent 30% - 70% PWM -område, ikke det fra motor 1-4 PWM -værdier Avanceret - Vivado Zynq IP -blokke: 8 Tilføjelser (LUT'er) 3 Subtraktioner (LUT'er) 5 Multiplikatorer (Block Memory (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Formål: Styr hardwaren, herunder MUX, PWM output og sclr for motor_ctl_wrapper. Enhver Finite State Machine (FSM) bruges til én ting: Styr anden hardware. Enhver stor afvigelse fra dette mål kan få den formodede FSM til at tage form af en anden type modul (tæller, adder osv.). Pwm_fsm har 3 tilstande: INIT, CLR og FLYINIT: Tillad brugeren at programmere ESC som ønsket. Sender et udvalgssignal til mux_pwm, der udsender lige PWM til alle motorer. Sløjfer tilbage til sig selv, indtil GO == '1'. CLR: Ryd data i motor_ctl_wrapper og pwm out -modulet. FLY: Loop for evigt for at stabilisere quadcopteren (medmindre vi nulstilles). Sender den kompenserede PWM gennem mux_pwm. Input: GO, RESET, clkOutput: RST for andre modul nulstilles, FullFlight for at signalere FLY -tilstand, Periode til at køre atmux_pwm.sv Formål: Input: Output: PWM for alle 4 motorspwm.sv Formål: Input: Output:

Anbefalede: