Prototipo de quadcoptero basado en Cortex M4

Share Embed


Descripción

Prototipo de quadcoptero basado en Cortex M4 Quadcoptero como plataforma de desarrollo multiproposito Diaz, Ariel Ivan Departamento de Ingeniería Electrónica Universidad Tecnológica Nacional Facultad Regional Bahía Blanca Bahía Blanca, Argentina [email protected]

Resumen Este proyecto se basa en la investigación, desarrollo y construcción de un prototipo de quadcoptero el cual presente todas las funciones necesarias para el funcionamiento de este, y una configuración que permita que este sirva como plataforma base de otros proyectos. Se planteó como objetivo la necesidad de realizar un vuelo básico respondiendo a los comandos recibidos por medio de una interfaz inalámbrica desde un PC por medio de un joystick. Se utilizó como base un microcontrolador Cortex M4 del kit de desarrollo STM32F4 Discovery[1] al cual se le agregaron los periféricos necesarios para el funcionamiento del prototipo, destacando principalmente en esta categoría el acelerómetro, giróscopo y dispositivos de comunicación inalámbrica. En la utilización de un microcontrolador de estas características no solo buscó completar los requisitos necesarios sino que también tener una posibilidad de expansión con más periféricos y más funciones, por lo cual se pretendió tener una capacidad de trasportar una pequeña carga para poder adosarle elementos extras (cámara, sensores de medición atmosféricos, sensores de distancia, etc.). Las tareas principales que se tienen que realizar en este proyecto son la generación ininterrumpida de las señales de control de los motores, la comunicación y el procesamiento de los datos del acelerómetro. El comando de los 4 motores está asociado a las órdenes que se reciben de forma inalámbrica y a los datos procesados del acelerómetro y giróscopo que son la base para la rutina de control de estabilidad y movimiento.

Objetivo del Proyecto Como primer objetivo se busca desarrollar un quadcoptero capaz de realizar un vuelo básico respondiendo a los comandos de un joystick conectado a una PC la cual se conecta al quadcoptero de forma inalámbrica. Una vez comprobada su capacidad de vuelo se pretende a desarrollar las distintas alternativas que este puede ejecutar, como puede ser la autoestabilización en vuelo, el piloto automático, aterrizaje automático, etc. El mismo se controla mediante un joystick USB, el cual está conectado a una PC la cual ejecuta un programa que se comunica con el quadcoptero, este software esta desarrollado en SDL (Single DirectMedia Layer / C++). En el software ejecutado desde el PC se muestran todas las variables del estado del quadcoptero en cuando a su estado y a su condición de vuelo (altura, inclinación, aceleración, etc.).

Solución Propuesta Originalmente el proyecto se llevó a cabo basándose en interrupciones para controlar los distintos procesos necesarios en un periodo de tiempo para garantizar la correcta operación. Usando las interrupciones del Systick y un Timer de propósito general se buscó encontrar forzar la frecuencia con la que se llaman las distintas funciones de señal de los motores, comunicación, lectura y procesamiento del MPU6050[2]. Se utilizó el Systick como reloj para marcar los tiempos de generación de la señal de los motores pero a pesar de que tiene la mayor prioridad no se cumplían las interrupciones con el tiempo que se deseaba dado que no se realizaba la ejecución durante los procesos de comunicación I2C y Serial. Se planteó usar el Systick en primer medida porque se creía que su mayor prioridad permitiría que no se interrumpan las distintas rutinas que se deben cumplir para mantener los sistemas funcionando. Viendo que este planteo inicial fue erróneo y no funciono, se procedió a utilizar un canal de Timer diferente para generar la señal de cada motor. Esto conllevo la utilización de más funciones y más código pero resulto ser la solución más efectiva. Actualmente se evitó el uso de interrupciones para evitar que distintas funciones se solapen y creen problemas como los anteriores. El algoritmo principal es el siguiente: Inicializar Periféricos Establecer comunicación Iniciar señal de los motores While(1){ Lectura y procesamiento del MPU6050 Función de estabilidad Actualización del estado de los motores Leer datos de sensores y conversores ADC Leer datos recibidos Actualizar variables de control Enviar datos }

Trabajo Realizado La parte mecánica fue construida a medida en aluminio y plástico, y los componentes de potencia junto con algunos componentes de electrónica fueron adquiridos a proveedores en el extranjero. El programa principal del microcontrolador fue desarrollado desde cero a partir de las librerías y documentación del entorno de desarrollo CooCox y de librerías realizadas por la comunidad de desarrolladores[3]. Dado que el proyecto consta de varias partes, tanto de electrónica como de software, estas fueron estudiadas y desarrolladas por separado y luego se juntaron para lograr el producto final. En cuestiones de software la incorporación de distintas funciones y librerías planteo una dificultad a la hora de lograr que todo funcione en armonía. Una vez que se tuvo todo funcionando se llevó a cabo un cronograma de pruebas hasta verificar la correcta operación de los distintos sistemas. En base a numerosas pruebas de vuelo se ajustó la función de estabilidad buscando no perder la simpleza de esta.

Características Especiales Existen una gran impulso en el desarrollo de estas tecnologías, en cuanto a los multicópteros disponibles en el mercado este proyecto se diferencia por contar con un sistema de comunicación mejorado, una nueva forma de control basado en un software de PC para ampliar la experiencia de vuelo y la posibilidad de la adición de distintos sensores y actuadores sobre el equipo para realizar tareas de todo tipo. Los equipos de radio convencional son de una sola dirección, en la que existe un receptor y un transmisor, donde este último es el que envía las órdenes al equipo y su costo es importante. En el sistema desarrollado la comunicación es bidireccional, lo cual permite que el control y el multicóptero intercambien información en tiempo real, permitiendo tener información del estado de vuelo del equipo y de todos los dispositivos a bordo. El equipo de control consiste en una conexión inalámbrica a un software de control de un PC que es comandado por un joystick USB el cual puede ser de cualquier tipo. Permitiendo al usuario la posibilidad de usar su propio joystick o de elegir el mejor para sus necesidades o gustos. El software en PC procesa todos los comandos del joystick, ejecuta cálculos, establece la comunicación y

Señal RCPWM La señal de control de los motores es un RCPWM[4], una señal muy similar a un PWM donde el ancho del pulso puede variar entre 1ms y 2ms y el periodo es de 20ms. Lo que nos da una frecuencia de cambio de la velocidad de los motores de 50 Hz. Es fundamental no tener errores en la generación del ancho de pulsa ya que esto podría generar que se pierda el control de los motores. Para la comprobación de la correcta generación de esta señal se

comparó la señal generada con la de otro microcontrolador de otra arquitectura el cual ya se sabía funcionaba perfectamente. Además se ejecutó la secuencia de arranque de los controladores de los motores, los cuales son muy poco tolerantes a variaciones en el orden de los microsegundos.

Etapa de Potencia La etapa de potencia del quadcoptero consta de 4 motores Turnigy Brushless de 1100kv trifásicos de aeromodelismo, los cuales no son los mejores para esta aplicación pero son una buena opción mucho más económica que los motores propios de multicópteros. Los Motores generan un impulso máximo aproximado de 1Kg según el fabricante, esto nos da 4Kg de empuje, entonces nos limita el paso máximo del quadcoptero a 2Kg siguiendo las recomendaciones de conservar el 50% de la potencia para poder volar sin problemas. Son controlados por 4 ESC/UBEC[5] de 30A (Electronic Speed Control/Universal Battery Elimination Circuit) a los cuales se les ingresa la señal RCPWM y la alimentación directa de la batería. Esta última es de Litio-Polímero (LiPo) de 5000mAh, 4 celdas que dan una tensión promedio de 14.8V y 30C lo que significa una descarga máxima de 150A. Se dejó libre la posibilidad de agregar una batería auxiliar más pequeña de 1300mAh 3 celdas (11.1V) para alimentar la electrónica y elementos que se puedan agregar que tengan un consumo importante o requieran una alimentación totalmente independiente.

Kit Discovery El kit consiste en una plataforma de desarrollo didáctica basada en un microcontrolador STM32F407VG en encapsulado LQFP de 100 pines. De las características que posee este controlador se utilizaron los puertos GPIO, SPI, I2C Y Serial. En el archivo de configuración de clock que viene por default existen errores y este es complicado de entender si se quiere modificar la configuración. Para eso se utilizó una herramienta del fabricante establecida por la nota de aplicación 3988[6], la cual permite generar un archivo “system_stm32f4xx.c” con la configuración deseada.

Hardware fabricado Para la interconexión de todos los componentes se diseñó y fabricó una placa con las dimensiones limitadas por la estructura mecánica y las características necesarias para conectar todos los componentes y brindar un fácil acceso. El diagrama de bloques siguiente representa los distintos componentes del proyecto:

Periféricos Para el funcionamiento del quadcoptero el principal componente es el MPU6050 el cual está compuesto por acelerómetro y giróscopo los cuales se utiliza para calcular los datos correspondientes a la orientación y estabilidad. En segunda instancia de importancia vienen los periféricos de comunicación, de los cuales se comenzó con un módulo Bluetooth dada la simpleza de este para lograr los objetivos a primera instancia; y la utilización de un transceptor de radio de 2.4Ghz como medio de comunicación definitivo.

Detección de movimiento y posición Se necesita tener información sobre la posición del quadcoptero relativa a su centro de gravedad para poder realizar los ajustes de estabilidad y control para eso se utilizó el chip MPU6050 el cual consiste en dos sensores MEMS, un acelerómetro y un giróscopo. Este chip está montado sobre un pequeño modulo llamado GY-521, el cual presenta un circuito con las adaptaciones necesarias para la utilización del chip mediante la conexión I2C. Mediante pruebas se descubrió que la frecuencia máxima de este módulo con la configuración instalada fue de 875Khz, por lo cual se estableció la frecuencia en 800Khz. Veremos a continuación un estudio de las mediciones realizadas con los distintos MEMS y las ventajas y desventajas de ambos.

Acelerómetros Los acelerómetros miden la aceleración en los ejes X, Y y Z en unidades de G, equivalente a 9.807 m/seg2. Teniendo en cuenta que la gravedad es una fuerza de que nos trasmite una aceleración siempre en la misma dirección, podemos hallar el vector resultante usando los 3 ejes de aceleración. Este vector resultante con respecto a la gravedad nos da una aproximación del ángulo con respecto a dirección del vector de fuera de gravedad. Ventajas:  

Poseen una referencia, que es la fuerza de gravedad. No poseen offset, o en caso de tenerlo es muy pequeño y se considera despreciable.

Desventajas:   

Son muy sensibles al ruido, incluso estando en reposo. Son muy sensibles a las vibraciones. Las aceleraciones axiales pueden distorsionar los cálculos de orientación.

Muestreo y filtrado de los acelerómetros Destacamos la sensibilidad de estos dispositivos que produce grandes distorsiones de las lecturas cuando se trabaja en grandes magnitudes de aceleración y cuando existe una aceleración axial producida por el movimiento de dispositivo. Es por eso que se concluye en que las mejores medidas de este dispositivo se producen a magnitudes pequeñas de aceleración, las cuales corresponden a no superar ampliamente el valor de 1G, para no perder la referencia de la fuerza de gravedad terrestre. En la siguiente imagen se muestra una captura de datos del acelerómetro graficada en función del tiempo sin movimiento.

ACC X - Z

ACC Y

160

7080

140

7060

120

7040

100

7020

80

7000

60 40

6980

20

6960

0

6940

Para restringir la lectura de los acelerómetros a solo los valores en los cuales estos son eficaces y amortiguar las grandes variaciones de amplitud se propone la aplicación de un filtro digital FIR el cual está definido de la siguiente manera:

[ ]

[ ]

[

]

Giróscopos Los giróscopos miden velocidad angular en magnitudes de unidades de aceleración angular la cual debe ser escalada y convertida a grados sobre segundo. Este dispositivo depende de la variación del movimiento, es decir que no presenta lectura en estado estático, es por ello que se debe tomar una lectura en un determinado periodo de tiempo e integrar estos valores para tener una lectura. Dado que no se tiene una referencia fija como en el caso del acelerómetro, es muy fácil tener problemas de lectura si no se aplican los cálculos correspondientes. Ventajas:  

Son inmunes a las vibraciones mecánicas en comparación con los acelerómetros. Los movimientos lineales no alteran las lecturas del sensor.

Desventajas:  

El cálculo de la orientación mediante este sensor se hace por integración, lo que genera un desbordamiento debido a la deriva presente de los datos. No posee una referencia alguna.

Muestreo y filtrado de los giróscopos Se procede a continuación a presentar una muestra de datos obtenidos en la cual podemos destacar las pocas variaciones de magnitud de este dispositivo en esta estático.

GYRO X

GYRO Y

-185

265

-190

260

0

GYRO Z

-10 -20

-195

255 -30

-200 250

-40

-205 245

-210

-50

Se propone entonces hacer uso del giróscopo para lecturas de grandes velocidad angulares en las cuales las lecturas son más exactas, para eso se plantea un filtro pasa altos IIR el cual está comprendido de la siguiente manera:

[ ]

[ ]

[

]

Los resultados después de haber pasado con el filtro se presentan a continuación: Filtro Gyro X

Filtro Gyro Y

Filtro Gyro Z

10

10

10

5

5

5

0

0

0

-5

-5

-5

-10

-10

-10

Determinación del estado angular Como se definió anteriormente, se usaran los ángulos como magnitud principal de control y estabilidad, para eso se aplica el uso de los acelerómetros y los giróscopos conjuntamente [7][8], aprovechando las ventajas de ambos y eliminando sus desventajas al compensar uno con otro. El procedimiento que se necesita realizar, para el caso del giróscopo nuestra lectura va a estar dado de la siguiente manera:



Dado que estamos trabajando sobre sistemas discretos, se aplica la forma de integración de Euler para un periodo de muestro T.

( )

(

)

Para el caso del acelerómetro, los leídos del dispositivo, una vez escaladas a la magnitud requerida ya pueden ser utilizados sin necesidad de cálculo previo.



Usando los cálculos previos podemos concluir en una forma de calcular el ángulo de la siguiente manera:

(

)

Dispositivos de comunicación Bluetooth: mediante puerto serie, de muy fácil aplicación pero corto alcance. El modulo utilizado es el HC-06[9] Bluetooth Wireless Módulo de puerto serie. Radio frecuencia: mediante un módulo con comunicación SPI, de difícil aplicación y largo alcance. -El modulo utilizado es NRF24L01[10]. En la etapa actual se encuentra funcionando a plena capacidad el módulo de Bluetooth, juega el papel de la comunicación total con el quadcoptero. El módulo de Radio de 2.4GHz fue investigado y probado, pero se requiere un circuito extra para la asociación de un segundo módulo en el PC y la creación de un protocolo de comunicación. Además el equipo radio es relativamente más complicado de operar que el anterior, ya que para realizar una comunicación bidireccional se necesita establecer una secuencia de sincronización entre los dos módulos y sus respectivas funciones de transmisión, recepción y detección de colisiones.

Periféricos Adicionales Dado que estamos usando un microcontrolador con una gran capacidad que cuenta con entradas, salidas y puertos de comunicación disponibles, se propone la utilización del quadcoptero como plataforma de desarrollo en la cual se pueden agregar distintos periféricos, sensores y actuadores para cumplir distintas tareas, aprovechando la comunicación bidireccional para recibir y enviar datos en tiempo real.

Control de estabilidad El control de estabilidad es la función fundamental que permite el vuelo, esta debe corregir la inclinación del quadcoptero para que no se desplace y quede estático en el aire y así como también calcular los ángulos necesarios de inclinación para desplazarse a distintas velocidades. La corrección de la inclinación se produce acelerando o desacelerando determinados motores en base al ángulo actual para conseguir una compensación del empuje que nos de él ángulo deseado. A continuación se presenta una imagen con las distintas fuerzas y momentos asociados al modelo matemático básico del quadcoptero.

En las pruebas realizadas en las que no se incluyeron las baterías, alivianando el peso en casi un 50% las correcciones usando una función simple en la que se incrementaba y decrementa de a 2 unidades de microsegundos del ancho de pulso de la señal RCPWM hasta llegar al ángulo deseado; se logró una estabilidad aceptable. Cuando se incorporó el peso completo y se dejó libre el quadcoptero, la estabilidad con este método no se dio. Para responder con el impulso necesario para equilibrar el quadcoptero se planteó usar una función nueva, basada en el ángulo actual la cual es la siguiente. |

|

Donde es una constante que se ajusta en base a prueba y error hasta lograr eliminar el tambaleo que se produce cuando los ajustes no son lo suficientemente rápidos o no tienen la suficiente fuerza. Se limita el tamaño de a un valor máximo para no producir un por cualquier tipo de error un ajuste muy elevado que genere un incremento de la potencia tal que pueda dañar el equipo.

Futuros Pasos Crear un protocolo de comunicación y hacerlo funcionar con el módulo de radio de 2.4Ghz, el cual no se realizó por falta de tiempo dada la complejidad que este demanda. Dado que en el estado actual del proyecto no se consiguió optimizar la función de estabilidad debido a problemas en la velocidad de respuesta de los motores a causa del peso muy considerable del quadcoptero; se platea buscar una solución a este problema. Una vez garantizada la estabilidad se deberá mantener esta mientras se producen los distintos movimientos que componen un vuelo. La adicción de más periféricos como puedan mejorar la experiencia de vuelo como sensor de distancia por ultrasonido, GPS o Luces. Se debe seguir con las pruebas de vuelo y se deja en evidencia que dado que solo se dispone de una batería que tiene un tiempo de uso de aproximadamente 20 minutos y 4 horas de carga, limitando mucho la fluidez de las sesiones.

Conclusión Se termina este resumen concluyendo que el prototipo necesita seguir en desarrollo para poder cumplir con las funciones para las que fue pensado y se cree que esto será posible. En la medida que se fue desarrollando se descubrió un gran número de variables tanto físicas y software que se deben tener en cuenta, lo cual fue incrementando la dificultad y tiempo del proyecto. Se reconoce que inicialmente se tuvo un planteo erróneo de la forma de encarar la solución y que se tuvo múltiples problemas con el entorno de programación al arrojar resultados inconclusos o problemas sin solución fácil. Se comprueba que es factible la utilización del STM32F4 y su correcto funcionamiento, contemplando el abanico de necesidades que el programador debe tener en cuenta cuando se trabaja en un proyecto como este.

Referencias [1]

STM32F4 Discovery Shield User Manua l - STMicroelectronics

[2]

MPU-6000 and MPU-6050 Product Specification Revision 3.1 - InvenSense Inc.

[3]

“Libraries and tutorials for STM32F4 series MCUs by Tilen Majerle” - http://stm32f4-discovery.com

[4]

“Servo control interface in detail” - Pololu Robotics and Electronics https://www.pololu.com/blog/17/servo-control-interface-in-detail

[5]

HobbyKing UBEC 30A User Manual - Hobbyking.com®

[6]

“Clock configuration tool for STM32F40x/41x microcontrollers AN3988” - STMicroelectronics

[7]

Daniel Vera Lizcano “Trabajo de grado sistema de observacion y vigilancia aerea por medio de un quadcipoter equipado con una camara” - Universidad del Valle 2013

[8]

“Arduino with MPU6050 and angle calculation” - http://hobbylogs.me.pn/?p=47

[9]

JY-MCU Bluetooth to UART Wireless Serial Port - Core Electronics

[10]

nRF24L01+ Single Chip 2.4GHz Transceiver Preliminary Product Specification v1.0 - SparkFun Electronics

Lihat lebih banyak...

Comentarios

Copyright © 2017 DATOSPDF Inc.