Inhoudsopgave:

Quadcopter Zybo Zynq-7000 Board gebruiken - Ajarnpa
Quadcopter Zybo Zynq-7000 Board gebruiken - Ajarnpa

Video: Quadcopter Zybo Zynq-7000 Board gebruiken - Ajarnpa

Video: Quadcopter Zybo Zynq-7000 Board gebruiken - Ajarnpa
Video: Zybo Zynq-7000 DMA Audio Project Demo 2024, Juli-
Anonim
Quadcopter met Zybo Zynq-7000-kaart
Quadcopter met Zybo Zynq-7000-kaart

Voordat we aan de slag gaan, zijn hier enkele dingen die u voor het project wilt: Onderdelenlijst 1x Digilent Zybo Zynq-7000 bord 1x Quadcopter Frame dat Zybo kan monteren (Adobe Illustrator-bestand voor lasersnijden bijgevoegd) 4x Turnigy D3530/14 1100KV borstelloze motoren 4x Turnigy ESC Basic -18A Snelheidsregelaar 4x Propellers (deze moeten groot genoeg zijn om uw quadcopter op te tillen) 2x nRF24L01+ transceiver 1x IMU BNO055SoftwarevereistenXilinx Vivado 2016.2OPMERKING: De bovenstaande motoren zijn niet de enige motoren die kunnen worden gebruikt. Dit zijn alleen degenen die in dit project worden gebruikt. Hetzelfde geldt voor de rest van de onderdelen en softwarevereisten. Hopelijk is dat een onuitgesproken begrip bij het lezen van deze Instructable.

Stap 1: Laat de PWM-module draaien

Programmeer een eenvoudig SystemVerilog (of ander HDL-programma) om HI-throttle en LO-throttle te registreren met behulp van invoerschakelaars. Haak de PWM met een enkele ESC en Turnigy Brushless Motor. Controleer de volgende bestanden om erachter te komen hoe u de ESC kunt kalibreren. De definitieve code is bijgevoegd in stap 5 voor de PWM-module. Een PWM-starter is bijgevoegd in deze stepESC-gegevensblad: Turnigy ESC-gegevensblad PDF (Dingen om op te letten zijn de verschillende modi die u kunt selecteren met behulp van HI en LO-throttle)

Stap 2: Stel het blokontwerp in

Create Block Design Dubbelklik op het nieuw gegenereerde blok Importeer XPS-instellingen die hier zijn gedownload: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Instellingen wijzigen PS-PL Configuratie M AXI GP0-interface Peripheral I/ O Pins Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Configuratie Timer 0 WatchdogClock Configuratie FCLK_CLK0 en stel de frequentie in op 100 MHzMaak I2C en SPI extern Sluit FCLK_CLK0 aan op M_AXI_GP0_ACLK Voer blokautomatisering uit Create Port en noem het "gnd"

Stap 3: Kalibreer de IMU

Kalibreer de IMU
Kalibreer de IMU

De BNO055 transceiver maakt gebruik van I2C-communicatie. (Aanbevolen lectuur voor beginners: https://learn.sparkfun.com/tutorials/i2c) Het stuurprogramma om de IMU uit te voeren bevindt zich hier: https://github.com/BoschSensortec/BNO055_driver Een quadcopter vereist geen gebruik van de magnetometer van de BNO055. Daarom is de benodigde bedrijfsmodus de IMU-modus. Dit wordt gewijzigd door een binair getal xxxx1000 naar het OPR_MODE-register te schrijven, waarbij 'x' een 'don't care' is. Zet die bits op 0.

Stap 4: Integreer de draadloze transceiver

Integreer de draadloze transceiver
Integreer de draadloze transceiver
Integreer de draadloze transceiver
Integreer de draadloze transceiver

De draadloze transceiver maakt gebruik van SPI-communicatie. Bijgevoegd is het specificatieblad voor de nRF24L01+Een goede tutorial over de nrf24l01+ maar met arduino:

Stap 5: Programmeer de Zybo FPGA

Overzicht Deze modules zijn de laatste modules die worden gebruikt voor de besturing van de PWM van de quadcopter. motor_ctl_wrapper.svDoel: De wrapper neemt Euler-hoeken en een percentage gas in. Het voert een gecompenseerde PWM uit waarmee de quadcopter kan stabiliseren. Dit blok bestaat, omdat quadcopters gevoelig zijn voor verstoringen in de lucht en een soort van stabilisatie vereisen. We gebruiken Euler-hoeken, omdat we geen flips of zware hoeken plannen die Gimbal Lock kunnen veroorzaken. Invoer: 25-bits bus met gegevens CTL_IN = { [24] GO, [23:16] Euler X, [15: 8] Euler Y, [7:0] Throttle Percentage }, Clock (clk), Synchronous CLR (sclr)Output: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Throttle Percentage PWM Het Throttle Percentage PWM is gebruikt voor het initialiseren van de ESC, die een puur PWM-bereik van 30% - 70% wil, niet dat van de Motor 1-4 PWM-waarden. Geavanceerd - Vivado Zynq IP-blokken: 8 optellen (LUT's)3 aftrekken (LUT's)5 Vermenigvuldigers (Block Memory (BRAM))clock_div.sv (AKA pwm_fsm.sv) Doel: Besturing van de hardware, inclusief de MUX, PWM-uitgang en sclr voor motor_ctl_wrapper. Elke Finite State Machine (FSM) wordt voor één ding gebruikt: andere hardware aansturen. Elke grote afwijking van dit doel kan ertoe leiden dat de veronderstelde FSM de vorm aanneemt van een ander type module (teller, opteller, enz.). pwm_fsm heeft 3 statussen: INIT, CLR en FLYINIT: Sta de gebruiker toe om de ESC te programmeren als gewenst. Stuurt een selectiesignaal naar mux_pwm dat rechtstreekse PWM naar alle motoren stuurt. Loopt terug naar zichzelf totdat GO == '1'. CLR: Wis gegevens in motor_ctl_wrapper en de pwm out-module. FLY: Loop voor altijd door om de quadcopter te stabiliseren (tenzij we worden gereset). Stuurt de gecompenseerde PWM door de mux_pwm. Input: GO, RESET, clkOutput: RST voor andere module-resets, FullFlight om FLY-modus te signaleren, Periode om atmux_pwm.svPurpose:Input:Output: PWM voor alle 4 motorspwm.svPurpose:Input:Output:

Aanbevolen: