Daftar Isi:

Quadcopter Menggunakan Zybo Zynq-7000 Board: 5 Langkah
Quadcopter Menggunakan Zybo Zynq-7000 Board: 5 Langkah

Video: Quadcopter Menggunakan Zybo Zynq-7000 Board: 5 Langkah

Video: Quadcopter Menggunakan Zybo Zynq-7000 Board: 5 Langkah
Video: Introduction to SoC+FPGA - Marek Vašut, DENX Software Engineering GmbH 2024, November
Anonim
Quadcopter Menggunakan Papan Zybo Zynq-7000
Quadcopter Menggunakan Papan Zybo Zynq-7000

Sebelum kita mulai, berikut adalah beberapa hal yang Anda inginkan untuk proyek ini: Daftar Suku Cadang1x Papan Zybo Zynq-7000 Digilent 1x Bingkai Quadcopter yang dapat dipasang Zybo (file Adobe Illustrator untuk pemotongan laser terlampir) 4x Turnigy D3530/14 1100KV Brushless Motors 4x Turnigy ESC Basic -18A Speed Controller 4x Baling-baling (ini harus cukup besar untuk mengangkat quadcopter Anda) 2x nRF24L01+ transceiver 1x IMU BNO055Persyaratan Perangkat LunakXilinx Vivado 2016.2CATATAN: Motor di atas bukan satu-satunya motor yang dapat digunakan. Mereka hanya yang digunakan dalam proyek ini. Hal yang sama berlaku untuk sisa suku cadang dan persyaratan perangkat lunak. Mudah-mudahan, itu adalah pemahaman yang tak terucapkan saat membaca Instruksi ini.

Langkah 1: Jalankan Modul PWM

Program SystemVerilog sederhana (atau program HDL lainnya) untuk mendaftarkan throttle HI dan throttle LO menggunakan sakelar input. Kaitkan PWM dengan satu ESC dan Turnigy Brushless Motor. Periksa file berikut untuk mengetahui cara mengkalibrasi ESC. Kode terakhir terlampir pada langkah 5 untuk modul PWM. Starter PWM terlampir dalam langkah ini Lembar Data ESC: Turnigy ESC Datasheet PDF (Hal yang perlu diperhatikan adalah mode berbeda yang dapat Anda pilih menggunakan throttle HI dan LO)

Langkah 2: Siapkan Desain Blok

Buat Desain Blok Klik dua kali blok yang baru dibuat. Impor pengaturan XPS yang diunduh di sini: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Ubah pengaturan Konfigurasi PS-PL M Antarmuka AXI GP0 Peripheral I/ O Pin Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Timer Konfigurasi 0 WatchdogClock Configuration FCLK_CLK0 dan atur frekuensi ke 100 MHzBuat I2C dan SPI eksternal Hubungkan FCLK_CLK0 ke M_AXI_GP0_ACLK Jalankan otomatisasi blok Buat Port dan beri nama "gnd"

Langkah 3: Kalibrasi IMU

Kalibrasi IMU
Kalibrasi IMU

Transceiver BNO055 menggunakan komunikasi I2C. (Bacaan yang Disarankan Pemula: https://learn.sparkfun.com/tutorials/i2c)Pengemudi untuk menjalankan IMU terletak di sini: https://github.com/BoschSensortec/BNO055_driver Quadcopter tidak memerlukan penggunaan magnetometer dari BNO055. Karena itu, mode operasi yang diperlukan adalah mode IMU. Ini diubah dengan menulis bilangan biner xxxx1000 ke register OPR_MODE, di mana 'x' adalah 'tidak peduli'. Atur bit-bit itu ke 0.

Langkah 4: Integrasikan Transceiver Nirkabel

Integrasikan Transceiver Nirkabel
Integrasikan Transceiver Nirkabel
Integrasikan Transceiver Nirkabel
Integrasikan Transceiver Nirkabel

Transceiver nirkabel menggunakan komunikasi SPI. Terlampir adalah lembar spesifikasi untuk nRF24L01+Tutorial yang bagus tentang nrf24l01+ tetapi dengan arduino:

Langkah 5: Program Zybo FPGA

Gambaran UmumModul ini adalah modul terakhir yang digunakan untuk mengontrol PWM quadcopter. motor_ctl_wrapper.svPurpose: Wrapper mengambil sudut Euler dan persentase throttle. Ini menghasilkan PWM terkompensasi yang memungkinkan quadcopter stabil. Blok ini ada, karena quadcopters rentan terhadap gangguan di udara dan memerlukan semacam stabilisasi. Kami menggunakan sudut Euler, karena kami tidak merencanakan membalik atau sudut berat yang dapat menyebabkan Gimbal Lock. Input: bus data 25-bit CTL_IN = { [24] GO, [23:16] Euler X, [15: 8] Euler Y, [7:0] Persentase Throttle }, Clock (clk), Synchronous CLR (sclr)Output: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Persentase Throttle PWM Persentase Throttle PWM adalah digunakan untuk menginisialisasi ESC, yang akan menginginkan rentang PWM murni 30% - 70%, bukan yang berasal dari nilai PWM Motor 1-4. Lanjutan - Blok IP Vivado Zynq:8 Tambah (LUT)3 Kurangi (LUT)5 Pengganda (Block Memory (BRAM))clock_div.sv (AKA pwm_fsm.sv) Tujuan: Mengontrol perangkat keras, termasuk MUX, output PWM, dan sclr untuk motor_ctl_wrapper. Setiap Finite State Machine (FSM) digunakan untuk satu hal: mengontrol perangkat keras lainnya. Setiap penyimpangan besar dari tujuan ini dapat menyebabkan FSM yang seharusnya mengambil bentuk jenis modul yang berbeda (penghitung, penambah, dll.). pwm_fsm memiliki 3 status: INIT, CLR, dan FLYINIT: Izinkan pengguna untuk memprogram ESC sebagai diinginkan. Mengirim sinyal pilih ke mux_pwm yang mengeluarkan PWM langsung ke semua motor. Loop kembali ke dirinya sendiri sampai GO == '1'. CLR: Hapus data di motor_ctl_wrapper dan modul pwm out. FLY: Loop selamanya untuk menstabilkan quadcopter (kecuali jika kita reset). Mengirimkan kompensasi PWM melalui mux_pwm. Input: GO, RESET, clkOutput: RST untuk reset modul lainnya, FullFlight untuk memberi sinyal mode FLY, Periode untuk menjalankan atmux_pwm.svTujuan:Input:Output: PWM untuk keempat motorspwm.svTujuan:Input:Output:

Direkomendasikan: