Innehållsförteckning:

Quadcopter med Zybo Zynq-7000 Board: 5 steg
Quadcopter med Zybo Zynq-7000 Board: 5 steg

Video: Quadcopter med Zybo Zynq-7000 Board: 5 steg

Video: Quadcopter med Zybo Zynq-7000 Board: 5 steg
Video: Digilent Zybo-Z7 Dev Board | Digi-Key Daily 2024, November
Anonim
Quadcopter med Zybo Zynq-7000 Board
Quadcopter med Zybo Zynq-7000 Board

Innan vi sätter igång, här är några saker du vill ha för projektet: Dellista1x Digilent Zybo Zynq-7000 board 1x Quadcopter Frame som kan monteras Zybo (Adobe Illustrator-fil för laserskärning bifogad) 4x Turnigy D3530/14 1100KV borstlösa motorer 4x Turnigy ESC Basic -18A Speed Controller 4x Propeller (dessa måste vara tillräckligt stora för att lyfta din quadcopter) 2x nRF24L01+ transceiver 1x IMU BNO055Software KravXilinx Vivado 2016.2OBS: Motorerna ovan är inte de enda motorerna som kan användas. Det är bara de som används i detta projekt. Detsamma gäller resten av delar och programvarukrav. Förhoppningsvis är det en outtalad förståelse när du läser denna instruerbara.

Steg 1: Kör PWM -modulen

Programmera ett enkelt SystemVerilog (eller annat HDL -program) för att registrera HI -gas och LO -gas med hjälp av ingångsbrytare. Haka fast PWM med en enda ESC och Turnigy borstlös motor. Kontrollera följande filer för att ta reda på hur du kalibrerar ESC. Den slutliga koden bifogas i steg 5 för PWM -modulen. En PWM -starter är bifogad i detta steg ESC -datablad: Turnigy ESC -datablad PDF (saker att vara uppmärksam på är de olika lägen du kan välja med hjälp av HI- och LO -gasreglage)

Steg 2: Konfigurera blockdesignen

Skapa blockdesign Dubbelklicka på det nybildade blocket Importera XPS-inställningar som laddats ner här: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Ändra inställningar PS-PL-konfiguration M AXI GP0-gränssnitt Perifer I/ O Pins Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Konfigurationstimer 0 WatchdogClock Configuration FCLK_CLK0 och ställ in frekvensen till 100 MHzMake I2C och SPI extern Anslut FCLK_CLK0 till M_AXI_GP0_ACLK Kör blockera "skapa block" och skapa "gata block" och skapa "gon" och skapa "gon"

Steg 3: Kalibrera IMU

Kalibrera IMU
Kalibrera IMU

BNO055 -sändtagaren använder I2C -kommunikation. (Nybörjarens föreslagna läsning: https://learn.sparkfun.com/tutorials/i2c) Föraren för att köra IMU finns här: https://github.com/BoschSensortec/BNO055_driver En quadcopter kräver inte användning av magnetometern från BNO055. På grund av detta är det nödvändiga driftsläget IMU -läget. Detta ändras genom att skriva ett binärt tal xxxx1000 till OPR_MODE -registret, där 'x' är ett 'don't care'. Ställ in dessa bitar till 0.

Steg 4: Integrera den trådlösa sändtagaren

Integrera den trådlösa sändtagaren
Integrera den trådlösa sändtagaren
Integrera den trådlösa sändtagaren
Integrera den trådlösa sändtagaren

Den trådlösa sändtagaren använder SPI -kommunikation. Bifogat är specifikationsbladet för nRF24L01+ En bra handledning om nrf24l01+ men med arduino:

Steg 5: Programmera Zybo FPGA

Översikt Dessa moduler är de sista modulerna som används för kontroll av quadcopterens PWM. motor_ctl_wrapper.sv Syfte: Omslaget tar in Euler -vinklar och en gasprocent. Den matar ut en kompenserad PWM som gör att quadcoptern kan stabiliseras. Detta block finns, eftersom quadcopters är benägna att störa luften och kräver någon form av stabilisering. Vi använder Euler-vinklar, eftersom vi inte planerar att vända eller tunga vinklar som kan orsaka Gimbal Lock. Inmatning: 25-bitars databas 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 Throttle Percentage PWM is används för att initiera ESC, som vill ha ett rent 30% - 70% PWM -område, inte det från motor 1-4 PWM -värden Avancerat - Vivado Zynq IP -block: 8 Adds (LUTs) 3 Subtracts (LUTs) 5 Multiplikatorer (Block Memory (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Syfte: Kontrollera hårdvaran, inklusive MUX, PWM -utdata och sclr för motor_ctl_wrapper. Alla Finite State Machine (FSM) används för en sak: styr annan hårdvara. Varje stor avvikelse från detta mål kan få den förmodade FSM att ta formen av en annan typ av modul (räknare, adderare, etc.). Pwm_fsm har 3 tillstånd: INIT, CLR och FLYINIT: Låt användaren programmera ESC som önskad. Skickar en valt signal till mux_pwm som matar ut rak PWM till alla motorer. Loopar tillbaka till sig själv tills GO == '1'. CLR: Rensa data i motor_ctl_wrapper och pwm out -modulen. FLY: Loop för alltid för att stabilisera quadcoptern (om vi inte återställs). Skickar den kompenserade PWM genom mux_pwm. Input: GO, RESET, clkOutput: RST för andra modulåterställningar, FullFlight för att signalera FLY -läge, Period för att köra atmux_pwm.sv Syfte: Input: Output: PWM för alla 4 motorspwm.sv Syfte: Input: Output:

Rekommenderad: