Tabla de contenido:

Quadcopter con placa Zybo Zynq-7000: 5 pasos
Quadcopter con placa Zybo Zynq-7000: 5 pasos

Video: Quadcopter con placa Zybo Zynq-7000: 5 pasos

Video: Quadcopter con placa Zybo Zynq-7000: 5 pasos
Video: Embedded Recipes 2017 - Developing an embedded video application... - Christian Charreyre 2024, Noviembre
Anonim
Quadcopter con placa Zybo Zynq-7000
Quadcopter con placa Zybo Zynq-7000

Antes de comenzar, aquí hay algunas cosas que desea para el proyecto: Lista de piezas 1 placa Digilent Zybo Zynq-7000 1 marco Quadcopter capaz de montar Zybo (archivo de Adobe Illustrator para corte con láser adjunto) 4 motores Turnigy D3530 / 14 1100KV sin escobillas 4x Turnigy ESC Basic -18A Speed Controller 4x Hélices (deben ser lo suficientemente grandes para levantar su quadcopter) 2x nRF24L01 + transceptor 1x IMU BNO055 Requisitos de software Xilinx Vivado 2016.2 NOTA: Los motores anteriores no son los únicos motores que se pueden usar. Son solo los que se utilizan en este proyecto. Lo mismo ocurre con el resto de las piezas y los requisitos de software. Con suerte, ese es un entendimiento tácito al leer este Instructable.

Paso 1: Ejecute el módulo PWM

Programe un SystemVerilog simple (u otro programa HDL) para registrar el acelerador HI y el acelerador LO utilizando interruptores de entrada. Enganche el PWM con un solo ESC y un motor sin escobillas Turnigy. Consulte los siguientes archivos para averiguar cómo calibrar el ESC. El código final se adjunta en el paso 5 para el módulo PWM. En este paso se adjunta un motor de arranque PWM Hoja de datos de ESC: PDF de hoja de datos de Turnigy ESC (Lo que debe prestar atención son los diferentes modos que puede seleccionar usando el acelerador HI y LO)

Paso 2: configurar el diseño del bloque

Crear diseño de bloque Haga doble clic en el bloque recién generado. O Pines Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO Configuración Temporizador 0 Watchdog Configuración del reloj FCLK_CLK0 y establecer la frecuencia a 100 MHz Hacer I2C y SPI externos Conectar FCLK_CLK0 a M_AXI_GP0_ACLK Ejecutar automatización de bloques Crear puerto y llamarlo "gnd"

Paso 3: calibre la IMU

Calibrar la IMU
Calibrar la IMU

El transceptor BNO055 utiliza comunicación I2C. (Lectura sugerida para principiantes: https://learn.sparkfun.com/tutorials/i2c) El controlador para ejecutar la IMU se encuentra aquí: https://github.com/BoschSensortec/BNO055_driver Un quadcopter no requiere el uso del magnetómetro del BNO055. Debido a esto, el modo de operación necesario es el modo IMU. Esto se cambia escribiendo un número binario xxxx1000 en el registro OPR_MODE, donde 'x' es un 'no me importa'. Establezca esos bits en 0.

Paso 4: integre el transceptor inalámbrico

Integrar el transceptor inalámbrico
Integrar el transceptor inalámbrico
Integrar el transceptor inalámbrico
Integrar el transceptor inalámbrico

El transceptor inalámbrico utiliza comunicación SPI. Se adjunta la hoja de especificaciones para el nRF24L01 + Un buen tutorial sobre el nrf24l01 + pero con arduino:

Paso 5: Programe el Zybo FPGA

Estos módulos son los módulos finales utilizados para el control del PWM del quadcopter. motor_ctl_wrapper.sv Propósito: El envoltorio toma ángulos de Euler y un porcentaje de aceleración. Produce un PWM compensado que permitirá que el cuadricóptero se estabilice. Este bloqueo existe porque los cuadricópteros son propensos a sufrir perturbaciones en el aire y requieren algún tipo de estabilización. Estamos usando ángulos de Euler, ya que no planeamos giros o ángulos pesados que podrían causar el bloqueo del cardán. Entrada: bus de datos de 25 bits CTL_IN = {[24] GO, [23:16] Euler X, [15: 8] Euler Y, [7: 0] Porcentaje de aceleración}, Reloj (clk), CLR síncrono (sclr) Salida: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Porcentaje de aceleración PWM El Porcentaje de aceleración PWM es utilizado para inicializar el ESC, que querrá un rango puro de 30% - 70% de PWM, no el de los valores de PWM del motor 1-4. Avanzado - Bloques IP Vivado Zynq: 8 Sumas (LUT) 3 Restas (LUT) 5 Multiplicadores (memoria de bloque (BRAM)) clock_div.sv (también conocido como pwm_fsm.sv) Propósito: controlar el hardware, incluido el MUX, la salida PWM y sclr para motor_ctl_wrapper. Cualquier máquina de estado finito (FSM) se usa para una cosa: controlar otro hardware. Cualquier gran desviación de este objetivo puede hacer que el supuesto FSM tome la forma de un tipo diferente de módulo (contador, sumador, etc.). Pwm_fsm tiene 3 estados: INIT, CLR y FLYINIT: Permitir al usuario programar el ESC como deseado. Envía una señal de selección a mux_pwm que emite PWM directo a todos los motores. Vuelve a sí mismo hasta GO == '1'. CLR: Borrar datos en motor_ctl_wrapper y el módulo de salida pwm. FLY: Bucle para siempre para estabilizar el quadcopter (a menos que estemos reiniciados). Envía el PWM compensado a través del mux_pwm. Entrada: GO, RESET, clk Salida: RST para otros reinicios del módulo, FullFlight para señalar el modo FLY, Período para ejecutar atmux_pwm.sv Propósito: Entrada: Salida: PWM para los 4 motores pwm.sv Propósito: Entrada: Salida:

Recomendado: