Съдържание:

Квадрокоптер, използващ платка Zybo Zynq-7000: 5 стъпки
Квадрокоптер, използващ платка Zybo Zynq-7000: 5 стъпки

Видео: Квадрокоптер, използващ платка Zybo Zynq-7000: 5 стъпки

Видео: Квадрокоптер, използващ платка Zybo Zynq-7000: 5 стъпки
Видео: Мгновенная карма: дразнила обезьян и тут же поплатилась 2024, Ноември
Anonim
Квадрокоптер, използващ Zybo Zynq-7000 Board
Квадрокоптер, използващ Zybo Zynq-7000 Board

Преди да започнем, ето някои неща, които искате за проекта: Списък на частите1x Digilent Zybo Zynq-7000 борда 1x Quadcopter рамка, която може да монтира Zybo (приложен файл Adobe Illustrator за лазерно рязане) 4x Turnigy D3530/14 1100KV Безчеткови двигатели 4x Turnigy ESC Basic -18A Скоростен контролер 4x витла (те трябва да са достатъчно големи, за да повдигнете вашия квадрокоптер) 2x nRF24L01+ трансивер 1x IMU BNO055 Изисквания към софтуера Xilinx Vivado 2016.2 ЗАБЕЛЕЖКА: Горните двигатели не са единствените двигатели, които могат да се използват. Те са само тези, използвани в този проект. Същото важи и за останалите части и софтуерни изисквания. Да се надяваме, че това е неизказано разбиране, когато четете тази инструкция.

Стъпка 1: Включете PWM модула

Програмирайте прост SystemVerilog (или друга HDL програма), за да регистрирате HI дросела и LO дросела с помощта на входни превключватели. Закачете PWM с един ESC и Turnigy безчетков двигател. Проверете следните файлове, за да разберете как да калибрирате ESC. Крайният код е приложен в стъпка 5 за PWM модула. В тази стъпка е прикрепен ШИМ стартер ESS Datasheet: Turnigy ESC Datasheet PDF (Нещата, на които трябва да обърнете внимание, са различните режими, които можете да изберете с помощта на HI и LO газ)

Стъпка 2: Настройте дизайна на блока

Създаване на дизайн на блок Щракнете двукратно върху новосъздадения блок Импортиране на XPS настройки, изтеглени тук: https://github.com/ucb-bar/fpga-zynq/tree/master/z… Промяна на настройките PS-PL Конфигурация M AXI GP0 интерфейс Периферно I/ O Pins Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Конфигурационен таймер 0 WatchdogClock Конфигурация FCLK_CLK0 и задайте честота на 100 MHz Направете I2C и SPI външно Свързване FCLK_CLK0 на M_AXI_GP0_ACLK Изпълнете автоматизирайте и създайте

Стъпка 3: Калибрирайте IMU

Калибрирайте IMU
Калибрирайте IMU

Приемо -предавателят BNO055 използва I2C комуникация. (Предложено четиво за начинаещи: https://learn.sparkfun.com/tutorials/i2c) Драйверът за стартиране на IMU се намира тук: https://github.com/BoschSensortec/BNO055_driver Квадрокоптерът не изисква използването на магнитометъра от BNO055. Поради това необходимия режим на работа е режимът IMU. Това се променя чрез записване на двоично число xxxx1000 в регистъра OPR_MODE, където "x" е "не ми пука". Задайте тези битове на 0.

Стъпка 4: Интегрирайте безжичния трансивър

Интегрирайте безжичния трансивър
Интегрирайте безжичния трансивър
Интегрирайте безжичния трансивър
Интегрирайте безжичния трансивър

Безжичният трансивър използва SPI комуникация. Приложен е спецификационният лист за nRF24L01+ Добър урок за nrf24l01+, но с arduino:

Стъпка 5: Програмирайте Zybo FPGA

Преглед Тези модули са последните модули, използвани за управление на PWM на квадрокоптера. motor_ctl_wrapper.sv Цел: Опаковката приема ъгли на Ойлер и процент на дросела. Той извежда компенсирана ШИМ, която ще позволи на квадрокоптера да се стабилизира. Този блок съществува, тъй като квадрокоптерите са склонни към смущения във въздуха и изискват някакъв вид стабилизация. Използваме ъгли на Ойлер, тъй като не планираме обрати или тежки ъгли, които биха могли да причинят Gimbal Lock. Вход: 25-битова шина от данни CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euler Y, [7: 0] Процент на дросела}, Часовник (clk), Синхронен CLR (sclr) Изход: Мотор 1 PWM, Мотор 2 PWM, Мотор 3 PWM, Мотор 4 PWM, Процент дроселна клапа PWM Процентът на дроселната клапа PWM е използва се за инициализиране на ESC, който ще иска чист 30% - 70% обхват на PWM, а не този от стойностите на Motor 1-4 PWM. Разширени - Vivado Zynq IP блокове: 8 добавя (LUTs) 3 изважда (LUT) 5 Множители (Блокова памет (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Предназначение: Контролира хардуера, включително MUX, PWM изход и sclr за motor_ctl_wrapper. Всяка машина с крайни състояния (FSM) се използва за едно: управление на друг хардуер. Всяко голямо отклонение от тази цел може да накара предполагаемия FSM да приеме формата на различен тип модул (брояч, суматор и т.н.). Pwm_fsm има 3 състояния: INIT, CLR и FLYINIT: Позволете на потребителя да програмира ESC като желани. Изпраща сигнал за избор към mux_pwm, който извежда директно ШИМ към всички двигатели. Връща се към себе си до GO == '1'. CLR: Изчистване на данните в motor_ctl_wrapper и модула pwm out. FLY: Цикъл завинаги за стабилизиране на квадрокоптера (освен ако не сме нулирани). Изпраща компенсираната PWM през mux_pwm.:

Препоръчано: