Tartalomjegyzék:

Quadcopter a Zybo Zynq-7000 tábla használatával: 5 lépés
Quadcopter a Zybo Zynq-7000 tábla használatával: 5 lépés

Videó: Quadcopter a Zybo Zynq-7000 tábla használatával: 5 lépés

Videó: Quadcopter a Zybo Zynq-7000 tábla használatával: 5 lépés
Videó: Zybo Zynq-7000 DMA Audio Project Demo 2024, November
Anonim
Quadcopter a Zybo Zynq-7000 Board használatával
Quadcopter a Zybo Zynq-7000 Board használatával

Mielőtt elkezdenénk, íme néhány dolog, amit szeretne a projekthez: Alkatrészlista 1x Digilent Zybo Zynq-7000 tábla 1x Quadcopter keret, amely Zybo-ra szerelhető (Adobe Illustrator fájl lézervágáshoz csatolva) 4x Turnigy D3530/14 1100KV kefe nélküli motorok 4x Turnigy ESC Basic -18A sebességszabályozó 4x légcsavar (ezeknek elég nagynak kell lenniük ahhoz, hogy felemeljék a quadcoptert) 2x nRF24L01+ adó -vevő 1x IMU BNO055SzoftverkövetelményekXilinx Vivado 2016.2MEGJEGYZÉS: A fenti motorok nem az egyetlen használható motorok. Ők csak azok, akiket ebben a projektben használnak. Ugyanez vonatkozik a többi alkatrészre és a szoftverkövetelményekre is. Remélhetőleg ez egy kimondatlan megértés, amikor elolvassa ezt az utasítást.

1. lépés: Indítsa el a PWM modult

Programozzon egy egyszerű SystemVerilog programot (vagy más HDL programot) a HI és LO fojtószelep regisztrálásához a bemeneti kapcsolók segítségével. Akassza a PWM -et egyetlen ESC -vel és Turnigy kefe nélküli motorral. Ellenőrizze a következő fájlokat, hogy megtudja, hogyan kell kalibrálni az ESC -t. A végső kód az 5. lépésben található a PWM modulhoz. Ebben a lépésben egy PWM indítót mellékelünk. ESC adatlap: Turnigy ESC adatlap PDF (Figyelembe kell venni a különböző módokat, amelyeket a HI és LO fojtószelep segítségével választhat)

2. lépés: Állítsa be a blokktervet

Blokktervezés létrehozása Kattintson duplán az újonnan létrehozott blokkra Az XPS-beállítások importálása innen letölthető: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Beállítások módosítása PS-PL Configuration M AXI GP0 interfész Perifériás 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 and set rate 100 MHz I2C és SPI external Connect FCLK_CLK0 beállítása M_AXI_GP0_ACLK Futtassa a blokk automatizálását

3. lépés: Kalibrálja az IMU -t

Kalibrálja az IMU -t
Kalibrálja az IMU -t

A BNO055 adó -vevő I2C kommunikációt használ. (A kezdők által javasolt olvasmány: https://learn.sparkfun.com/tutorials/i2c) Az IMU futtatásához szükséges illesztőprogram itt található: https://github.com/BoschSensortec/BNO055_driver A quadcopter nem igényli a magnetométer használatát a BNO055. Emiatt a szükséges üzemmód az IMU mód. Ezt úgy módosítják, hogy az xxxx1000 bináris számot az OPR_MODE regiszterbe írják, ahol az „x” egy „nem érdekel”. Állítsa ezeket a biteket 0 -ra.

4. lépés: Integrálja a vezeték nélküli adó -vevőt

Integrálja a vezeték nélküli adó -vevőt
Integrálja a vezeték nélküli adó -vevőt
Integrálja a vezeték nélküli adó -vevőt
Integrálja a vezeték nélküli adó -vevőt

A vezeték nélküli adó -vevő SPI kommunikációt használ. Csatolva az nRF24L01+ specifikációs lapja. Egy jó oktatóanyag az nrf24l01+ -ról, de arduino-val:

5. lépés: Programozza a Zybo FPGA -t

Ezek a modulok a quadcopter PWM vezérléséhez használt utolsó modulok. motor_ctl_wrapper.sv Cél: A csomagolás Euler szögeket és fojtószelep százalékokat vesz fel. Kompenzált PWM -et ad ki, amely lehetővé teszi a quadcopter stabilizálódását. Ez a blokk létezik, mivel a quadcopterek hajlamosak a levegő zavarására, és valamilyen stabilizációt igényelnek. Euler-szögeket használunk, mivel nem tervezünk olyan fordulatokat vagy nehéz szögeket, amelyek Gimbal Lock-ot okozhatnak. Bemenet: 25 bites busz adat CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euler Y, [7: 0] fojtószelep százalék}, óra (clk), szinkron CLR (sclr) kimenet: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Fojtószázalék PWM A fojtószelep százalékos PWM az ESC inicializálásához, amely tiszta 30% - 70% -os PWM tartományt akar, nem a Motor 1-4 PWM értékeit. Továbbfejlesztett - Vivado Zynq IP blokkok: 8 Hozzáadás (LUT) 3 Kivonás (LUT) 5 Szorzók (blokk memória (BRAM)) clock_div.sv (más néven pwm_fsm.sv) Cél: A hardver vezérlése, beleértve a MUX, a PWM kimenetet és a motor_ctl_wrapper sclr -jét. Bármely véges állapotú gépet (FSM) egy dologra használnak: más hardver vezérlésére. Ettől a célkitűzéstől való bármilyen nagy eltérés azt eredményezheti, hogy a feltételezett FSM más típusú modult (számlálót, összeadót stb.) Ölthet. kívánatos. Kiválasztási jelet küld a mux_pwm -nek, amely egyenes PWM -t ad ki minden motornak. Visszatér önmagához, amíg a GO == '1' nem lesz. CLR: Törölje az adatokat a motor_ctl_wrapper és a pwm out modulban. A kompenzált PWM -et elküldi a mux_pwm -en keresztül. Bemenet: GO, RESET, clk:

Ajánlott: