Оглавление:

Квадрокоптер с платой Zybo Zynq-7000: 5 шагов
Квадрокоптер с платой Zybo Zynq-7000: 5 шагов

Видео: Квадрокоптер с платой Zybo Zynq-7000: 5 шагов

Видео: Квадрокоптер с платой Zybo Zynq-7000: 5 шагов
Видео: ✔ Realacc Y200 - Самая Легкая Рама для FPV Квадрокоптера (69G)! Banggood 2024, Июль
Anonim
Квадрокоптер с платой Zybo Zynq-7000
Квадрокоптер с платой Zybo Zynq-7000

Перед тем, как мы начнем, вот некоторые вещи, которые вы хотите для этого проекта: Список запчастей 1x плата Digilent Zybo Zynq-7000 1x рама для квадрокоптера с возможностью установки Zybo (прилагается файл Adobe Illustrator для лазерной резки) 4x Turnigy D3530 / 14 Бесщеточные двигатели 1100KV 4x Turnigy ESC Basic -18A Контроллер скорости 4 пропеллера (они должны быть достаточно большими, чтобы поднять квадрокоптер) 2x nRF24L01 + приемопередатчик 1x IMU BNO055 Требования к программному обеспечению Xilinx Vivado 2016.2 ПРИМЕЧАНИЕ: Вышеуказанные двигатели - не единственные двигатели, которые можно использовать. Это как раз те, которые используются в этом проекте. То же самое касается остальных частей и требований к программному обеспечению. Надеюсь, это невысказанное понимание при чтении данного Руководства.

Шаг 1. Запустите модуль ШИМ

Запрограммируйте простую SystemVerilog (или другую программу HDL) для регистрации газа HI и LO с помощью входных переключателей. Подключите ШИМ с помощью одного ESC и бесщеточного двигателя Turnigy. Проверьте следующие файлы, чтобы узнать, как откалибровать ESC. Окончательный код прилагается к шагу 5 для модуля PWM. Пускатель PWM прилагается к этому шагу. Техническое описание ESC: Turnigy ESC Datasheet PDF (на что следует обратить внимание, так это на различные режимы, которые вы можете выбрать с помощью дроссельной заслонки HI и LO)

Шаг 2: Настройте дизайн блока

Create Block Design Дважды щелкните созданный блок. Импортируйте настройки XPS, загруженные здесь: https://github.com/ucb-bar/fpga-zynq/tree/master/z…. Изменение настроек Конфигурация PS-PL M Интерфейс AXI GP0 Peripheral I / O Контакты Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI Конфигурация таймера MIOMIO 0 Конфигурация WatchdogClock FCLK_CLK0 и установка частоты на 100 МГц Сделайте внешний интерфейс I2C и SPI Подключите FCLK_CLK0 к M_AXI_GP0_ACLK Запустите автоматизацию блока Создайте порт и назовите его «gnd»

Шаг 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

Обзор Эти модули являются последними модулями, используемыми для управления ШИМ квадрокоптера. motor_ctl_wrapper.sv Цель: Обертка принимает углы Эйлера и процент дросселирования. Он выводит скомпенсированный ШИМ, который позволит квадрокоптеру стабилизироваться. Этот блок существует, потому что квадрокоптеры склонны к возмущениям в воздухе и требуют какой-то стабилизации. Мы используем углы Эйлера, так как мы не планируем перевороты или большие углы, которые могут вызвать блокировку кардана. Вход: 25-битная шина данных CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euler Y, [7: 0] Throttle Percentage}, Clock (clk), Synchronous CLR (sclr) Выход: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Throttle Percentage PWM. используется для инициализации ESC, для которого потребуется чистый диапазон ШИМ от 30% до 70%, а не диапазон значений ШИМ двигателя 1-4. Расширенный - IP-блоки Vivado Zynq: 8 сложений (LUT) 3 вычитания (LUT) 5 Множители (блочная память (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Цель: управление оборудованием, включая MUX, выход PWM и sclr для motor_ctl_wrapper. Любой конечный автомат (FSM) используется для одной цели: управления другим оборудованием. Любое большое отклонение от этой цели может привести к тому, что предполагаемый конечный автомат примет форму модуля другого типа (счетчик, сумматор и т. Д.). Pwm_fsm имеет 3 состояния: INIT, CLR и FLYINIT: позволяет пользователю программировать ESC как желанный. Посылает сигнал выбора на mux_pwm, который выводит прямой ШИМ на все двигатели. Зацикливается на себе, пока GO == '1'. CLR: очистить данные в motor_ctl_wrapper и модуле pwm out. FLY: Зацикливаться навсегда для стабилизации квадрокоптера (если мы не сбросили). Посылает скомпенсированный ШИМ через mux_pwm. Вход: GO, RESET, clkOutput: RST для сброса другого модуля, FullFlight для сигнала режима FLY, Период для запуска atmux_pwm.sv Цель: Вход: Выход: ШИМ для всех 4 двигателей. Sv Цель: Вход: Выход:

Рекомендуемые: