Cuprins:

Quadcopter folosind placa Zybo Zynq-7000: 5 pași
Quadcopter folosind placa Zybo Zynq-7000: 5 pași

Video: Quadcopter folosind placa Zybo Zynq-7000: 5 pași

Video: Quadcopter folosind placa Zybo Zynq-7000: 5 pași
Video: Como convertir un dron Eachine Mini H8S 3D en un avion auto estabilizado de radiocontrol. RC. DIY 2024, Noiembrie
Anonim
Quadcopter folosind placa Zybo Zynq-7000
Quadcopter folosind placa Zybo Zynq-7000

Înainte de a începe, iată câteva lucruri pe care le doriți pentru proiect: Listă de piese 1x placă Digilent Zybo Zynq-7000 1x cadru Quadcopter capabil să monteze Zybo (fișier Adobe Illustrator pentru tăiere cu laser atașat) 4x Turnigy D3530 / 14 1100KV Motoare fără perii 4x Turnigy ESC Basic -18A Speed Controller 4x Elice (acestea trebuie să fie suficient de mari pentru a vă ridica quadcopterul) 2x nRF24L01 + transceiver 1x IMU BNO055 Cerințe software Xilinx Vivado 2016.2 NOTĂ: Motoarele de mai sus nu sunt singurele motoare care pot fi utilizate. Acestea sunt doar cele utilizate în acest proiect. Același lucru este valabil și pentru restul cerințelor de piese și software. Sperăm că aceasta este o înțelegere nerostită atunci când citiți acest Instructable.

Pasul 1: Executați modulul PWM

Programați un SystemVerilog simplu (sau alt program HDL) pentru a înregistra clapeta HI și clapeta LO folosind comutatoare de intrare. Cuplați PWM cu un singur ESC și un motor fără perii Turnigy. Verificați următoarele fișiere pentru a afla cum se calibrează ESC. Codul final este atașat la pasul 5 pentru modulul PWM. În acest pas este atașat un starter PWM Foaie de date ES: Turnigy ESC Foaie de date PDF (Lucrurile la care trebuie să fiți atenți sunt diferitele moduri pe care le puteți selecta folosind clapeta HI și LO)

Pasul 2: configurați designul blocului

Creați design de bloc Faceți dublu clic pe blocul nou generat Importați setările XPS descărcate aici: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Modificați setările Configurarea PS-PL M Interfața AXI GP0 Periferică I / O pini Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Timer de configurare 0 WatchdogClock Configuration FCLK_CLK0 și setați frecvența la 100 MHz Faceți I2C și SPI extern Conectați FCLK_CLK0 la M_AXI_GP0_ACLK Rulați automatizarea blocului Creați portul și apelați-l "gnd"

Pasul 3: Calibrați IMU

Calibrați IMU
Calibrați IMU

Transmițătorul BNO055 folosește comunicația I2C. (Lectura sugerată pentru începători: https://learn.sparkfun.com/tutorials/i2c) Driverul pentru a rula IMU se află aici: https://github.com/BoschSensortec/BNO055_driver Un quadcopter nu necesită utilizarea magnetometrului de la BNO055. Din această cauză, modul de operare necesar este modul IMU. Acest lucru se schimbă scriind un număr binar xxxx1000 în registrul OPR_MODE, unde „x” este „nu-mi pasă”. Setați acei biți la 0.

Pasul 4: Integrarea transmițătorului wireless

Integrează transmițătorul wireless
Integrează transmițătorul wireless
Integrează transmițătorul wireless
Integrează transmițătorul wireless

Transmițătorul fără fir utilizează comunicația SPI. Atașată este foaia de specificații pentru nRF24L01 + Un tutorial bun pe nrf24l01 +, dar cu arduino:

Pasul 5: Programați Zybo FPGA

Prezentare generală Aceste module sunt ultimele module utilizate pentru controlul PWM al quadcopterului. motor_ctl_wrapper.sv Scop: Învelișul ia unghiuri Euler și un procent de accelerație. Emite un PWM compensat care va permite quadcopterului să se stabilizeze. Acest bloc există, deoarece quadcopterele sunt predispuse la tulburări în aer și necesită un fel de stabilizare. Folosim unghiuri Euler, deoarece nu planificăm îndoiri sau unghiuri grele care ar putea provoca blocarea cardanului. Intrare: magistrală de date pe 25 de biți CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euler Y, [7: 0] Procentaj accelerație}, Ceas (clk), CLR sincron (sclr) Ieșire: motor 1 PWM, motor 2 PWM, motor 3 PWM, motor 4 PWM, procentaj accelerație PWM Procentul accelerației PWM este folosit pentru inițializarea ESC, care va dori o gamă pură de 30% - 70% de PWM, nu cea din valorile motorului 1-4 PWM. Avansat - Blocuri IP Vivado Zynq: 8 Adăugați (LUT) 3 Scade (LUT) 5 Multiplicatori (Block Memory (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Scop: Controlați hardware-ul, inclusiv MUX, ieșirea PWM și sclr pentru motor_ctl_wrapper. Orice mașină de stat finit (FSM) este utilizată pentru un singur lucru: controlați alte componente hardware. Orice abatere mare de la acest obiectiv poate determina presupusul FSM să ia forma unui alt tip de modul (contor, sumator etc.). Pwm_fsm are 3 stări: INIT, CLR și FLYINIT: Permiteți utilizatorului să programeze ESC ca dorit. Trimite un semnal selectat către mux_pwm care transmite PWM direct tuturor motoarelor. Bucle înapoi la sine până GO == '1'. CLR: Ștergeți datele din motor_ctl_wrapper și modulul pwm out. FLY: Buclați definitiv pentru a stabiliza quadcopterul (cu excepția cazului în care suntem resetați). Trimite PWM compensat prin mux_pwm. Intrare: GO, RESET, clk Ieșire: RST pentru alte resetări ale modulului, FullFlight pentru a semnaliza modul FLY, Perioadă de rulare atmux_pwm.sv Scop: Intrare: Ieșire: PWM pentru toate cele 4 motorspwm.sv Scop: Intrare: Ieșire:

Recomandat: