Sommario:

Quadricottero che utilizza la scheda Zybo Zynq-7000: 5 passaggi
Quadricottero che utilizza la scheda Zybo Zynq-7000: 5 passaggi

Video: Quadricottero che utilizza la scheda Zybo Zynq-7000: 5 passaggi

Video: Quadricottero che utilizza la scheda Zybo Zynq-7000: 5 passaggi
Video: Dev Kit Weekly: Digilent CORA Z7 2024, Dicembre
Anonim
Quadricottero che utilizza la scheda Zybo Zynq-7000
Quadricottero che utilizza la scheda Zybo Zynq-7000

Prima di iniziare, ecco alcune cose che desideri per il progetto:Elenco parti 1x scheda Digilent Zybo Zynq-7000 1x telaio quadricottero in grado di montare Zybo (file Adobe Illustrator per il taglio laser allegato) 4x Turnigy D3530/14 1100KV Brushless Motors 4x Turnigy ESC Basic -18A Speed Controller 4x eliche (queste devono essere abbastanza grandi per sollevare il tuo quadricottero) 2x ricetrasmettitore nRF24L01+ 1x IMU BNO055Requisiti softwareXilinx Vivado 2016.2NOTA: I motori sopra non sono gli unici motori che possono essere utilizzati. Sono solo quelli utilizzati in questo progetto. Lo stesso vale per il resto delle parti e dei requisiti software. Si spera che questa sia una comprensione non detta durante la lettura di questo Instructable.

Passaggio 1: avvia il modulo PWM

Programmare un semplice SystemVerilog (o un altro programma HDL) per registrare l'acceleratore HI e l'acceleratore LO utilizzando gli interruttori di ingresso. Aggancia il PWM con un singolo ESC e Turnigy Brushless Motor. Controllare i seguenti file per scoprire come calibrare l'ESC. Il codice finale è allegato al passaggio 5 per il modulo PWM. Un avviatore PWM è allegato in questo passaggio Foglio dati ESC: Turnigy Foglio dati ESC PDF (Le cose a cui prestare attenzione sono le diverse modalità che è possibile selezionare utilizzando l'acceleratore HI e LO)

Passaggio 2: imposta il design del blocco

Crea disegno blocco Fare doppio clic sul blocco appena generato Importa impostazioni XPS scaricate qui: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Modifica impostazioni Configurazione PS-PL M Interfaccia AXI GP0 Peripheral I/ O Pin Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Configurazione Timer 0 Configurazione WatchdogClock FCLK_CLK0 e imposta la frequenza a 100 MHz Crea I2C e SPI esterni Connetti FCLK_CLK0 a M_AXI_GP0_ACLK Esegui blocco automazione Crea porta e chiamalo "gnd"

Passaggio 3: calibrare l'IMU

Calibrare l'IMU
Calibrare l'IMU

Il ricetrasmettitore BNO055 utilizza la comunicazione I2C. (Lettura consigliata per principianti: https://learn.sparkfun.com/tutorials/i2c) Il driver per eseguire l'IMU si trova qui: https://github.com/BoschSensortec/BNO055_driverUn quadricottero non richiede l'uso del magnetometro dal BNO055. Per questo motivo, la modalità operativa necessaria è la modalità IMU. Questo viene modificato scrivendo un numero binario xxxx1000 nel registro OPR_MODE, dove 'x' è un 'non mi interessa'. Imposta quei bit a 0.

Passaggio 4: integra il ricetrasmettitore wireless

Integra il ricetrasmettitore wireless
Integra il ricetrasmettitore wireless
Integra il ricetrasmettitore wireless
Integra il ricetrasmettitore wireless

Il ricetrasmettitore wireless utilizza la comunicazione SPI. In allegato è il foglio delle specifiche per nRF24L01+Un buon tutorial sul nrf24l01+ ma con arduino:

Passaggio 5: programma l'FPGA Zybo

PanoramicaQuesti moduli sono i moduli finali utilizzati per il controllo del PWM del quadricottero. motor_ctl_wrapper.svPurpose: il wrapper prende gli angoli di Eulero e una percentuale di accelerazione. Emette un PWM compensato che consentirà al quadricottero di stabilizzarsi. Questo blocco esiste, perché i quadricotteri sono soggetti a disturbi nell'aria e richiedono una sorta di stabilizzazione. Stiamo usando gli angoli di Eulero, poiché non prevediamo capovolgimenti o angoli pesanti che potrebbero causare il blocco del giunto cardanico. Input: bus di dati a 25 bit CTL_IN = { [24] GO, [23:16] Euler X, [15: 8] Eulero Y, [7:0] Percentuale farfalla }, Orologio (clk), CLR sincrono (sclr) Uscita: PWM motore 1, PWM motore 2, PWM motore 3, PWM motore 4, PWM percentuale farfalla La percentuale PWM farfalla è utilizzato per l'inizializzazione dell'ESC, che richiederà un intervallo puro del 30% - 70% di PWM, non quello dei valori PWM del motore 1-4. Avanzato - Blocchi IP Vivado Zynq: 8 Somma (LUT) 3 Sottrazione (LUT) 5 Moltiplicatori (Block Memory (BRAM))clock_div.sv (AKA pwm_fsm.sv) Scopo: controlla l'hardware, incluso il MUX, l'uscita PWM e sclr per motor_ctl_wrapper. Qualsiasi macchina a stati finiti (FSM) viene utilizzata per una cosa: controllare altro hardware. Qualsiasi grande deviazione da questo obiettivo può far sì che il presunto FSM assuma la forma di un diverso tipo di modulo (contatore, sommatore, ecc.). pwm_fsm ha 3 stati: INIT, CLR e FLYINIT: consente all'utente di programmare l'ESC come desiderato. Invia un segnale di selezione a mux_pwm che emette PWM diretto a tutti i motori. Torna su se stesso finché GO == '1'. CLR: Cancella i dati in motor_ctl_wrapper e nel modulo pwm out. FLY: Loop per sempre per stabilizzare il quadricottero (a meno che non venga ripristinato). Invia il PWM compensato attraverso il mux_pwm. Input: GO, RESET, clkOutput: RST per altri reset del modulo, FullFlight per segnalare la modalità FLY, Period to run atmux_pwm.svPurpose:Input:Output: PWM per tutti e 4 i motorspwm.svPurpose:Input:Output:

Consigliato: