Isi kandungan:

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

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

Video: Quadcopter Menggunakan Papan Zybo Zynq-7000: 5 Langkah
Video: Будущее на Embedded World 2019: тепловая плата Sequana 2024, November
Anonim
Quadcopter Menggunakan Papan Zybo Zynq-7000
Quadcopter Menggunakan Papan Zybo Zynq-7000

Sebelum kita memulakan, berikut adalah beberapa perkara yang anda mahukan untuk projek ini: Senarai Bahagian1x Digilent Zybo Zynq-7000 board 1x Quadcopter Frame mampu memasang Zybo (Adobe Illustrator file for lasercutting attach) 4x Turnigy D3530 / 14 1100KV Brushless Motors 4x Turnigy ESC Basic -18A Speed Controller 4x Propeller (ini mesti cukup besar untuk mengangkat quadcopter anda) 2x nRF24L01 + transceiver 1x IMU BNO055 Syarat PerisianXilinx Vivado 2016.2NOTE: Motor di atas bukan satu-satunya motor yang boleh digunakan. Hanya ini yang digunakan dalam projek ini. Begitu juga dengan bahagian dan keperluan perisian yang lain. Mudah-mudahan, itu adalah pemahaman yang tidak terucapkan ketika membaca Instructable ini.

Langkah 1: Jalankan Modul PWM

Programkan SystemVerilog sederhana (atau program HDL lain) untuk mendaftarkan pendikit HI dan pendikit LO menggunakan suis input. Hubungkan PWM dengan satu ESC dan Turnigy Brushless Motor. Periksa fail berikut untuk mengetahui cara mengkalibrasi ESC. Kod akhir dilampirkan pada langkah 5 untuk modul PWM. Permulaan PWM dilampirkan dalam langkah ini Lembar Data ESC: Turnigy ESC Datasheet PDF (Perkara yang perlu diberi perhatian adalah pelbagai mod yang boleh anda pilih menggunakan HI dan LO throttle)

Langkah 2: Siapkan Reka Bentuk Blok

Buat Reka Bentuk Blok Klik dua kali tetapan Import XPS blok yang baru dihasilkan yang dimuat turun di sini: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Ubah tetapan Konfigurasi PS-PL Konfigurasi M AXI GP0 antara muka Periferal I / O Pins Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Configuration Timer 0 WatchdogClock Configuration FCLK_CLK0 dan tetapkan frekuensi ke 100 MHzMembuat I2C dan SPI luaran Sambungkan FCLK_CLK0 ke M_AXI_GP0_ACLK Jalankan port "Buat dan buat automatik Port"

Langkah 3: Kalibrasi IMU

Kalibrasi IMU
Kalibrasi IMU

Transceiver BNO055 menggunakan komunikasi I2C. (Pembacaan yang Disarankan oleh Pemula: https://learn.sparkfun.com/tutorials/i2c)Pemandu untuk menjalankan IMU terletak di sini: https://github.com/BoschSensortec/BNO055_driverSatu quadcopter tidak memerlukan penggunaan magnetometer dari BNO055. Oleh kerana itu, mod operasi yang diperlukan adalah mod IMU. Ini diubah dengan menulis nombor binari xxxx1000 ke daftar OPR_MODE, di mana 'x' adalah 'tidak peduli'. Tetapkan bit tersebut ke 0.

Langkah 4: Gabungkan Pemancar Tanpa Wayar

Gabungkan Pemancar Tanpa Wayar
Gabungkan Pemancar Tanpa Wayar
Gabungkan Pemancar Tanpa Wayar
Gabungkan Pemancar Tanpa Wayar

Transceiver tanpa wayar menggunakan komunikasi SPI. Terlampir adalah lembaran spesifikasi untuk nRF24L01 + Tutorial yang baik mengenai nrf24l01 + tetapi dengan arduino:

Langkah 5: Program FPGA Zybo

Gambaran Keseluruhan Modul ini adalah modul terakhir yang digunakan untuk kawalan PWM quadcopter. motor_ctl_wrapper.sv Tujuan: Pembungkus mengambil sudut Euler dan peratusan pendikit. Ia menghasilkan PWM kompensasi yang akan membolehkan quadcopter stabil. Blok ini wujud, kerana quadcopters rentan terhadap gangguan di udara dan memerlukan semacam penstabilan. Kami menggunakan sudut Euler, kerana kami tidak merancang flip atau sudut berat yang mungkin menyebabkan Gimbal Lock. Input: bas data 25-bit 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 The Throttle Percentage PWM adalah digunakan untuk memulakan ESC, yang akan menginginkan julat PWM 30% - 70% murni, bukan nilai dari nilai Motor 1-4 PWM. Lanjutan - Blok IP Vivado Zynq: 8 Penambahan (LUT) 3 Pengurangan (LUT) 5 Pengganda (Blok Memori (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Tujuan: Mengawal perkakasan, termasuk output MUX, PWM, dan sclr untuk motor_ctl_wrapper. Sebarang Mesin Keadaan Terhingga (FSM) digunakan untuk satu perkara: mengawal perkakasan lain. Sebarang penyimpangan besar dari objektif ini boleh menyebabkan FSM yang disangka mengambil bentuk jenis modul yang berbeza (kaunter, penambah, dll.). Pwm_fsm mempunyai 3 keadaan: INIT, CLR, dan FLYINIT: Benarkan pengguna memprogram ESC sebagai dikehendaki. Menghantar isyarat pilihan ke mux_pwm yang mengeluarkan PWM lurus ke semua motor. Gelung kembali ke dirinya sendiri sehingga GO == '1'. CLR: Kosongkan data di motor_ctl_wrapper dan modul pwm out. FLY: Gelung selamanya untuk menstabilkan quadcopter (kecuali jika kita diset semula). Menghantar PWM yang dikompensasi melalui mux_pwm. Input: GO, RESET, clkOutput: RST untuk set semula modul lain, FullFlight ke mod FLY isyarat, Tempoh untuk menjalankan atmux_pwm.sv Tujuan: Input: Output: PWM untuk semua 4 motorpwm.sv Tujuan: Input: Output:

Disyorkan: