Sisällysluettelo:

Nelikopteri Zybo Zynq-7000 -kortilla: 5 vaihetta
Nelikopteri Zybo Zynq-7000 -kortilla: 5 vaihetta

Video: Nelikopteri Zybo Zynq-7000 -kortilla: 5 vaihetta

Video: Nelikopteri Zybo Zynq-7000 -kortilla: 5 vaihetta
Video: Embedded FPGA - поднимаем Linux на Zynq-7000 2024, Marraskuu
Anonim
Nelikopteri käyttäen Zybo Zynq-7000 -korttia
Nelikopteri käyttäen Zybo Zynq-7000 -korttia

Ennen kuin aloitamme, tässä on muutamia asioita, joita haluat projektiin: Osaluettelo 1x Digilent Zybo Zynq-7000 -levy 1x nelikopterikehys, jolla voidaan asentaa Zybo (liitetty Adobe Illustrator-tiedosto laserileikkaukseen) 4x Turnigy D3530/14 1100KV Brushless Motors 4x Turnigy ESC Basic -18A nopeussäätimen 4x potkuria (niiden on oltava riittävän suuria nostaaksesi nelikopterisi) 2x nRF24L01+ lähetin -vastaanotin 1x IMU BNO055Ohjelmistovaatimukset Xilinx Vivado 2016.2 HUOMAUTUS: Yllä olevat moottorit eivät ole ainoita moottoreita, joita voidaan käyttää. He ovat vain niitä, joita käytetään tässä projektissa. Sama pätee muihin osiin ja ohjelmistovaatimuksiin. Toivottavasti tämä on sanaton ymmärrys tätä opetusohjelmaa luettaessa.

Vaihe 1: Käynnistä PWM -moduuli

Ohjelmoi yksinkertainen SystemVerilog (tai muu HDL -ohjelma) HI- ja LO -kaasun rekisteröimiseksi tulokytkimillä. Kiinnitä PWM yhdellä ESC: llä ja Turnigy Brushless -moottorilla. Tarkista seuraavat tiedostot, miten ESC kalibroidaan. PWM -moduulin lopullinen koodi on liitteenä vaiheessa 5. PWM -käynnistin on liitetty tähän vaiheeseen ESC Datasheet: Turnigy ESC Datasheet PDF (Huomioitavaa ovat eri tilat, jotka voit valita käyttämällä HI- ja LO -kaasua)

Vaihe 2: Aseta lohkon suunnittelu

Luo estorakenne Kaksoisnapsauta äskettäin luotua lohkoa Tuo XPS-asetukset, jotka on ladattu täältä: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Muokkaa asetuksia PS-PL Configuration M AXI GP0 -liitäntä Peripheral I/ O Nastat Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Configuration Timer 0 WatchdogClock Configuration FCLK_CLK0 ja aseta taajuus 100 MHz Tee I2C ja SPI ulkoinen yhteys FCLK_CLK0 arvoon M_AXI_GP0_ACLK Suorita lohkoautomatiikka Luo portti ja soita

Vaihe 3: Kalibroi IMU

Kalibroi IMU
Kalibroi IMU

BNO055 -lähetinvastaanotin käyttää I2C -tiedonsiirtoa. (Aloittelijan suosittelema luku: https://learn.sparkfun.com/tutorials/i2c) IMU: n ajuri sijaitsee täällä: https://github.com/BoschSensortec/BNO055_driver Nelikopteri ei vaadi magnetometrin käyttöä BNO055. Tämän vuoksi tarvittava toimintatapa on IMU -tila. Tämä muutetaan kirjoittamalla binääriluku xxxx1000 OPR_MODE -rekisteriin, jossa 'x' on 'välitä'. Aseta bitit arvoon 0.

Vaihe 4: Integroi langaton lähetin -vastaanotin

Integroi langaton lähetin -vastaanotin
Integroi langaton lähetin -vastaanotin
Integroi langaton lähetin -vastaanotin
Integroi langaton lähetin -vastaanotin

Langaton lähetinvastaanotin käyttää SPI -tiedonsiirtoa. Liitteenä nRF24L01+: n tekniset tiedot ja hyvä opetusohjelma nrf24l01+: sta, mutta arduinolla:

Vaihe 5: Ohjelmoi Zybo FPGA

Yleiskatsaus Nämä moduulit ovat viimeisiä moduuleja, joita käytetään nelikopterin PWM: n ohjaamiseen. motor_ctl_wrapper.sv Tarkoitus: Kääre ottaa Eulerin kulmat ja kaasuprosentin. Se tuottaa kompensoidun PWM: n, jonka avulla nelikopteri vakautuu. Tämä lohko on olemassa, koska nelikopterit ovat alttiita häiriöille ilmassa ja vaativat jonkinlaista vakauttamista. Käytämme Euler-kulmia, koska emme suunnittele kääntöjä tai raskaita kulmia, jotka voivat aiheuttaa kippilukon. 8] Euler Y, [7: 0] Kaasuprosentti}, Kello (clk), Synkroninen CLR (sclr) Lähtö: Moottori 1 PWM, Moottori 2 PWM, Moottori 3 PWM, Moottori 4 PWM, Kaasuprosentti PWM Kaasuprosentti PWM on käytetään ESC: n alustamiseen, joka haluaa puhtaan 30% - 70% PWM -alueen, ei moottorin 1-4 PWM -arvoja. Advanced - Vivado Zynq IP Blocks: 8 Adds (LUT) Kertoimet (lohkomuisti (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Tarkoitus: Ohjaa laitteistoa, mukaan lukien MUX, PWM -ulostulo ja motor_ctl_wrapperin sclr. Mitä tahansa äärellistä tilakonetta (FSM) käytetään yhteen asiaan: muiden laitteiden hallintaan. Kaikki suuret poikkeamat tästä tavoitteesta voivat saada oletetun FSM: n muodostumaan eri tyyppiseksi moduuliksi (laskuri, summain jne.). Pwm_fsm: llä on 3 tilaa: INIT, CLR ja FLYINIT: Salli käyttäjän ohjelmoida ESC haluttu. Lähettää valintasignaalin mux_pwm: lle, joka lähettää suoraan PWM: n kaikille moottoreille. Silmukkaa takaisin itseensä, kunnes GO == '1'. CLR: Tyhjennä tiedot motor_ctl_wrapperissa ja pwm out -moduulissa. Lähettää kompensoidun PWM: n mux_pwm: n kautta. Tulo: GO, RESET, clk Lähtö: RST muille moduulien nollauksille, FullFlight signaalille FLY -tila, ajanjakso atmux_pwm.sv Tarkoitus: Tulo: Lähtö: PWM kaikille 4 moottorille. Pv:

Suositeltava: