Títol:
Autor: Data: Director: Dep. del director: Titulació: Centre: Univer sitat:
ol r emoto Android Cuadr icópter o Arduino por contr ol Xabier Legasa Mar tí n-Gil 3 de Juliol de 2012 Per e Mar és Mar ti Eng.Sistemes, Automàtica i Inf .Ind. mática Enginyer ia Inf or or mát Facultat d Inf or mática de Barcelona (FIB) or mát Univer sitat Politècnica de Catalunya (UPC) Bar ce celonaTech ’
1
Cuadricóptero Arduino por control remoto Android
Proyecto Final de Carr er a Xabier Legasa Mar tí tí n-Gil ormática Ingenier ía Inf orm ormática de Bar celona (FIB) Facultad de Inf orm UPC Bar celonaTech 2011/2012
2
Cuadricóptero Arduino por control remoto Android
Proyecto Final de Carr er a Xabier Legasa Mar tí tí n-Gil ormática Ingenier ía Inf orm ormática de Bar celona (FIB) Facultad de Inf orm UPC Bar celonaTech 2011/2012
2
Índice 1. Lista de Figuras..............................................................................................................6 2. Glosario..........................................................................................................................8 3. Intr oducc oducción ................................................................................................................... 9 3.1. Pr esentación.............................................................................................................................. 10 3.1.1. Descr ipción gener al del pr oyec oyecto......................................................................................10 3.2. Motivación per sonal................ ........................ .................. .................... ................... .................. .................. .................. .................. .................. ............................. .................... 10 3.3. Objetivo.................................................................................................................................... 11 3.3.1. Objetivos del proyecto........................................................................................................... 11 3.3.2. Objetivos per sonales.............................................................................................................. 11
Arte...... ............. ............. ............ ............. ............. ............ ............ ............. ............. ............ ............ ............ ............ ......... ....... ........ ........ ......13 4. Estado del Arte............ 4.1. Shr iquette pr o ject........................................................................................................................... 14 4.2. Mikuadr icopter o................... o............................ ................... .................... ..................... .................... ................... ................... ................... .................................. ........................ ... 14 4.3. NG U AVP.................. ........................... ................... .................... ................... .................... .................... .................... .................... .............................................. ..................................... 14 4.4. Aeroquad....................................................................................................................................... 14 ones - Ar duP duPilot...................................................................................................................15 4.5. DiyDr one 4.6. Openpilot................... ............................. ................... .................. .................. ................... ................... ................. .................. .................. ................... ............................. ....................... ..... 15 4.7. Parrot AR Drone............................................................................................................................ 15 4.8. A 4.8. Análisis de la oportunidad. oportunidad.......... .................. .................. ................... .................... .................. .................. .................. ........................................... ................................... 17 5. Arquitectura del sistema cuadr ic o........................................................................18 icópter o........................................................................18
5.1. Hardware. Diseño............... ño....................... .................. .................. .................. ................... .................. .................. .................. .................... ...................... ........................ ............. 18 5.1.1. Conf igur ación................. ón.......................... .................... .................... .................... .................... .................. ................... ..................... ................................... ........................ 20 5.1.2. Fr ame..................................................................................................................................... 21 5.1.3. Motores.................................................................................................................................. 21 5.1.3.1. Brushed Motor s (DC Motor s).................. ........................... ................... ................... .................... ..................... ...............................22 .....................22 5.1.3.2. Brushless Motor s................... ............................. ................... .................... .................... ................... .................... .......................................22 .............................22 5.1.4. Bater ía.................... ............................. .................. .................. ........................ ......................... ................... ................... .................... ........................................ .............................. 26 5.1.5. ESC (var iador )....................................................................................................................... 28 5.1.6. PWD...................................................................................................................................... 30 5.1.7. Regla watts per pound”.................. ............................ ................... .................... .................... ................... .................... .....................................33 ...........................33 ontr ol olador .................. 5.1.8. Micr oc ocontr .......................... .................. ................... ................... .................. .................. .................. .................. .................................. ........................ 34 5.1.8.1. Hardware libr e.................. .......................... .................. ................... ................... ................... ................. .................. ....................................... ............................. 34 5.1.8.2. Arduino.......................................................................................................................... 34 “
3
5.1.8.2.1. ¿Qué es ar du ealmente?................. duino r ea ............................. ..................... ................... .................... ...................................35 .........................35 duino?.................... 5.2.8.2.2. ¿Por qué ar dui ............................. ................... .................... ................... ................... ........................................35 ..............................35
5.1.9. Batería 9V.............................................................................................................................. 39 5.1.10. IMU.................. ............................. ................... .................. .................. .................. .................... .................. .................. .................. .................. .................................. .................... 39 ómetr o................ 5.1.11. A 5.1.11. Acceler óm o......................... .................... .................... .................... .................... .................. ................... ..................... ................................... ........................ 40 oscopio................. 5.1.12. Gir os o.......................... .................. ................... ..................... ..................... ................... ................... ................... ...................................... ............................. 41 5.1.13. I²C........................................................................................................................................ 41 5.1.14. Módulo Bluetooth................................................................................................................ 42 5.1.15. Otros.................................................................................................................................... 43 5.1.16. Peso..................................................................................................................................... 43
6. Software. Diseño..........................................................................................................55 6.1. Android.......................................................................................................................................... 56 6.2. Arduino.......................................................................................................................................... 58 7.1. Lectura de la IMU.......................................................................................................................... 61 7.1.1. Filtro de Kalman................ n......................... ................... ..................... ..................... ................... .................... ................... .................. ................................61 ......................61 Andro id - Ar du 7.2. Comunicación Android duino.............. no........................ .................... .................. .................. .................. ............................................. ..................................... 64 7.2.1. A 7.2.1. Amar ino................................................................................................................................. 64 7.2.2. Android APP.......................................................................................................................... 65 7.2.3. Arduino Fi Fir mwar e.................. ............................ ................... .................... ..................... ................... ................... .............................................. .................................... 69
8. Algoritmo de estabilización. Bases...............................................................................71 Contr olador PID................. 8.1. Contr ........................... .................... ................... .................... .................... ................... .................... ................................................ ...................................... 71 opor cional.................. 8.1.2. Pr opor ........................... .................... .................... ................... .................... ................... ................... .............................................. .................................... 72 8.1.3. Integr al................................................................................................................................... 72 8.1.3. Integr al................................................................................................................................... 72 8.1.4. Der ivativo .................... ............................. .................... .................... ................... .................... ................... .................... ..................... .................... .......................... ................ 73 8.2. PID en Arduino.............................................................................................................................. 73
9. Conclusiones................................................................................................................75 9.1. Objetivos conseguidos. conseguidos.......... .................. ................... ..................... ..................... ................... ................... ................... ..................... .....................................75 .........................75 9.2. Desviaciones de planif icación........................................................................................................ 75 onómica.................. 9.3. Valor ación económi ............................ ..................... ..................... ................... ................... ................... .................... ...................................... ........................... 75
10. Planificación.............................................................................................................. Planificación.............................................................................................................. . 78 11. Posibilidades de trabajo f utur utur o...................................................................................80 o...................................................................................80 11.1. Prueba del algor itmo de estabilización.........................................................................................80
11.2. Aeroquad Sof twar e................... .............................. .................... .................... .................... .................. .................... ..................... ....................................... ............................. 80
4
12. Ref er encias.................................................................................................................83 13. Bibliogr af ía................................................................................................................ 85
5
1. Lista de Figuras Figur a 1. AR Drone ...............................................................................................................13 Figur a 2. Esquema gener al inter conexión de dispositivos.....................................................16 Figur a 3. Sentido de r otación de los cuatro motores............................................................. 18 Figur a 4. Motor de Cor r iente Continua (DC motor / Brushed motor).................................. 19 Figur a 5. Dif er encia entre motores con y sin escobillas........................................................ 20 Figur a 6. Motor sin escobillas (Brushless DC motor)..................................................... ….. 20 Figur a 7. Hacker Style Br ushless Outrunner 20-28M. ......................................................... 22 Figur a 8. Batería ZIPPY Flightmax 2200mAh 3S1P 20C..................................................... 23 Figur a 9. E jemplo de ESC..................................................................................................... 25 Figur a 10. Único ESC contr olando 2 motores br ushless a una misma velocidad.................. 26 Figur a 11. Esquema de conexión de un ESC.......................................................................... 27 Figur a 12. PWM..................................................................................................................... 28 Figur a 13. Tur nigy AE-20A Brushless ESC.......................................................................... 29 Figur a 14. Logo Open Har dwar e.............................................................................................31 Figur a 15. Logo Arduino.........................................................................................................32 Figur a 16. Arduino Uno.......................................................................................................... 34 Figur a 17. Yaw Pitch Roll...................................................................................................... 36 Figur a 18. Yaw Pitch Roll...................................................................................................... 36 Figur a 19. Sparkf un IMU Digit al Combo Board - ITG3200/ADXL345................................37 Figur a 20. Parte poster ior de la IMU ITG3200/ ADXL345.................................................... 39 Figur a 21. Bluetooth Modem - BlueSMiRF Silver de sparkfun......................................... 39 “
”
Figur a 22. Izquier da: Pr otoshield Arduino. Derecha: Arduino UNO..................................... 42 Figur a 23. Esquema de conexión con IMU y Bluetooth......................................................... 42 Figur a 24. Esquema de conexión con conmutador................................................................. 44 Figur a 25. Esquema de conexión def init ivo........................................................................... 45 Figur a 26. ar duino Uno y pr otoshield acabado...................................................................... 46 Figur a 27. Pr otoshield acabado...............................................................................................46 Figur a 28. Pr otoshield sobre Ar duino Uno............................................................................. 47 Figur a 29. Pr otoshield sobre Ar duino Uno............................................................................. 48 Figur a 30. IMU y Bluetooth en la placa Pr otoshield............................................................. 48 Figur a 31. Pr otoshield acoplado al micr o............................................................................... 49
6
Figur a 32. Motor brushless con hélice, anclado..................................................................... 50 Figur a 33. Conexión entre motor y ESC................................................................................ 50 Figur a 34. Cableado eléctr ico de la parte inf er ior inter ior ..................................................... 51 Figur a 35. Arduino instalado dentro del f ra me...................................................................... 51 Figur a 36. Arduino instalado dentro del f ra me....................................................................... 52 Figur a 37. Logo Andr oid......................................................................................................... 54 Figur a 38. Logo Ar duino........................................................................................................ 55 Figur a 39. IDE Ar duino.......................................................................................................... .56 Figur a 40. E jemplo Arduino.................................................................................................... 57 Figur a 41. Ser ial Monitor......................................................................................................... 58 Figur a 42. Filtro de Kalman..................................................................................................... 59 Figur a 43. Ángulos de Euler .................................................................................................... 61 Figur a 44. Hegalar i app. Menú................................................................................................. 62 Figur a 45. Seekbar que controlará la velocidad de r otación.................................................... 63 Figur a 46. Four Motor Activity.................................................................................................. 63 Figur a 47. Esquema PID........................................................................................................... 68
7
2. Glosario
Ard uino Plataf orm a de electr ónica abier ta para la cr eación de pr ototipos basada en sof twar e y har dwar e f lexibl es y f áciles de usar. Se creó para ar tistas, diseñadores, af icionados y cualquier a inter esado en cr ear
entornos u objetos inter activos.
A ndroid Sistema oper ativo para plataf or mas móviles como smartphones, tablets..
UAV (Unmanned aer ial vehicle). Vehículo Aéreo no tr ipulado. Sistema autónomo que puede operar sin inter vención humana alguna durante su f uncionamiento.
Aeronave RC Vehículo aéreo contr olado r emotamente.
Multirotor o Multicóptero Helicópter o con más de dos r otor es.
8
3. Introducción Un cuadr icópter o, cuadr ir otor o cuadrotor es un helicópter o que consta de cuatro rotores mediante los cuales se propulsa. Estos rotores se sitúan por lo gener al en las extr emidades de una cruz sus hélices
giran en un mismo plano. El contr ol de movimiento del aparato se consigue, a justando la velocidad de r otación de cada ho ja.
La razón pr incipal de que los cuadr icópter os hayan apar ecido hace r elativamente poco,
puede atr ibuir se a var ios f actor es. El obstáculo pr incipal
es
la necesidad de calcular la velocidad de las
hélices en tiempo r eal con tal de mantener lo estable. Esto hace que el algor itmo de control sea comple jo: El sistema tiene que r etr oalimentar se con datos sobre su estado actual y actuar en consecuencia al
momento. Sin embargo, a medida que la tecnología ha ido avanzando, la pr ecisión y carga de computación necesar ias han de jado de ser una barrera. Gr acias a la tecnología más pr ecisa de sensores y procesadores que existe hoy en día, es posible hacer volar estos aparatos. De ahí el auge que han exper imentado estos sistemas en los últimos tiempos.
9
3.1. Presentación
3.1.1. Descr ipción gener al del pr oyecto
El proyecto descr ito en este documento consiste en la r ealización del diseño e implementación de un sistema f ísico cuadr icópter o. El aparato tendrá que ser capaz de comunicarse remotamente para que sea
posibl e contr olar su dir ección. Para ello, se habrán de analizar cuales son las alter nativas existentes,
tanto respecto al hardware como al software se r ef ier e.
3.2. Motivación
personal
La idea de este proyecto surgió del cúmulo de var ias cir cunstancias. Me encontraba a f alta de un
año de acabar la carrera y me apetecía r ealizar un PFC que f uer a dif er ente. Algo que me f or zar a a apr ender ,
pero que me per mitier a a la vez aplicar parte de lo que he aprendido todos estos años. Un amigo f r ancés, me envió la URL de la plataf orma Arduino[1] y empecé a inter esar me más por la electr óni ca. Al poco tiempo, otro amigo me envió un video de un micr o-cuadr icópter o controlado por r adio control. Tras dar le
vueltas al tema, me decidí a juntar los conceptos Ar duino+Andr oid+Cuadr icópter o y me puse manos a la obr a.
10
3.3. Objetivo El ob jetivo principal del presente proyecto es el diseño de un sistema f ísico cuadr icópter o de
exper imentación. El sistem a constará de cuatro rotores que estarán contr olados desde un micr ocontr olador Arduino el cual a su vez r ecibir á inf orm ación de los sensores necesar ios para una correcta estabilización
de vuelo del cuadr icopter o.
Por otra parte se dotará al sistema de un control remoto inalámbr ico desde un smar tphone Android. En el proyecto se distinguen objetivos más gener ales y otros más específ icos:
3.3.1. Objetivos del pr oyecto
●
Generar la plataf orm a cuadr icópter o, haciendo uso de un micr ocontr olador y sensores adecuados
●
El cuadr icópter o ha de ser capaz de comunicarse con una aplicación que corra en el sistema
oper ativo Android.
3.3.2. Objetivos per sonales ● Apr endiza je sobre vehículos RC(contr ol r emot o). ● Af r ontar un pr oblema que combine hardware + soft war e.
●
Pr of undizar los conocimientos de electr ónica de los que dispongo.
● Apr endiza je del entorno Arduino
Lengua je de pr ogr amación Arduino (basado en Wiring) ○ IDE Arduino (basado en Pr ocessing) ○
●
Pr of undizar en el diseño de aplicaciones Android.
11
○ ○
Utilización del IDE Eclipse en con junto con la SDK de Android. Sensores intr ínsecos en teléf onos Android.
● Aprender el f uncionamiento básico de dif er entes elementos electr ónicos.
12
4. Estado del Arte Es necesar ia una f ase ini cial de análisis para deter minar el alcance, objetivo, r equisitos del
proyecto. También habrá que hacer una selección del hardware y herr amientas de sof twar e del que se har á uso. En este capítulo se va a abordar las f ase previa al desarr ollo. Se va a poner la atención en
dif er entes cuadr icópter os existentes que nos ayudará durante el análisis y desarr ollo de nuestra idea.
Existen una cantidad reseñable de proyectos que af r ontan el reto de construir mult icópter os o helicópter os de múlt iples motores. Dependiendo del enfoque desde donde los mir emos, se pueden dividir de var ias maner as:
Amateur vs Comercial Por una lado, existen proyectos amateur que sin ánimo de lucro. Se trata más bien de compartir exper iencias entre amantes de este tipo de aparatos. En otros en cambio, el enf oque comer cial es clar o. Se suelen
venden cuadr icópter os enteros o partes del mismo. Además, en muchos de ellos desarr ollo continuo del producto con el objetivo de me jor ar lo.
se
ve un clar o
Open source vs Propietario Por otro lado, podríamos separar entre proyectos de código abier to y propietar io. Existen var ias comunidades, que desarr ollan software de código abier to, or ientadas a deter minadas plataf orm as. Otras en cambio no publican su código. Pero no solo eso. Al tratarse de aparatos f ísicos, también los esquemas de alguna(s) parte(s) del hardware pueden hacerse públicas o no. Un clar o e jemplo de hardware open-sour ce es Arduino. Se expl ica más adelante en este documento.
13
Atendiendo a estas dos maneras de clasif icación, obtenemos 4 combinaciones posibles. Se ha r ealizado un análisis de los proyectos más r eseñables de dif er entes combinación poniendo especial atención en proyectos de código abier to:
4.1. Shr iquette pr oje ct Ini ciado a f inales de 2008 en Alemania, Shr iquette pr o ject[3] es un proyecto
amateur que sur ge
con el ánimo de pr of undizar en conocimientos de pr ogr amación, electr ónica y control. El código se
publ ica ba jo un tipo de licencia Cr eative Commons. El pr imer modelo es un tr icópter o, pero le siguen otros modelos con un número mayor de r otor es. Dispone de un giroscopio de tres e jes y un aceler ómetr o.
4.2. Mikuadr icopter o
Mikuadr icopter o[6] es otro e jemplo de un proyecto individual, en este caso escr ito en castellano, que descr ibe el diseño de un cuadr icópter o.
4.3. NG UAVP NG U AVP[9]
es
un proyecto de RC de código abierto que se inicia en 200. Se apoya en una
comunidad de desarr ollador es.
4.4. Aer oquad
AeroQuad[4] es un proyecto de código abierto de hardware y software que se dedica a la constr ucción de cuadr icópter os contr olados remotamente. Es un proyecto muy vivo, con una gran comunidad detr ás.
14
4.5. DiyDr ones - ArduPilot Al estilo del anter ior , se trata de un proyecto de código abierto. Abarca un gran número dif er ente
de dispositivos, desde multir otor es y aviones hasta vehículos terrestres. Se basa en Ar duPilot, un sistema de pilota je remoto compatible con la plataf orma Arduino. Implementa un hardware llamado APM_2 en el
cual se puede correr dif er entes programas de código abier to específ icos para Arduino.
4.6. Openpilot Openpilot[7] es otra iniciativa que se inicia en 2010, muy del estilo de Aeroquad y DiyDr ones. Como su propio nombre indica, se trata de código abierto, y está pensado para dif er entes tipos de
vehículos aér eos.
Cabe destacar que son países como EEUU o Alemania donde he encontrado más proyectos que desarr ollen cuadr icópter os. Además, es clar amente en EEUU donde la f aceta comer cial está más mar cada. El modelo de negocio suele ser par ecido: Se encuentran clar amente or ientados a la venta de har dwar e
específ ico que ellos f abr ican, para el cual desarr ollan el software. Este código lo abren, per mitiendo que los usuar ios lo modif iquen y me jor en a su gusto. Existe
embargo un proyecto de especial inter és, llevado a cabo por una empresa Francesa, el cual paso a detallar más pr of undamente.
4.7. Parrot
sin
AR Dr one
Proyecto r eciente de la empresa Francesa Parr ot[8]. En el año 2010 presentaron su cuadr icópter o AR Dr one[9] en el una conf er encia de Las vegas: Un multirotor con cubier ta de plástico y espuma de aproximadamente 30 centímetros de lar go.
15
Figur a 1. AR Dr one
Tiene dos micr o-cámar as incor por adas que per miten grabar video. Es este hecho el hace que a
menudo presenten el producto como The Flying Video Game . Se controla mediante una aplicación par a smartphones que está disponibl e tanto para dispositivos iOS / como para Android. La comunicación es “
”
vía Wi-Fi. Inter namente, contiene hardware propio que incluye dispositivos habit uales como son el aceler ómetr o, gir oscopio, altímetr o de ult r asonidos que per mite contr olar la altitud,... El software corre sobre el sistema oper ativo Linux. Es un producto completamente comer cial y han decidido mantener el código como pr opietar io. Sin embargo, dispone de una API con la que se
per mite programar hasta cier to punto el compor tamiento del drone. Tiene la habilidad de r econocer
objetos 3D y es compatible con juegos que intr oducen r ealidad aumentada. En cuanto a las especif icaciones más técnicas, dispone de un micr ocontr olador ARM9 468 MHz
embebido con 128 Megabytes de RAM. Dispone de comunicación mediante Wi-Fi y USB. Un aceler ómetr o de 3 e jes, dos gir oscopios y un altímetr o ult r asónico. La estructura está f abr icada en f ibr a de
carbon. Posee 4 motores eléctr icos de 15 watt de tipo br ushless y una batería r ecar gable de 1000 mili Amper ios de Litio que pr opor ciona 11.1 voltios. Con un peso de entre 380/420 gramos es capaz de
volar durante 12 minutos con una velocidad de 5 metros/segundo o lo que es lo mismo, 18 km/h. Su pr ecio a f echa de 1 de Junio de 2012 es de 300 €.
16
4.8. Análisis de la oportunidad
Si bien existen bastantes proyectos en el mundo de los cuadr icópter os, existen muy pocos que sean controlados mediante un smartphone. La tendencia hacia el uso masivo de este tipo de teléf onos per miten r educir costes en el ámbito de los dispositivos contr olados por contr ol remoto, ya que no hace necesar io el uso de otros sistemas de tr ansmisión más caros como son el r adio control. Si hablamos de
cuadr icópter os controlados mediante movil, hay que destacar que Parrot AR Drone ha implementado esta idea r ecientemente. Sin embargo, no se ofrecen esquemas del hardware y el código es pr opietar io, por lo que se habrá de analizar y ver cual es la me jor manera de llevar a cabo el proyecto. La idea inicial es, r ealizar el desarr ollo basándonos en plataf orm as abiertas y con un coste
económico lo más r educido posible.
17
5. Arquitectura del sistema cuadricóptero Se ha r ealizado un análisis para deter minar qué elementos serán necesar ios para llevar a cabo
proyecto. Podemos dif er enciar clar amente el tr aba jo r ealizado entre aspectos que tienen que ver con el hardware o la estructura f ísica del aparato y por otro lado, todo lo que tiene que ver con el tema lógico o de software. Vamos a ver en más detalle el camino r ecor r ido.
5.1. Hardware.
Diseño.
Se ha llevado a cabo un estudio de todos y cada uno de los componentes f ísicos que compondr án el cuadr icópter o. Antes de entrar a explicar más en pr of undidad cada uno de ellos, conviene antes hacer
un repaso rápido para poder entender cual es la r elación de cada uno de ellos con el r esto. Comenzamos por el
f r a m e o
armazón que será el soporte f ísico donde ir án anclados todos los
demás componentes. Tendrá f or ma de cruz y en cada uno de los extremos ir á anclado un m o t o r . Habr á que deter minar qué tipo de motor se utiliza y cómo va a ser contr olado. En este caso se ha optado por la utilización de motores br ushless (sin escobillas). Cada uno de ellos será contr olado por un (Electr onic Speed Contr oller) o también llamado var iador , cuyo f uncionamiento
se
S C E
expl ica más aba jo en
este capít ulo. El cer ebr o‟ del sistema será un m i c r o c o n t r o l a d o r Arduino. Este será el encargado de „
mandar sobre los ESCs que serán los encargados últimos de mover los motor es.
Se ha decidido separar en dos la alimentación del sistema. Por un lado hemos añadido una
pila
que se encargará de alimentar el micr ocontr olador y todos los componentes unidos a él. Por otro lado se
encuentra una b at er ía mayor que será la encargada de alimentar los motores. Esta cor r iente sin embar go, ha de pasar por los ESCs pr imer o que serán los encargados de administr ar electr icidad a los motores. O si se quiere decir de otra manera, los motores se alimentan de electr icidad a través de los ESCs.
Anclados al micr ocontr olador , tenemos también una I M U (Iner tial Measurement Unit) que consta de un acelerómetro y un gir oscopio en una único board o tablero, ambos de tres e jes. La f ilosofí a y f uncionamiento de estos aparatos se explica más adelante en este capítulo, pero a groso modo, son los
18
sensores necesar ios para saber la inclinación en todo momento del sistema. Para r ealizar la conexión entr e el micr o y el smartphone, también hemos añadido a la placa un m ó d u l o b l u e t oot h .
Las hélic es unidas a los motores crearan la pr opulsión necesar ia. He creado el siguiente esquema (f igur a 2) que sir ve para hacerse una idea de la inter conexión de elementos con más f acilidad. El esquema se completa después pero sir ve para ver el micro por un lado (con la IMU y el módulo Bluetooth) y los ESCs y motores por otro.
Figur a 2. Esquema gener al inter conexión de dispositivos.
19
La lista por tanto queda de la siguiente maner a: ●
Fr ame.
●
4 Motores sin escobillas.
●
4 ESCs (Electr onic Speed Contr oller).
●
Micr ocontr olador Arduino.
●
IMU (Iner tial Measurement Unit).
●
Modulo Bluetooth.
●
Bater ia (para micr o Arduino).
Batería (motor es). ● 4 Helices. ●
5.1.1. Configur ación
Desde el inicio de este documento se ha hablado de un sistema cuadr icópter o. Antes sin embar go, se planteó la posibilidad de diseñar un multir otor con un número di f er ente de motores dif er ente a cuatro. Un tr icópter o habría sido una posibilidad muy válida. Este tipo de sistemas hacen necesar io el uso de un
servo en la parte poster ior de su estructura. El servo sería el equivalente a la cola de un pá jar o o de un pez. Se descartó porque implica una dif icult ad extra a la hora del monta je y la estabilidad de este sistema no es mayor que un cuadr icópter o, por e jemplo. También se contempló la posibilidad de montar un
hexacóptero, o cualquier sistema con más de 4 motores. Se descartó porque el coste económico aumenta.
si se “+”
Tomada pues, la decisión de constr uir un sistema cuadr icópter o, la siguiente decisión a tomar, es utilizar á una distr ibución en “x” o en + . A la hora de controlar los motores, la conf igur ación en “
”
implica una mayor sencillez, por lo que se ha optado por esta opción. Un motor estará situado en la
parte delanter a y otro en la tr aser a. El sentido de giro de cada hélice es de vital impor tancia. Haremos girar dos de las ho jas en sentido
hor ar io (CW) y otras dos de ellas en sentido contr ar io(CCW ) como en la f igur a 3. Si todas gir ar án en las agujas del r eloj, por e jemplo, el cuadr icópter o comenzaría a gir ar en sentido inver so continuamente.
20
Figur a 3. Sentido de r otación de los cuatro motor es.
Pasemos por tanto a analizar los elementos necesar ios para un cuadr icópter o conf igur ado en +. 5.1.2. Frame
Existen muchas posibilidades a la hora de elegi r f r ame. Habrá que decidir respecto al mater ial, tamaño y f or ma del mismo. Para ello tendremos que tomar en cuenta cr iter ios como el peso, la aer odinámica y el pr ecio. En cuanto al peso, está clar o que un mater ial demasiado pesado sería negativo, puesto que tendríamos que aumentar la f uer za para logr ar el mismo resultado de pr opulsión. Si nos vamos al otro extremo y elegimos un mater ial demasiado ligero corremos el r iesgo de que este, sea demasiado f rá gil. Existen sin embargo mater iales que aun siendo liger os, siguen siendo igual de f uer tes que los pr imer os o más. También hay que tener en cuenta que una mayor f lexibilidad del cuadr icópter o evitar á posibles daños en su estructura en caso de caída. El e jemplo per f ecto de mater ial liger o, duro y f lexible es la f ibr a de carbono y der ivados o la f ibr a de carbono y vidrio. Sin embargo, se ha elegido un f r ame (semi ensamblado de f ábr ica) de contrachapado de madera por var ias razones. La pr incipal es el pr ecio. Como se ha dicho, la f ibr a de carbono es un mater ial más adecuado pero es bastante más caro. Al final del presente documento hay un resumen de pr ecios. El f r ame tiene 3mm de grosor y pesa 195 gr amos.
5.1.3. M otor es La elección de los motores es una decisión impor tante. Existen dos tipos. Los motores con
escobillas (brushed motors o DC motors) y los motores sin escobillas llamados, brushless motors o br ushless DC motor s.
21
5.1.3.1. Br ushed Mot or s (DC Mot or s )
Según la wikipedia, el motor de co rr i ent e cont i nua es una máquina que convierte la ener gía eléctr ica continua en mecánica, provocando un movi miento r otator io” [10]. Su popul ar idad y uso “
descendió mucho con la llegada de los motores de cor ri ente alter na, aunque se siguen utilizando en deter minadas industr ias. La pr incipal car acter ística del motor de corr iente continua es la posibilidad de r egular la velocidad desde vacío a plena carga. Se compone pr incipalmente de dos partes, un estator que
da soporte mecánico al aparato y tiene un hueco en el centro gener almente de f orma cilíndr ica. En el estator además se encuentran los polos, que pueden ser de imanes permanentes o devanados con hilo de cobre sobre núcleo de hierro. El rotor es gener almente de f or ma cilíndr ica, también devanado y con núcleo, al que llega la cor ri ente mediante dos escobillas. Requier en mucho mantenimiento.
Figur a 4. Motor de Cor r iente Continua (DC motor / Brushed motor).
5.1.3.2. Br ushl ess Mot or s También llamados Brushless DC motors, son motores que carecen de colector y
escobillas o carbones. En vez de f uncionar en DC, f uncionan con una señal tr if ásica que aunque idealmente debería de tener una f orma sinusoidal, en la pr áctica son pulsos haciendo que la señal sea una continua.
22
Figur a 5. Dif er encia entre motores con y sin escobillas.
Como se puede apr eciar en la f igur a 5, en los motores brushless, las bobinas ( coils en inglés) rodean los imanes. Es el ESC, como se explicar á más adelante, el encargado de activar estas bobinas “
”
consecutivamente, haciendo que el rotor gir e. El motor dispone de sensores que son capaces de detectar la or ientación del rotor en cada momento, para así poder activar y desactivar las bobinas en el momento adecuado. Los imanes del centro por tanto, son atraídos por la polar idad de un campo magnético gener ado en las bobinas, las cuales r eciben pulsos en un patrón específ ico. Si queremos que el motor gire mas r apido, simpl emente hacemos gir ar el campo magnético secuencial a mayor velocidad. O lo que es lo mismo, tendremos que aumentar la f r ecuencia de los pulsos. Más adelante se explica como los ESCs generan estos pulsos.
Figur a 6. Motor sin escobillas (Brushless DC motor).
23
Cada uno de los dos tipos de motor que hemos visto tiene sus pros y sus contr as.
Motores CON escobillas +
Control simple y sencillo. No hace falta ningún tipo de controlador.
+
Pueden operar en situaciones extremas, al no haber elementos electrónicos.
-
Precisan mantenimiento periódico.
-
Disipación del calor pobre, debido a la construcción interna del rotor.
-
Rango de velocidad menor, debido a limitaciones de las escobillas
-
Las escobillas generan ruido causando Interferencias Magnéticas Eléctricas (EMI) Motores SIN escobillas
+
Conmutación electrónica basada en sensores de posición VS cambio mecánico
+
Mantenimiento menor al no haber escobillas.
+
Mayor eficiencia.
+
Disipa mejor el calor.
+
Mayor rango de velocidades. No hay limitaciones mecánicas por escobillas.
+
Se genera un menor ruido eléctrico (EMI)
-
Algo mas caros.
-
Los ESCs se hacen necesarios.
De la tabla anter ior se concluye que merece la pena utilizar motores sin escobillas, aunque par a ello sea necesar ia la incor por ación de ESCs. Son muchas las venta jas que conseguir emos comparado con los inconvenientes. Utilizar emos motores brushless por tanto. Dentro de la f amilia de los brushless, existen dos tipos dif er entes. De tipo I nr unner y Outrunner . En los motores outrunner, los imanes están situados en el exter ior de la estructura. Por tanto, se puede ver como la parte ext er ior del motor, gira. Sucede lo contr ar io en los motores inr unner . Los imanes están en el inter ior de la estructura, y por tanto se ve que lo único que gira es el e je.
24
Los motores o u t r u n n e r gir an mucho más despacio y el par es mucho mayor. La mayor venta ja es el hecho de que no es necesar io una ca ja de cambios, lo que los hace mas silenciosos. Son liger amente menos ef icientes que los inr unner , pero es tan pequeña la dif er encia que no debier a de ser un f actor deter minante a la hora de hacer la elección. Los motores
i n r u n n e r por
su parte, son más ef icientes cuanto más rápido gira el motor y en
gener al son más ef icientes que los outrunner. Necesitan de un elemento adicional entre el motor y la hélice. La parte negativa de los motores inr unner es que estas partes adicionales pueden y suelen dar problemas.
Se ha decidido utilizar motores br ushless outrunner por su mayor f iabilidad. El modelo que se ha elegido es un hacker Style Brushless Outrunner 20-28M . “
”
Figur a 7. Hacker Style Br ushless Outrunner 20-28M.
Las car acter ísticas de este motor son:
Dimensions: 28x28mm Rating: 1050kv Battery Conf ig: 3 Lipo Cells Shaf t(e je): 3.175mm W eight(peso): 43gr
Standard Current: 4-12A Max Current: 15A
25
'rpm'
se
r ef ier e al número de r otaciones completadas cada minuto por un cuerpo que gir a
alr ededor de un e je. kv es el número de rpm-s que un motor girará, por cada volt aplicado. Más adelante,
se ha elegido una batería de 3 celdas (11.1V) con lo que calculamos ya el número de giros completos que
hará el e je de nuestro motor por minuto (r evol uciones por minuto de nuestro sistema). kv = rpm / V rpm = kv*V = 1050kv * (Volt ios _bater ía) rpm = kv*V = 1050kv * 11.1V = 11655 rpm
5.1.4. Batería La capacidad de una batería se mide por el r atio de descarga. El r atio de descarga C de una
batería, es la máxima cantidad de cor r iente que puede pr opor cionar . Como e jemplo:
1300ma (1.3A) 12C battery can deliver (1.3A x 12) 15.6A Hemos elegido la batería que se muestra en la f igur a 7.
Figur a 8. Batería ZIPPY Flightmax 2200mAh 3S1P 20C.
26
Spec. Capacity: 2200mAh
Voltage: 3S1P / 3 Cell / 11.1v Dischar ge: 20C Constant / 25-30C Bur st W eight: 180g (including wir e, plug & shr ink wr ap) Dimensions: 102x37x24mm Balance Plug: JST-XH Dischar ge wir e: 8cm high strand count sof t silicon wir e. 12AWG Dischar ge plug: XT60
Se trata de una batería de 3 celdas(3S) de 2200mAh que es lo mismo que decir que es
capaz de dar 2200mA (o 2.2 Amper ios) en una hora. 20 C es el r atio de descarga o la máxima cantidad de
cor ri ente que puede pr opor cionar . Podemos calcular la cor r iente total (I)
2200ma (2.2A) 20C battery can deliver I = (2.2A x 20) = 44A
Si dividimos los 44A entre los 4 motores que tenemos, tenemos 11A. Vemos que esto enca ja per fe ctamente con la especif icación de los motores: Standard Current: 4-12A. Max Current: 15A
Podemos calcular los watt que tendrá cada motor y los caballos que eso supone como curiosidad:
watts = Voltios * Cor ri ente = 11.1 v * 11 amps = 122.1 [1 horse power = 746watts → 122.1/ 746 = 0.1367 hor ses]
27
5.1.5. ESC
(variador)
Un ESC (Electr onic Speed Contr oller) o en castellano var iador ,
obj etivo
es
es
un circuito electr ónico cuyo
var iar la velocidad de un motor eléctr ico pudiendo jugar también el papel de f re no dinámico.
Utilizar emos los ESCs para controlar nuestros motores br ushless. Cada ESC pr opor cionar á a cada motor
una señal eléctr ica tr if ásica que generará la r otación de las ho jas.
Figur a 9. E jemplo de ESC.
Un ESC al fin y al cabo es un contr olador PWM[11] para motores eléctr icos. El concepto de
PWM se explica más adelante en este mismo apar tado.
Por un lado, un ESC (f igur a 8), dispone de dos cables por los cuales se alimenta y que ir án conectados a la batería. Por otro lado tendrá los tres cables que ir an al motor. Además, dispone de 3 cables, que ir án conectados al micr ocontr olador . Es mediante estos tres cables por los que el micro le indica al ESC a qué velocidad quier e que el motor gir e. Si quisiér amos controlar dos motores a la misma velocidad, sería suf iciente con tener un ESC como en la f igur a 9. El cable donde se indica connect to r eceiver ir ía conectado al micr ocontr ol ador . “
”
28
Figur a 10. Un solo ESC contr olando 2 motores br ushless a una misma velocidad.
En nuestro caso necesitamos contr olar 4 motores y cada uno con una velocidad dif er ente, por lo que el esquema
anter ior no nos es válido. Conectaremos cada ESC independientemente al
micr ocontr olador y a un motor cada uno. He r edibujado uno de los esquemas anter ior es, de jando un solo
ESC para una mayor clar idad.
29
Figur a 11. Esquema de conexión de un ESC.
Ya sabemos que los cables azules de la f igur a 10 son la señal tr if ásica que hacen gir ar el motor. También que los dos cables de la parte super ior derecha del ESC van hacia la batería. ¿Pero qué pasa con los otros 3? Sir ven para comunicar micr o y ESCs. El cable rojo centr al se puede utilizar para alimentar el
micr ocontr olador pero nosotros lo alimentar emos con una pila aparte por lo que quedará al air e, como se
puede ver en la f igur a 10. Para entender los otros dos cables, tenemos que intr oducir pr imer o el concepto de PWD que es el tipo de señal que el ESC r ecibe por esos dos cables. 5.1.6. PWD La modulación por ancho de pulsos (también conocida como PWM, siglas en ingl és de pul sewidth modulation) es una potente técnica para controlar cir cuit os analógicos mediante una salida digit al
del micr ocontr olador . Consiste en modif icar el ciclo de trabajo de una señal per iódica (una senoidal o
una cuadrada, por e jemplo) para tr ansmitir inf ormación a través de un canal de comunicaciones. El ciclo de trabajo de una señal per iódica es el ancho r elativo de su parte positiva en r elación con el per íodo.
Expresado matemáticamente:
30
D es el ciclo de tr aba jo es
el tiempo en que la f unción es positiva (ancho del pulso)
T es el período de la función
Una imagen aclar ator ia viene a continuación. La f igur a 11 muestra 5 señales PWM dif er entes. La pr imer a indica una señal de salida con un ciclo de tr aba jo del 0%. La señal se mantiene constante a 0 voltios siempr e. La segunda señal tr aba ja al 25% por lo que un cuarto del tiempo la señal valdr á 5v. Las siguientes señales tr aba jan al 50%, 75% y 100% r espectivamente sigui endo esa misma idea. Cuando, por e jemplo, el suministr o es de 9V y el ciclo de tr aba jo es un 10%, la señal analógica resultante será de 0.9 V. Siguiendo esta lógica, en la f igur a 11, suponiendo que tenemos un suministr o de 5V, las señales analogicas resultantes serían: a) 0v b) 5*0.25= 1.25 c) 5*0.5=2.5v c) 5*0.75=3.75v d) 5*1=5v
Figur a 12. PW M. Un concepto impor tante a tener en cuenta para que la técnica PWM f uncione,
es
la f re cuencia
(medida en Her cios) con la que los cambios de señal descr itos anter iormente se dan. Imaginemos que estamos contr olando una lámpar a mediante la técnica de PWM. Si mandamos una señal de 9v durante 5
31
segundos y después otra de 0V durante 5 segundos estaríamos ante un ciclo de tr aba jo del 50% pero está
clar o que nuestra bombilla estaba completamente apagada los pr imer os 5 segundos y apagada otros 5. Si lo que queremos es que la bombilla alumbr e lo correspondiente a 4.5V (a la mitad de su capacidad), hay que conseguir que el cambio en la señal sea lo suf icientemente rápido, respecto al tiempo de r espuesta.
Los ESCs gener almente aceptan una señal PWM a 50 Hz (ciclos por segundo), cuya amplitud de
pulso, varía de 1 ms a 2 ms. Cuando el pulso es de 1 ms a 50 Hz, el ESC responde apagando el motor conectado a su salida. Una amplitud de pulso de 1.5 ms hará que el ciclo de tr aba jo sea del 50% lo que
moverá el motor a media velocidad. Para que el motor tr aba je a su máxima velocidad, el pulso tendrá que ser de 2 ms.
Para el sistema cuadr icópter o, hemos elegido el modelo Tur nigy AE-20A Br ushless ESC “
”
(f igur a 10).
Figur a 13. Tur nigy AE-20A Brushless ESC.
Los ESCs de 10 amp se r ecomiendan para cuadr icópter os por deba jo de 1kg. Nosotros hemos elegido un ESC de 20A en pr evisión de que nuestro sistema pueda superar este peso en el f utur o (sensor es extra, cámara di gital,... ).
32
Especif icaciones técnicas: Output: Continuous 20A, burst 25A up to 10 seconds. Input Voltage: 2-4 cells lithium battery or 5-12 cells NIMH batt er y. BEC: Linear 2A @ 5V Contr ol Signal Tr ansmission: Optically coupled system. Max Speed: 2 Pole: 210,000rpm 6 Pole: 70,000rpm 12 Pole: 35,000rpm Size: 50mm (L) * 26mm (W) * entender12mm (H). W eight: 19g.
5.1.7. Regla watts per pound” “
Existe una r egla llamada watts per pound” o vatios por libr a , que deter mina que un multirotor necesita 50w/lbs (50 vatios por cada libr a de peso) para poder desplazar su pr opio peso. Aunque se tr ata de una apr oxi mación gener al, hemos comprobado que con los elementos que disponemos, ef ectivamente cumplimos esta r egla. “
“
”
Vatio = Voltio * Cor ri ente watts = Voltios * Cor ri ente = 11.1 v * 11 amps = 122.1 1 pound
→ 0.45359237 kg
x pounds
→ 1 Kg
Nos da 2.2 pounds 50 w
→ 1 pound
x
→ 2.2 pounds
Son necesar ios 110w y tenemos 122w, por lo que cumplimos la regla. Hay que señalar que hemos hecho el cálculo suponiendo que el cuadr icópter o pesa 1 kg, lo cual nos da un cier to margen de tr anqui lidad.
33
5.1.8. Micr ocontr olador
5.1.8.1. Hardware li br e
Figur a 14. Logo Open Har dwar e. Open s ource hardware (OSHW) se r ef ier e al conjunto de dispositivos diseñados con la misma f ilosofí a que el sof twar e FOSS(FOSS - Free and open source software). Open source hardware
es par te
del movimiento Open Sour ce, que se aplica como concepto. El tér mino signif ica que la inf ormación
sobre el hardware está accesible f ácilmente. Tanto el diseño del hardware se r ef ier e (planos mecánicos, esquemas, PCB, código HDL y disposición del cir cuit o integr ado) como a sof twar e que utiliza el
hardware. Ambos son llevados a cabo con el enfoque de software libr e abier to y gratuito. Hemos elegi do una plataf orma que sigue esta f ilosofía.
5.1.8.2. Arduino
Arduino[1] es una plataf or ma de pr ototipado electr ónico basada en el pr incipio del hardware y
software libr e. Al igual que Fir ef ox f ué en su día el caballo de batalla del sof twar e libr e, Ar duino también lo está siendo en en el mundo del Hardware Open Source. El proyecto nace en Italia en 2005. El auge y desarr ollo que está teniendo esta propuesta es reseñable. Impor tantes empresas a nivel mundial llevan ya tiempo inter esándose y colaborando con el proyecto. Un buen e jemplo es el acuerdo de colabor ación al que han f ir mado Google y Gran B r etaña[12] en mayo del presente año 2012, para la compra de kits de iniciación Ar duino y la f ormación de profesores para enseñar utilizando Arduino en los colegios.
34
Se ha buscado desde el principio desarr ollar el sistema con una plataf orma que f uese de código
abierto. Ar duino tiene todos los ingr edientes para ser apetecible para alguien que busque pr of undizar sus conocimientos en el mundo de la electr ónica. Es por eso que existe una gran comunidad de ar tistas, diseñadores y af icionados creando proyectos constantemente con este micr ocontr olador , lo que hace del mismo una empresa muy viva. Vamos a ver qué es eso que lo hace tan especial.
Figur a 15. Logo Ar duino.
Quien me jor para presentar la plataf or ma que ellos mismos. Mediante estos dos puntos que vienen a continuación en nar ar a ja, se explica en su web[ 1] que es Arduino en r ealidad. 5.1.8.2.1. ¿Qué es arduino r ea lmente ?
Arduino puede tomar inf ormación del entorno a través de sus pines de entrada de toda una gama de sensores y puede af ectar aquello que le rodea contr olando luces, motores y otros actuadores. El micr ocontr olador en la placa Arduino se programa mediante el lengua je de pr ogr amación Ar duino (basado en Wiring) y el entorno de desarr ollo Ar duino (basado en Pr ocessing). Los proyectos hechos con Arduino pueden e jecutar se sin necesidad de conectar a un ordenador, si bien tienen la posibilidad de hacer lo y comunicar con dif er entes tipos de soft war e
5.2.8.2.2. ¿Por qué ar duino?
muchos otros microcontroladores y plataformas con micr ocontr olador es disponibles para la computación física. Par allax Basic Stamp, BX-24 de Netmedia, Phidgets, Handyboard del MIT, y muchos otros ofrecen funcionalidades similar es. Todas estas herramientas organizan el complicado trabajo de programar un microcontrolador en paquetes fáciles de usar. Arduino, además de simplificar el Hay
35
proceso de trabajar con microcontroladores, ofrece algunas ventajas respecto a otros sistemas: ● Asequible - Las placas Arduino son más asequibles comparadas con otr as
plataformas de microcontroladores. La versión más cara de un módulo de Arduino puede ser montada a mano, e incluso ya montada cuesta bastante menos de ●
60€
Multi-Plataforma - El software de Arduino funciona
en
los
sistemas
operativos Windows, Macintosh OSX y Linux. La mayoría de los entornos par a microcontroladores están limitados a Windows. ●
Entorno de programación simple y directo - El de Arduino es fácil de usar para para
entorno de pr ogr amación
principiantes y lo
los usuarios avanzados. Pensando en los
suficientemente flexible
profesores, Arduino está
basado en el entorno de programación de Procesing con lo que el estudiante que aprenda a
programar en este entorno se sentirá familiarizado con el
entorno de desarrollo Ar duino. ●
Software ampliable y de código abierto- El software Arduino se pub lica
licencia libre y preparado para ser ampliado por pr ogr amador es
bajo una
experimentados. El lenguaje puede ampliarse a si se
través de
librerías de C++ ,
y
está interesado en profundizar en los detalles técnicos, se puede dar el
salto a la programación en el lenguaje AVR C en el que está basado. De igual modo se lo ●
puede añadir directamente código en AVR C en tus programas si así
deseas.
Hardware ampliable y de Código abierto - Arduino está basado en los
microcontroladores ATMEGA168, ATMEGA328 y ATMEGA1280. Los planos de los
módulos están publicados bajo licencia Cr eative Commons, por lo que
diseñadores de circuitos con experiencia pueden hacer su propia versión del
módulo, ampliándolo u
optimizándolo.
Incluso usuarios r elativa mente
inexpertos pueden construir la versión para entender cómo funciona y ahorrar algo de diner o.
36
placa
de
desarrollo par a
Arduin o para este proyecto casan muy bien con c on la Las razones por las que se ha elegido Arduino descr ipción del punto anter ior : ○ ○ ○ ○
Económico.
Open Source, gran potencial. je pequeña. Curva de apr endi za j En plena expansión.
El modelo concreto que se ha utilizado el el Arduino Uno de la f igur a 16.
Figur a 16. A 16. Ar du duino Uno.
37
Las especif icaciones técnicas son:
Microcontroller
ATmega328
Operating Voltage
5V
Input Voltage
7-12V
(r ecommended ) Input Voltage (limits)
6-20 V
Digital I/O Pins
14
Analog Input Pins DC
Current per I/O Pin
(of which 6 provide PWM output)
6 40 m A
DC Current for 3.3V Pin
50 m A
Flash Memory
32 KB (ATmega328) of which 0.5 KB used
by
bootloader SRAM
2 KB ( ATmega328)
EEPROM
1 KB ( ATmega328)
Clock Speed
16 MHz
Dispone de un procesador ATMEL ATMEL ATmega328[13] a 16 MHz. Memor ia Flash de 32 KB y 1 KB
de memor ia EEPROM (memor ia que no se borra al cortar el sumi uministr o eléctr ico). En cuanto a los pines, operan a 5 V. Tiene 14 digit ales de los cuales 6 pueden actuar como salida de tipo PWM. A cuatro de ellos conectaremos nuestros ESCs. También hay 6 inputs analógicos a los cuales conectaremos los
sensores. Por últ imo, tenemos los pines 0(RX) y 1(TX) (R ( Receive y Tr ansmit r espectivamente) que per miten una comunicación TTL en ser ie. Los utilizar emos para comunicarnos con el módulo Bluetooth. Hacia el final del apartado Hardware se ad junt junta un esquema con todas las conexiones. Antes en cambio,
Arduin o: El IMU y el módulo bluetooth. vamos a ver los dispositivos que van unidos al micr o Arduino:
38
5.1.9. Batería 9V
Se ha añadido una batería de 9V para alimentar el micr ocon ocontr olador . Cumple con las especif icaciones respecto a los límites de entrada de volta j je. (Recommended Input voltage: 7-12V). El ja este volta j je hasta 5V que es valor en el que oper a. micr o tiene un r egulador que r eba j
5.1.10. IM U IMU (Iner tial Measurement Unit) o unidad de medición iner cial es un dispositivo electr óni ónico que
mide e inf orm orma acerca de la velocidad, or ientación y f ue uer zas gr avitacionales de un aparato, usando una
combinación de acelerómetros y giróscopos . La IMU f unc unciona detectando la actual tasa de aceler ación otacionales como son el yaw pitch y usando uno o más aceler ómetr os, y detecta los cambios en atr ibutos r ot roll (f igur as 15 y 16) mediante gi r oscopi os.
Figur a 17. Yaw Pitch Roll.
Figur a 18. Yaw Pitch Roll.
eedom of Fr ee En nuestro cuadr icópter o se hará uso del IMU Digit al Combo Board - 6 Degrees of F ITG3200/ADXL345 de sparkf un[14] un[14] que se muestra en la f igur a 17. Consta de un aceler ómetr o ADXL345 y de un giroscopio I TG TG3200 que se explican a continuación.
39
Figur a 19. Sparkfun IMU Di Digital Combo Board - ITG3200/ADXL345.
5.1.11. Ac el er óm r o óm et r El aceler óm ómetr o es un instr umento que mide aceler aciones. Lo que nos inter esa es la aceler ación
de coordenadas (cambio de la velocidad del dispositivo en el espacio) pero esto presenta var ios problemas.
Para entender un aceler óm ómetr o, o, imaginemos una pelota de tenis encerr ada en una especie de dado “
”
ómetr o, gigante. Este dado será nuestro aceler óm o, donde las paredes del mismo serán capaces de medir uer za que aplicamos sobre ellas. Si movemos el dado hacia la izquier da da, la pelota chocará contra la la f ue pared izquier da. La f uer za que mediremos en esta pared será la manera de medir la aceler ación. Si uer za en dos paredes en vez de una, pero siguiendo la movemos el dado en diagonal, la pelota hará f ue misma idea. Pero qué pasa si de j jamos quieto nuestro dado en el suelo? Debido a la gravedad, la par ed uer za, ¡y sin embargo no hay c ambio de velocidad en el dado (aceler óm inf er ior medirá una f ue ómetr o)!. Otro e j jemplo clar o es que un dado en caída gr avitacional libr e hacia el centro de la Tierr a medir á un valor de cero, ya que, a pesar de que su velocidad es cada vez mayor, está en un marco de r ef er encia en el que no tiene peso. El aceler óm ómetr o por tanto, mide todas las aceler aciones excepto las causadas por la gr avedad. El aceler óm ómetr o que incluye nuestro IMU es un ADXL345[15]. ADXL345[15]. Un pequeño aparato de bajo
consumo, que mide la aceler ación de 3 e j jes, y alta r esolución (13-bits) que mide hasta ±16 g. La salida fa z SPI o I²C. ómetr o está disponibl e mediante inter f digital del aceler óm
40
5.1.12. Giroscopio El gir oscopio es un dispositivo que mide la or ientación, basándose en los pr incipios del momento
angular. Típicamente, consiste en un ob jeto que gir a sobre sí mismo, y cuyo e je es libr e de cambiar de or ientación libr emente. Cuando se somete el giroscopio a un mom ent o de f uer za que tiende a cambiar la or ientación del e je de r otación, el objeto que giraba sobre sí mismo cambiará de or ientación para intentar seguir en su dir ección «intuitiva».
Nuestra IMU incluye un I TG3200 [16]. Vamos a ver como se comunica la IMU con el micro.
5.1.13. I²C
comunica con arduino mediante un bus de comunicaciones en ser ie llamado I²C. Su nombre viene de Inter-Integr ated Circuit (Cir cuit os Inter-Integr ados). La velocidad de tr ansmisión es de 100 kbits por segundo. Es un sistema muy usado para comunicar per if ér icos o (sensores en nuestro caso) con el micr ocontr olador en un sistema integr ado. La pr incipal car acter ística de I²C es que utiliza dos líneas para tr ansmitir la inf ormación. Una para datos y otra para la señal del r eloj. Una tercera línea es necesar ia para la masa. El nombre que r eciben las líneas son: SDA (datos), SCL (r eloj ) y GND (ground tierr a). La IMU
se
En la parte poster ior de la IMU podemos ver ef ectivamente las señales SDA y SCL y GND. Tendremos que tener cuidado de no dar le más de 3.3 V para no quemar lo.
41
Figur a 20. Parte poster ior de la IMU ITG3200/ADXL345.
5.1.14. Módulo Bluetooth
En la pr imer a f ase del proyecto, se analizó si era me jor hacer la comunicación mediante WiFi o bluetooth. Pienso que ambas opciones son válidas, pero se decidió coger el camino del bluetooth por motivos económicos. Existe un módulo bluetooth con un coste de 32€ y no se encontró en ese momento ninguna opción Wi-Fi tan económica. Por compar ación, existe un módulo acopl able[25] para ar duino, que per mite una comunicación WiFi. Su coste sin embargo, es de 71 €, lo que hace esta opción, 39€ más cara que la opción bluetooth. Utilizar emos por tanto un módulo bluetooth para r ealizar la comunicación con el smar tphone.
Haremos servir el Bluetooth Modem - BlueSMiRF Silver [15] de sparkfun de la f igur a X. “
”
Figur a 21. Bluetooth Modem - BlueSMiRF Silver de spar kf un. “
”
42
BlueSMiRF Silver utiliza un modulo RN-42 que se comunica en ser ie (RX/TX). Funciona con
rangos desde 2400 hasta 115200 bps (bits por segundo) de tr ansmisión. Podemos alimentar lo con 3.3 V hasta 6V.
5.1.15. Otr os
Además, han sido necesar ios otros elementos que aun, siendo secundar ios son impr escindibles como el pr oto-shield, un conmutador, el adaptador para conectar batería de 9 V con Arduino, el arnés de energía (cable que distr ibuye la energía desde la batería hasta los ESCs y un conmutador )
5.1.16. Peso
Con la sigui ente conf igur ación hemos calculado el peso total del sistema mult ir otor que quedar ía de la siguiente manera: * Todos los pesos están en gr amos.
Elemento
Peso unidad
Cantidad
Sub Total
Frame
195 gr
-
Motor
43 gr
x4
172
ESC
19 gr
x4
76
Batería
180 gr
-
180
Bateria arduino(9v)
47 gr
-
47
jack batería
8 gr
-
8
Microcontrolador
30 gr
-
30
Hélices
7gr
x4
28
IMU
8 gr
-
8
Bluetooth
8 gr
-
8
43
195
Arnés de energia
50 gr
Conmutador
8 gr
-
50 8
810 gr
Total
El sistema cuadr icópter o nos da 810 gr. Para asegurarnos de que tiene potencia suf iciente como
para volar ,
se
han hecho calculos con 1 Kg, dando un margen suf iente si
se
quisier an añadir otros
elementos (una cámara, por e jemplo).
5.2. Hardware. Implementación. En el presente capítulo se trata de mostrar como se ha llevado a cabo la implementación del
cuadr icópter o diseñado en el apartado anter ior . El pr imer paso ha sido dotar al micr ocontr olador de los sensores y el bluetooth. Se muestra un esquema de conexiones y fotos, una vez ter minado el tr aba jo. El segundo paso ha sido montar uno por uno los distintos elementos del sistema. También se muestran f otos de todo este pr oceso. sistema
5.2.1. Micr o
Hemos utilizado un protoshield (f igur a 20) del mismo tamaño que el micro arduino. Sol dar emos la IMU y el módulo bluetooth a este pr otoshield, que después acoplar emos al micro Arduino. De esta manera tendremos todos los dispositivos en una misma placa y en caso de necesidad, podríamos acoplar la a otro micr o Ar duino si el nuestro suf ri er a algún daño por cualquier cir cunstancia.
44
Figur a 22. Izquier da: Pr otoshield Arduino. Derecha: Arduino UNO
La f igur a 21 muestra un esquema de conexiones de la IMU y el módulo Bluetooth BlueSMiRF
con el micr ocontr olador .
45
Figur a 23. Esquema de conexión con IMU y Bluetooth. En cuanto a la IMU, esta debe ser alimentada con 3.3 V porque así se especif ica en su ficha
técnica. Utilizar emos los pines de entrada analógicos A4 y A5 de Arduino para r ecibir las señales SD A (Datos) y SCL (Relo j) r espectivamente. El módulo bluetooth por su parte se alimentar á mediante 5 V. La señal TX-O (tr ansmit - output) del bluetooth ir á conectado al pin RX (Receive) de Arduino. De manera similar , la señal RX-I(r eceiveinput) del bluetooth ir á conectada al pin TX ( Tr ansmit) de Arduino. En este esquema f altan dos cosas por
añadir todavía. La pr imer a
es
el c o n m u t a d o r que hemos tenido que añadir para dar o de jar de dar corr iente al
módulo bluetooth. La razón es evitar pr oblemas a la hora de descargar el código de pr ogr amación al micro. Esto lo haremos conectando directamente un cable, entre el PC y Arduino, que crea una
comunicación en ser ie. Si en el momento de descargar el código, el bluetooth está también envi ando datos en ser ie al micr o, no podremos descargar el código correctamente. La sol ución que se ha buscado es por tanto (1) desactivar la alimentación del bluetooth (conmutador OFF), (2) descargar el código al micro Arduino desde nuestro ordenador y por último, (3) volver a alimentar el bluetooth (conmutador ON). La f igur a 22 muestra el esquema tras añadir el conmutador .
46
Figur a 24. Esquema de conexión con conmutador .
El segundo elemento que nos quedaba por añadir a la placa son los cables que salen de los ESCs.
Serán 4 (uno por motor, mas sus r espectivas masa o tierr a) y los conectaremos a los pines de salidas digitales. Habremos de tener cuidado a la hora de elegir los pins, ya que el modelo Arduino Uno[16], no
per mite a todos los pines digitales actuar como salidas PWM. La documentación de Arduino lo especif ica sin
dar lugar a err or es: PWM: 3, 5, 6, 9, 10, and 11. Pr ovide 8-bit PWM output with the an alogWr ite()
f un ction.
Vamos a usar los pines 6, 9, 10 y 11. El esquema def init ivo del micr o se muestra en la f igur a 23.
47
Figur a 25. Esquema de conexión definitivo.
Hasta aquí el proceso de monta je del micr o. Vamos a ver algunas f otos del r esultado:
48
Figur a 26. arduino Uno y pr otoshield acabado.
Figur a 27. Pr otoshield acabado.
49
Figur a 28. Pr otoshield sobre Arduino Uno.
50
Figur a 29. Pr otoshield sobre Arduino Uno.
Figur a 30. IMU y Bluetooth en la placa Pr otoshield.
51
Figur a 31. Pr otoshield acoplado al micro.
Vamos a ver ahora el proceso de monta je paso a paso del resto del sistema multir otor . En pr imer lugar montaremos el f r ame y a partir de ahí, ir emos añadiendo los elementos que se seleccionar on en el capítulo anter ior .
Los motores (con sus r espectivas hélices) van anclados a cada extremo del f r ame.
52
Figur a 32. Motor br ushless con hélice, anclado.
Hemos colocado los ESCs a media altur a de cada brazo de la estructura (f igur a 1). Por un lado conectados a los motores, por otro a la batería y por último al micr ocontr olador (f igur a 4).
Figur a 33. Conexión entre motor y ESC.
53
Hemos puesto los cables que alimentan los ESCs en medio de las dos estructuras de la base del f ra me. La f igur a 5 muestra el cableado del inter ior de las dos bases.
Figur a 34. Cableado eléctr ico de la parte inf er ior inter ior . El micr o y la pila que lo alimenta lo pondremos en el centr o.
Figur a 35. Ar duino instalado dentro del f r ame.
54
Figur a 36. Ar duino instalado dentro del f r ame.
La batería la hemos colocado en la parte inf er ior del sistema, con un sistema de velcro, par a poder cambiar la f acilmente. (Habrá que extr aer la para r ecar gar la).
6. Software.
Diseño
Todo lo que tiene que ver con la parte lógica del proyecto, se ha dividido en dos capítulos. En
este pr imer o, llamado Soft war e. Diseño” “
se
intenta expl icar las razones por las cuales se han elegido
deter minadas herr amientas y el uso que se hará de ellas. En el siguiente capítulo, llamado Soft war e. “
Implementación”, explicar emos el código que se ha gener ado.
Antes de entrar en el diseño, hay que separar clar amente entre dos cuestiones pr incipales. La pr imer a es la r ef er ente a la comunicación que hay que montar entre el micr ocontr olador ar duino y un smartphone Android. Esta comunicación ha de ser posible en ambos sentidos.
55
Por otra parte, está el tema de la estabilización del sistema. Se ha r ealizado un tr aba jo de análisis sobre este problema. Se este capítulo se sientan las bases del control PID para un tr aba jo de futuro (capit ulo ?). También se analizan dif er entes proyectos donde se ha dado solución a este pr oblema de
alguna manera u otra. Se verá, que habría de ser posible hacer una r eutilización de una parte del código amoldando la sol ución a nuestro hardware. Pero vamos a ver pr imer o el diseño que se ha r ealizado en la
parte de la comunicación.
6.1. Android Un resumen de explicando qué es Android sería el siguiente:
Andr oid es un sistema oper ativo móvil basado en Linux, que junto con aplicaciones middlewar e está enf ocado para ser utilizado en di spositivos móvi les como teléf onos inteligentes, tabletas y otr os dispositivos. Es desarr ollado por la Open Handset Alliance, la cual es lider ada por Googl e. Las unidades vendidas de teléf onos inteligentes con Android se ubican en el pr imer puesto en los Estados Unidos, en el segundo y tercer tr imestr es de 2010, con una cuota de mercado de 43,6% en el ter cer tr imestr e. A nivel mundial alcanzó una cuota de mercado del 50,9% durante el cuarto tr imestr e de 2011, más del doble que el segundo sistema oper ativo (iOS de iPhone) con más cuota. Tiene una gran comunidad de desarr ollador es escr ibiendo aplicaciones para extender la f uncionalidad de los di spositivos. A la f echa, se han sobrepasado las 600.000 apl icaciones (de las cuales, dos ter cios son gr atuitas) disponibles para la tienda de aplicaciones of icial de Android:Google Play. Existe la posibilidad de obtener sof twar e externamente. Los programas están escr itos en el lengua je de pr ogr amación J a v a . [...] Google liber ó la mayoría del código de Android ba jo la licencia Apache, una licencia libr e y de código abier to. La estructura del sistema oper ativo Andr oid se compone de aplicaciones que se e jecutan en un f ra mewor k Java de aplicaciones or ientadas a ob jetos sobre el núcleo de las bibliotecas de Java en una máquina virtual Dalvik con compilación en tiempo de e jecución. Las bibliotecas escr itas en lengua je C incluyen un administr ador de inter fa z gr áf ica (sur fa ce manager), un f r amewor k OpenCore, una base de datos r elacional SQLite, una Inter fa z de pr ogr amación de API gr áf ica OpenGL ES 2.0 3D, un motor de r ender izado W ebK it, un motor gr áf ico SGL, SSL y una biblioteca estándar de C Bionic. El sistema oper ativo está compuesto por 12 millones de líneas de código, incluyendo XML, C, Java y C++. “
”
56
Figur a 37. Logo Andr oid.
Utilizar emos el sistema oper ativo Android, entre otras opciones disponibles(iOS, Blackberry), por var ias razones. En pr imer lugar por tratarse de la plataf orm a que está suf ri endo una mayor expansión
en los últimos años.
En segundo lugar , el hecho de que yo per sonalmente dispusier a de un teléf ono Andr oid hacía más pr áctico el desarr ollo. De esa manera no ha sido necesar io el uso de ningún simulador . A la vez que he ido desarr ollando el proyecto, también he cursado una asignatur a en la que
plataf or ma. Estas horas han sido bien inver tidas, porque ese conocimiento
se
se
tr aba jaba con esta
ha aplicado en este
proyecto. En tercer lugar , las herr amientas de desarr ollo que existen cuando se programa para android son muy amplias y la curva de apr endiza je no es demasiado elevada. Por e jemplo, existe la posibilidad de
crear aplicaciones usando el IDE (Integr ated development envir onment o Entorno de Desarr ollo) Eclipse
con el cual ya estaba f amiliar izado. En último lugar , Android se programa en J AVA [18], lo cual viene muy en concor dancia con mi background hasta ahor a.
57
6.2. Arduino En la sección del micr ocontr olador ya hemos expl icado qué es Arduino y el porqué de su utilización. Pero no hemos visto como se implementa r ealmente un pr ogr ama. El modo de tr aba jo suele ser el siguiente: Se conecta el micr o al PC mediante un cable de ser ie.
Se abre la IDE (entorno de desarr ollo) Arduino. Se carga el programa que se desee y se descarga al micro. Después, se desconecta el cable. En el momento en que se alimente ar duino de alguna otra maner a,(en
nuestro caso, con una pila de 9V), se e jecutar á el programa car gado.
Mediante un par de e jemplos simples vamos a mostrar como se pueden leer datos de un sensor, o enviar consignas a un per if ér ico a la vez que mostrar el IDE de Arduino.
Figur a 38. Logo Ar duino.
Algunos e jemplos La f igur a X muestra un código sencillo con el que se ilumina y apaga un LED inter mitentemente.
En la parte super ior del código, vemos como se han def inido las var iables. Después viene la función setup() que se e jecutar á una sola vez. Aquí es donde se hacen las conf igur aciones iniciales. En este caso def inimos el pin led” (al cual hemos asignado el valor 13) como OUTPUT (salida). Después viene la f unción loop() que se e jecutar á automáticamente una y otra vez mientr as el micr o esté alimentado. Lo que hace este sencillo e jemplo es s implemente escr ibir un valor HIGH en el pin 13. Como hemos def inido el pin 13 como de salida, HIGH será una constante que vale 5V. “
“
58
”
Figur a 39. IDE Ar duino. El IDE de Ar duino es bastante sencillo e intuitivo y no es ob jetivo de este documento explicar su f uncionamiento al completo pero sí daremos un par de pi nceladas. Hay un icono de especial inter és, en la
parte super ior derecha llamado Ser ial Monitor que abre una ventana nueva. Todos los datos que llegan “
”
por comunicación ser ie desde el micr o, se ir án mostrando en esta vista. Es decir , que si conectamos un
sensor al micr o y hacemos que envié sus lectur as a través del puerto ser ie al pc podremos ver estos datos en el la ventana de la f igur a X. En las líneas del próximo e jemplo, se envía en ser ie ( Serial.println()) el estado de un botón, que no es más que la entrada del pin 2 def inida como un INPUT del sistema. En la f unción setup() se establece que la comunicación en ser ie se hará a 9600 baudios ( Serial.begin(9600)). El
baudio [19 ] es una unidad de medida usada en telecomunicaciones, que representa la cantidad de veces que cambia el estado de una señal en un per iodo de tiempo, tanto para señales digitales como para señales analógicas. Es impor tante r esaltar que no se debe conf undir el baud rate o velocidad en baudios con el bit 59
rate o velocidad en bits por segundo, ya que cada evento de señalización (símbolo) tr ansmitido puede
transportar uno o más bits. Sólo cuando cada evento de señalización (símbolo) transporta un solo bit coinciden la velocidad de tr ansmisión de datos baudios y en bits por segundo.
Figur a 40. E jemplo Ar duino.
60
Figur a 41. Ser ial Monitor .
Después de haber mostrado estos dos e jemplos, debería de haber quedado clar a la f ilosofí a que sigue Ar duino: Def inir pines digitales o analógicos como
de entrada o de salida, e ir
leyendo o escr ibiendo en ellos.
7. Software.
Implementación
ha utilizado para hacer las lectur as de la IMU y poder calcular los ángulos de Euler del sistema cuadr icópter o en cada momento. En la segunda, se expl icar á cómo se ha logr ado montar la comunicación entre Android El presente capítulo se divide en dos partes. En la pr imer a
se
explica que herr amienta
se
y Arduino.
7.1. Lectura de la IMU
7.1.1. Filtro de Kalman El filtro de Kalman es un algor itmo que utiliza una ser ie de medidas recogidas de una señal en el
tiempo que contienen ruido e imper fe cciones. Con estos datos, trata de pr oducir una nueva var iable que de una inf ormación más pr ecisa que los datos medidos inicialmente. La idea
es
eliminar el ruido,
pr oduciendo una señal más limpia. El proceso consta de dos etapas. En una pr imer a f ase de pr edicción, se
61
hace una estimación del estado actual de la var iable y de su nivel de incer tidumbr e. Una vez llega la siguiente
medición (que estará corrupta, debido a un cier to error y/o ruido), se hace una estimación del
valor correspondiente utilizando una media ponderada, dando mayor peso, a los valor es cercanos. Al
tratarse de un algor itmo r ecur sivo, se puede e jecutar en tiempo r eal, siendo necesar io solamente, la medición actual y el estado anter ior . No hace f alta más inf ormación que esa. El e jemplo de la f igur a X muestra en rojo el resultado del filtro kalman.
Figur a 42. Filtro de Kalman. En el caso del cuadr icópter o,
es
muy inter esante el uso de este tipo de filtros, para evitar que las
per tur baciones en las lectur as de los sensores debidas a la vibr ación, af ecten a la estabilidad del apar ato.
He encontrado en la web de star lino.com una implementación de un algor itmo simplif icado del filtro de
Kalman para una IMU de 5 grados de liber tad [22]. (5 DOF). Voy a utilizar una libr er ía para Arduino que está basada en el código anter ior , pero que ha sido modif icada para tr aba jar con el aceler ómetr o ADXL345 y el gir oscopio ITG3200 que trae nuestra IMU. Es una libr er ía de código abierto con Licencia GNU 3, para Arduino, llamada Fr ee Six IMU “
”
[20], diseñada por el Italiano Fabio Varesano [21]. En una pr imer a implementación, la IMU simplemente
envía sus lectur as. Es la segunda implementación la que nos inter esa; La lógica del algor itmo está dentr o del código ar duino, con lo que es posible saber la or ientación de la IMU (y por ende, del multirotor) en
tiempo r eal. Hemos copiado la libr er ía a nuestro PC para hacer uso de ella. Hemos e jecutado el siguiente
62
código de prueba que envía los ángulos de Euler que calcula el micro, por el puerto ser ie, como se
muestra en la f igur a X.
/*
IMU Test Euler angles
*/
#include #include #include #include
float angles[3]; // yaw pitch roll
// Set the FreeSixIMU ob ject
FreeSixIMU sixDOF = Fr eeSixIMU();
void
setup() {
Serial.write("setup begin."); Serial.begin(115200);
Wire.begin();
delay(5); sixDOF.init(); //begin the IMU
delay(5); Serial.write("setup end. "); }
void
loop() {
Serial.write("Eule r Angles: "); sixDOF.getEuler (a ngles);
Serial.p rint(angles[0]); Serial.p rint(" | "); Serial.p rint(angles[1]); Serial.p rint(" | "); Serial.p rintln(angles[2]);
delay(100); }
63
Figur a 43. Ángulos de Euler .
7.2. Comunicación Android
- Arduino
Desde el momento en el que se tomó la decisión de comunicar ambos dispositivos mediante bluetooth, se ha ido buscando una solución que f uer a aplicable a este contexto. Vamos a utilizar una herr amienta llamada Amar ir o.
7.2.1. Amar ino
Amar ino[24] es un toolkit os er ie de libr er ías, para conectar moviles que f uncionan bajo el sistema oper ativo Android, con un micr ocontr ol ador Ar duino, mediante bluetooth.
Amar ino is a toolkit to connect Andr oid-dr iven mobile devices with Ar duino micr ocontr oller s via Bluetooth
Amar ino consiste en una una aplicación para Android y una libr er ía para Arduino, que hacen posible la comunicación vía Bluetooth. La idea que hay detrás es ofrecer una conexión entre un
64
smartphone y un micr ocontr olador Arduino de f or ma transparente. De esta manera, se pueden pr ogr amar eventos en el smartphone que vayan inf or mando a Arduino de manera per iódica. Por e jemplo, se podr ía inf or má a Arduino de los valor es que va tomando un sensor específ ico de nuestro movil.
7.2.2. Android
APP
Hemos creado una aplicación para Android llamada H egal ar i ( pá j ar o ). El menú de nuestra app, tiene 3 botones. El último de ellos es el que nos inter esa. “
”
Figur a 44. Hegalar i app. Menú.
“
l 4 mot or s nos llevar á a una pantalla que contiene dos objetos SeekB ar (f igur as X y Cont ro ”
“
X ). Mediante la barra super ior , indicar emos la potencia que r ecibir án los motor es.
65
”
Figur a 45. Seekbar que controlará la velocidad de r otación.
Figur a 46. FourMotorActivity.
Echémosle un vistazo a la clase de Java F our Mo t or Ac t i v i ty . j ava que hay detrás del layout de la ”
“
f igur a X. La clase impl ementa la clase
Activity , que no es más que un tipo de objeto estándar de Android con un layout propio, donde el usuar io puede inter actuar . No mostraremos en este documento todo el código de la activity, ya que se encuentra en el Anexo I, pero sí que vamos a explicar y ver algunas líneas impor tantes del código. “
”
En pr imer lugar definimos una clase Ar duinoReceiver (que crearemos más aba jo) y la r egistr amos como un r eceiver del sistema. Esto servir á para r ecibir f eedback desde ar duino. Después nos
conectamos al dispositivo Bluetooth cuya dir ección MAC tenemos que pr opor cionar . Cuando la activity ter mina, hay que acordarse de desconectarse y des-registrar el r eceiver . Si se quiere pasar alguna var iable a Ar duino, utilizar emos la f uncion sendD ataToA r duino().
package eus.xabi.ocell; import at.abraxas.amarino.Amarino; import at.abraxas.amarino.AmarinoIntent;
public class FourMotorActivity extends Activity implements OnSeekBarChangeListener { // Dirección MAC del módulo Blue SMiRF Bluetooth private static final String DEVICE_ADDRESS = "00:06:66:46:42:FC";
66
// Creamos el objeto Receiver private ArduinoReceiver arduinoReceiver = new ArduinoReceiver();
public void onCreate(Bundle savedInstanceState) { [...] // Connect to Bluetooth module Amarino.connect(this, DEVICE_ADDRESS);
[...]
} @Override
protected void onStart() { // Registramos nuestro Receiver para poder escuchar a Arduino “
”
registerReceiver( arduinoReceiver , new IntentFilter( AmarinoIntent.ACTION_RECEIVED));
} @Override
protected void onStop() { super.onStop(); // stop Amarino's background service, we don't need it any more
Amarino.disconnect(this, DEVICE_ADDRESS); // do never forget to unregister a registered receiver unregisterReceiver (arduinoReceiver); } private void updatePower() { Amarino. sendDataToArduino(this, DEVICE_ADDRESS, 'f', power);
} /**
* ArduinoReceiv er is responsible for catching broadcasted Amarino events. * * It extracts data from the intent and updates the graph accordingly. */
public class ArduinoReceiver extends BroadcastReceiver { @Override
public void onReceive(Context context, Intent intent) {
TextView tvStatus = (TextView) findViewById(R.id.tvStatus);
67
tvStatus.setText ("Connected."); String data = null; // the device address from which the data was sent, we don't need it // here but to demonstrate how you retrieve it final String address = intent .getStringExtra(AmarinoIntent.EXTRA_DEVICE_ADDRESS); // the type of data which is added to the intent final int dataType = intent.getIntExtra(
AmarinoIntent.EXTRA_DATA_ TYPE, -1); // we only expect String data though, but it is better to check if // really string was sent // later Amarino will support differnt data types, so far data comes // always as string and // you have to parse the data to the type you have sent from // Arduino, like it is shown below if (dataType == AmarinoIntent.STRING_EXTRA) {
data = intent.getStringExtra(AmarinoIntent.EXTRA_DATA); if (data != null) { // mValueTV.setText(data); try { // since we know that our string value is an int number // we can parse it to an integer // final int sensorReading = Integer.parseInt(data); // mGraph.addDataPoint(sensorReading); // showIMU(sensorReading, sensorReading); final String sensorReading = data; showIMU(sensorReading, sensorReading);
} catch (NumberFormatException e) { } } } } } }
68
7.2.3. Arduino Fir mwar e
Por otra parte el código que correrá en Arduino también tiene que ser capaz de escuchar . Antes de mostrar el código que hemos creado, lo expl icamos brevemente: Pr imer o se incluyen las libr er ías necesar ias y despues en la sección de conf igur ación (f unción setup()) se registra controlMotors como una f unción que se e jecutar á cada vez que a Arduino le llegue una f unción con el tag “f ” (en este caso). En esa función lo que hacemos es mapear el valor que hemos r ecibido en el rango que nos inter esa y escr ibir lo en los motores. Pasemos a ver el código. “
/*
Hegalari v 0.3 Control a quadricopter from Android author: Xabier Legasa Martin-Gil - June 2012
*/ #include #include #include #include #include #include
< Meet And roid.h> ADXL345.h>
Meet Android meetAndroid ; // declare Meet And roid so that we can call functions with it. int fullRangeMotor = 150; // Afterwards set to 180 Servo motor1 ; Servo motor2 ; Servo motor3 ; Servo motor4 ; int pinmotor1 = 6; int pinmotor2 = 9; int pinmotor3 = 10 ; int pinmotor4 = 11 ; int val = 0; // variable we get from And roid int androidval; float angles [3]; // yaw pitch roll // Set the FreeSixIMU ob ject FreeSixIMU sixDOF = FreeSixIMU(); void setup () { // initialize serial com munication Serial.begin(115200); Serial.p rintln("start"); androidval = 0 ; _ motors meetAndroid.registerFunction (controlMotors, 'f'); // f = f our
Wire.begin(); delay(5); sixDOF.init(); //begin the IMU delay(5); // initialize motors
69
”
motor1.attach(pinmotor1); // motor2.att ach (pinmotor2 ); motor3.att ach (pinmotor3 ); motor4.att ach (pinmotor4 );
attaches the servo on pin 9
to the servo
ob je ct
Serial.p rintln("start ok"); } void {
loop()
meetAndroid.receive(); // you need to keep
this in your
loop() to receive events
updateMotors(); sixDOF.getEule r (angles); send IMUdata();
delay(20); } void send IMUdata() { // for now, send just first angle. meet And roid.send (angles[0]); } /*
* Whenever the servoControl app changes the power value * this function will be called
*/ void controlMotors (byte flag, byte num Of Value s) { //Serial.println("controlServo bat"); androidval = meet And roid.getInt(); //Serial.println("controlServo bi"); val = map(androidval, 0, 1023, 0, f ullRang eMotor ); //Serial.p rintln(val, DEC); //Serial.println("controlServo hiru"); } void upd ateMotors() { // at this point all motors are running at same speed. motor1.write(val); motor2.write(val); motor3.write(val); motor4.write(val); }
70
8. Algoritmo de estabilización. Bases. 8.1. Controlador PID La f amilia de controladores PID,
es
una estructura de control mediante r ealimentación, que
calcula la desviación entre un valor medido y un valor que se quiere obtener, haciendo una cor re cción en consecuencia. Este tipo de contr olador es han demostrado ser robustos y es por eso que son utilizados en más del 95% de los procesos industr iales en lazo cerr ado[27] . El algor itmo de control calcula tres parámetros dif er entes: el pr opor cional, el integr al y el
der ivativo. El Pr opor cional, es directamente pr opor cional al error actual, el Integr al hace una cor r ección del error acumulado en el tiempo (integr al del error) y el Der ivativo deter mina la r eacción del tiempo en
el que el error se pr oduce.
Figur a 47. Esquema PID.
Las var iables que nos inter esan son: ●
PV (process var iable o process value). Valor medi do.
●
SP (setpoint). Valor deseado. u(t)
●
MV ( manipulated var iable). Valor de entrada al sistema.
●
E (Error). Dif er encia entre valor medido(PV) y el deseado (SP)
Un e jemplo típico con el que se expl ica un controlador PID es cuando queremos mantener una
calder a a una temperatura deter minada. Por e jemplo, queremos mantener la a 100ºC (SP) pero en un 71
momento deter minado el termómetro nos dice que está a, 106ºC(PV). El error será de 6ºC (e) que cuantif ica si el agua esta muy caliente o muy f rí a. Una vez calculado este error, el sistema calcular á cuánto hay que abr ir /cerr ar la válvul a de agua(MV). Si es necesar io mucho más calor , habrá que abr ir mucho la válvula. O todo lo contr ar io si solo hace f alta calentar la un poco. Esto sería un e jemplo de Contr ol Pr opor cional. (un PID donde no hay ni I ni D). Podríamos abr ir la válvul a más y más cada vez si no obtenemos el r esultado deseado. Esto sería un Control Integr al. El controlador puede querer a justar se también, con el objetivo de anticipar se a f utur as oscilaciones. Esto sería el método del Der ivativo. calcula por tanto como la suma del valor Pr opor cional, Integr al y Der ivado. Es impor tante decir que Kp Ki y Kd son constantes que habremos de a justar en nuestro sistema. Vamos a ver los por separado con un poco más de detalle. El valor de entrada al sistema (MV)
se
donde : Pr opor tional gain, a tuning par ameter : Integr al gain, a tuning par ameter : Der ivative gain, a tuning parameter
: Er r or : Time or instantaneous time (the pr esent)
8.1.2. Pr opor cional El valor pr opor cional es el producto entre la constante pr opor cional Kp y el error (SP-PV).
Un Kp demasiado grande llevar ía al sistema a ser inestable. Uno demasiado pequeño, tiene como
consecuencia, un error grande. La parte pr opor cional no consider a el tiempo, por lo tanto, la me jor manera de solucionar el error permanente y hacer que el sistema contenga alguna componente que tenga en cuenta la var iación respecto al tiempo, es incluyendo y conf igur ando las acciones integr al y derivativa. 8.1.3. Integr al
72
El valor correspondiente al control Integr al,
pr opor cional tanto a la magnitud del error, como a la dur ación del mismo. Es la suma de los errores en el tiempo e indica el cúmulo de errores que tendr ían que haberse corregido pr eviamente. Este error acumulado se mult iplica por la constante Ki. es
El contr ol integr al se utiliza para obviar el inconveniente del off set (desviación permanente de la
var iable con respecto al punto de consigna) de la banda proporcional. 8.1.4. Der ivativo La acción der ivativa actúa cuando hay un cambio en el valor absoluto del error. La f unción de la
acción der ivativa es mantener el error al mínimo cor ri giéndolo pr opor cionalmente con la misma
velocidad que se produce; de esta manera evita que el error se incr emente. El error se der iva con r especto al tiempo y se multiplica por una constante D y luego se suma a las señales anter ior es (P+I).
En nuestro e jemplo de la calder a, planteado anter ior mente, la acción der ivada es adecuada cuando hay retraso entre el movi miento de la válvula de control y su r eper cusión a la var iable contr olada.
8.2. PID en Arduino
“
PID Libr ar y es una libr er ía[23] para Ar duino que impl ementa el control PID. Existe, a su vez, ”
una libr er ía llamada PIDAutotune Libr ar y cuya misión es automatizar el máximo posible el a juste de “
”
las constantes Kp, Ki y Kd que la libr er ía necesita.
Existe otra implementación muy inter esante llamada BB CC: Bare Bones (PID) Cof fe e Contr oller [26] que aunque inicialmente f ue usado para contr olar la temperatura de una maquina de caf e, es en r ealidad, un PID de uso gener al. Entender estas dos implementaciones es útil porque muchos de los proyectos de código abier to hacen uso de una de estas dos soluciones. La f unción updatePID() de esta últ ima libr er ía es una implementación del PID sencilla de entender . “
”
float
upd atePID(f loat targetTemp, float curTemp)
73
{ //
these local variables can be factored out if memory is an issue,
// but they make it more
readable
double result; float
error ;
float
windupG aurd;
//
determine how badly we are doing
error = targetTemp -
//
the pTerm is
curTemp;
the view from now,
// how much we care pTerm = pgain *
the pgain judges
about error we are
this
instant.
error ;
//
iState keeps changing over time; it's
//
overall "performance" over time, or accumulated error
iState +=
error ;
despite lots of
// to prevent the iTerm getting huge // //
error, we use a "windup guard" (this happens when the machine is
and
despite its best eff orts)
// it cant help be cold // not necessary, but
first turned on
this makes windup guard value s
// relative to the current iGain
windupGaurd = WINDUP_GUARD_GAIN / if (iState > iState =
igain;
windupG aurd)
windupGaurd;
else if (iState < -windupGaurd) iState = -windupG aurd;
iTerm = igain * iState;
//
the dTerm, the difference between the temperature now
// and our last
reading, indicated the "speed, "
// how quickly the temp is
changing. (aka. Diff ere ntial )
dTerm = (dgain* (curTemp - lastTemp)); // now that
we've use lastTemp, put
the current temp in
// our pocket until for the next round
lastTemp = curTemp;
74
//
the magic feedback bit
return pTerm + iTerm -
dTerm;
}
9. Conclusiones 9.1. Objetivos conseguidos Se ha conseguido los ob jetivos con éxito. Se ha r ealizado el diseño e implementación del sistema
cuadr icópter o satisf actor iamente. También se ha conseguido establecer una conexión entre la aplicación Android y el micr o. La aplicación es capaz de enviar las var iables que el usuar io envía y en este momento Arduino tambien es capaz de enviar datos de vuelta (su or ientación). A partir de aquí, es r elativamente sencillo modif icar o ampl iar esta funcionalidad.
9.2. Desviaciones de planificación A lo lar go del proyecto han ido surgiendo complicaciones impr evistas que han hecho cambiar el
orden de alguna tarea planif icada. Por e jemplo en r elación al monta je del cuadr icopter o, el tiempo de llegada de los componentes no f ue igual en todos los casos: Se decidió acertadamente comprar el módulo Bluetooth, aparte y en seguida, para poder tr aba jar en la comunicación con Android. Fué una decisión acertada, porque el resto de componentes llegó bastante tarde. Sin el módulo bluetooth no se podría haber avanzado y el proyecto se habría estancado.
9.3. Valoración
económica
El cálculo total del proyecto se va a calcular respecto a do f actor es. Coste del mater ial y coste por las horas de tr aba jo r ealizadas. La siguiente tabla muestra el pr ecio de cada componente utilizado. Todos los pr ecios están en €.
75
Elemento
Proveedor
Precio unidad(€)
Cantidad
Total
Frame
hobbyking.com
11.17
-
11.17
Motor
hobbyking.com
9.25
x4
37
ESC
hobbyking.com
6.70
x4
26.8
Batería
hobbyking.com
6.70
-
6.70
Bateria arduino(9v)
tienda local
9
-
9
jack batería
bcncybernetics.com
1.5
-
1.5
Microcon trola dor
cooking-hacks.com
20
-
20
Hélices(5x)
hobbyking.com
2.97
-
2.97
IMU
sparkfun.com
51.66
-
51.66
Bluetooth
sparkfun.com
31.78
-
31.78
Arnés de energia
tienda local
2
-
2
Conmutador
diotronic.com
3
-
3
Cargador Batería
hobbyking.com
8
-
8 € 211
SUB Total
Los componentes se han comprado en su mayoría on-line. Otros elementos más pequeños, en
tiendas de electr ónica de Bar celona. La r elación queda de esta maner a: cooking-hacks.com
Arduino
sparkf un.com
IMU
sparkf un.com
Blue SMiRF Bluetooth
hobbyKing.com f ra me, motores, ESCs, Batería, hélices, Car gador
Tiendas Bar celona
Arnés de ener gia
Diotr onic BCN
Conmutador
76
El mayor de los paquetes (hobbyking.com), que venía de Singapur , tenía un pr ecio marcado en la
ca ja de 161$ (123€ aprox.). En la aduana de bar a jas, se aplicó un I.V.A. al 18% de 22.27 €, un impor te por el despacho de €14.40 y el I.V.A. del despacho €2.59. Hubo que pagar a su llegada la nada despr eciable cantidad de €39.26 para poder r ecibir lo. Esto representó un gasto no esperado de casi un 20% más del valor total de los componentes hasta el momento. De haber sabido esta cir cunstancia, se habría buscado una alter nativa como por e jemplo hacer los pedidos en partes más pequeñas (paquetes de menos de 45 Euros no pagan ni I.V.A. ni porte, y paquetes entre 45 y 150 pagan I.V.A. pero no porte). El pr ecio de los mater iales por tanto queda en 211+39.26 = 250.26 € . Esto supone que estos costes inesper ados son ahora el 15.6% del pr ecio total del mater ial. Aún y todo, la conclusión que se saca es que hemos sido capaces de constr uir un cuadr icópter o
más barato que el proyecto mas similar de los que habíamos analizado al pr incipio (AR Parrot, que valía 300€). El aeroquad AR Parrot dispone sin embargo de algunos componentes, como por e jemplo 2
cámaras integr adas con lo que las compar aciones r eales no son posibles. Si tenemos en cuenta que un Analista cobra 28.000 € anuales [28] y que durante un año se tr aba ja una media de 1.700 horas, el sueldo por hora de un analista sería de 16.4€/hora. Por la misma regla de
tres, un Ingeni er o Inf ormático que cobra 24.000 €[29] anuales cobra por hora 14.1 €.
Horas
Precio €/hora
Total €
Estudio previo
100
16.4 €
1640 €
Analisis y Diseño
175
16.4 €
2870 €
Implementación Hard
80
14.1 €
1128 €
Implementación Soft. Comunicación
160
14.1 €
2256 €
Memoria
85 h
16.4 €
1394 €
Total sin material
600 h
-
9288 €
9538.26 €
Total con material
77
10. Planificación El proyecto ha sido lle vado a cabo en dif er entes etapas consecutivas pero, dada la natur aleza del
proyecto, se han r ealizado algunas en par alelo. Esto es debido por una parte a la clar a distinción entr e tareas de hardware (monta je del cuadr icópter o) y por otra, tareas lógicas como la pr ogr amación, por e jemplo. Además, se ha tenido que tener en cuenta los per iodos que van desde la compra on-line de un
componente, hasta que este se r ecibía. A continuación, el diagrama de Gantt, con la planif icación que se ha seguido. Se muestra una
pr imer a captura de pantalla, para más clar idad y el gr áf ico entero a continuación.
78
79
11. Posibilidades de trabajo futuro. 11.1. Prueba del algoritmo de estabilización. Una vez que hemos diseñado y construido el sistema y cuadr icópter o, un tr aba jo f utur o podría ir encaminado a probar algor itmos de control utilizando algúno de las libr er ías de control PID descr itas anter ior mente. Existe varios proyectos de los mencionados en el capítulo 4 (Estado del arte), que publ ican el código con algun tipo de licencia abierta. El código de Aer oquad”, por e jemplo, ha sido “
utilizado en otros proyectos como
“
scout
U AV , para hacer volar su cuadr icópter o. Una posible linea a ”
seguir por tanto, sería intentar enterder este código y modif icar lo para hacer lo f uncionar con nuestr o hardware. Hay que destacar que la migr ación de este código no es una tarea tr ivial. Esto se debe a que el código de Aeroquad está pensado para poderse usar con dif er entes tipos de micr ocontr olador es Arduino en combinación con dif er entes placas que contienen a su vez dif er entes sensores. Habrá que adaptar el código a nuestras necesidades.
11.2. Aeroquad
Software.
Vamos a dar una idea de por donde va el sof twar e que utiliza el proyecto Aeroquad. El código tiene un fichero de conf igur ación (U ser Conf i gur at i on.h) que per mite conf igur ar di f er entes modelos del micr ocontr olador Arduino y dif er entes conf igur aciones (en x o en +) así como definir dif er entes
sensores,etc... . El ar chivo pr incipal que se e jecuta
( de ese archivo es Aer oQuad.ino”. En la funcion s e t u p ) donde se hacen todas las conf igur aciones. Se inicializan las var iables oportunas dependiendo de las lineas comentada/descomentadas de l mencionado ar chivo. es
“
En el bucle principal loop() que se e jecutar á constantemente, se hacen lectur as de los sensor es
disponibl es y se dan las órdenes correspondientes. He r ealizado un pequeño pseudocódigo de esta función principal:
80
f unción loop()
coger _ tiempo(); medir _sensor es _ impor tantes(); // giroscopio y aceler ómetr o si(tiempo multiplo de 100 Hz){ medir _r esto sensor es(); calcular _angulos(); contr olar _motor es(); } si(tiempo
multiplo de 50 Hz){
medir _comandos_de _piloto() } si(tiempo
multiplo de 10 Hz){
medir _bar ómetr o(); medir _telemetr ía();
_vol tage _bater ía(); medir // ...
}
actualizar _ tiempo(); end
Como se puede ver, la lógica
es
r ealizar con mas f re cuencia las tareas mas cr íticas (lectur a de
sensores) y con menos, las que no son tan impor tantes. A la hora de adecuar el código a nuestro
sistema
cuadr icópter o, serían dos los aspectos
impor tantes a tener en cuenta. En pr imer lugar, tendr iamos que prestar atención a los sensores conf igur ados y además, ver
donde es necesar io cambiar los puertos de entrada de estos. Aeroquad tr aba ja con una placa que venden
en su web donde cada sensor esta conectado a un deter minado pin de Arduino. Este NO es nuestro caso,
por tanto habría que cambiar los puertos de entradada, como los de la IMU por e jemplo. El segundo paso para poder utilizar este software
cambiar complétamente la función o t o ) m e d i _c ( para poder leer instr ucciones por bluetooth desde el smartphone. Sin i r o m an d o s d e _p l
“
”
81
ser ia
embargo, este tr aba jo ya está r ealizado como hemos demostrado en el capítulo 7.2.3 (Arduino Fir mwar e). La adaptación del código se basaría por tanto, en la conf igur ación de los sensores y pines, mayor mente.
Despues del tr aba jo de conf igur ación, solo quedaría decidir los valor es constantes del PID que se implementa. Tendremos que proteger bien el cuadr icopter o para poder hacer las pruebas cor r espondientes
e ir me jor ando estos valor es, hasta conseguir una estabilidad óptima del apar ato.
82
12. Referencias. * Links válidos a 1 de Julio de 2012. [1] Arduino. Main Site. http:// www.ar duino.cc/. [2] Android. Main site. http:// www.andr oid.com. [3] Shr ediquette Pr o ject. Main site http://shr ediquette.blogspot.com/. [4] Aeroquad. Main site. http:// www.aer oquad.com. [5] DiyDr ones. Main site. http:// www.di ydr ones.com/ [6] Mikuadr icópter o. Main site. https://sites.googl e.com/site/mikuadr icopter o/ [7] OpenPilot. Main site. http://www.openpilot.org [8] Parrot. Company Main Site. http://www.parrot.com [9] NG UAVP. Main site. http:// ng.uavp.ch/moin/Fr ontPage [10] W ikipedia. Motor con escobillas htt p:// es.wikipedi a.or g/wiki/Motor _ de _cor ri ente _continua [11] PWM. Pulse Width Modul ation http:// en.wikipedia.or g/wiki/Pulse-width_ modulation [12] BBC. Google f unds computer teachers and Raspberry Pis in England”. Noticia del 23 Mayo de “
2012. http:// www.bbc.com/news/technology-18182280 [13] ATmega328. Datasheet. htt p:// www.atmel.com/Images/doc8161.pdf [14] Sparkf un. Main site. http://www.parkfun.com [15] ADXL345. Aceler ómetr o. Datasheet. http://www.sparkf un.com/datasheets/Sensor s /Acceler ometer /ADXL345.pdf [16] ITG3200. Gir oscopio. http://www.sparkf un.com/datasheets/Sensor s/Gyr o/PS-ITG-3200-00-01.4.pdf [15] Sparkf un. Bluetooth Modem - BlueSMiRF Silver . htt p:// www.spar kf un.com/pr oducts/10269 [16] Arduino. Especif icaciones modelo Arduino Uno. htt p:// ar dui no.cc/en/Main /Ar duinoBoar dUno [17] W ikipedia. Android. http://es.wikipedia.or g/wiki /Andr oid [18] W ikipedia. J AVA. http:// en.wikipedia.or g/wiki/Java_ (pr ogr amming_ language) [19] W ikipedia. Baudio. http:// es.wikipedia.or g/wiki/B audi o [20] Fabio Varesano. Implementación Fr eeSixIMU. htt p:// www.var esano.net/blog/f abio/my-f ir st-6-dof imu-sensor s-f usion-implementation-adxl345-itg3200-ar duino-and-pr ocessing [21] Fabio Varesano. Main site. http:// www.var esano.net/ [22] Star lino.com. Implementación Kalman. http:// www.star lino.com/imu_kalman_ ar dui no.html [23] Arduino. PID libr ary. htt p:// ar duino.cc/pl aygr ound/Code/PIDLibr ary [24] Amar ino. Main site. htt p:// www.amar ino-toolkit.net/ [25] Sparkf un. WiFly shield. http:// www.spar kf un.com/pr oducts/9954
83
[26] Arduino. PIDFor Espr esso libr ary. http://www.ar duino.cc/playgr ound/Main/B ar ebonesPIDFor Espr esso [27] K.J. Åstr öm & T.H. Hägglund, «New tuning methods for PID contr oller s,» Pr oceedings of the 3rd European Control Conference, p.2456 –62. [28] Inf ojobs. Salar io Analista. htt p:// salar ios.inf o jobs.net/r esultados.cf m?sueldo= Analista [29] Inf ojobs. Salar io Ingenier o Inf orm ático. http:// salar ios.inf o jobs.net/ r esultados.cf m? sueldo=ingeni er o+inf or m%C3% A1tico&o_ id=2
84