Inhaltsverzeichnis:

Quadcopter mit Zybo Zynq-7000 Board - Gunook
Quadcopter mit Zybo Zynq-7000 Board - Gunook

Video: Quadcopter mit Zybo Zynq-7000 Board - Gunook

Video: Quadcopter mit Zybo Zynq-7000 Board - Gunook
Video: Embedded Master Course: Zybo FPGA Based Lidar Test 2024, November
Anonim
Quadcopter mit Zybo Zynq-7000 Board
Quadcopter mit Zybo Zynq-7000 Board

Bevor wir beginnen, sind hier einige Dinge, die Sie für das Projekt benötigen: Teileliste1x Digilent Zybo Zynq-7000-Board 1x Quadcopter-Rahmen, der Zybo montieren kann (Adobe Illustrator-Datei zum Laserschneiden angehängt) 4x Turnigy D3530/14 1100KV Brushless-Motoren 4x Turnigy ESC Basic -18A Geschwindigkeitsregler 4x Propeller (diese müssen groß genug sein, um Ihren Quadcopter anzuheben) 2x nRF24L01+ Transceiver 1x IMU BNO055SoftwareanforderungenXilinx Vivado 2016.2HINWEIS: Die oben genannten Motoren sind nicht die einzigen Motoren, die verwendet werden können. Sie sind nur die, die in diesem Projekt verwendet werden. Gleiches gilt für den Rest der Teile und Softwareanforderungen. Hoffentlich ist das ein unausgesprochenes Verständnis beim Lesen dieses Instructable.

Schritt 1: Bringen Sie das PWM-Modul zum Laufen

Programmieren Sie ein einfaches SystemVerilog (oder ein anderes HDL-Programm), um HI-Gas und LO-Gas mit Eingangsschaltern zu registrieren. Schließen Sie das PWM mit einem einzigen ESC und einem bürstenlosen Turnigy-Motor an. Überprüfen Sie die folgenden Dateien, um herauszufinden, wie Sie den Regler kalibrieren. Der endgültige Code ist in Schritt 5 für das PWM-Modul beigefügt. Ein PWM-Starter ist in diesem Schritt beigefügtESC-Datenblatt: Turnigy ESC-Datenblatt PDF (Zu beachten sind die verschiedenen Modi, die Sie mit HI- und LO-Gas auswählen können)

Schritt 2: Einrichten des Blockdesigns

Blockdesign erstellen Doppelklicken Sie auf den neu generierten Block Importieren Sie hier heruntergeladene XPS-Einstellungen: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Einstellungen ändern PS-PL-Konfiguration M AXI GP0-Schnittstelle Peripheral I/ O Pins Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Konfiguration Timer 0 WatchdogClock Konfiguration FCLK_CLK0 und Frequenz auf 100 MHz setzen I2C und SPI extern herstellen FCLK_CLK0 mit M_AXI_GP0_ACLK verbinden Blockautomatisierung ausführen Port erstellen und "gnd" nennen

Schritt 3: Kalibrieren Sie die IMU

Kalibrieren Sie die IMU
Kalibrieren Sie die IMU

Der Transceiver BNO055 verwendet die I2C-Kommunikation. (Empfohlene Lektüre für Anfänger: https://learn.sparkfun.com/tutorials/i2c) Der Treiber zum Ausführen der IMU befindet sich hier: https://github.com/BoschSensortec/BNO055_driverEin Quadcopter erfordert keine Verwendung des Magnetometers von der BNO055. Aus diesem Grund ist der erforderliche Betriebsmodus der IMU-Modus. Dies wird geändert, indem eine Binärzahl xxxx1000 in das OPR_MODE-Register geschrieben wird, wobei 'x' für 'egal' steht. Setzen Sie diese Bits auf 0.

Schritt 4: Integrieren Sie den drahtlosen Transceiver

Integrieren Sie den drahtlosen Transceiver
Integrieren Sie den drahtlosen Transceiver
Integrieren Sie den drahtlosen Transceiver
Integrieren Sie den drahtlosen Transceiver

Der drahtlose Transceiver verwendet SPI-Kommunikation. Anbei das Spezifikationsblatt für den nRF24L01+ Ein gutes Tutorial zum nrf24l01+ aber mit Arduino:

Schritt 5: Programmieren Sie das Zybo FPGA

ÜbersichtDiese Module sind die letzten Module, die für die Steuerung der PWM des Quadcopters verwendet werden. motor_ctl_wrapper.svPurpose: Der Wrapper nimmt Euler-Winkel und einen Drosselungsprozentsatz auf. Es gibt eine kompensierte PWM aus, die es dem Quadrocopter ermöglicht, sich zu stabilisieren. Dieser Block existiert, weil Quadrocopter anfällig für Störungen in der Luft sind und eine Art Stabilisierung benötigen. Wir verwenden Euler-Winkel, da wir keine Flips oder starke Winkel planen, die Gimbal Lock verursachen könnten. Input: 25-Bit-Datenbus 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 Der Throttle Percentage PWM ist Wird zum Initialisieren des ESC verwendet, der einen reinen PWM-Bereich von 30% - 70% benötigt, nicht den von den PWM-Werten des Motors 1-4. Erweitert - Vivado Zynq IP-Blöcke:8 Addiert (LUTs)3 Subtrahiert (LUTs)5 Multiplikatoren (Blockspeicher (BRAM))clock_div.sv (AKA pwm_fsm.sv) Zweck: Steuern der Hardware, einschließlich MUX, PWM-Ausgang und sclr für motor_ctl_wrapper. Jede Finite State Machine (FSM) wird für eine Sache verwendet: andere Hardware zu steuern. Jede große Abweichung von diesem Ziel kann dazu führen, dass das vermeintliche FSM in Form eines anderen Modultyps (Zähler, Addierer usw.) gewünscht. Sendet ein Auswahlsignal an mux_pwm, das direkte PWM an alle Motoren ausgibt. Schleift zu sich selbst zurück, bis GO == '1'. CLR: Löschen Sie die Daten in motor_ctl_wrapper und dem PWM-Ausgangsmodul. FLY: Schleife für immer, um den Quadcopter zu stabilisieren (es sei denn, wir werden zurückgesetzt). Sendet die kompensierte PWM über den mux_pwm. Input: GO, RESET, clkOutput: RST für andere Modul-Resets, FullFlight, um den FLY-Modus zu signalisieren, Period to run atmux_pwm.svPurpose:Input:Output: PWM für alle 4 motorspwm.svPurpose:Input:Output:

Empfohlen: