İçindekiler:

Zybo Zynq-7000 Kartını Kullanan Quadcopter: 5 Adım
Zybo Zynq-7000 Kartını Kullanan Quadcopter: 5 Adım

Video: Zybo Zynq-7000 Kartını Kullanan Quadcopter: 5 Adım

Video: Zybo Zynq-7000 Kartını Kullanan Quadcopter: 5 Adım
Video: ZYNQ SoC HW/SW TASARIMI Ders10: ZYNQ Boot Stages | ZYNQ nasıl boot ediliyor | BootROM | FSBL 2024, Kasım
Anonim
Zybo Zynq-7000 Kartını Kullanan Quadcopter
Zybo Zynq-7000 Kartını Kullanan Quadcopter

Başlamadan önce, proje için istediğiniz bazı şeyler şunlardır: Parça Listesi1x Digilent Zybo Zynq-7000 board 1x Quadcopter Frame Zybo'yu monte edebilir (lazer kesim için Adobe Illustrator dosyası ekli) 4x Turnigy D3530/14 1100KV Fırçasız Motorlar 4x Turnigy ESC Basic -18A Hız Kontrol Cihazı 4x Pervaneler(Bunların quadcopter'inizi kaldıracak kadar büyük olması gerekir) 2x nRF24L01+ alıcı-verici 1x IMU BNO055Yazılım GereksinimleriXilinx Vivado 2016.2NOT: Yukarıdaki motorlar kullanılabilecek tek motor değildir. Onlar sadece bu projede kullanılanlardır. Aynısı diğer parçalar ve yazılım gereksinimleri için de geçerlidir. Umarım, bu Eğitilebilir Yazıyı okurken bu konuşulmayan bir anlayıştır.

Adım 1: PWM Modülünü Çalıştırın

Giriş anahtarlarını kullanarak HI ve LO gazını kaydetmek için basit bir SystemVerilog (veya başka bir HDL programı) programlayın. PWM'yi tek bir ESC ve Turnigy Fırçasız Motor ile bağlayın. ESC'nin nasıl kalibre edileceğini öğrenmek için aşağıdaki dosyaları kontrol edin. Son kod, PWM modülü için 5. adımda eklenmiştir. Bu adımda bir PWM başlatıcı eklenmiştirESC Veri Sayfası: Turnigy ESC Veri Sayfası PDF (Dikkat etmeniz gereken şey, HI ve LO gazını kullanarak seçebileceğiniz farklı modlardır)

Adım 2: Blok Tasarımını Ayarlayın

Blok Tasarımı Oluştur Yeni oluşturulan bloğa çift tıklayın Buradan indirilen XPS ayarlarını içe aktarın: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Ayarları değiştirin PS-PL Konfigürasyonu M AXI GP0 arayüzü Çevre Birimi I/ O Pinler Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Konfigürasyon Zamanlayıcı 0 WatchdogClock Konfigürasyonu FCLK_CLK0 ve frekansı 100 MHz olarak ayarlayın I2C ve SPI harici bağlayın FCLK_CLK0'ı M_AXI_GP0_ACLK'ya bağlayın Blok otomasyonunu çalıştırın Port oluşturun ve "gnd" olarak adlandırın

3. Adım: IMU'yu kalibre edin

IMU'yu kalibre edin
IMU'yu kalibre edin

BNO055 alıcı-verici, I2C iletişimini kullanır. (Yeni Başlayanlar İçin Önerilen Okuma: https://learn.sparkfun.com/tutorials/i2c)IMU'yu çalıştıracak sürücü şurada bulunur: https://github.com/BoschSensortec/BNO055_driverA quadcopter, manyetometre kullanımını gerektirmez. BNO055. Bu nedenle gerekli çalışma modu IMU modudur. Bu, OPR_MODE kaydına xxxx1000 ikili sayı yazılarak değiştirilir, burada 'x' bir 'umurumda değil'dir. Bu bitleri 0'a ayarlayın.

Adım 4: Kablosuz Alıcı-Vericiyi Entegre Edin

Kablosuz Alıcı-Vericiyi Entegre Edin
Kablosuz Alıcı-Vericiyi Entegre Edin
Kablosuz Alıcı-Vericiyi Entegre Edin
Kablosuz Alıcı-Vericiyi Entegre Edin

Kablosuz alıcı-verici SPI iletişimini kullanır. nrf24l01+ ama arduino ile nRF24L01+A iyi öğretici için teknik özellik sayfası ektedir:

Adım 5: Zybo FPGA'yı programlayın

Genel BakışBu modüller, quadcopter'ın PWM'sinin kontrolü için kullanılan son modüllerdir. motor_ctl_wrapper.svPurpose: Sarıcı, Euler açılarını ve bir kısma yüzdesini alır. Quadcopter'in stabilize olmasını sağlayacak telafi edilmiş bir PWM verir. Bu blok mevcuttur, çünkü quadcopterler havadaki bozulmalara eğilimlidir ve bir çeşit stabilizasyon gerektirir. Gimbal Lock'a neden olabilecek çevirmeler veya ağır açılar planlamadığımız için Euler açıları kullanıyoruz. Giriş: 25 bit veri yolu CTL_IN = { [24] GO, [23:16] Euler X, [15: 8] Euler Y, [7:0] Gaz Kelebeği Yüzdesi }, Saat (clk), Senkron CLR (sclr)Çıkış: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Gaz Kelebeği Yüzdesi PWM Gaz Kelebeği Yüzdesi PWM Motor 1-4 PWM değerlerinden değil, saf %30 - %70 PWM aralığı isteyecek olan ESC'yi başlatmak için kullanılır. Gelişmiş - Vivado Zynq IP Blokları:8 Ekler (LUT'ler)3 Çıkarmalar (LUT'lar)5 Çarpanlar (Blok Bellek (BRAM))clock_div.sv (AKA pwm_fsm.sv) Amaç: Motor_ctl_wrapper için MUX, PWM çıkışı ve sclr dahil olmak üzere donanımı kontrol edin. Herhangi bir Sonlu Durum Makinesi (FSM) bir şey için kullanılır: diğer donanımı kontrol etmek. Bu hedeften herhangi bir büyük sapma, varsayılan FSM'nin farklı bir modül tipi (sayıcı, toplayıcı, vb.) şeklini almasına neden olabilir.pwm_fsm'nin 3 durumu vardır: INIT, CLR ve FLYINIT: Kullanıcının ESC'yi aşağıdaki gibi programlamasına izin verin. İstenen. Tüm motorlara düz PWM çıkışı veren mux_pwm'ye bir seçme sinyali gönderir. GO == '1' olana kadar kendine geri döner. CLR: motor_ctl_wrapper ve pwm out modülündeki verileri temizleyin. FLY: Quadcopter'ı stabilize etmek için sonsuza kadar döngü yapın (sıfırlanmadıkça). Telafi edilmiş PWM'yi mux_pwm aracılığıyla gönderir. Giriş: GO, RESET, clkOutput: Diğer modül sıfırlamaları için RST, FLY modunu sinyallemek için FullFlight, atmux_pwm.sv'yi çalıştırmak için süre Amaç:Giriş:Çıkış: 4 motorun tümü için PWM Amaç:Giriş:Çıkış:

Önerilen: