Table des matières:

Quadcopter utilisant la carte Zybo Zynq-7000 : 5 étapes
Quadcopter utilisant la carte Zybo Zynq-7000 : 5 étapes

Vidéo: Quadcopter utilisant la carte Zybo Zynq-7000 : 5 étapes

Vidéo: Quadcopter utilisant la carte Zybo Zynq-7000 : 5 étapes
Vidéo: КАМЕРА которую ТЫ ИСКАЛ БЮДЖЕТКА с ДАЛЬНОБОЙНОЙ НОЧНОЙ КАРТИНКОЙ 2024, Novembre
Anonim
Quadcopter utilisant la carte Zybo Zynq-7000
Quadcopter utilisant la carte Zybo Zynq-7000

Avant de commencer, voici quelques éléments que vous souhaitez pour le projet: Liste des pièces 1x carte Digilent Zybo Zynq-7000 1x cadre quadrirotor capable de monter du Zybo (fichier Adobe Illustrator pour la découpe au laser joint) 4x moteurs Turnigy D3530/14 1100KV Brushless 4x Turnigy ESC Basic -18A Speed Controller 4x Hélices (celles-ci doivent être assez grandes pour soulever votre quadcopter) 2x émetteur-récepteur nRF24L01+ 1x IMU BNO055Software RequirementsXilinx Vivado 2016.2REMARQUE: Les moteurs ci-dessus ne sont pas les seuls moteurs qui peuvent être utilisés. Ce ne sont que ceux utilisés dans ce projet. Il en va de même pour le reste des pièces et des exigences logicielles. Espérons que c'est une compréhension tacite lors de la lecture de ce Instructable.

Étape 1: Lancez le module PWM

Programmez un simple SystemVerilog (ou un autre programme HDL) pour enregistrer les gaz HI et LO à l'aide des commutateurs d'entrée. Accrochez le PWM avec un seul ESC et un moteur sans balais Turnigy. Consultez les fichiers suivants pour savoir comment calibrer l'ESC. Le code final est joint à l'étape 5 pour le module PWM. Un démarreur PWM est joint à cette étape. Fiche technique ESC: Turnigy ESC Datasheet PDF (les points auxquels vous devez faire attention sont les différents modes que vous pouvez sélectionner à l'aide de l'accélérateur HI et LO)

Étape 2: Configurer la conception de bloc

Créer une conception de bloc Double-cliquez sur le bloc nouvellement généré Importez les paramètres XPS téléchargés ici: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Modifiez les paramètres Configuration PS-PL Interface M AXI GP0 Périphérique I/ O Pins Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Configuration Timer 0 WatchdogClock Configuration FCLK_CLK0 et régler la fréquence sur 100 MHzMake I2C et SPI external Connect FCLK_CLK0 à M_AXI_GP0_ACLK Exécuter l'automatisation du bloc Créer un port et l'appeler "gnd"

Étape 3: Calibrer l'IMU

Calibrer l'IMU
Calibrer l'IMU

L'émetteur-récepteur BNO055 utilise la communication I2C. (Lecture suggérée pour les débutants: https://learn.sparkfun.com/tutorials/i2c) Le pilote pour exécuter l'IMU se trouve ici: https://github.com/BoschSensortec/BNO055_driver BNO055. De ce fait, le mode de fonctionnement nécessaire est le mode IMU. Ceci est modifié en écrivant un nombre binaire xxxx1000 dans le registre OPR_MODE, où 'x' est un 'indifférent'. Mettez ces bits à 0.

Étape 4: Intégrer l'émetteur-récepteur sans fil

Intégrer l'émetteur-récepteur sans fil
Intégrer l'émetteur-récepteur sans fil
Intégrer l'émetteur-récepteur sans fil
Intégrer l'émetteur-récepteur sans fil

L'émetteur-récepteur sans fil utilise la communication SPI. Ci-joint la fiche technique du nRF24L01+Un bon tuto sur le nrf24l01+ mais avec arduino:

Étape 5: programmer le FPGA Zybo

AperçuCes modules sont les derniers modules utilisés pour le contrôle du PWM du quadricoptère. motor_ctl_wrapper.svPurpose: le wrapper prend en compte les angles d'Euler et un pourcentage d'accélérateur. Il produit un PWM compensé qui permettra au quadricoptère de se stabiliser. Ce bloc existe, car les quadricoptères sont sujets aux perturbations dans l'air et nécessitent une sorte de stabilisation. Nous utilisons des angles d'Euler, car nous ne prévoyons pas de retournements ou d'angles importants qui pourraient provoquer un blocage du cardan. Entrée: bus de données 25 bits CTL_IN = { [24] GO, [23:16] Euler X, [15: 8] Euler Y, [7:0] Throttle Percentage }, Clock (clk), Synchronous CLR (sclr)Sortie: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Throttle Percentage PWM Le Throttle Percentage PWM est utilisé pour initialiser l'ESC, qui voudra une plage pure de 30% à 70% de PWM, pas celle des valeurs PWM du moteur 1-4. Avancé - Vivado Zynq IP Blocks:8 Ajoute (LUT)3 Soustrait (LUT)5 Multiplicateurs (Block Memory (BRAM))clock_div.sv (AKA pwm_fsm.sv) Objectif: Contrôler le matériel, y compris le MUX, la sortie PWM et le sclr pour motor_ctl_wrapper. Toute machine à états finis (FSM) est utilisée pour une chose: contrôler d'autres matériels. Tout écart important par rapport à cet objectif peut amener le FSM supposé à prendre la forme d'un type de module différent (compteur, additionneur, etc.). pwm_fsm a 3 états: INIT, CLR et FLYINIT: Permet à l'utilisateur de programmer l'ESC comme voulu. Envoie un signal de sélection à mux_pwm qui envoie un PWM direct à tous les moteurs. Reboucle sur lui-même jusqu'à GO == '1'. CLR: efface les données dans motor_ctl_wrapper et le module de sortie pwm. FLY: boucle indéfiniment pour stabiliser le quadricoptère (sauf si nous sommes réinitialisés). Envoie le PWM compensé via le mux_pwm. Entrée: GO, RESET, clkOutput: RST pour les autres réinitialisations du module, FullFlight pour signaler le mode FLY, Période pour exécuter atmux_pwm.svPurpose: Entrée: Sortie: PWM pour les 4 moteursspwm.svPurpose: Entrée: Sortie:

Conseillé: