Mündəricat:

Zybo Zynq-7000 Board istifadə edən Quadcopter: 5 addım
Zybo Zynq-7000 Board istifadə edən Quadcopter: 5 addım

Video: Zybo Zynq-7000 Board istifadə edən Quadcopter: 5 addım

Video: Zybo Zynq-7000 Board istifadə edən Quadcopter: 5 addım
Video: Zybo Zynq-7000 DMA Audio Project Demo 2024, Iyul
Anonim
Zybo Zynq-7000 Board istifadə edən Quadcopter
Zybo Zynq-7000 Board istifadə edən Quadcopter

İşə başlamazdan əvvəl, layihə üçün istədiyiniz bəzi şeylər var: Parçalar siyahısı1x Digilent Zybo Zynq-7000 lövhəsi 1x Quadcopter Çərçivəsi Zybo'yu quraşdıra bilir (lazer kəsmə üçün Adobe Illustrator faylı əlavə olunur) 4x Turnigy D3530/14 1100KV Fırçasız Motorlar 4x Turnigy ESC Basic -18A Sürət Nəzarətçisi 4x Pervaneler (bunlar quadcopterinizi qaldırmaq üçün kifayət qədər böyük olmalıdır) 2x nRF24L01+ alıcı -verici 1x IMU BNO055 Proqram Tələbləri Xilinx Vivado 2016.2 XƏBƏRDARLIQ: Yuxarıdakı mühərriklər istifadə edilə bilən tək mühərriklər deyil. Yalnız bu layihədə istifadə olunanlardır. Eyni şey digər hissələrə və proqram tələblərinə də aiddir. İnşallah, bu Təlimatı oxuyanda söylənməyən bir anlayışdır.

Addım 1: PWM Modulunu Çalışdırın

Giriş açarlarından istifadə edərək HI qazını və LO qazını qeyd etmək üçün sadə bir SystemVerilog (və ya digər HDL proqramı) proqramlaşdırın. PWM -ni tək bir ESC və Turnigy Fırçasız Motorla bağlayın. ESC -ni necə kalibr etməyi öyrənmək üçün aşağıdakı faylları yoxlayın. Son kod PWM modulu üçün 5 -ci addımda əlavə olunur. Bu addımda bir PWM başlanğıcı əlavə olunur ESC Datasheet: Turnigy ESC Datasheet PDF (Diqqət etməli olduğunuz şeylər HI və LO qazı ilə seçə biləcəyiniz fərqli rejimlərdir)

Addım 2: Blok Dizaynını Qurun

Blok Dizaynı yaradın Buradan yüklənmiş yeni yaradılmış bloka XPS parametrlərini iki dəfə vurun: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Parametrləri dəyişdirin PS-PL Konfiqurasiya M AXI GP0 interfeysi Periferik I/ O Pin Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Konfiqurasiya Taymeri 0 WatchdogClock Konfiqurasiyası FCLK_CLK0 və tezliyi 100 MHz -ə qoyun

Addım 3: IMU -nu kalibr edin

IMU -nu kalibr edin
IMU -nu kalibr edin

BNO055 ötürücü I2C rabitəsindən istifadə edir. (Başlayanın Təklif Edilən Oxuması: https://learn.sparkfun.com/tutorials/i2c) IMU -nu idarə etmək üçün sürücü burada yerləşir: https://github.com/BoschSensortec/BNO055_driver Kvadrokopter maqnitometrin istifadəsini tələb etmir BNO055. Bu səbəbdən lazım olan iş rejimi IMU rejimidir. Bu, xxxx1000 ikili nömrəsini OPR_MODE reyestrinə yazmaqla dəyişdirilir, burada 'x' - 'vecinə deyil'. Bu bitləri 0 olaraq təyin edin.

Addım 4: Simsiz ötürücünü birləşdirin

Simsiz qəbuledicini birləşdirin
Simsiz qəbuledicini birləşdirin
Simsiz qəbuledicini birləşdirin
Simsiz qəbuledicini birləşdirin

Simsiz ötürücü SPI ünsiyyətindən istifadə edir. NRF24L01+ üçün nrf24l01+, lakin arduino ilə yaxşı bir dərslik üçün spesifikasiya vərəqi əlavə edilmişdir:

Addım 5: Zybo FPGA proqramlaşdırın

Bu modullar, quadcopterin PWM -in idarə edilməsi üçün istifadə olunan son modullardır. motor_ctl_wrapper.svMəqsəd: Sarıcı Euler açılarını və bir qaz tənzimləmə faizini alır. Quadcopterin sabitləşməsinə imkan verəcək kompensasiya edilmiş PWM istehsal edir. Bu blok mövcuddur, çünki quadcopters havada pozulmalara meyllidir və bir növ sabitləşmə tələb edir. Gimbal Kilidinə səbəb ola biləcək sürüşmələr və ya ağır açılar planlaşdırmadığımız üçün Euler açılarından istifadə edirik. Giriş: 25 bitlik məlumat ötürülməsi CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euler Y, [7: 0] Gaz Kelebeği Yüzdəsi}, Saat (clk), Sinxron CLR (sclr) Çıxış: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Gaz Kelebeği Yüzdə PWM, Kelebek Yüzdə PWM ESC -ni işə salmaq üçün istifadə olunur, bu da Motor 1-4 PWM dəyərlərindən deyil, təmiz 30% - 70% PWM aralığına ehtiyac duyacaq. Ətraflı - Vivado Zynq IP Blokları: 8 Əlavə (LUT) 3 Çıxarış (LUT) 5 Çarpanlar (Blok Yaddaşı (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Məqsəd: MUX, PWM çıxışı və motor_ctl_wrapper üçün sclr daxil olmaqla aparatı idarə edin. Hər hansı bir sonlu vəziyyət maşını (FSM) bir şey üçün istifadə olunur: digər avadanlıqları idarə etmək. Bu hədəfdən hər hansı bir böyük sapma, ehtimal olunan FSM -nin fərqli bir modul (sayıcı, toplayıcı və s.) Şəklində olmasına səbəb ola bilər. arzulanan. Mux_pwm -ə bütün mühərriklərə düz PWM çıxaran seçilmiş bir siqnal göndərir. GO == '1'. CLR: motor_ctl_wrapper və pwm out modulundakı məlumatları silin. Kompensasiya edilmiş PWM -ni mux_pwm vasitəsilə göndərir. Giriş: GO, RESET, clkOutput: Digər modulların sıfırlanması üçün RST, FLY rejimini siqnal etmək üçün FullFlight, atmux_pwm.sv -in işləmə müddəti:

Tövsiyə: