INHOUDSOPGAWE:

Quadcopter met behulp van Zybo Zynq-7000 Board: 5 stappe
Quadcopter met behulp van Zybo Zynq-7000 Board: 5 stappe

Video: Quadcopter met behulp van Zybo Zynq-7000 Board: 5 stappe

Video: Quadcopter met behulp van Zybo Zynq-7000 Board: 5 stappe
Video: Volumebepaling met behulp van een drone 2024, November
Anonim
Quadcopter met behulp van Zybo Zynq-7000 Board
Quadcopter met behulp van Zybo Zynq-7000 Board

Hier is 'n paar dinge wat u wil hê vir die projek voordat ons begin: Onderdele-lys 1x Digilent Zybo Zynq-7000-bord 1x Quadcopter-raam wat Zybo kan monteer (Adobe Illustrator-lêer vir lasersny) 4x Turnigy D3530/14 1100KV Brushless Motors 4x Turnigy ESC Basic -18A Speed Controller 4x Propellers (dit moet groot genoeg wees om u quadcopter op te lig) 2x nRF24L01+ transceiver 1x IMU BNO055 Sagtewarevereistes Xilinx Vivado 2016.2 OPMERKING: Die motors hierbo is nie die enigste motors wat gebruik kan word nie. Dit is net diegene wat in hierdie projek gebruik word. Dieselfde geld vir die res van die onderdele en sagtewarevereistes. Hopelik is dit 'n onuitgesproke begrip wanneer u hierdie instruksies lees.

Stap 1: Begin die PWM -module

Programeer 'n eenvoudige SystemVerilog (of ander HDL -program) om HI -gashendel en LO -gashendel te registreer met behulp van insetskakelaars. Haak die PWM vas met 'n enkele ESC en Turnigy Brushless Motor. Kyk na die volgende lêers om uit te vind hoe u die ESC kan kalibreer. Die finale kode is aangeheg in stap 5 vir die PWM -module. 'N PWM -aansitter is aangeheg in hierdie stap ESC -gegewensblad: Turnigy ESC -datablad PDF (waaraan u aandag moet gee, is die verskillende modusse wat u kan kies met behulp van HI- en LO -versneller)

Stap 2: Stel die blokontwerp op

Skep blokontwerp Dubbelklik op die nuut gegenereerde blok Invoer XPS-instellings wat hier afgelaai is: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Verander instellings PS-PL Configuration M AXI GP0 interface Peripheral 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 en stel die frekwensie in op 100 MHz Maak I2C en SPI ekstern Verbind FCLK_CLK0 met M_AXI_GP0_ACLK Skakel blokkeer "Create block" outomatiseer "Create block" outomatiseer

Stap 3: Kalibreer die IMU

Kalibreer die IMU
Kalibreer die IMU

Die BNO055 -ontvanger gebruik I2C -kommunikasie. (Voorgestelde lesing vir beginners: https://learn.sparkfun.com/tutorials/i2c) Die bestuurder om die IMU te bestuur, is hier geleë: https://github.com/BoschSensortec/BNO055_driver 'n Quadcopter benodig nie die magnetometer van die BNO055. As gevolg hiervan is die nodige werksmodus die IMU -modus. Dit word verander deur 'n binêre getal xxxx1000 in die OPR_MODE -register te skryf, waar 'x' 'gee nie' nie. Stel die stukkies op 0.

Stap 4: Integreer die draadlose ontvanger

Integreer die draadlose ontvanger
Integreer die draadlose ontvanger
Integreer die draadlose ontvanger
Integreer die draadlose ontvanger

Die draadlose ontvanger gebruik SPI -kommunikasie. Hierby is die spesifikasieblad vir die nRF24L01+ 'n Goeie handleiding oor die nrf24l01+ maar met arduino:

Stap 5: Programmeer die Zybo FPGA

Oorsig Hierdie modules is die finale modules wat gebruik word vir die beheer van die PWM van die quadcopter. motor_ctl_wrapper.sv Doel: die omhulsel neem Euler -hoeke en 'n versnellingspersentasie in. Dit lewer 'n vergoedde PWM uit wat die quadcopter in staat sal stel om te stabiliseer. Hierdie blok bestaan omdat vierkopters geneig is tot versteurings in die lug en 'n soort stabilisering vereis. Ons gebruik Euler-hoeke, aangesien ons nie van plan is om flips of swaar hoeke te veroorsaak wat Gimbal Lock kan veroorsaak nie. Invoer: 25-bis data-bus CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euler Y, [7: 0] Throttle Percentage}, Clock (clk), Synchronous CLR (sclr) Output: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Throttle Percentage PWM The Throttle Percentage PWM is word gebruik vir die initialisering van die ESC, wat 'n suiwer PWM -reeks van 30% - 70% wil hê, nie die van die motor 1-4 PWM -waardes nie. Vermenigvuldigers (Blokgeheue (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Doel: Beheer die hardeware, insluitend die MUX-, PWM -uitset en sclr vir motor_ctl_wrapper. Enige eindige staatsmasjien (FSM) word vir een ding gebruik: beheer ander hardeware. Enige groot afwyking van hierdie doelwit kan veroorsaak dat die veronderstelde FSM die vorm aanneem van 'n ander tipe module (teller, opteller, ens.). Pwm_fsm het 3 toestande: INIT, CLR en FLYINIT: Laat die gebruiker toe om die ESC te programmeer as verlang. Stuur 'n geselekteerde sein na mux_pwm wat reguit PWM na alle motors stuur. Loop terug tot homself totdat GO == '1'. CLR: Vee data uit in motor_ctl_wrapper en die pwm out -module. FLY: Loop vir ewig om die quadcopter te stabiliseer (tensy ons herstel word). Stuur die vergoedde PWM deur die mux_pwm. Invoer: GO, RESET, clkOutput: RST vir ander module -terugstellings, FullFlight om FLY -modus aan te dui, Periode om atmux_pwm.sv uit te voer Doel: Invoer: Uitset: PWM vir al 4 motorspwm.sv Doel: Invoer: Uitset:

Aanbeveel: