Taula de continguts:

Quadcopter amb la placa Zybo Zynq-7000: 5 passos
Quadcopter amb la placa Zybo Zynq-7000: 5 passos

Vídeo: Quadcopter amb la placa Zybo Zynq-7000: 5 passos

Vídeo: Quadcopter amb la placa Zybo Zynq-7000: 5 passos
Vídeo: Tecno 4t ESO 2016-17: Drone amb placa Arduino 2024, Juliol
Anonim
Quadcopter mitjançant la placa Zybo Zynq-7000
Quadcopter mitjançant la placa Zybo Zynq-7000

Abans de començar, aquí teniu algunes coses que voleu per al projecte: llista de peces: 1 placa Digilent Zybo Zynq-7000, 1 x quadre quadricòpter capaç de muntar Zybo (fitxer Adobe Illustrator per tall de trossos adjunt) 4x Turnigy D3530 / 14 Motors sense escombretes 1100KV 4x Turnigy ESC Basic -18A Speed Controller 4x hèlixs (han de ser prou grans per aixecar el quadcopter) 2x nRF24L01 + transceptor 1x IMU BNO055 Requisits del programari Xilinx Vivado 2016.2 NOTA: Els motors anteriors no són els únics motors que es poden utilitzar. Són només els que s’utilitzen en aquest projecte. El mateix passa amb la resta de peces i requisits de programari. Amb sort, això és una comprensió no expressada en llegir aquest instructiu.

Pas 1: feu funcionar el mòdul PWM

Programa un SystemVerilog simple (o un altre programa HDL) per registrar l’accelerador HI i l’accelerador LO mitjançant els commutadors d’entrada. Enganxeu el PWM amb un sol motor ESC i sense escombretes Turnigy. Consulteu els fitxers següents per esbrinar com calibrar l’ESC. El codi final s’adjunta al pas 5 per al mòdul PWM. En aquest pas s’adjunta un motor d’arrencada PWM Full de dades ESC: Full de dades de Turnigy ESC PDF (Les diferents modalitats que podeu prestar a l’accelerador HI i LO es poden seleccionar)

Pas 2: configureu el disseny de blocs

Crea un disseny de blocs Feu doble clic al bloc recentment generat Importeu la configuració XPS descarregada aquí: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Modifiqueu la configuració Configuració PS-PL M AXI Interfície GP0 Perifèric I / O pins Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Configuració del temporitzador 0 WatchdogClock Configuració FCLK_CLK0 i estableix la freqüència a 100 MHz Fes I2C i SPI extern Connecta FCLK_CLK0 a M_AXI_GP0_ACLK Executa l’automatització del bloc Crea un port i crida’l "gnd"

Pas 3: Calibreu l'IMU

Calibre l’IMU
Calibre l’IMU

El transceptor BNO055 utilitza comunicació I2C. (Lectura suggerida per a principiants: https://learn.sparkfun.com/tutorials/i2c)El controlador per executar l’IMU es troba aquí: https://github.com/BoschSensortec/BNO055_driver Un quadricòpter no requereix l’ús del magnetòmetre del BNO055. Per això, el mode d'operació necessari és el mode IMU. Això es canvia escrivint un número binari xxxx1000 al registre OPR_MODE, on 'x' és un 'no m'importa'. Establiu aquests bits a 0.

Pas 4: Integra el transceptor sense fils

Integreu el transceptor sense fils
Integreu el transceptor sense fils
Integreu el transceptor sense fils
Integreu el transceptor sense fils

El transceptor sense fils utilitza la comunicació SPI. S'adjunta el full d'especificacions del nRF24L01 + Un bon tutorial sobre el nrf24l01 + però amb arduino:

Pas 5: programa el Zybo FPGA

Aquests mòduls són els mòduls finals que s’utilitzen per al control del PWM del quadricòpter. motor_ctl_wrapper.sv Objectiu: l’embolcall té angles d’Euler i un percentatge d’accelerador. Emet un PWM compensat que permetrà estabilitzar el quadcopter. Aquest bloc existeix, perquè els quadcòpters són propensos a alteracions a l'aire i requereixen algun tipus d'estabilització. Estem utilitzant angles d'Euler, ja que no planegem capgirar ni angles pesats que puguin causar bloqueig de cardan. Entrada: bus de dades de 25 bits CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euler Y, [7: 0] Percentatge d’accelerador}, Rellotge (clk), Sortida CLR síncrona (sclr): Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Percentatge d’accelerador PWM El percentatge d’accelerador PWM és s’utilitza per inicialitzar l’ESC, que desitjarà un rang pur de PWM entre el 30% i el 70%, no el dels valors PWM del motor 1-4. Avançat: blocs IP Vivado Zynq: 8 Suma (LUT) 3 Restes (LUT) 5 Multiplicadors (Block Memory (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Objectiu: controlar el maquinari, inclosos els MUX, la sortida PWM i sclr per a motor_ctl_wrapper. Qualsevol màquina d’estats finits (FSM) s’utilitza per a una cosa: controlar un altre maquinari. Qualsevol desviació important d’aquest objectiu pot fer que el suposat FSM adopti la forma d’un altre tipus de mòdul (comptador, sumador, etc.). Pwm_fsm té 3 estats: INIT, CLR i FLYINIT: permetre a l’usuari programar l’ESC com desitjat. Envia un senyal selectiu a mux_pwm que emet PWM directe a tots els motors. Torna a tornar a si mateix fins a GO == '1'. CLR: esborra les dades del motor_ctl_wrapper i del mòdul pwm out. Envia el PWM compensat a través de mux_pwm. Entrada: GO, RESET, clk Sortida: RST per a restabliments d'altres mòduls, FullFlight per senyalitzar el mode FLY, Període per executar atmux_pwm.sv Objectiu: Entrada: Sortida: PWM per a tots els 4 motorspwm.sv Objectiu: Entrada: Sortida:

Recomanat: