Përmbajtje:

Quadcopter Duke përdorur Bordin Zybo Zynq-7000: 5 Hapa
Quadcopter Duke përdorur Bordin Zybo Zynq-7000: 5 Hapa

Video: Quadcopter Duke përdorur Bordin Zybo Zynq-7000: 5 Hapa

Video: Quadcopter Duke përdorur Bordin Zybo Zynq-7000: 5 Hapa
Video: Why Nothing Seems to Kill New Su 35 after upgrade 2024, Nëntor
Anonim
Quadcopter Duke përdorur Bordin Zybo Zynq-7000
Quadcopter Duke përdorur Bordin Zybo Zynq-7000

Para se të fillojmë, këtu janë disa gjëra që dëshironi për projektin: Lista e Pjesëve1x Bordi Digilent Zybo Zynq-7000 1x Kornizë Quadcopter në gjendje të montojë Zybo (skedari Adobe Illustrator për prerje me lazer është i bashkangjitur) 4x Turnigy D3530/14 1100KV Motors me Furça 4x Turnigy ESC Basic -18A Speel Controller 4x Propellers (këto duhet të jenë mjaft të mëdha për të ngritur kuadopterin tuaj) 2x nRF24L01+ transmetues 1x IMU BNO055 Kërkesat e softueritXilinx Vivado 2016.2 SHOTNIM: Motorët e mësipërm nuk janë motorët e vetëm që mund të përdoren. Ato janë vetëm ato të përdorura në këtë projekt. E njëjta gjë vlen edhe për pjesën tjetër të pjesëve dhe kërkesat e softuerit. Shpresojmë, ky është një kuptim i pashprehur kur lexoni këtë Udhëzues.

Hapi 1: Filloni të punoni me modulin PWM

Programoni një SystemVerilog të thjeshtë (ose program tjetër HDL) për të regjistruar mbytjen HI dhe mbytjen LO duke përdorur çelsin e hyrjes. Lidheni PWM me një ESC të vetme dhe Motor Turnigy Brushless. Kontrolloni skedarët e mëposhtëm për të mësuar se si të kalibroni ESC. Kodi përfundimtar është bashkangjitur në hapin 5 për modulin PWM. Një starter PWM është bashkangjitur në këtë hap ESC Datasheet: Turnigy ESC Datasheet PDF (Gjërat që duhet kushtuar vëmendje janë mënyrat e ndryshme që mund të zgjidhni duke përdorur mbytjen HI dhe LO)

Hapi 2: Vendosni dizajnin e bllokut

Krijo Dizajn Blloku Klikoni dy herë bllokun e krijuar rishtazi Importoni cilësimet e XPS të shkarkuara këtu: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Ndryshoni cilësimet PS-PL Konfigurimi M AXI GP0 ndërfaqja Periferike I/ O Pins Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Kohëmatësi i konfigurimit 0 WatchdogClock Konfigurimi FCLK_CLK0 dhe vendosni frekuencën në 100 MHz Bëni I2C dhe SPI të jashtme Lidhni FCLK_CLK0 me M_AXI_GP0_ACLK Bllokoni automatizimin"

Hapi 3: Kalibroni IMU

Kalibroni IMU
Kalibroni IMU

Transmetuesi BNO055 përdor komunikimin I2C. (Leximi i sugjeruar për fillestarët: https://learn.sparkfun.com/tutorials/i2c) Shoferi për të drejtuar IMU -në gjendet këtu: https://github.com/BoschSensortec/BNO055_driverA një kuadopter nuk kërkon përdorimin e magnetometrit nga BNO055 Për shkak të kësaj, mënyra e funksionimit e nevojshme është mënyra IMU. Kjo ndryshon duke shkruar një numër binar xxxx1000 në regjistrin OPR_MODE, ku 'x' është 'nuk më intereson'. Vendosni ato bit në 0.

Hapi 4: Integroni transmetuesin pa tela

Integroni transmetuesin pa tela
Integroni transmetuesin pa tela
Integroni transmetuesin pa tela
Integroni transmetuesin pa tela

Marrësi pa tel përdor komunikimin SPI. Bashkangjitur është fleta e specifikimeve për nRF24L01+ Një mësim i mirë për nrf24l01+ por me arduino:

Hapi 5: Programoni Zybo FPGA

Këto module janë modulet përfundimtare të përdorura për kontrollin e PWM të kuadopterit. motor_ctl_wrapper.svQëllimi: Mbështjellësi merr kënde Ojler dhe një përqindje mbytëse. Ajo nxjerr një PWM të kompensuar që do të lejojë që kuadopteri të stabilizohet. Ky bllok ekziston, sepse kuadopterët janë të prirur ndaj shqetësimeve në ajër dhe kërkojnë një lloj stabilizimi. Ne po përdorim kënde Euler, pasi nuk planifikojmë në rrokullisje ose kënde të rënda të cilat mund të shkaktojnë Gimbal Lock. Input: autobus 25-bit i të dhënave CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euler Y, [7: 0] Përqindja e Throttle}, Ora (clk), CLR Synchronous (sclr) Output: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Throttle Përqindja PWM Përqindja e Throttle PWM është përdoret për inicimin e ESC, e cila do të kërkojë një gamë të pastër 30% - 70% të PWM, jo atë nga vlerat e motorit 1-4 PWM. Të avancuara - Blloqet IP Vivado Zynq: 8 Shton (LUT) 3 Zbrit (LUT) 5 Shumëzuesit (Kujtesa e Bllokut (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Qëllimi: Kontrolloni pajisjen, duke përfshirë daljen MUX, PWM dhe sclr për motor_ctl_wrapper. Çdo makinë e gjendjes së fundme (FSM) përdoret për një gjë: kontrolloni pajisjet e tjera. Çdo devijim i madh nga ky objektiv mund të bëjë që FSM e supozuar të marrë formën e një lloji të ndryshëm moduli (numërues, mbledhës, etj.). Pwm_fsm ka 3 gjendje: INIT, CLR dhe FLYINIT: Lejoni përdoruesin të programojë ESC si e dëshiruar. Dërgon një sinjal të zgjedhur në mux_pwm që nxjerr PWM drejt për të gjithë motorët. Rikthimi në vetvete deri në GO == '1'. CLR: Pastroni të dhënat në motor_ctl_wrapper dhe modulin pwm out. FLY: Lakoni përgjithmonë për të stabilizuar kuadopterin (nëse nuk rivendosemi). Dërgon PWM të kompensuar përmes mux_pwm. Input: GO, RESET, clkOutput: RST për rivendosjet e moduleve të tjera, FullFlight për të sinjalizuar modalitetin FLY, Periudha për të ekzekutuar atmux_pwm.svQëllimi: Input: Output: PWM për të 4 motorspwm.svQëllimi: Input: Output:

Recommended: