Monografia de Arduino

27
UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANN ESCUELA DE FISICA APLICADA TEMA: APLICACIONES DE CONTROL DIGITAL CON ARDUINO SISTEMAS ROBOTICOS CON ARDUINO VICION COMPUTACIONAL CON ARDUINO SISTEMAS MECATRONICOS ESPACIALES CON ARDUINO PRESENTADO POR: GUSTAVO LEYVA ESPEZUA

description

aplicaciones de arduino

Transcript of Monografia de Arduino

Page 1: Monografia de Arduino

UNIVERSIDAD NACIONAL JORGE BASADRE GROHMANNESCUELA DE FISICA APLICADA

TEMA:

APLICACIONES DE CONTROL DIGITAL CON ARDUINOSISTEMAS ROBOTICOS CON ARDUINO

VICION COMPUTACIONAL CON ARDUINOSISTEMAS MECATRONICOS ESPACIALES CON ARDUINO

PRESENTADO POR: GUSTAVO LEYVA ESPEZUA

17/12/2014ELECTRONICAperu

INTRODUCCION

Arduino es una plataforma de hardware libre, basada en una placa con un micro controlador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.

El hardware consiste en una placa con un micro controlador Atmel AVR y puertos de entrada/salida.4 El micro controlador más usado son el Atmega168, Atmega328,

Page 2: Monografia de Arduino

Atmega1280, ATmega8 por su sencillez y bajo coste que permiten el desarrollo de múltiples diseños. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring y el cargador de arranque que es ejecutado en la placa.

1. CARACTERÍSTICAS GENERALES ARDUINO DUE

Arduino DUE es la primer placa electrónica basada en un micro controlador de 32 bits, con la cual mejora las capacidades de las versiones antecesoras tales como el modelo UNO y el modelo Leonardo, las cuales trabajan a 8 bits. Gracias al micro controlador de la compañía Atmel (ATSM3X8E), se pueden disponer de entradas y salidas analógicas con resolución de 12 bits; la tasa de muestreo con la que trabaja Arduino DUE es de hasta 1000 ksps (kilomuestras por segundo). En comparación con Arduino UNO que trabaja a una tasa de muestreo de 15 ksps.Arduino DUE enumera los pines del 0 – 53, los cuales pueden ser utilizados como entradas o salidas digitales. Todas las entradas/salidas trabajan a 3.3V. Cada pin puede suministrar (soportar) una corriente de 3mA – 15 mA dependiendo del PIN, o recibir de 6 mA – 9 mA, dependiendo del PIN. Estos pines también poseen una resistencia de pull-down desactivada por defecto de 100 KΩ. Además, algunos de estos pines tienen funciones específicas.

2. ESPECIFICACIONES:• Micro controlador ATSM3X8E.• Velocidad del reloj 84 MHz.• Voltaje de operación 3.3 Volts.• Voltaje de entrada (jack DC) 7 – 12 Volts.• Nucleo de 32 bits.• 54 Entradas/Salidas digitales.• 12 Entradas analógicas.• 12 Salidas tipo PWM.• Corriente maxima en E/S 130mA.• 2 Salidas analógicas (DAC).• 4 Puertos UART.• 512 KB de Memoria flash para codigo.• 2 Puertos micro-USB.

Arduino DUE tiene integrados dos botones “erase” y “reset”. Con el botón de “erase” es posible borrar la memoria Flash del microcontrolador, basta con mantener presionado este botón durante algunos segundos para eliminar el programa cargado en el microcontrolador y el botón de “reset” permite reiniciar un programa que se ejecuta en la plataforma de Arduino. También posee dos puertos micro-USB (“Programming” y “Native”), de los cuales el puerto “Programming” generalmente se utiliza para programación y comunicación, y el puerto “Native” actuará como Host USB, permitiendo conectar periféricos externos USB, tales como mouse, teclado o “Shields”, que agregan nuevas funciones a Arduino.

MATERIAL DE APOYO:

Page 3: Monografia de Arduino

A continuación se listan las direcciones electrónicas de donde se pueden descargar de manera gratuita los diversos programas y manuales necesarios para la programación de Arduino DUE, así como referencias del lenguaje de programación y características del micro controlador utilizado en la kit Arduino DUE.• Página Oficial de Arduinohttp://www.arduino.cc/• Descarga de Driver y Softwarewww.arduino.cc/downloads• Características principales Arduino DUEhttp://arduino.cc/en/Main/arduinoBoardDue• Diagrama esquemático Arduino Due (pcb)http://arduino.cc/en/Main/arduinoBoardDue• Página Oficial de Programación “Processing”http://processing.org/

PRÁCTICA # 1: SALIDAS DIGITALES.

Objetivo: Configurar pines de Arduino DUE como salidas digitales.MaterialØ 3 diodos emisor de luz (Led’s).Ø 3 resistencias de 220 Ω.Actividades• Realizar las conexiones mostradas en figura 2.1.• Desarrollar un programa, para activar 3 salidas digitales, las cuales se indicaran que están activas energizando los Led’s.

Descripción del programa:

El programa consiste en activar tres salidas digitales de Arduino DUE, para esto, se definen

Page 4: Monografia de Arduino

3 pines como salidas digitales (pines 4, 16 y 26). Para el desarrollo de esta práctica, se definen los pines mencionados anteriormente, aunque podemos utilizar cualquiera de los pines con etiqueta 0 – 53.Programa/*PROGRAMA PARA ACTIVAR PINES 6, 16 Y 26 COMO SALIDAS DIGITALES*/int led1 = 4;int led2 = 16; // Se definen nombre de las constantes.int led3 = 26;// Configuración de los pines.void setup() {pinMode(led1, OUTPUT); // Se declaran los pines como salida.pinMode(led2, OUTPUT);pinMode(led3, OUTPUT);}void loop() { // Lazo que se ejecutará continuamente.digitalWrite(led1, HIGH); // Escribe "1" lógico a cada uno de los led's.digitalWrite(led2, HIGH);digitalWrite(led3, HIGH);}

PRÁCTICA # 2: EL TEMPORIZADOR

Objetivo: Implementar la función “delay” como temporizador con retardo a la conexión/desconexión.Material.Ø 3 diodos emisor de luz (Led’s).Ø 3 resistencias de 220 Ω.Actividades• Utilizando el diagrama de conexiones de la práctica #1 (Figura 2.1), realizar una secuencia en la cual los led's se activen/desactiven consecutivamente cada 500 ms.Descripción del programa Teniendo como base el “sketch” anterior, donde se declaran algunos pines como salida digital, se le agregará la función “delay”, la cual nos permite agregar tiempos muertos.

PRÁCTICA #7: MODULACIÓN DE ANCHO DE PULSO (PWM)

OBJETIVO: Variar la velocidad de un motor de CD de 5 Volts a través de una salidaPWM de Arduino DUE.Material1 potenciómetro de 1kΩ (tipo: through hole o pcb).1 transistor NPN 2N39041 diodo de conmutación rápida 1N40011 motor de CD de 5Volts.Actividades• Realizar las conexiones mostradas en la figura 2.11.• Implementar un programa en el cual a partir del nivel de entrada analógica (0 a

Page 5: Monografia de Arduino

3.3V) se pueda variar la velocidad de un motor de CD de 5 Volts.

Descripción del programa:

El programa lee una entrada analógica en el pin A0, la cual está variando su nivel de voltaje a través de un potenciómetro en un rango de 0 a 3.3 Volts. Posteriormente se envía a un pin del tipo PWM (pin 3) de Arduino DUE, para esta ser aplicada a la base de un transistor que nos permitirá utilizar la señal para la variación de velocidad de un motor de CD de 5 volts.Programa:int In = A0; // Entrada A0int valor = 0; // Valor comienza en 0.int s = 3; // Pin de salida.void setup() {pinMode(s, OUTPUT); // variable “s” como salida}void loop() {

Page 6: Monografia de Arduino

valor = analogRead(In); // Lee A0 (resolución de 10 bits.analogWrite(s,valor/4); // Escribe en ‘s’ resolución de 8 bits.}

2.- sistemas robóticos con arduino:

Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.2 3 El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de entrada/salida.4 Los microcontroladores más usados son el Atmega168, Atmega328, Atmega1280, ATmega8 por su sencillez y bajo coste que permiten el desarrollo de múltiples diseños. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring y el cargador de arranque que es ejecutado en la placa.

Desde octubre de 2012, Arduino se usa también con micro controladoras CortexM3 de ARM de 32 bits,5 que coexistirán con las más limitadas, pero también económicas AVR de 8 bits. ARM y AVR no son plataformas compatibles a nivel binario, pero se pueden programar con el mismo IDE de Arduino y hacerse programas que compilen sin cambios en las dos plataformas. Eso sí, las micro controladoras CortexM3 usan 3,3V, a diferencia de la mayoría de las placas con AVR que generalmente usan 5V. Sin embargo ya anteriormente se lanzaron placas Arduino con Atmel AVR a 3,3V como la Arduino Fio y existen compatibles de Arduino Nano y Pro como Meduino en que se puede conmutar el voltaje.

No existe una definición única y concreta sobre lo que es un robot. El término se aplica a una gran variedad de sistemas, desde los manipuladores industriales más simples, a robots “inteligentes” capaces de adaptarse a distintos entornos. Existen robots fijos, móviles, UAVs, robots teleoperados, autónomos, poliarticulados, zoomórficos, antropomórficos, etc. Una definición bastante general, no obstante, podría ser la siguiente: un robot es una entidad que obtiene información del entorno a través de sensores, la procesa mediante un sistema de computación, y ejerce una acción sobre ese entorno por medio de actuadores. Un robot es, entonces, y en principio, un ejemplo muy claro de lo que venimos hablando, un sistema de computación dedicado, fuera de una computadora. Todos los sistemas que vimos en el apartado anterior tienen, de alguna manera, entradas, procesador y salidas, pero en el caso del robot, las entradas y salidas provienen del mundo físico directamente, a través de sensores que miden distancia, luz, sonido, etc., motores que hacen mover brazos o provocan desplazamiento, etc., con los cuales el robot interactúa con su entorno. A su vez, como vimos oportunamente, estos elementos y técnicas se utilizan también en el diseño de cosas que no son necesariamente robots.

Page 7: Monografia de Arduino

Volviendo a nuestro curso, es evidente entonces que elegimos la robótica por ser el ejemplo más completo de “sistema computacional físico” -o como quieran llamarlo-, y además, porque nos encantan los robots. Cabe notar, de todas maneras, que la robótica abarca más elementos que los que nosotros abordamos en el curso: nuestro programa no habla de mecánica ni de inteligencia artificial, por ejemplo, ya que se trata de un curso introductorio.

Ejemplo de Aplicación

Crear un programa que controle el parpadeo de un led, con las función es anteriormente explicadas, y que se pueda variar el tiempo de estado alto y el tiempo de estado bajo del mismo.Utilizar la instrucción delay (ms), que hace que el programa se pare y espere el tiempo seleccionado en milisegundos.

Solución:

Podemos asignar la función que encienda y apague a cualquier pin digital, exceptuando el 0 y 1, como comentamos anteriormente, por lo tanto si asignamos el pin 13 como el responsable de esta función, el circuito a montar es muy sencillo:

Page 8: Monografia de Arduino

Practica 2: Coche Digital6.1 Objetivos

Conocer aplicaciones más avanzadas sobre Arduino. Poner en práctica conocimientos obtenidos en prácticas anteriores.

6.2 Material empleado Arduino UNO. Motores eléctricos 1,6W con reductora. Controlador dual de puente completo L298N. Pantalla LCD. Juego de Fotodiodos ópticos de rango visible.

6.3 Componentes del Coche DigitalEn este apartado vamos a describir cada uno de los elementos que constituye nuestro coche. Empezamos describiendo los dos motores eléctricos de 1,6W con reductora como los de la siguiente figura:

Page 9: Monografia de Arduino

Estos serán los encargados de proporcionar la potencia necesaria a las ruedas para poder realizar el desplazamiento del coche. Estos motores al demandar una potencia que el Arduino es incapaz de dar debemos de conectar entre ambos una etapa de potencia constituida por un Controlador dual de puente completo (L298N) y dos puentes de diodos. La etapa de potencia quedaría como mostramos en la siguiente figura:

Page 10: Monografia de Arduino

Como crear una librería propia para Arduino.

Para comenzar esta práctica necesitamos crear una librería propia sobre las funciones que utilizaremos para los movimientos del coche. Para ello a continuación iremos explicando paso a paso cómo realizar esta librería.Para crear una librería se necesita al menos dos archivos: un archivo de cabecera (w / con extensión. H) y el código fuente (w / extensión. cpp). El archivo de cabecera contiene definiciones para la librería: básicamente un listado de todo lo que hay dentro, mientras que el archivo del código fuente tiene el código real. Vamos a llamar a nuestra librería "Coche Digital", por lo que nuestro archivo de cabecera será CocheDigital.h. Echemos un vistazo a lo que contiene. Puede parecer un poco extraño al principio, pero tendrá más sentido una vez que se vea el código fuente que lo acompaña.El archivo de cabecera consiste básicamente en una clase con una línea para cada función de la librería, junto con las variables que se van a usar:

3.- VICION COMPUTACIONAL CON ARDUINO

1. INTRODUCCIÓN

La visión artificial ha tenido un papel importante en el desarrollo de nuevas tecnologías. La creación de robots autónomos con algoritmos de aprendizaje y visión son en gran medida estudiados y desarrollados en grandes universidades del mundo, ya que permiten la creación de robots inteligentes capaces de solucionar diversos problemas que se presentan actualmente en la industria y en la vida cotidiana, emulando las funciones biológicas de animales y humanos.En este artículo se describe los aspectos que se tuvieron en cuenta para el desarrollo del proyecto: Robot móvil guiado por visión. En la sección 2 se presenta el estado del arte, en la sección 3 se explica el proceso de construcción del prototipo seguidor de línea, a

Page 11: Monografia de Arduino

continuación se explica en detalle la construcción del vehículo de parqueo automático. En la sección 5 se explica el proceso de reconocimiento de imágenes con Kinect, y su implementación en el robot móvil. Finalmente, se explican los ajustes que se están realizando a los problemas planteados y se realizan las conclusiones.

ESTADO DEL ARTE

La robótica en los últimos años ha tomado gran importancia a nivel educativo e industrial, no solo porque combina diferentes áreas de la ingeniería, sino por que debido al gran avance en los procesadores se ha permitido desarrollar y procesar diferentes algoritmos antes imposibles de computar, a una gran velocidad.Se dan desarrollado simulaciones que permiten observar el diseño de un controlador difuso para el parqueo en reversa de un vehículo terrestre no articulado. Además se muestra el desarrollo de una interfaz configurable construida en Matlab, la cual permite el control bien sea manual o automático del vehículo. (Restrepo et. al, 2010)Algunos proyectos elaborados por algunas universidades llevan esta simulación a un prototipo. El proyecto llevado a cabo por la universidad de München, presenta una aproximación a la adquisición y transferencia de las habilidades de un conductor experimentado para un controlador de estacionamiento automático. El controlador procesa la información de entrada procedente de una cámara generando los comandos de dirección correspondientes. Para la arquitectura del control hibrido se consideró dos arquitecturas de control: redes neuronales y lógica difusa. (Chen, 1996)Otro proyecto similar se llevó a cabo en la universidad de Florida, la cual consiste en demostrar experimentalmente el funcionamiento de un vehículo que utiliza lógica difusa para el parqueo en espacios reducidos. Los parámetros necesarios para el controlador son aprendidos mediante sistemas genéticos, los cuales adaptan a este para que realice la tarea de la forma más óptima. (Gupta, 1989)Chih-Yung Chen y Hsuan-Ming Feng desarrollaron un integrando el uso de transformadas Wavelet, mapas de organización, lógica difusa y redes neuronales para implementar un sistema inteligente mediante FPGA y microprocesadores que fuera capaz de mover un robot móvil para que este lograra parquearse de forma automática en una celda. (Aby et. al, 2011)Se desarrolló y diseñó un algoritmo en redes neuronales en tiempo discreto para la aplicación en robótica móvil en la Universidad de San Juan Argentina, buscando implementar controladores para reducir las perturbaciones ocasionadas por las variaciones del modelo debido a la cámara abordo. (Rossommando et. al, 2011).

SEGUIDOR DE LÍNEA

Para el prototipo del seguidor de línea se emplea la cámara CMU Cam 4, creada por el proyecto del mismo nombre, y que permite desarrollar aplicaciones de visión de forma rápida y sencilla con la ayuda de un micro controlador de la familia Arduino.Dado que la cámara cuenta con funciones ya implementadas para extraer ciertas características provenientes de la imagen, es una buena herramienta para tomar una primera aproximación al diseño de controladores con visión artificial.Para este proyecto, se emplea la CMU Cam para desarrollar el prototipo de seguidor de línea. El algoritmo se desarrolla en la IDE de Arduino con las funciones propias de la CMU

Page 12: Monografia de Arduino

Cam, incluida en la librería desarrollada por sus autores.El controlador es de tipo proporcional, pues toma la diferencia que hay entre el centro de la imagen y el centro de la línea de color que debe seguir (cuyos valores en el espacio de color RGB se especifican en el parámetro correspondiente), y da una orden de control a los motores proporcional a dicho error. De esta forma, si el centro de la línea se desplaza a la izquierda de la imagen se acciona el motor derecho, y si se desplaza hacia la derecha se

acciona el izquierdo. En caso de estar en el medio los motores se accionan con la misma velocidad y dirección.La plataforma empleada para este prototipo es la misma que se uso para el robot de parqueo, por lo tanto se explica en la siguiente sección.

3. PARQUEO AUTOMÁTICO

En esta sección se describen cada una de las etapas del proyecto, los problemas que se presentaron en estas y las soluciones empleadas.

4.1. Diseño de la estructura:

La estructura utilizada es la plataforma básica para robótica todo terreno, la cual está diseñada para aplicaciones básicas de robótica móvil (ver Figura 1).Debido a que la estructura no tiene el espacio suficiente para tener abordo los elementos eléctricos y electrónicos, se rediseño el robot de tal forma que este quedara con dos niveles.De esta manera, en la parte superior del robot se ubicó la tarjeta de desarrollo BeagleboardxM, la cámara y el servomotor que la controla. En la parte inferior está ubicado todo lo relacionado con el control de motores y la batería.

Page 13: Monografia de Arduino

Hardware:

En el robot móvil se utiliza varios tipos de hardware, cada uno con una tarea específica dentro del funcionamiento del robot.Unidad de procesamiento. Debido a que el robot es totalmente autónomo y además deberá procesar una gran cantidad de información suministrada por la cámara, es indispensable el uso de un buen procesador. Se decidió usar la tarjeta de desarrollo Beagleboard xM desarrollada por Texas Instruments (ver Figura 2). Esta tarjeta contiene un procesador Cortex A8 1GHz, lo que le permite trabajar similar a una laptop. El sistema operativo eleccionado para el desarrollo del robot es Ubuntu, este sistema operativo le permite a la tarjeta tener una velocidad de procesamiento mucho mayor debido a su buen manejo de los recursos del sistema. Los periféricos que tiene la tarjeta son los necesarios para el control de la cámara y el Arduino Uno.

Visión:

La aplicación de visión que guía al robot móvil hasta el parqueadero, necesita en primera instancia procesar las imágenes que captura por medio de la cámara.OpenCV captura cada frame de video proveniente de la cámara secuencialmente para luego convertirlo en escala de grises con el fin de lograr un procesamiento correcto de las imágenes. Se transforma las imágenes que están es escala de grises a imágenes binarias y luego se suavizan por medio de un filtrado no lineal con el fin de remover el ruido y solo capturar la información relevante que se necesita para el control de robot móvil.Una vez se procesan las imágenes, se obtiene los contornos y luego se filtran aquellos contornos que no proporcionan ninguna información sobre el número que se desea reconocer. Con este filtrado solo queda los contornos relevantes y se les hace un análisis y

Page 14: Monografia de Arduino

se les extrae información sobre la posición x y y del centroide y el boundingbox el cual dibuja un rectángulo el cual cubre todo el objeto sin considerar rotaciones (ver Figura 8).

Algoritmos de aprendizaje:

Los algoritmos inteligentes implementados para el reconocimiento de números y el control del vehículo para lograr el objetivo de parquearse se describen a continuación.Máquinas de soporte vectorial. Esta metodología de aprendizaje consiste en optimizar el separador que permite clasificar un conjunto de datos de entrada, mediante la reducción del producto vectorial entre el separador y el vector de pesos.Este algoritmo de aprendizaje se utilizó para el reconocimiento de dígitos. Inicialmente, se tomó como base un grupo reducido de datos, pero posteriormente se uso un algoritmo que descargaba estos datos en línea, y mejoraba así el desempeño del clasificador. Este último aprendizaje tardo alrededor de 1200 s en realizarse, y una vez terminado genera un archivo .DAT que puede ser leído gracias a las funciones propias de la librería dedicada a SVM de Python.La característica usada como entrada para el algoritmo fue el contorno del digito obtenido mediante un proceso de segmentación de la imagen. Una forma en que se puede mejorar a futuro el reconocimiento de estos dígitos es usando un vector con algunas características adicionales que permitan disminuir el número de falsos positivos obtenidos.Redes neuronales. Este algoritmo se usa para el control del vehículo. Tomando como entrada el área del rectángulo que encierra el digito y el centroide del mismo, y como salida (función objetivo) la acción a realizar por el vehículo (ir hacia adelante, hacia atrás, derecha o izquierda), se construyeron los datos de entrenamiento para la red.La red neuronal, de tipo FeedForward, se hizo de 3 capas, la primera con dos neuronas, la oculta con 4 y la tercer con 3. La función de activación para la capa oculta es la función sigmoidea y la de la capa de salida la función lineal. Tanto la capa oculta como la capa de salida tenían Bias.Dado que en una sola imagen el algoritmo puede tomar múltiples rectángulos (debido al ruido en la imagen, a factores como la iluminación, entre otros), se adiciono una rutina en la cual el control solo toma como dato de entrada el rectángulo y el centroide del digito que se le pide reconocer. En caso de que no vea el digito ingresado, elige alguno de los rectángulos restantes de forma aleatoria y se dirige a el. Esto no debe introducir mucho error, pues si bien esta tomando una acción incorrecta, el clasificador de los dígitos corrige rápidamente el error, y permite al controlador cambiar su ruta para dirigirse al digito correcto una vez lo ha reconocido correctamente.Para el caso en que no se ve ningún digito en la imagen, y no se logra determinar un rectángulo adecuado, se opta por avanzar hacia adelante hasta que el carro tenga dentro de su campo de visión algún digito.

RECONOCIMIENTO DE FIGURAS:

5.1. Descripción del problema:

La visión artificial describe la deducción automática de la estructura y propiedades de un mundo dinámico representado por una serie de imágenes consecutivas.

Page 15: Monografia de Arduino

Las aplicaciones más utilizadas de la visión artificial, son precisamente aquellas que simulen el ojo humano, cuya información que llega de entrada por medio de imágenes, se debe procesar para lograr capturar un punto o área de interés que brinde información importante del medio y con ello ejecutar una tarea específica. Estas aplicaciones pueden ser detección de fallas, medición o calibración, reconocimiento e identificación de objetos o símbolos que ayuden para aplicaciones de señalización y localización para realizar cierto proceso o identificar anomalías en productos.Para la detección de símbolos o patrones en visión artificial es esencial realizar segmentación y el reconocimiento de regiones, lograr capturar la información relevante de la imagen y clasificarla dentro de unos grupos o clases de una población específica.Como se muestra en la Figura 9, el sistema debe incluir un sensor que recoja fielmente las imágenes para ser clasificados, para luego pasar a un algoritmo que permita extraerle las características necesarias para ingresarlas al clasificador quien finalmente clasifica la imagen dentro de unas clases previamente establecidas y toma una decisión con esta información.

Para la implementación de sistemas de visión, los problemas principales que se le presentan al desarrollador son la segmentación de la imagen, como lograr que se capture adecuadamente la información que se requiere, eliminando ruido, características no deseadas de la imagen y enfocarse en el área de interés, eliminando distracciones que confundan al clasificador. Todo lo anterior se debe implementar sin que la información importante captada por la cámara se pierda o se deteriore.

4.- SISTEMAS MECATRONICOS ESPACIALES CON ARDUINO:

El objetivo del presente proyecto es documentar todo el proceso realizado para el montaje y programación de un quadrotor, para el cual se ha tomado como referencia un proyecto creado por la comunidad DIY DRONES basado en la plataforma Arduino. Este proceso comenzó con la compra del material necesario para el montaje, el cual se describe en el apartado 2. Una vez obtenido el material,Se pasó a realizar experimentos para comprobar el funcionamiento de todas las partes. También se comprobó el funcionamiento una vez realizado el montaje completo y con la programación especificada en el proyecto de DIY DRONES. Una vez comprobado esto, se pasó a programar el quadrotor con un código especıfico realizado en el laboratorio, aunque basado en el original.

Descripción del funcionamiento:

Como se ha comentado al comienzo del capıtulo, las plataformas tipo quadrotor disponen de cuatro motores coplanarios en los que las hélices tienen un ´ángulo de ataque fijo. Con esta disposición es necesario que dos motores giren en sentido horario y los dos opuestos lo hagan en sentido anti horario.

Page 16: Monografia de Arduino

Esto es debido a los pares de rotación que generan los motores, de forma que el par generado por los motores que giran en un sentido pueda ser contrarrestado por los motores que giran en el sentido contrario. El sentido de giro de las hélices se puede observar en el esquema de la figura 1.9.

Los quadrotor, al no variar la posición de los motores y las hélices, realizan los movimientos de rotación y traslación aumentando o disminuyendo la velocidad de algún motor. Para realizar esta operación se describen una serie de ´ángulos de referencia o angulos de navegación. Los ´ángulos de navegación, llamados en matemáticas ´angulas de Tait-Bryan, son tres coordenadas angulares que definen un triedro rotado desde otro que se considera el sistema de referencia. Estos ´ángulos son:Cabeceo (Pitch)Es el ´ángulo que se obtiene cuando se produce una rotación en torno all eje formado por los motores 2 y 4 (eje Y) de la figura 1.9, por lo que para modificar este ´ángulo sera necesario actuar sobre los motores 1 y 3. Como consecuencia de la variación de este ángulo se obtiene un movimiento a través de la proyección horizontal del eje formado por los motores 1 y 3.Es el ´ángulo que se obtiene cuando se produce una rotación en torno al eje formado por los motores 1 y 3 (eje X), por lo que para modificar este ´ángulo será necesario actuar sobre los motores 2 y 4. Como consecuencia de la variación de este ´ángulo se obtiene un movimiento a través de la proyección horizontal del eje formado por los motores 2 y 4.Es el ´ángulo que se obtiene cuando el quadrotor realiza una rotación alrededor de un eje vertical perpendicular al plano formado por los motores (eje Z). Para modificar este ´ángulo se puede actuar sobre cualquier motor, puesto que un desequilibrio en los pares de rotación producidos por los motores supondrá un movimiento de giro en torno al eje Z.

Motores:

Page 17: Monografia de Arduino

Ardupilot:

La placa utilizada para realizar el control del quadrotor es una modificación de la marca Arduino denominada Ardupilot Mega. Esta placa utiliza un micro controlador ATmega2560 que funciona a una velocidad de 16MHz, dispone de 16 entradas analógicas, 40 entradas/salidas digitales y una memoria flash de 256Kb. En esta placa también se encuentra el conector para el GPS.La placa Ardupilot es capaz de establecer comunicaciones mediante el bus I2C comentado anteriormente.Concretamente esta comunicación se utiliza para la conexión con los variadores y el magnetómetro.Para alimentar el Ardupilot Mega es necesaria una fuente de 5 voltios, que en nuestro caso obtenemos del regulador de tensión existente en uno de los variadores. También es posible utilizar una fuente de alimentación externa de 7 a 11 voltios, como una batería Lipo 2s de 7.4V, si eliminamos la soldadura del jumper SJ1.

Page 18: Monografia de Arduino
Page 19: Monografia de Arduino

Conclusiones y mejoras:

En esta memoria se ha documentado todo el proceso de construcci´on de un quadrotor, el cual era el objetivo principal de este Proyecto Fin de Carrera.En este proceso de construcci´on se han seleccionado y comprado elementos mec´anicos, el´ectricos y electr´onicos acorde al tama˜no del dise˜no que se quer´ıa obtener, se han fabricado otros elementos, como la placa de distribuci´on de potencia y se˜nal y se han dise˜nado y ajustado controladores PD, PIy PID.Despu´es de todo este trabajo, se han realizado pruebas de vuelo obteni´endose resultados muy positivos en el aspecto de estabilizaci´on y control de altura. Sin embargo, los controles de posici´on por GPS y velocidad lineal deben mejorarse. En el caso del control de velocidad lineal ya se coment´o la causa del funcionamiento poco preciso al describir el control en el apartado 3.3.5. En el caso del control de posici´on por GPS es necesario un ajuste m´as fino de los par´ametros del controlador. Adem´as de estos sistemas para el control de posici´on, se est´a estudiando la posibilidad de utilizar una c´amara de video para complementar los sistemas de posicionamiento. La implementaci´on y ajuste de estos sistemas queda como trabajo futuro.Tras la construcci´on del quadrotor y de las pruebas realizadas, se ha podido comprobar que una de las principales caracter´ısticas de este tipo de veh´ıculos a´ereos es la maniobrabilidad y estabilidad de vuelo. Es debido a estas caracter´ısticas que en la actualidad se est´an realizando gran cantidad de proyectos con estos veh´ıculos, consigui´endose grandes resultados a la hora de realizar formaciones e interacciones entre varios quadrotor o utilizando ´estos para montar estructuras sencillas.

Durante el desarrollo de este Proyecto también se ha podido comprobar la causa del auge en la investigaci´on de estos veh´ıculos, ya que para su desarrollo es necesario investigar en diversos aspectos de la ingenier´ıa. Estos aspectos abarcan la ingeniería mecánica, ingeniería eléctrica, ingeniería electr´onica, teor´ıa de control de vuelo y navegaci´on y sobre todo la ingenier´ıa autom´atica, destacando los campos de dise˜no y ajuste de controladores, sistemas de control por visi´on o sistemas en tiempo real.En el momento en el que se termin´o de escribir este Proyecto Fin de Carrera, ya se estaban realizando algunos trabajos de mejora. Entre ellos, se est´a continuando con el posicionamiento por ultrasonidos del cual se habl´o en el apartado 4. Tambi´en se encuentra en estudio un sistema que permita realizar la grabaci´on de im´agenes o video mediante una c´amara fijada a una estructura balanc´ın capaz de contrarrestar los movimientos del quadrotor, de forma que la imagen permanezca siempre horizontal con el ajuste visual deseado.