Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Quadricoptére Spagnolia
Quadricoptére Spagnolia
Cuadricptero Arduino por control remoto Android Xabier Legasa Martn-Gil 3 de Juliol de !" #ere Mar$s Marti &ng%'istemes( Autom)tica i *n+%*nd% &ngin,eria *n+orm-tica .acultat d/*n+orm-tica de 0arcelona 1.*02 3ni4ersitat #olit5cnica de Catalun,a 13#C2 0arcelonaTec6
Proyecto Final de Carrera Xabier Legasa Martn-Gil Ingeniera Informtica Facultad de Informtica de Barcelona FIB! "PC Barcelona#ec$ %&11'%&1%
ndice
1( Lista de Figuras(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((() %( Glosario(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( * +( Introducci,n((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( +(1( Presentaci,n((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1& +(1(1( .escri/ci,n general del /royecto((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1& +(%( Moti0aci,n /ersonal((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1& +(+( 1b2eti0o((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((11 +(+(1( 1b2eti0os del /royecto(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((11 +(+(%( 1b2eti0os /ersonales((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((11
;(1(*(%(1( DEuF es arduino realmenteG(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+; ;(%(*(%(%( DPor 7uF arduinoG((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+; ;(1(-( Batera -:((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+;(1(1&( IM"(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+;(1(11( 5celer,metro(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((3& ;(1(1%( Girosco/io(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((31 ;(1(1+( IHC((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((31 ;(1(13( M,dulo Bluetoot$((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((3% ;(1(1;( 1tros((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((3+ ;(1(1)( Peso(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((3+
)( 6oft?are( .ise@o((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((;;
)(1( 5ndroid((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((;) )(%( 5rduino((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((;* <(1( Lectura de la IM"(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()1 <(1(1( Filtro de Ialman(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()1 <(%( Comunicaci,n 5ndroid - 5rduino((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()3 <(%(1( 5marino((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()3 <(%(%( 5ndroid 5PP((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((); <(%(+( 5rduino Firm?are((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()-
-( Conclusiones((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<;
-(1( 1b2eti0os conseguidos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<; -(%( .es0iaciones de /lanificaci,n((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<; -(+( :aloraci,n econ,mica(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<;
Figura +%( Motor brus$less con $FliceQ anclado((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ;& Figura ++( ConeKi,n entre motor y 46C(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ;& Figura +3( Cableado elFctrico de la /arte inferior interior((((((((((((((((((((((((((((((((((((((((((((((((((((( ;1 Figura +;( 5rduino instalado dentro del frame(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ;1 Figura +)( 5rduino instalado dentro del frame((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ;% Figura +<( Logo 5ndroid((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ;3 Figura +*( Logo 5rduino(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ;; Figura +-( I.4 5rduino(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( (;) Figura 3&( 42em/lo 5rduino(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ;< Figura 31( 6erial Monitor((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ;* Figura 3%( Filtro de Ialman((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ;Figura 3+( Rngulos de 4uler(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( )1 Figura 33( >egalari a//( MenS((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( )% Figura 3;( 6ee8bar 7ue controlar la 0elocidad de rotaci,n(((((((((((((((((((((((((((((((((((((((((((((((((((( )+ Figura 3)( FourMotor5cti0ity(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( )+ Figura 3<( 4s7uema PI.((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( )*
<
% Glosario
Arduino
Plataforma de electr,nica abierta /ara la creaci,n de /rototi/os basada en soft?are y $ard?are fleKibles y fciles de usar( 6e cre, /ara artistasQ dise@adoresQ aficionados y cual7uiera interesado en crear entornos u ob2etos interacti0os(
Android
6istema o/erati0o /ara /lataformas m,0iles como smart/$onesQ tablets((
UAV
"nmanned aerial 0e$icle!( :e$culo 5Freo no tri/ulado( 6istema aut,nomo 7ue /uede o/erar sin inter0enci,n $umana alguna durante su funcionamiento(
Aeronave RC
:e$culo aFreo controlado remotamente(
Multirotor o Multicptero
>elic,/tero con ms de dos rotores(
3% *ntroduccin
"n cuadric,/teroQ cuadrirotor o cuadrotor es un $elic,/tero 7ue consta de cuatro rotores mediante los cuales se /ro/ulsa( 4stos rotores se sitSan /or lo general en las eKtremidades de una cruJ sus $Flices giran en un mismo /lano( 4l control de mo0imiento del a/arato se consigueQ a2ustando la 0elocidad de rotaci,n de cada $o2a(
La raJ,n /rinci/al de 7ue los cuadric,/teros $ayan a/arecido $ace relati0amente /ocoQ /uede atribuirse a 0arios factores( 4l obstculo /rinci/al es la necesidad de calcular la 0elocidad de las $Flices en tiem/o real con tal de mantenerlo estable( 4sto $ace 7ue el algoritmo de control sea com/le2oP 4l sistema tiene 7ue retroalimentarse con datos sobre su estado actual y actuar en consecuencia al momento( 6in embargoQ a medida 7ue la tecnologa $a ido a0anJandoQ la /recisi,n y carga de com/utaci,n necesarias $an de2ado de ser una barrera( Gracias a la tecnologa ms /recisa de sensores y /rocesadores 7ue eKiste $oy en daQ es /osible $acer 0olar estos a/aratos( .e a$ el auge 7ue $an eK/erimentado estos sistemas en los Sltimos tiem/os(
3%"% #resentacin
4l /royecto descrito en este documento consiste en la realiJaci,n del dise@o e im/lementaci,n de un sistema fsico cuadric,/tero( 4l a/arato tendr 7ue ser ca/aJ de comunicarse remotamente /ara 7ue sea /osible controlar su direcci,n( Para elloQ se $abrn de analiJar cuales son las alternati0as eKistentesQ tanto res/ecto al $ard?are como al soft?are se refiere(
3% % Moti4acin personal
La idea de este /royecto surgi, del cSmulo de 0arias circunstancias( Me encontraba a falta de un a@o de acabar la carrera y me a/eteca realiJar un PFC 7ue fuera diferente( 5lgo 7ue me forJara a a/renderQ /ero 7ue me /ermitiera a la 0eJ a/licar /arte de lo 7ue $e a/rendido todos estos a@os( "n amigo francFsQ me en0i, la "=L de la /lataforma 5rduinoT1U y em/ecF a interesarme ms /or la electr,nica( 5l /oco tiem/oQ otro amigo me en0i, un 0ideo de un micro-cuadric,/tero controlado /or radio control( #ras darle 0ueltas al temaQ me decid a 2untar los conce/tos 5rduinoV5ndroidVCuadric,/tero y me /use manos a la obra(
1&
3%3% 7b8eti4o
4l ob2eti0o /rinci/al del /resente /royecto es el dise@o de un sistema fsico cuadric,/tero de eK/erimentaci,n( 4l sistema constar de cuatro rotores 7ue estarn controlados desde un microcontrolador 5rduino el cual a su 0eJ recibir informaci,n de los sensores necesarios /ara una correcta estabiliJaci,n de 0uelo del cuadrico/tero(
Por otra /arte se dotar al sistema de un control remoto inalmbrico desde un smart/$one 5ndroid( 4n el /royecto se distinguen ob2eti0os ms generales y otros ms es/ecficosP
Generar la /lataforma cuadric,/teroQ $aciendo uso de un microcontrolador y sensores adecuados 4l cuadric,/tero $a de ser ca/aJ de comunicarse con una a/licaci,n 7ue corra en el sistema o/erati0o 5ndroid(
11
"tiliJaci,n del I.4 4cli/se en con2unto con la 6.I de 5ndroid( 6ensores intrnsecos en telFfonos 5ndroid(
1%
4Kisten una cantidad rese@able de /royectos 7ue afrontan el reto de construir multic,/teros o $elic,/teros de mSlti/les motores( .e/endiendo del enfo7ue desde donde los miremosQ se /ueden di0idir de 0arias manerasP
5mateur 0s Comercial
Por una ladoQ eKisten /royectos amateur 7ue sin nimo de lucro( 6e trata ms bien de com/artir eK/eriencias entre amantes de este ti/o de a/aratos( 4n otros en cambioQ el enfo7ue comercial es claro( 6e suelen 0enden cuadric,/teros enteros o /artes del mismo( 5demsQ en muc$os de ellos se 0e un claro desarrollo continuo del /roducto con el ob2eti0o de me2orarlo(
1+
5tendiendo a estas dos maneras de clasificaci,nQ obtenemos 3 combinaciones /osibles( 6e $a realiJado un anlisis de los /royectos ms rese@ables de diferentes combinaci,n /oniendo es/ecial atenci,n en /royectos de c,digo abiertoP
9% % Mi;uadricoptero
Mi8uadrico/teroT)U es otro e2em/lo de un /royecto indi0idualQ en este caso escrito en castellanoQ 7ue describe el dise@o de un cuadric,/tero(
9%9% Aero:uad
5eroEuadT3U es un /royecto de c,digo abierto de $ard?are y soft?are 7ue se dedica a la construcci,n de cuadric,/teros controlados remotamente( 4s un /royecto muy 0i0oQ con una gran comunidad detrs(
13
9%?% 7penpilot
1/en/ilotT<U es otra iniciati0a 7ue se inicia en %&1&Q muy del estilo de 5ero7uad y .iy.rones( Como su /ro/io nombre indicaQ se trata de c,digo abiertoQ y est /ensado /ara diferentes ti/os de 0e$culos aFreos(
Cabe destacar 7ue son /ases como 44"" o 5lemania donde $e encontrado ms /royectos 7ue desarrollen cuadric,/teros( 5demsQ es claramente en 44"" donde la faceta comercial est ms marcada( 4l modelo de negocio suele ser /arecidoP 6e encuentran claramente orientados a la 0enta de $ard?are es/ecfico 7ue ellos fabricanQ /ara el cual desarrollan el soft?are( 4ste c,digo lo abrenQ /ermitiendo 7ue los usuarios lo modifi7uen y me2oren a su gusto( 4Kiste sin embargo un /royecto de es/ecial interFsQ lle0ado a cabo /or una em/resa FrancesaQ el cual /aso a detallar ms /rofundamente(
1;
Figura 1( 5= .rone
#iene dos micro-cmaras incor/oradas 7ue /ermiten grabar 0ideo( 4s este $ec$o el $ace 7ue a menudo /resenten el /roducto como B#$e Flying :ideo GameC( 6e controla mediante una a/licaci,n /ara smart/$ones 7ue est dis/onible tanto /ara dis/ositi0os i16 ' como /ara 5ndroid( La comunicaci,n es 0a Ai-Fi( InternamenteQ contiene $ard?are /ro/io 7ue incluye dis/ositi0os $abituales como son el aceler,metroQ girosco/ioQ altmetro de ultrasonidos 7ue /ermite controlar la altitudQ((( 4l soft?are corre sobre el sistema o/erati0o LinuB( 4s un /roducto com/letamente comercial y $an decidido mantener el c,digo como /ro/ietario( 6in embargoQ dis/one de una 5PI con la 7ue se /ermite /rogramar $asta cierto /unto el com/ortamiento del drone( #iene la $abilidad de reconocer ob2etos +. y es com/atible con 2uegos 7ue introducen realidad aumentada( 4n cuanto a las es/ecificaciones ms tFcnicasQ dis/one de un microcontrolador 5=M- 3)* M>J embebido con 1%* Megabytes de =5M( .is/one de comunicaci,n mediante Ai-Fi y "6B( "n aceler,metro de + e2esQ dos girosco/ios y un altmetro ultras,nico( La estructura est fabricada en fibra de carbon( Posee 3 motores elFctricos de 1; ?att de ti/o brus$less y una batera recargable de 1&&& mili5m/erios de Litio 7ue /ro/orciona 11(1 0oltios( Con un /eso de entre +*&'3%& gramos es ca/aJ de 0olar durante 1% minutos con una 0elocidad de ; metros'segundo o lo 7ue es lo mismoQ 1* 8m'$( 6u /recio a fec$a de 1 de Xunio de %&1% es de +&&Y(
1)
6i bien eKisten bastantes /royectos en el mundo de los cuadric,/terosQ eKisten muy /ocos 7ue sean controlados mediante un smart/$one( La tendencia $acia el uso masi0o de este ti/o de telFfonos /ermiten reducir costes en el mbito de los dis/ositi0os controlados /or control remotoQ ya 7ue no $ace necesario el uso de otros sistemas de transmisi,n ms caros como son el radio control( 6i $ablamos de cuadric,/teros controlados mediante mo0ilQ $ay 7ue destacar 7ue Parrot AR Drone $a im/lementado esta idea recientemente( 6in embargoQ no se ofrecen es7uemas del $ard?are y el c,digo es /ro/ietarioQ /or lo 7ue se $abr de analiJar y 0er cual es la me2or manera de lle0ar a cabo el /royecto( La idea inicial esQ realiJar el desarrollo basndonos en /lataformas abiertas y con un coste econ,mico lo ms reducido /osible(
1<
6e $a decidido se/arar en dos la alimentaci,n del sistema( Por un lado $emos a@adido una pila 7ue se encargar de alimentar el microcontrolador y todos los com/onentes unidos a Fl( Por otro lado se encuentra una batera mayor 7ue ser la encargada de alimentar los motores( 4sta corriente sin embargoQ $a de /asar /or los 46Cs /rimero 7ue sern los encargados de administrar electricidad a los motores( 1 si se 7uiere decir de otra maneraQ los motores se alimentan de electricidad a tra0Fs de los 46Cs( 5nclados al microcontroladorQ tenemos tambiFn una IMU Inertial Measurement "nit! 7ue consta de un acelermetro y un giroscopio en una Snico board o tableroQ ambos de tres e2es( La filosofa y funcionamiento de estos a/aratos se eK/lica ms adelante en este ca/tuloQ /ero a groso modoQ son los
1*
sensores necesarios /ara saber la inclinaci,n en todo momento del sistema( Para realiJar la coneKi,n entre el micro y el smart/$oneQ tambiFn $emos a@adido a la /laca un mdulo bluetooth( Las hlices unidas a los motores crearan la /ro/ulsi,n necesaria( >e creado el siguiente es7uema figura %! 7ue sir0e /ara $acerse una idea de la interconeKi,n de elementos con ms facilidad( 4l es7uema se com/leta des/uFs /ero sir0e /ara 0er el micro /or un lado con la IM" y el m,dulo Bluetoot$! y los 46Cs y motores /or otro(
1-
La lista /or tanto 7ueda de la siguiente maneraP Frame( 3 Motores sin escobillas( 3 46Cs 4lectronic 6/eed Controller!( Microcontrolador 5rduino( IM" Inertial Measurement "nit!( Modulo Bluetoot$( Bateria /ara micro 5rduino!( Batera motores!( 3 >elices(
>%"%"% Con+iguracin
.esde el inicio de este documento se $a $ablado de un sistema cuadric,/tero( 5ntes sin embargoQ se /lante, la /osibilidad de dise@ar un multirotor con un nSmero diferente de motores diferente a cuatro( "n tric,/tero $abra sido una /osibilidad muy 0lida( 4ste ti/o de sistemas $acen necesario el uso de un ser0o en la /arte /osterior de su estructura( 4l ser0o sera el e7ui0alente a la cola de un /2aro o de un /eJ( 6e descart, /or7ue im/lica una dificultad eKtra a la $ora del monta2e y la estabilidad de este sistema no es mayor 7ue un cuadric,/teroQ /or e2em/lo( #ambiFn se contem/l, la /osibilidad de montar un $eKac,/teroQ o cual7uier sistema con ms de 3 motores( 6e descart, /or7ue el coste econ,mico aumenta( #omada /uesQ la decisi,n de construir un sistema cuadric,/teroQ la siguiente decisi,n a tomarQ es si se utiliJar una distribuci,n en BKC o en BVC( 5 la $ora de controlar los motoresQ la configuraci,n en BVC im/lica una mayor sencilleJQ /or lo 7ue se $a o/tado /or esta o/ci,n( "n motor estar situado en la /arte delantera y otro en la trasera( 4l sentido de giro de cada $Flice es de 0ital im/ortancia( >aremos girar dos de las $o2as en sentido $orario CA! y otras dos de ellas en sentido contrario CCA! como en la figura +( 6i todas girarn en las agu2as del relo2Q /or e2em/loQ continuamente( el cuadric,/tero comenJara a girar en sentido in0erso
%&
Figura +( 6entido de rotaci,n de los cuatro motores( Pasemos /or tanto a analiJar los elementos necesarios /ara un cuadric,/tero configurado en V(
>%"% % .rame
4Kisten muc$as /osibilidades a la $ora de elegir frame( >abr 7ue decidir res/ecto al materialQ tama@o y forma del mismo( Para ello tendremos 7ue tomar en cuenta criterios como el /esoQ la aerodinmica y el /recio( 4n cuanto al /esoQ est claro 7ue un material demasiado /esado sera negati0oQ /uesto 7ue tendramos 7ue aumentar la fuerJa /ara lograr el mismo resultado de /ro/ulsi,n( 6i nos 0amos al otro eKtremo y elegimos un material demasiado ligero corremos el riesgo de 7ue esteQ sea demasiado frgil( 4Kisten sin embargo materiales 7ue aun siendo ligerosQ siguen siendo igual de fuertes 7ue los /rimeros o ms( #ambiFn $ay 7ue tener en cuenta 7ue una mayor fleKibilidad del cuadric,/tero e0itar /osibles da@os en su estructura en caso de cada( 4l e2em/lo /erfecto de material ligeroQ duro y fleKible es la fibra de carbono y deri0ados o la fibra de carbono y 0idrio( 6in embargoQ se $a elegido un frame semi ensamblado de fbrica! de contrac$a/ado de madera /or 0arias raJones( La /rinci/al es el /recio( Como se $a dic$oQ la fibra de carbono es un material ms adecuado /ero es bastante ms caro( 5l final del /resente documento $ay un resumen de /recios( 4l frame tiene +mm de grosor y /esa 1-; gramos(
>%"%3% Motores
La elecci,n de los motores es una decisi,n im/ortante( 4Kisten dos ti/os( Los motores con escobillas brus$ed motors o .C motors! y los motores sin escobillas llamadosQ brus$less motors o brus$less .C motors(
%1
%%
Figura ;( .iferencia entre motores con y sin escobillas( Como se /uede a/reciar en la figura ;Q en los motores brus$lessQ las bobinas BcoilsC en inglFs! rodean los imanes( 4s el 46CQ como se eK/licar ms adelanteQ el encargado de acti0ar estas bobinas consecuti0amenteQ $aciendo 7ue el rotor gire( 4l motor dis/one de sensores 7ue son ca/aces de detectar la orientaci,n del rotor en cada momentoQ /ara as /oder acti0ar y desacti0ar las bobinas en el momento adecuado( Los imanes del centro /or tantoQ son atrados /or la /olaridad de un cam/o magnFtico generado en las bobinasQ las cuales reciben /ulsos en un /atr,n es/ecfico( 6i 7ueremos 7ue el motor gire mas ra/idoQ sim/lemente $acemos girar el cam/o magnFtico secuencial a mayor 0elocidad( 1 lo 7ue es lo mismoQ tendremos 7ue aumentar la frecuencia de los /ulsos( Ms adelante se eK/lica como los 46Cs generan estos /ulsos(
%+
Cada uno de los dos ti/os de motor 7ue $emos 0isto tiene sus /ros y sus contras(
Motores CON escobillas + + " " " " Control simple y sencillo. No hace falta ningn tipo de controlador. Pueden operar en situaciones extremas al no haber elementos electr!nicos. Precisan mantenimiento peri!dico. #isipaci!n del calor pobre debido a la construcci!n interna del rotor. $ango de %elocidad menor debido a limitaciones de las escobillas &as escobillas generan ruido causando 'nterferencias Magn(ticas )l(ctricas *)M'+ Motores ,'N escobillas + Conmutaci!n electr!nica basada en sensores de posici!n -, cambio mec.nico + + + + + " " Mantenimiento menor al no haber escobillas. Mayor eficiencia. #isipa me/or el calor. Mayor rango de %elocidades. No hay limitaciones mec.nicas por escobillas. ,e genera un menor ruido el(ctrico *)M'+ 0lgo mas caros. &os ),Cs se hacen necesarios.
.e la tabla anterior se concluye 7ue merece la /ena utiliJar motores sin escobillasQ aun7ue /ara ello sea necesaria la incor/oraci,n de 46Cs( 6on muc$as las 0enta2as 7ue conseguiremos com/arado con los incon0enientes( "tiliJaremos motores brus$less /or tanto( .entro de la familia de los brus$lessQ eKisten dos ti/os diferentes( .e ti/o Inrunner y Outrunner( 4n los motores outrunnerQ los imanes estn situados en el eKterior de la estructura( Por tantoQ se /uede 0er como la /arte eKterior del motorQ gira( 6ucede lo contrario en los motores inrunner( Los imanes estn en el interior de la estructuraQ y /or tanto se 0e 7ue lo Snico 7ue gira es el e2e(
%3
Los motores outrunner giran muc$o ms des/acio y el /ar es muc$o mayor( La mayor 0enta2a es el $ec$o de 7ue no es necesario una ca2a de cambiosQ lo 7ue los $ace mas silenciosos( 6on ligeramente menos eficientes 7ue los inrunnerQ /ero es tan /e7ue@a la diferencia 7ue no debiera de ser un factor determinante a la $ora de $acer la elecci,n( Los motores inrunner /or su /arteQ son ms eficientes cuanto ms r/ido gira el motor y en general son ms eficientes 7ue los outrunner( 9ecesitan de un elemento adicional entre el motor y la $Flice( La /arte negati0a de los motores inrunner es 7ue estas /artes adicionales /ueden y suelen dar /roblemas( 6e $a decidido utiliJar motores brus$less outrunner /or su mayor fiabilidad( 4l modelo 7ue se $a elegido es un B$ac8er 6tyle Brus$less 1utrunner %&-%*MC(
.imensionsP %*K%*mm =atingP "!>!;4 Battery ConfigP 3 Lipo Cells 6$aft e2e!P +(1<;mm Aeig$t /eso!P 3+gr 6tandard CurrentP 9-" A MaK CurrentP ">A
%;
\r/m\ se refiere al nSmero de rotaciones com/letadas cada minuto /or un cuer/o 7ue gira alrededor de un e2e( 80 es el nSmero de r/m-s 7ue un motor girarQ /or cada 0olt a/licado( Ms adelanteQ se $a elegido una batera de + celdas 11(1:! con lo 7ue calculamos ya el nSmero de giros com/letos 7ue $ar el e2e de nuestro motor /or minuto re0oluciones /or minuto de nuestro sistema!( 80 ] r/m ' : r/m ] 80^: ] 1&;&80 ^ :oltiosWbatera! r/m ] 80^: ] 1&;&80 ^ 11(1: ] ""?>> rpm
>%"%9% 0atera
La ca/acidad de una batera se mide /or el ratio de descarga( 4l ratio de descarga C de una bateraQ es la mKima cantidad de corriente 7ue /uede /ro/orcionar( Como e2em/loP 1+&&ma 1(+5! 1%C battery can deli0er 1(+5 K 1%! 1;()5 >emos elegido la batera 7ue se muestra en la figura <(
%)
6/ec( Ca/acityP !!mA6 :oltageP +61P ' + Cell ' ""%"4 .isc$argeP !C Constant ' %;-+&C Burst Aeig$tP 1*&g including ?ireQ /lug _ s$rin8 ?ra/! .imensionsP 1&%K+<K%3mm Balance PlugP X6#-X> .isc$arge ?ireP *cm $ig$ strand count soft silicon ?ire( 1%5AG .isc$arge /lugP X#)&
6e trata de una batera de + celdas +6! de %%&&m5$ 7ue es lo mismo 7ue decir 7ue es ca/aJ de dar %%&&m5 o %(% 5m/erios! en una $ora( %& C es el ratio de descarga o la mKima cantidad de corriente 7ue /uede /ro/orcionar( Podemos calcular la corriente total I!
6i di0idimos los 335 entre los 3 motores 7ue tenemosQ tenemos ""A( :emos 7ue esto enca2a /erfectamente con la es/ecificaci,n de los motoresP 6tandard CurrentP 3-1%5 % MaK CurrentP 1;5 Podemos calcular los ?att 7ue tendr cada motor y los caballos 7ue eso su/one como curiosidadP ?atts ] :oltios ^ Corriente ] 11(1 0 ^ 11 am/s ] 1%%(1 T1 $orse /o?er ] <3)?atts ` 1%%(1' <3) ] &(1+)< $orsesU
%<
"n 46C al fin y al cabo es un controlador PAMT11U /ara motores elFctricos( 4l conce/to de PAM se eK/lica ms adelante en este mismo a/artado( Por un ladoQ un 46C figura *!Q dis/one de dos cables /or los cuales se alimenta y 7ue irn conectados a la batera( Por otro lado tendr los tres cables 7ue iran al motor( 5demsQ dis/one de + cablesQ 7ue irn conectados al microcontrolador( 4s mediante estos tres cables /or los 7ue el micro le indica al 46C a 7uF 0elocidad 7uiere 7ue el motor gire( 6i 7uisiFramos controlar dos motores a la misma 0elocidadQ sera suficiente con tener un 46C como en la figura -( 4l cable donde se indica Bconnect to recei0erC ira conectado al microcontrolador(
%*
Figura 1&( "n solo 46C controlando % motores brus$less a una misma 0elocidad(
4n nuestro caso necesitamos controlar 3 motores y cada uno con una 0elocidad diferenteQ /or lo 7ue el es7uema anterior no nos es 0lido( Conectaremos cada 46C inde/endientemente al microcontrolador y a un motor cada uno( >e redibu2ado uno de los es7uemas anterioresQ de2ando un solo 46C /ara una mayor claridad(
%-
Figura 11( 4s7uema de coneKi,n de un 46C( Na sabemos 7ue los cables aJules de la figura 1& son la se@al trifsica 7ue $acen girar el motor( #ambiFn 7ue los dos cables de la /arte su/erior derec$a del 46C 0an $acia la batera( DPero 7uF /asa con los otros +G 6ir0en /ara comunicar micro y 46Cs( 4l cable ro2o central se /uede utiliJar /ara alimentar el microcontrolador /ero nosotros lo alimentaremos con una /ila a/arte /or lo 7ue 7uedar al aireQ como se /uede 0er en la figura 1&( Para entender los otros dos cablesQ tenemos 7ue introducir /rimero el conce/to de PA. 7ue es el ti/o de se@al 7ue el 46C recibe /or esos dos cables(
5.1.6. P D
La modulaci,n /or anc$o de /ulsos tambiFn conocida como PAMQ siglas en inglFs de /ulse?idt$ modulation! es una /otente tFcnica /ara controlar circuitos anal,gicos mediante una salida digital del microcontrolador( Consiste en modificar el ciclo de tra!a"o de una se@al /eri,dica una senoidal o una cuadradaQ /or e2em/lo! /ara transmitir informaci,n a tra0Fs de un canal de comunicaciones( 4l ciclo de tra!a"o de una se@al /eri,dica es el anc$o relati0o de su /arte /ositi0a en relaci,n con el /erodo( 4K/resado matemticamenteP
+&
. es el ciclo de traba2o es el tiem/o en 7ue la funci,n es /ositi0a anc$o del /ulso! # es el /erodo de la funci,n "na imagen aclaratoria 0iene a continuaci,n( La figura 11 muestra ; se@ales PAM diferentes( La /rimera indica una se@al de salida con un ciclo de traba2o del &a( La se@al se mantiene constante a & 0oltios siem/re( La segunda se@al traba2a al %;a /or lo 7ue un cuarto del tiem/o la se@al 0aldr ;0( Las siguientes se@ales traba2an al ;&aQ <;a y 1&&a res/ecti0amente siguiendo esa misma idea( CuandoQ /or e2em/loQ el suministro es de -: y el ciclo de traba2o es un 1&aQ la se@al anal,gica resultante ser de &(:( 6iguiendo esta l,gicaQ en la figura 11Q su/oniendo 7ue tenemos un suministro de ;:Q las se@ales analogicas resultantes seranP a! &0 b! ;^&(%;] 1(%; c! ;^&(;]%(;0 c! ;^&(<;]+(<;0 d! ;^1];0
Figura 1%( PAM( "n conce/to im/ortante a tener en cuenta /ara 7ue la tFcnica PAM funcioneQ es la frecuencia medida en >ercios! con la 7ue los cambios de se@al descritos anteriormente se dan( Imaginemos 7ue estamos controlando una lm/ara mediante la tFcnica de PAM( 6i mandamos una se@al de -0 durante ;
+1
segundos y des/uFs otra de &: durante ; segundos estaramos ante un ciclo de traba2o del ;&a /ero est claro 7ue nuestra bombilla estaba com/letamente a/agada los /rimeros ; segundos y a/agada otros ;( 6i lo 7ue 7ueremos es 7ue la bombilla alumbre lo corres/ondiente a 3(;: a la mitad de su ca/acidad!Q $ay 7ue conseguir 7ue el cambio en la se@al sea lo suficientemente r/idoQ res/ecto al tiem/o de res/uesta(
Los 46Cs generalmente ace/tan una se@al PAM a ;& >J ciclos /or segundo!Q cuya am/litud de /ulsoQ 0ara de 1 ms a % ms( Cuando el /ulso es de 1 ms a ;& >JQ el 46C res/onde a/agando el motor conectado a su salida( "na am/litud de /ulso de 1(; ms $ar 7ue el ciclo de traba2o sea del ;&a lo 7ue mo0er el motor a media 0elocidad( Para 7ue el motor traba2e a su mKima 0elocidadQ el /ulso tendr 7ue ser de % ms(
Para el sistema cuadric,/teroQ $emos elegido el modelo B#urnigy 54-%&5 Brus$less 46CC figura 1&!(
Los 46Cs de 1& am/ se recomiendan /ara cuadric,/teros /or deba2o de 18g( 9osotros $emos elegido un 46C de %&5 en /re0isi,n de 7ue nuestro sistema /ueda su/erar este /eso en el futuro sensores eKtraQ cmara digitalQ((( !(
+%
4s/ecificaciones tFcnicasP 1ut/utP Continuous %&5Q burst %;5 u/ to 1& seconds( In/ut :oltageP %-3 cells lit$ium battery or ;-1% cells 9IM> battery( B4CP Linear %5 b ;: Control 6ignal #ransmissionP 1/tically cou/led system( MaK 6/eedP % PoleP %1&Q&&&r/m ) PoleP <&Q&&&r/m 1% PoleP +;Q&&&r/m 6iJeP ;&mm L! ^ %)mm A! ^ entender1%mm >!( Aeig$tP 1-g(
6on necesarios 11&? y tenemos 1%%?Q /or lo 7ue cum/limos la regla( >ay 7ue se@alar 7ue $emos $ec$o el clculo su/oniendo 7ue el cuadric,/tero /esa 1 8gQ lo cual nos da un cierto margen de tran7uilidad(
++
>%"%C% Microcontrolador
Figura 13( Logo 1/en >ard?are( Open source hardware 16>A! se refiere al con2unto de dis/ositi0os dise@ados con la misma filosofa 7ue el soft?are F166 F166 - Free and o/en source soft?are!( O&en source hard%are es /arte del mo0imiento 7pen 'ourceQ 7ue se a/lica como conce/to( 4l tFrmino significa 7ue la informaci,n sobre el $ard?are est accesible fcilmente( #anto el dise@o del $ard?are se refiere /lanos mecnicosQ es7uemasQ PCBQ c,digo >.L y dis/osici,n del circuito integrado! como a soft?are 7ue utiliJa el $ard?are( 5mbos son lle0ados a cabo con el enfo7ue de soft?are libre abierto y gratuito( >emos elegido una /lataforma 7ue sigue esta filosofa(
5.1.#.2. Arduino
5rduinoT1U es una /lataforma de /rototi/ado electr,nico basada en el /rinci/io del $ard?are y soft?are libre( 5l igual 7ue FirefoK fuF en su da el caballo de batalla del soft?are libreQ 5rduino tambiFn lo est siendo en en el mundo del >ard?are 1/en 6ource( 4l /royecto nace en Italia en %&&;( 4l auge y desarrollo 7ue est teniendo esta /ro/uesta es rese@able( Im/ortantes em/resas a ni0el mundial lle0an ya tiem/o interesndose y colaborando con el /royecto( "n buen e2em/lo es el acuerdo de colaboraci,n al 7ue $an firmado Google y Gran Breta@aT1%U en mayo del /resente a@o %&1%Q /ara la com/ra de 8its de iniciaci,n 5rduino y la formaci,n de /rofesores /ara ense@ar utiliJando 5rduino en los colegios(
+3
6e $a buscado desde el /rinci/io desarrollar el sistema con una /lataforma 7ue fuese de c,digo abierto( 5rduino tiene todos los ingredientes /ara ser a/etecible /ara alguien 7ue bus7ue /rofundiJar sus conocimientos en el mundo de la electr,nica( 4s /or eso 7ue eKiste una gran comunidad de artistasQ dise@adores y aficionados creando /royectos constantemente con este microcontroladorQ lo 7ue $ace del mismo una em/resa muy 0i0a( :amos a 0er 7uF es eso 7ue lo $ace tan es/ecial(
Figura 1;( Logo 5rduino( Euien me2or /ara /resentar la /lataforma 7ue ellos mismos( Mediante estos dos /untos 7ue 0ienen a continuaci,n en narara2aQ se eK/lica en su ?ebT1U 7ue es 5rduino en realidad( 5.1.8.2.1. Qu es arduino realmente?
5rduino /uede tomar informaci,n del entorno a tra0Fs de sus /ines de entrada de toda una gama de sensores y /uede afectar a7uello 7ue le rodea controlando lucesQ motores y otros actuadores( 4l microcontrolador en la /laca 5rduino se /rograma mediante el lengua2e de /rogramaci,n 5rduino basado en Airing! y el entorno de desarrollo 5rduino basado en Processing!( Los /royectos $ec$os con 5rduino /ueden e2ecutarse sin necesidad de conectar a un ordenadorQ si bien tienen la /osibilidad de $acerlo y comunicar con diferentes ti/os de soft?are
Hay muchos otros microcontroladores y plataformas con microcontroladores disponibles para la computacin fsica. Paralla !asic "tamp# !$%&' de (etmedia# Phid)ets# Handyboard del M*+# y muchos otros ofrecen funcionalidades similares. +odas estas herramientas or)ani,an el complicado traba-o de pro)ramar un microcontrolador en pa.uetes f/ciles de usar. Arduino# adem/s de simplificar el
+;
proceso de traba-ar con microcontroladores# ofrece al)unas venta-as respecto a otros sistemas0 Asequible % 1as placas Arduino son m/s ase.uibles comparadas con otras plataformas de microcontroladores. 1a versin m/s cara de un mdulo de Arduino puede ser montada a mano# e incluso ya montada cuesta bastante menos de 234
+)
Las raJones /or las 7ue se $a elegido 5rduino /ara este /royecto casan muy bien con la descri/ci,n del /unto anteriorP 4con,mico( 1/en 6ourceQ gran /otencial( Cur0a de a/rendiJa2e /e7ue@a( 4n /lena eK/ansi,n(
+<
Microcontroller 8peratin) Volta)e *nput Volta)e BrecommendedC *nput Volta)e BlimitsC ;i)ital *E8 Pins Analo) *nput Pins ;C Current per *E8 Pin ;C Current for @.@V Pin Flash Memory
A+me)a@&? AV D%>&V
2%&3V >' Bof 6hich 2 provide P7M outputC 2 '3 mA A3 mA @& G! BA+me)a@&?C of 6hich 3.A G! used by bootloader
.is/one de un /rocesador 5#M4L 5#mega+%*T1+U a 1) M>J( Memoria Flas$ de +% IB y 1 IB de memoria 44P=1M memoria 7ue no se borra al cortar el suministro elFctrico!( 4n cuanto a los /inesQ o/eran a ; :( #iene 13 digitales de los cuales ) /ueden actuar como salida de ti/o PAM( 5 cuatro de ellos conectaremos nuestros 46Cs( #ambiFn $ay ) in/uts anal,gicos a los cuales conectaremos los sensores( Por SltimoQ tenemos los /ines & =X! y 1 #X! =ecei0e y #ransmit res/ecti0amente! 7ue /ermiten una comunicaci,n ##L en serie( Los utiliJaremos /ara comunicarnos con el m,dulo Bluetoot$( >acia el final del a/artado >ard?are se ad2unta un es7uema con todas las coneKiones( 5ntes en cambioQ 0amos a 0er los dis/ositi0os 7ue 0an unidos al micro 5rduinoP 4l IM" y el m,dulo bluetoot$(
+*
>%"%I% 0atera I=
6e $a a@adido una batera de -: /ara alimentar el microcontrolador( Cum/le con las es/ecificaciones res/ecto a los lmites de entrada de 0olta2e( =ecommended In/ut 0oltageP <-1%:!( 4l micro tiene un regulador 7ue reba2a este 0olta2e $asta ;: 7ue es 0alor en el 7ue o/era(
;(1(1&( *M3
IM" Inertial Measurement "nit! o unidad de medici,n inercial es un dis/ositi0o electr,nico 7ue mide e informa acerca de la 0elocidadQ orientaci,n y fuerJas gra0itacionales de un a/aratoQ usando una combinaci,n de acelermetros y girscopos( La IM" funciona detectando la actual tasa de aceleraci,n usando uno o ms aceler,metrosQ y detecta los cambios en atributos rotacionales como son el ya? /itc$ y roll figuras 1; y 1)! mediante girosco/ios(
4n nuestro cuadric,/tero se $ar uso del *M3 .igital Combo Board - ) .egrees of Freedom I#G+%&&'5.XL+3; de s/ar8funT13U 7ue se muestra en la figura 1<( Consta de un aceler,metro AD'(3)5 y de un girosco/io I*+32,, 7ue se eK/lican a continuaci,n(
+-
5.1.11. Aceler-.etro
4l aceler,metro es un instrumento 7ue mide aceleraciones( Lo 7ue nos interesa es la aceleraci,n de coordenadas cambio de la 0elocidad del dis/ositi0o en el es/acio! /ero esto /resenta 0arios /roblemas( Para entender un aceler,metroQ imaginemos una /elota de tenis BencerradaC en una es/ecie de dado gigante( 4ste dado ser nuestro aceler,metroQ donde las /aredes del mismo sern ca/aces de medir la fuerJa 7ue a/licamos sobre ellas( 6i mo0emos el dado $acia la iJ7uierdaQ la /elota c$ocar contra la /ared iJ7uierda( La fuerJa 7ue mediremos en esta /ared ser la manera de medir la aceleraci,n( 6i mo0emos el dado en diagonalQ la /elota $ar fuerJa en dos /aredes en 0eJ de unaQ /ero siguiendo la misma idea( Pero 7uF /asa si de2amos 7uieto nuestro dado en el sueloG .ebido a la gra0edadQ la /ared inferior medir una fuerJaQ cy sin embargo no $ay cambio de 0elocidad en el dado aceler,metro!d( 1tro e2em/lo claro es 7ue un dado en cada gra0itacional libre $acia el centro de la #ierra medir un 0alor de ceroQ ya 7ueQ a /esar de 7ue su 0elocidad es cada 0eJ mayorQ est en un marco de referencia en el 7ue no tiene /eso( 4l aceler,metro /or tantoQ mide todas las aceleraciones eKce/to las causadas /or la gra0edad( 4l aceler,metro 7ue incluye nuestro IM" es un 5.XL+3;T1;U( "n /e7ue@o a/arato de ba2o consumoQ 7ue mide la aceleraci,n de + e2esQ y alta resoluci,n 1+-bits! 7ue mide $asta e1) g( La salida digital del aceler,metro est dis/onible mediante interfaJ 6PI o IHC(
3&
5.1.12. +irosco&io
4l girosco/io es un dis/ositi0o 7ue mide la orientaci,nQ basndose en los /rinci/ios del momento angular( #/icamenteQ consiste en un ob2eto 7ue gira sobre s mismoQ y cuyo e2e es libre de cambiar de orientaci,n libremente( Cuando se somete el girosco/io a un .o.ento de /uer0a 7ue tiende a cambiar la orientaci,n del e2e de rotaci,nQ el ob2eto 7ue giraba sobre s mismo cambiar de orientaci,n /ara intentar seguir en su direcci,n fintuiti0ag(
9uestra IM" incluye un I*+32,, T1)U( :amos a 0er como se comunica la IM" con el micro(
5.1.13. I1C
La IM" se comunica con arduino mediante un bus de comunicaciones en serie llamado IHC( 6u nombre 0iene de Inter-Integrated Circuit Circuitos Inter-Integrados!( La 0elocidad de transmisi,n es de 1&& 8bits /or segundo( 4s un sistema muy usado /ara comunicar /erifFricos o sensores en nuestro caso! con el microcontrolador en un sistema integrado( La /rinci/al caracterstica de IHC es 7ue utiliJa dos lneas /ara transmitir la informaci,n( "na /ara datos y otra /ara la se@al del relo2( "na tercera lnea es necesaria /ara la masa( 4l nombre 7ue reciben las lneas sonP 6.5 datos!Q 6CL relo2! y G9. ground tierra!(
4n la /arte /osterior de la IM" /odemos 0er efecti0amente las se@ales 6.5 y 6CL y G9.( #endremos 7ue tener cuidado de no darle ms de +(+ : /ara no 7uemarlo(
31
Blue6Mi=F 6il0er utiliJa un modulo =9-3% 7ue se comunica en serie =X'#X!( Funciona con rangos desde %3&& $asta 11;%&& b/s bits /or segundo! de transmisi,n( Podemos alimentarlo con +(+ : $asta ):(
>%"%">% 7tros
5demsQ $an sido necesarios otros elementos 7ue aunQ siendo secundarios son im/rescindibles como el /roto-s$ieldQ un conmutadorQ el ada/tador /ara conectar batera de - : con 5rduinoQ el arnFs de energa cable 7ue distribuye la energa desde la batera $asta los 46Cs y un conmutador!
>%"%"?% #eso
Con la siguiente configuraci,n $emos calculado el /eso total del sistema multirotor 7ue 7uedara de la siguiente maneraP ^ #odos los /esos estn en gramos(
Elemento 1rame Motor ),C :ater;a :ateria arduino*3%+ /ac> bater;a Microcontrolador ?(lices 'M@ :luetooth
3+
4= gr < gr
"
4= < 810 gr
4l sistema cuadric,/tero nos da *1& gr( Para asegurarnos de 7ue tiene /otencia suficiente como /ara 0olarQ se $an $ec$o calculos con 1 IgQ dando un margen sufiente si se 7uisieran a@adir otros elementos una cmaraQ /or e2em/lo!(
33
Figura %%( IJ7uierdaP Protos$ield 5rduino( .erec$aP 5rduino "91 La figura %1 muestra un es7uema de coneKiones de la IM" y el m,dulo Bluetoot$ Blue6Mi=F con el microcontrolador(
3;
Figura %+( 4s7uema de coneKi,n con IM" y Bluetoot$( 4n cuanto a la IM"Q esta debe ser alimentada con +(+ : /or7ue as se es/ecifica en su fic$a tFcnica( "tiliJaremos los /ines de entrada anal,gicos 53 y 5; de 5rduino /ara recibir las se@ales 6.5 .atos! y 6CL =elo2! res/ecti0amente( 4l m,dulo bluetoot$ /or su /arte se alimentar mediante ; :( La se@al #X-1 transmit - out/ut! del bluetoot$ ir conectado al /in =X =ecei0e! de 5rduino( .e manera similarQ la se@al =X-I recei0ein/ut! del bluetoot$ ir conectada al /in #X #ransmit! de 5rduino( 4n este es7uema faltan dos cosas /or a@adir toda0a( La /rimera es el conmutador 7ue $emos tenido 7ue a@adir /ara dar o de2ar de dar corriente al m,dulo bluetoot$( La raJ,n es e0itar /roblemas a la $ora de descargar el c,digo de /rogramaci,n al micro( 4sto lo $aremos conectando directamente un cableQ entre el PC y 5rduinoQ 7ue crea una comunicaci,n en serie( 6i en el momento de descargar el c,digoQ el bluetoot$ est tambiFn en0iando datos en serie al microQ no /odremos descargar el c,digo correctamente( La soluci,n 7ue se $a buscado es /or tanto 1! desacti0ar la alimentaci,n del bluetoot$ conmutador 1FF!Q %! descargar el c,digo al micro 5rduino desde nuestro ordenador y /or SltimoQ +! 0ol0er a alimentar el bluetoot$ conmutador 19!( La figura %% muestra el es7uema tras a@adir el conmutador(
3)
4l segundo elemento 7ue nos 7uedaba /or a@adir a la /laca son los cables 7ue salen de los 46Cs( 6ern 3 uno /or motorQ mas sus res/ecti0as masa o tierra! y los conectaremos a los /ines de salidas digitales( >abremos de tener cuidado a la $ora de elegir los /insQ ya 7ue el modelo 5rduino "noT1)UQ no /ermite a todos los /ines digitales actuar como salidas PAM( La documentaci,n de 5rduino lo es/ecifica sin dar lugar a erroresP
P(M) *+ 5+ ,+ -+ 1.+ and 11. Provide ?%bit P7M output 6ith the analo)7riteBC function.
:amos a usar los /ines )Q -Q 1& y 11( 4l es7uema definiti0o del micro se muestra en la figura %+(
3<
>asta a7u el /roceso de monta2e del micro( :amos a 0er algunas fotos del resultadoP
3*
3-
;&
:amos a 0er a$ora el /roceso de monta2e /aso a /aso del resto del sistema multirotor( 4n /rimer lugar montaremos el frame y a /artir de a$Q iremos a@adiendo los elementos 7ue se seleccionaron en el ca/tulo anterior( Los motores con sus res/ecti0as $Flices! 0an anclados a cada eKtremo del frame(
;%
Figura +%( Motor brus$less con $FliceQ anclado( >emos colocado los 46Cs a media altura de cada braJo de la estructura figura 1!( Por un lado conectados a los motoresQ /or otro a la batera y /or Sltimo al microcontrolador figura 3!(
;+
>emos /uesto los cables 7ue alimentan los 46Cs en medio de las dos estructuras de la base del frame( La figura ; muestra el cableado del interior de las dos bases(
Figura +3( Cableado elFctrico de la /arte inferior interior( 4l micro y la /ila 7ue lo alimenta lo /ondremos en el centro(
;3
La batera la $emos colocado en la /arte inferior del sistemaQ con un sistema de 0elcroQ /ara /oder cambiarla facilmente( >abr 7ue eKtraerla /ara recargarla!(
?% 'o+tEare% DiseFo
#odo lo 7ue tiene 7ue 0er con la /arte l,gica del /royectoQ se $a di0idido en dos ca/tulos( 4n este /rimeroQ llamado B6oft?are( .ise@oC se intenta eK/licar las raJones /or las cuales se $an elegido determinadas $erramientas y el uso 7ue se $ar de ellas( 4n el siguiente ca/tuloQ llamado B6oft?are( Im/lementaci,nCQ eK/licaremos el c,digo 7ue se $a generado( 5ntes de entrar en el dise@oQ $ay 7ue se/arar claramente entre dos cuestiones /rinci/ales( La /rimera es la referente a la comunicacin 7ue $ay 7ue montar entre el microcontrolador arduino y un smart/$one 5ndroid( 4sta comunicaci,n $a de ser /osible en ambos sentidos(
;;
Por otra /arteQ est el tema de la estabiliJaci,n del sistema( 6e $a realiJado un traba2o de anlisis sobre este /roblema( 6e este ca/tulo se sientan las bases del control PI. /ara un traba2o de futuro ca/itulo G!( #ambiFn se analiJan diferentes /royectos donde se $a dado soluci,n a este /roblema de alguna manera u otra( 6e 0erQ 7ue $abra de ser /osible $acer una reutiliJaci,n de una /arte del c,digo amoldando la soluci,n a nuestro $ard?are( Pero 0amos a 0er /rimero el dise@o 7ue se $a realiJado en la /arte de la comunicaci,n(
?%"% Android
"n resumen de eK/licando 7uF es 5ndroid sera el siguienteP B5ndroid es un sistema o/erati0o m,0il basado en LinuKQ 7ue 2unto con a/licaciones middle?are est enfocado /ara ser utiliJado en dis/ositi0os m,0iles como telFfonos inteligentesQ tabletas y otros dis/ositi0os( 4s desarrollado /or la 1/en >andset 5llianceQ la cual es liderada /or Google( Las unidades 0endidas de telFfonos inteligentes con 5ndroid se ubican en el /rimer /uesto en los 4stados "nidosQ en el segundo y tercer trimestres de %&1&Q con una cuota de mercado de 3+Q)a en el tercer trimestre( 5 ni0el mundial alcanJ, una cuota de mercado del ;&Q-a durante el cuarto trimestre de %&11Q ms del doble 7ue el segundo sistema o/erati0o i16 de iP$one! con ms cuota( #iene una gran comunidad de desarrolladores escribiendo a/licaciones /ara eKtender la funcionalidad de los dis/ositi0os( 5 la fec$aQ se $an sobre/asado las )&&(&&& a/licaciones de las cualesQ dos tercios son gratuitas! dis/onibles /ara la tienda de a/licaciones oficial de 5ndroidPGoogle Play( 4Kiste la /osibilidad de obtener soft?are eKternamente( Los /rogramas estn escritos en el lengua2e de /rogramaci,n Ja a( T(((U Google liber, la mayora del c,digo de 5ndroid ba2o la licencia 5/ac$eQ una licencia libre y de c,digo abierto( La estructura del sistema o/erati0o 5ndroid se com/one de a/licaciones 7ue se e2ecutan en un frame?or8 Xa0a de a/licaciones orientadas a ob2etos sobre el nScleo de las bibliotecas de Xa0a en una m7uina 0irtual .al0i8 con com/ilaci,n en tiem/o de e2ecuci,n( Las bibliotecas escritas en lengua2e C incluyen un administrador de interfaJ grfica surface manager!Q un frame?or8 1/enCoreQ una base de datos relacional 6ELiteQ una InterfaJ de /rogramaci,n de 5PI grfica 1/enGL 46 %(& +.Q un motor de renderiJado AebIitQ un motor grfico 6GLQ 66L y una biblioteca estndar de C Bionic( 4l sistema o/erati0o est com/uesto /or 1% millones de lneas de c,digoQ incluyendo XMLQ CQ Xa0a y CVV(C
;)
"tiliJaremos el sistema o/erati0o 5ndroidQ entre otras o/ciones dis/onibles i16Q Blac8berry!Q /or 0arias raJones( 4n /rimer lugar /or tratarse de la /lataforma 7ue est sufriendo una mayor eK/ansi,n en los Sltimos a@os( 4n segundo lugarQ el $ec$o de 7ue yo /ersonalmente dis/usiera de un telFfono 5ndroid $aca ms /rctico el desarrollo( .e esa manera no $a sido necesario el uso de ningSn simulador( 5 la 0eJ 7ue $e ido desarrollando el /royectoQ tambiFn $e cursado una asignatura en la 7ue se traba2aba con esta /lataforma( 4stas $oras $an sido bien in0ertidasQ /or7ue ese conocimiento se $a a/licado en este /royecto( 4n tercer lugarQ las $erramientas de desarrollo 7ue eKisten cuando se /rograma /ara android son muy am/lias y la cur0a de a/rendiJa2e no es demasiado ele0ada( Por e2em/loQ eKiste la /osibilidad de crear a/licaciones usando el I.4 Integrated de0elo/ment en0ironment o 4ntorno de .esarrollo! 4cli/se con el cual ya estaba familiariJado( 4n Sltimo lugarQ 5ndroid se /rograma en X5:5 T1*UQ lo cual 0iene muy en concordancia con mi bac8ground $asta a$ora(
;<
?% % Arduino
4n la secci,n del microcontrolador ya $emos eK/licado 7uF es 5rduino y el /or7uF de su utiliJaci,n( Pero no $emos 0isto como se im/lementa realmente un /rograma( 4l modo de traba2o suele ser el siguienteP 6e conecta el micro al PC mediante un cable de serie( 6e abre la I.4 entorno de desarrollo! 5rduino( 6e carga el /rograma 7ue se desee y se descarga al micro( .es/uFsQ se desconecta el cable( 4n el momento en 7ue se alimente arduino de alguna otra maneraQ en nuestro casoQ con una /ila de -:!Q se e2ecutar el /rograma cargado( Mediante un /ar de e2em/los sim/les 0amos a mostrar como se /ueden leer datos de un sensorQ o en0iar consignas a un /erifFrico a la 0eJ 7ue mostrar el I.4 de 5rduino(
Algunos e8emplos
La figura X muestra un c,digo sencillo con el 7ue se ilumina y a/aga un L4. intermitentemente( 4n la /arte su/erior del c,digoQ 0emos como se $an definido las 0ariables( .es/uFs 0iene la funci,n setup12 7ue se e2ecutar una sola 0eJ( 57u es donde se $acen las configuraciones iniciales( 4n este caso definimos el /in BledC al cual $emos asignado el 0alor 1+! como 1"#P"# salida!( .es/uFs 0iene la funci,n loop12 7ue se e2ecutar automticamente una y otra 0eJ mientras el micro estF alimentado( Lo 7ue $ace este sencillo e2em/lo es sim/lemente escribir un 0alor B>IG>C en el /in 1+( Como $emos definido el /in 1+ como de salidaQ >IG> ser una constante 7ue 0ale ;:(
;*
Figura +-( I.4 5rduino( 4l I.4 de 5rduino es bastante sencillo e intuiti0o y no es ob2eti0o de este documento eK/licar su funcionamiento al com/leto /ero s daremos un /ar de /inceladas( >ay un icono de es/ecial interFsQ en la /arte su/erior derec$a llamado B6erial MonitorC 7ue abre una 0entana nue0a( #odos los datos 7ue llegan /or comunicaci,n serie desde el microQ se irn mostrando en esta 0ista( 4s decirQ 7ue si conectamos un sensor al micro y $acemos 7ue en0iF sus lecturas a tra0Fs del /uerto serie al /c /odremos 0er estos datos en el la 0entana de la figura X( 4n las lneas del /r,Kimo e2em/loQ se en0a en serie "erial.printlnBC! el estado de un bot,nQ 7ue no es ms 7ue la entrada del /in % definida como un I9P"# del sistema( 4n la funci,n setu/ ! se establece 7ue la comunicaci,n en serie se $ar a -)&& baudios "erial.be)inBI233C!( 4l baudio T1- U es una unidad de medida usada en telecomunicacionesQ 7ue re/resenta la cantidad de 0eces 7ue cambia el estado de una se@al en un /eriodo de tiem/oQ tanto /ara se@ales digitales como /ara se@ales anal,gicas( 4s im/ortante resaltar 7ue no se debe confundir el baud rate o 0elocidad en baudios con el bit
;-
rate o 0elocidad en bits /or segundoQ ya 7ue cada e0ento de se@aliJaci,n smbolo! transmitido /uede trans/ortar uno o ms bits( 6,lo cuando cada e0ento de se@aliJaci,n smbolo! trans/orta un solo bit coinciden la 0elocidad de transmisi,n de datos baudios y en bits /or segundo(
)&
Figura 31( 6erial Monitor( .es/uFs de $aber mostrado estos dos e2em/losQ debera de $aber 7uedado clara la filosofa 7ue sigue 5rduinoP .efinir /ines digitales o anal,gicos como de entrada o de salidaQ e ir leyendo o escribiendo en ellos(
@% 'o+tEare% *mplementacin
4l /resente ca/tulo se di0ide en dos /artes( 4n la /rimera se eK/lica 7ue $erramienta se $a utiliJado /ara $acer las lecturas de la IM" y /oder calcular los ngulos de 4uler del sistema cuadric,/tero en cada momento( 4n la segundaQ se eK/licar c,mo se $a logrado montar la comunicaci,n entre 5ndroid y 5rduino(
)1
$ace una estimaci,n del estado actual de la 0ariable y de su ni0el de incertidumbre( "na 0eJ llega la siguiente medici,n 7ue estar corru/taQ debido a un cierto error y'o ruido!Q se $ace una estimaci,n del 0alor corres/ondiente utiliJando una media /onderadaQ dando mayor /esoQ a los 0alores cercanos( 5l tratarse de un algoritmo recursi0oQ se /uede e2ecutar en tiem/o realQ siendo necesario solamenteQ la medici,n actual y el estado anterior( 9o $ace falta ms informaci,n 7ue esa( 4l e2em/lo de la figura X muestra en ro2o el resultado del filtro 8alman(
Figura 3%( Filtro de Ialman( 4n el caso del cuadric,/teroQ es muy interesante el uso de este ti/o de filtrosQ /ara e0itar 7ue las /erturbaciones en las lecturas de los sensores debidas a la 0ibraci,nQ afecten a la estabilidad del a/arato( >e encontrado en la ?eb de starlino(com una im/lementaci,n de un algoritmo sim/lificado del filtro de Ialman /ara una IM" de ; grados de libertad T%%U( ; .1F!( :oy a utiliJar una librera /ara 5rduino 7ue est basada en el c,digo anteriorQ /ero 7ue $a sido modificada /ara traba2ar con el aceler,metro 5.XL+3; y el girosco/io I#G+%&& 7ue trae nuestra IM"( 4s una librera de c,digo abierto con Licencia G9" +Q /ara 5rduinoQ llamada BFree 6iK IM"C T%&UQ dise@ada /or el Italiano Fabio :aresano T%1U( 4n una /rimera im/lementaci,nQ la IM" sim/lemente en0a sus lecturas( 4s la segunda im/lementaci,n la 7ue nos interesah La l,gica del algoritmo est dentro del c,digo arduinoQ con lo 7ue es /osible saber la orientaci,n de la IM" y /or endeQ del multirotor! en tiem/o real( >emos co/iado la librera a nuestro PC /ara $acer uso de ella( >emos e2ecutado el siguiente
)%
c,digo de /rueba 7ue en0a los ngulos de 4uler 7ue calcula el microQ /or el /uerto serieQ como se muestra en la figura X(
EJ *MU +est 5uler an)les JE /in!lude 01ree$i23M4.56 /in!lude 013M47A89:*;5.56 /in!lude 013M473<=*2...56 /in!lude 0(ire.56 float an)lesK@LM EE ya6 pitch roll EE "et the Free"i *MU ob-ect 1ree$i23M4 si28>1 ? 1ree$i23M4@AB void setupBC N "erial.6riteBOsetup be)in.OCM "erial.be)inB>>A&33CM 7ire.be)inBCM delayBACM si28>1.init@AB EEbe)in the *MU delayBACM "erial.6riteBOsetup end.OCM P void loopBC N "erial.6riteBO5uler An)les0 OCM si28>1. etEuler@an lesAB "erial.printBan)lesK3LCM "erial.printBO Q OCM "erial.printBan)lesK>LCM "erial.printBO Q OCM "erial.printlnBan)lesK&LCM delayB>33CM P
)+
@% %"% Amarino
5marinoT%3U es un tool8it os erie de librerasQ /ara conectar mo0iles 7ue funcionan ba2o el sistema o/erati0o 5ndroidQ con un microcontrolador 5rduinoQ mediante bluetoot$(
5marino is a tool8it to connect 5ndroid-dri0en mobile de0ices ?it$ 5rduino microcontrollers 0ia Bluetoot$ 5marino consiste en una una a/licaci,n /ara 5ndroid y una librera /ara 5rduinoQ 7ue $acen /osible la comunicaci,n 0a Bluetoot$( La idea 7ue $ay detrs es ofrecer una coneKi,n entre un
)3
smart/$one y un microcontrolador 5rduino de forma trans/arente( .e esta maneraQ se /ueden /rogramar e0entos en el smart/$one 7ue 0ayan informando a 5rduino de manera /eri,dica( Por e2em/loQ se /odra inform a 5rduino de los 0alores 7ue 0a tomando un sensor es/ecfico de nuestro mo0il(
@% % % Android A##
>emos creado una a/licaci,n /ara 5ndroid llamada B $e2alari3 (&4"aro). 4l menS de nuestra a//Q tiene + botones( 4l Sltimo de ellos es el 7ue nos interesa(
Figura 33( >egalari a//( MenS( BControl ) .otorsC nos lle0ar a una /antalla 7ue contiene dos ob2etos B6ee8BarC figuras X y X !( Mediante la barra su/eriorQ indicaremos la /otencia 7ue recibirn los motores(
);
4c$Fmosle un 0istaJo a la clase de Xa0a B 5ourMotorActi6it7."a6a3 7ue $ay detrs del layout de la figura X( La clase im/lementa la clase B5cti0ityCQ 7ue no es ms 7ue un ti/o de ob2eto estndar de 5ndroid con un layout /ro/ioQ donde el usuario /uede interactuar( 9o mostraremos en este documento todo el c,digo de la acti0ityQ ya 7ue se encuentra en el 5neKo IQ /ero s 7ue 0amos a eK/licar y 0er algunas lneas im/ortantes del c,digo( 4n /rimer lugar definimos una clase 5rduino=ecei0er 7ue crearemos ms aba2o! y la registramos como un recei0er del sistema( 4sto ser0ir /ara recibir feedbac8 desde arduino( .es/uFs nos conectamos al dis/ositi0o Bluetoot$ cuya direcci,n M5C tenemos 7ue /ro/orcionar( Cuando la acti0ity terminaQ $ay 7ue acordarse de desconectarse y des-registrar el recei0er( 6i se 7uiere /asar alguna 0ariable a 5rduinoQ utiliJaremos la funcion send.ata#o5rduino !(
/ac8age eus(Kabi(ocellh im/ort at(abraKas(amarino(5marinoh im/ort at(abraKas(amarino(5marinoIntenth /ublic class FourMotor5cti0ity eKtends 5cti0ity im/lements 1n6ee8BarC$angeListener i '' .irecci,n M5C del m,dulo Blue 6Mi=F Bluetoot$ /ri0ate static final 6tring .4:IC4W5..=466 ] j&&P&)P))P3)P3%PFCjh
))
'' Creamos el ob2eto =ecei0er /ri0ate 5rduino=ecei0er arduinoAecei4er ] ne? 5rduino=ecei0er !h /ublic 0oid onCreate Bundle sa0edInstance6tate! i T(((U '' Connect to Bluetoot$ module Amarino%connect1t6is( D&=*C&KADDA&''2L T(((U k b10erride /rotected 0oid on6tart ! i '' =egistramos nuestro =ecei0er /ara /oder Bescuc$arC a 5rduino register=ecei0er arduinoAecei4erQ ne? IntentFilter 5marinoIntent(5C#I19W=4C4I:4.!!h k b10erride /rotected 0oid on6to/ ! i su/er(on6to/ !h '' sto/ 5marino\s bac8ground ser0iceQ ?e don\t need it any more 5marino(disconnect t$isQ .4:IC4W5..=466!h '' do ne0er forget to unregister a registered recei0er unregisterAecei4er arduino=ecei0er!h k /ri0ate 0oid u/datePo?er ! i 5marino(sendDataToArduino t$isQ .4:IC4W5..=466Q \f\Q /o?er!h k '^^ ^ 5rduino=ecei0er is res/onsible for catc$ing broadcasted 5marino e0ents( ^ ^ It eKtracts data from t$e intent and u/dates t$e gra/$ accordingly( ^' /ublic class ArduinoAecei4er eKtends Broadcast=ecei0er i b10erride /ublic 0oid on=ecei0e ConteKt conteKtQ Intent intent! i
)<
t06tatus(set#eKt jConnected(j!h 6tring data ] nullh '' t$e de0ice address from ?$ic$ t$e data ?as sentQ ?e don\t need it '' $ere but to demonstrate $o? you retrie0e it final 6tring address ] intent (get6tring4Ktra 5marinoIntent(4X#=5W.4:IC4W5..=466!h '' t$e ty/e of data ?$ic$ is added to t$e intent final int data#y/e ] intent(getInt4Ktra 5marinoIntent(4X#=5W.5#5W#NP4Q -1!h '' ?e only eK/ect 6tring data t$oug$Q but it is better to c$ec8 if '' really string ?as sent '' later 5marino ?ill su//ort differnt data ty/esQ so far data comes '' al?ays as string and '' you $a0e to /arse t$e data to t$e ty/e you $a0e sent from '' 5rduinoQ li8e it is s$o?n belo? if data#y/e ]] 5marinoIntent(6#=I9GW4X#=5! i data ] intent(get6tring4Ktra 5marinoIntent(4X#=5W.5#5!h if data d] null! i '' m:alue#:(set#eKt data!h try i '' since ?e 8no? t$at our string 0alue is an int number '' ?e can /arse it to an integer '' final int sensor=eading ] Integer(/arseInt data!h '' mGra/$(add.ataPoint sensor=eading!h '' s$o?IM" sensor=eadingQ sensor=eading!h final 6tring sensor=eading ] datah s$o?IM" sensor=eadingQ sensor=eading!h k catc$ 9umberFormat4Kce/tion e! i k k k k k k
)*
MeetAndroid meetAndroidM EE declare MeetAndroid so that 6e can call functions 6ith it. int fullRan)eMotor W >A3M EE After6ards set to >?3 "ervo motor>M "ervo motor&M "ervo motor@M "ervo motor'M int pinmotor> W 2M int pinmotor& W IM int pinmotor@ W >3M int pinmotor' W >>M int val W 3M EE variable 6e )et from Android int androidvalM float an lesK@LM EE ya6 pitch roll EE "et the Free"i *MU ob-ect Free"i *MU si ;8F W Free"i *MUBCM void setupBC N EE initiali,e serial communication "erial.be)inB>>A&33CM "erial.printlnBOstartOCM androidval W 3M meetAndroid.re ister1un!tionBcontrolMotors# XfXCM EE f W fourVmotors 7ire.be)inBCM delayBACM si ;8F.initBCM EEbe)in the *MU delayBACM EE initiali,e motors
)-
motor>.attachBpinmotor>CM EE attaches the servo on pin I to the servo ob-ect motor&.attachBpinmotor&CM motor@.attachBpinmotor@CM motor'.attachBpinmotor'CM "erial.printlnBOstart oHOCM P void loopBC N meetAndroid.receiveBCM EE you need to Heep this in your loopBC to receive events updateMotorsBCM si ;8F.)et5ulerBan)lesCM send*MUdataBCM delayB&3CM P void send*MUdataBC N EE for no6# send -ust first an)le. meetAndroid.sendBan)lesK3LCM P EJ J 7henever the servoControl app chan)es the po6er value J this function 6ill be called JE void !ontrolMotorsBbyte fla)# byte num8fValuesC N EE"erial.printlnBOcontrol"ervo batOCM androidval W meetAndroid.)et*ntBCM EE"erial.printlnBOcontrol"ervo biOCM val W mapBandroidval# 3# >3&@# 3# fullRan)eMotorCM EE"erial.printlnBval# ;5CCM EE"erial.printlnBOcontrol"ervo hiruOCM P void updateMotorsBC N EE at this point all motors are runnin) at same speed. motor>.6riteBvalCM motor&.6riteBvalCM motor@.6riteBvalCM motor'.6riteBvalCM P
<&
Figura 3<( 4s7uema PI.( Las 0ariables 7ue nos interesan sonP P: /rocess 0ariable o /rocess 0alue!( :alor medido( 6P set/oint!( :alor deseado( u t! M: mani/ulated 0ariable!( :alor de entrada al sistema( 4 4rror!( .iferencia entre 0alor medido P:! y el deseado 6P!
"n e2em/lo t/ico con el 7ue se eK/lica un controlador PI. es cuando 7ueremos mantener una caldera a una tem/eratura determinada( Por e2em/loQ 7ueremos mantenerla a 1&&lC 6P! /ero en un
<1
momento determinado el term,metro nos dice 7ue est aQ 1&)lC P:!( 4l error ser de )lC e! 7ue cuantifica si el agua esta muy caliente o muy fra( "na 0eJ calculado este errorQ el sistema calcular cunto $ay 7ue abrir'cerrar la 0l0ula de agua M:!( 6i es necesario muc$o ms calorQ $abr 7ue abrir muc$o la 0l0ula( 1 todo lo contrario si solo $ace falta calentarla un /oco( 4sto sera un e2em/lo de Control #roporcional( un PI. donde no $ay ni I ni .!( Podramos abrir la 0l0ula ms y ms cada 0eJ si no obtenemos el resultado deseado( 4sto sera un Control *ntegral( 4l controlador /uede 7uerer a2ustarse tambiFnQ con el ob2eti0o de antici/arse a futuras oscilaciones( 4sto sera el mFtodo del Deri4ati4o( 4l 0alor de entrada al sistema M:! se calcula /or tanto como la suma del 0alor Pro/orcionalQ Integral y .eri0ado( 4s im/ortante decir 7ue I/ Ii y Id son constantes 7ue $abremos de a2ustar en nuestro sistema( :amos a 0erlos /or se/arado con un /oco ms de detalle(
donde
P Pro/ortional gainQ a tuning /arameter P Integral gainQ a tuning /arameter P .eri0ati0e gainQ a tuning /arameter P 4rror P #ime or instantaneous time t$e /resent!
C%"% % #roporcional
4l 0alor /ro/orcional es el /roducto entre la constante /ro/orcional I/ y el error 6P-P:!(
"n I/ demasiado grande lle0ara al sistema a ser inestable( "no demasiado /e7ue@oQ tiene como consecuenciaQ un error grande( La /arte /ro/orcional no considera el tiem/oQ /or lo tantoQ la me2or manera de solucionar el error /ermanente y $acer 7ue el sistema contenga alguna com/onente 7ue tenga en cuenta la 0ariaci,n res/ecto al tiem/oQ es incluyendo y configurando las acciones integral y deri0ati0a(
C%"%3% *ntegral
<%
4l 0alor corres/ondiente al control IntegralQ es /ro/orcional tanto a la magnitud del errorQ como a la duraci,n del mismo( 4s la suma de los errores en el tiem/o e indica el cSmulo de errores 7ue tendran 7ue $aberse corregido /re0iamente( 4ste error acumulado se multi/lica /or la constante Ii(
4l control integral se utiliJa /ara ob0iar el incon0eniente del offset des0iaci,n /ermanente de la 0ariable con res/ecto al /unto de consigna! de la banda /ro/orcional(
C%"%9% Deri4ati4o
La acci,n deri0ati0a actSa cuando $ay un cambio en el 0alor absoluto del error( La funci,n de la acci,n deri0ati0a es mantener el error al mnimo corrigiFndolo /ro/orcionalmente con la misma 0elocidad 7ue se /roduceh de esta manera e0ita 7ue el error se incremente( 4l error se deri0a con res/ecto al tiem/o y se multi/lica /or una constante . y luego se suma a las se@ales anteriores PVI!(
4n nuestro e2em/lo de la calderaQ /lanteado anteriormenteQ la acci,n deri0ada es adecuada cuando $ay retraso entre el mo0imiento de la 0l0ula de control y su re/ercusi,n a la 0ariable controlada(
C% % #*D en Arduino
B#*D Librar,C es una libreraT%+U /ara 5rduino 7ue im/lementa el control PI.( 4KisteQ a su 0eJQ una librera llamada B#*D Autotune Librar,C cuya misi,n es automatiJar el mKimo /osible el a2uste de las constantes I/Q Ii y Id 7ue la librera necesita( 4Kiste otra im/lementaci,n muy interesante llamada BBBCCP Bare Bones PI.! Coffee ControllerC T%)U 7ue aun7ue inicialmente fue usado /ara controlar la tem/eratura de una ma7uina de cafeQ es en realidadQ un PI. de uso general( 4ntender estas dos im/lementaciones es Stil /or7ue muc$os de los /royectos de c,digo abierto $acen uso de una de estas dos soluciones( La funci,n u/datePI. ! de esta Sltima librera es una im/lementaci,n del PI. sencilla de entender(
float updateP*;Bfloat tar)et+emp# float cur+empC
<+
EE these local variables can be factored out if memory is an issue# EE but they maHe it more readable
double resultM float errorM float 6indup=aurdM
EE the p+erm is the vie6 from no6# the p)ain -ud)es EE ho6 much 6e care about error 6e are this instant.
p+erm W p)ain J errorM
EE i"tate Heeps chan)in) over timeM itXs EE overall OperformanceO over time# or accumulated error
i"tate :W errorM
EE to prevent the i+erm )ettin) hu)e despite lots of EE error# 6e use a O6indup )uardO EE Bthis happens 6hen the machine is first turned on and EE it cant help be cold despite its best effortsC EE not necessary# but this maHes 6indup )uard values EE relative to the current i=ain
6indup=aurd W 7*(;UPV=UAR;V=A*( E i)ainM if Bi"tate U 6indup=aurdC i"tate W 6indup=aurdM else if Bi"tate T %6indup=aurdC i"tate W %6indup=aurdM i+erm W i)ain J i"tateM
EE the d+erm# the difference bet6een the temperature no6 EE and our last readin)# indicated the Ospeed#O EE ho6 .uicHly the temp is chan)in). BaHa. ;ifferentialC
d+erm W Bd)ainJ Bcur+emp % last+empCCM
EE no6 that 6eXve use last+emp# put the current temp in EE our pocHet until for the ne t round
last+emp W cur+empM
<3
I% Conclusiones
I%"% 7b8eti4os conseguidos
6e $a conseguido los ob2eti0os con FKito( 6e $a realiJado el dise@o e im/lementaci,n del sistema cuadric,/tero satisfactoriamente( #ambiFn se $a conseguido establecer una coneKi,n entre la a/licaci,n 5ndroid y el micro( La a/licaci,n es ca/aJ de en0iar las 0ariables 7ue el usuario en0a y en este momento 5rduino tambien es ca/aJ de en0iar datos de 0uelta su orientaci,n!( 5 /artir de a7uQ es relati0amente sencillo modificar o am/liar esta funcionalidad(
I% % Des4iaciones de plani+icacin
5 lo largo del /royecto $an ido surgiendo com/licaciones im/re0istas 7ue $an $ec$o cambiar el orden de alguna tarea /lanificada( Por e2em/lo en relaci,n al monta2e del cuadrico/teroQ el tiem/o de llegada de los com/onentes no fue igual en todos los casosP 6e decidi, acertadamente com/rar el m,dulo Bluetoot$Q a/arte y en seguidaQ /ara /oder traba2ar en la comunicaci,n con 5ndroid( FuF una decisi,n acertadaQ /or7ue el resto de com/onentes lleg, bastante tarde( 6in el m,dulo bluetoot$ no se /odra $aber a0anJado y el /royecto se $abra estancado(
<;
Elemento 1rame Motor ),C :ater;a :ateria arduino*3%+ /ac> bater;a Microcontrola dor ?(lices*4x+ 'M@ :luetooth 0rn(s de energia Conmutador Cargador :ater;a ,@: Aotal
Proveedor hobby>ing.com hobby>ing.com hobby>ing.com hobby>ing.com tienda local bcncybernetics.com coo>ing"hac>s.com hobby>ing.com spar>fun.com spar>fun.com tienda local diotronic.com hobby>ing.com
Precio unidad() 22.27 3.84 9.7= 9.7= 3 2.4 8= 8.37 42.99 62.7< 8 6 <
Cantidad " x5 x5 " " " " " " " " " "
Total 22.27 67 89.< 9.7= 3 2.4 8= 8.37 42.99 62.7< 8 6 < 211
Los com/onentes se $an com/rado en su mayora on-line( 1tros elementos ms /e7ue@osQ en tiendas de electr,nica de Barcelona( La relaci,n 7ueda de esta maneraP coo8ing-$ac8s(com s/ar8fun(com s/ar8fun(com 5rduino IM" Blue 6Mi=F Bluetoot$ 5rnFs de energia Conmutador
$obbyIing(comframeQ motoresQ 46CsQ BateraQ $FlicesQ Cargador #iendas Barcelona .iotronic BC9
<)
4l mayor de los /a7uetes $obby8ing(com!Q 7ue 0ena de 6inga/urQ tena un /recio marcado en la ca2a de 1)1m 1%+Y a/roK(!( 4n la aduana de bara2asQ se a/lic, un I(:(5( al 1*a de %%(%<YQ un im/orte /or el des/ac$o de Y13(3& y el I(:(5( del des/ac$o Y%(;-( >ubo 7ue /agar a su llegada la nada des/reciable cantidad de N3I% ? /ara /oder recibirlo( 4sto re/resent, un gasto no es/erado de casi un %&a ms del 0alor total de los com/onentes $asta el momento( .e $aber sabido esta circunstanciaQ se $abra buscado una alternati0a como /or e2em/lo $acer los /edidos en /artes ms /e7ue@as /a7uetes de menos de 3; 4uros no /agan ni I(:(5( ni /orteQ y /a7uetes entre 3; y 1;& /agan I(:(5( /ero no /orte!( 4l /recio de los materiales /or tanto 7ueda en %11V+-(%) ] ines/erados son a$ora el 1;()a del /recio total del material( 5Sn y todoQ la conclusi,n 7ue se saca es 7ue $emos sido ca/aces de construir un cuadric,/tero ms barato 7ue el /royecto mas similar de los 7ue $abamos analiJado al /rinci/io 5= ParrotQ 7ue 0ala +&&Y!( 4l aero7uad 5= Parrot dis/one sin embargo de algunos com/onentesQ como /or e2em/lo % cmaras integradas con lo 7ue las com/araciones reales no son /osibles( 6i tenemos en cuenta 7ue un 5nalista cobra %*(&&& Y anuales T%*U y 7ue durante un a@o se traba2a una media de 1(<&& $orasQ el sueldo /or $ora de un analista sera de 1)(3Y'$ora( Por la misma regla de tresQ un Ingeniero Informtico 7ue cobra %3(&&& YT%-U anuales cobra /or $ora 13(1 Y( >!% ? !( 4sto su/one 7ue estos costes
?oras Estudio previo Analisis y Diseo Implementacin Hard Implementacin Soft. Comunicacin Memoria Total sin material 2== 274 <= 29= <4 h 9== h
9 !8"2#
<<
"!% #lani+icacin
4l /royecto $a sido lle 0ado a cabo en diferentes eta/as consecuti0as /eroQ dada la naturaleJa del /royectoQ se $an realiJado algunas en /aralelo( 4sto es debido /or una /arte a la clara distinci,n entre tareas de $ard?are monta2e del cuadric,/tero! y /or otraQ tareas l,gicas como la /rogramaci,nQ /or e2em/lo( 5demsQ se $a tenido 7ue tener en cuenta los /eriodos 7ue 0an desde la com/ra on-line de un com/onenteQ $asta 7ue este se reciba( 5 continuaci,nQ el diagrama de GanttQ con la /lanificaci,n 7ue se $a seguido( 6e muestra una /rimera ca/tura de /antallaQ /ara ms claridad y el grfico entero a continuaci,n(
<*
<-
*&
funci,n loo/ ! cogerWtiem/o !h medirWsensoresWim/ortantes !h '' girosco/io y aceler,metro si tiem/o multi/lo de 1&& >J!i medirWresto sensores !h calcularWangulos !h controlarWmotores !h k si tiem/o multi/lo de ;& >J!i medirWcomandosWdeW/iloto ! k si tiem/o multi/lo de 1& >J!i medirWbar,metro !h medirWtelemetra !h medirW0oltageWbatera !h '' ((( k actualiJarWtiem/o !h end Como se /uede 0erQ la l,gica es realiJar con mas frecuencia las tareas mas crticas lectura de sensores! y con menosQ las 7ue no son tan im/ortantes( 5 la $ora de adecuar el c,digo a nuestro sistema cuadric,/teroQ seran dos los as/ectos im/ortantes a tener en cuenta( 4n /rimer lugarQ tendriamos 7ue /restar atenci,n a los sensores configurados y ademsQ 0er donde es necesario cambiar los /uertos de entrada de estos( 5ero7uad traba2a con una /laca 7ue 0enden en su ?eb donde cada sensor esta conectado a un determinado /in de 5rduino( 4ste 91 es nuestro casoQ /or tanto $abra 7ue cambiar los /uertos de entradadaQ como los de la IM" /or e2em/lo( 4l segundo /aso /ara /oder utiliJar este soft?are seria cambiar com/lFtamente la funci,n Bmedir$comandosde$piloto"#C /ara /oder leer instrucciones /or bluetoot$ desde el smart/$one( 6in
*1
embargoQ este traba2o ya est realiJado como $emos demostrado en el ca/tulo <(%(+ 5rduino Firm?are!( La ada/taci,n del c,digo se basara /or tantoQ en la configuraci,n de los sensores y /inesQ mayormente( .es/ues del traba2o de configuraci,nQ solo 7uedara decidir los 0alores constantes del PI. 7ue se im/lementa( #endremos 7ue /roteger bien el cuadrico/tero /ara /oder $acer las /ruebas corres/ondientes e ir me2orando estos 0aloresQ $asta conseguir una estabilidad ,/tima del a/arato(
*%
" % Ae+erencias%
^ Lin8s 0lidos a 1 de Xulio de %&1%( T1U 5rduino( Main 6ite( $tt/P''???(arduino(cc'( T%U 5ndroid( Main site( $tt/P''???(android(com( T+U 6$redi7uette Pro2ect( Main site $tt/P''s$redi7uette(blogs/ot(com'( T3U 5ero7uad( Main site( $tt/P''???(aero7uad(com( T;U .iy.rones( Main site( $tt/P''???(diydrones(com' T)U Mi8uadric,/tero( Main site( $tt/sP''sites(google(com'site'mi8uadrico/tero' T<U 1/enPilot( Main site( $tt/P''???(o/en/ilot(org T*U Parrot( Com/any Main 6ite( $tt/P''???(/arrot(com T-U 9G "5:P( Main site( $tt/P''ng(ua0/(c$'moin'FrontPage T1&U Ai8i/edia( Motor con escobillas $tt/P''es(?i8i/edia(org'?i8i'MotorWdeWcorrienteWcontinua T11U PAM( Pulse Aidt$ Modulation $tt/P''en(?i8i/edia(org'?i8i'Pulse-?idt$Wmodulation T1%U BBC( BGoogle funds com/uter teac$ers and =as/berry Pis in 4nglandC( 9oticia del %+ Mayo de %&1%( $tt/P''???(bbc(com'ne?s'tec$nology-1*1*%%*& T1+U 5#mega+%*( .atas$eet( $tt/P''???(atmel(com'Images'doc*1)1(/df T13U 6/ar8fun( Main site( $tt/P''???(/ar8fun(com T1;U 5.XL+3;( 5celer,metro( .atas$eet( $tt/P''???(s/ar8fun(com'datas$eets'6ensors'5ccelerometer'5.XL+3;(/df T1)U I#G+%&&( Girosco/io( $tt/P''???(s/ar8fun(com'datas$eets'6ensors'Gyro'P6-I#G-+%&&-&&-&1(3(/df T1;U 6/ar8fun( Bluetoot$ Modem - Blue6Mi=F 6il0er( $tt/P''???(s/ar8fun(com'/roducts'1&%)T1)U 5rduino( 4s/ecificaciones modelo 5rduino "no( $tt/P''arduino(cc'en'Main'5rduinoBoard"no T1<U Ai8i/edia( 5ndroid( $tt/P''es(?i8i/edia(org'?i8i'5ndroid T1*U Ai8i/edia( X5:5( $tt/P''en(?i8i/edia(org'?i8i'Xa0aW /rogrammingWlanguage! T1-U Ai8i/edia( Baudio( $tt/P''es(?i8i/edia(org'?i8i'Baudio T%&U Fabio :aresano( Im/lementaci,n Free6iKIM"( $tt/P''???(0aresano(net'blog'fabio'my-first-)-dofimu-sensors-fusion-im/lementation-adKl+3;-itg+%&&-arduino-and-/rocessing T%1U Fabio :aresano( Main site( $tt/P''???(0aresano(net' T%%U 6tarlino(com( Im/lementaci,n Ialman( $tt/P''???(starlino(com'imuW8almanWarduino($tml T%+U 5rduino( PI. library( $tt/P''arduino(cc'/layground'Code'PI.Library T%3U 5marino( Main site( $tt/P''???(amarino-tool8it(net' T%;U 6/ar8fun( AiFly s$ield( $tt/P''???(s/ar8fun(com'/roducts'--;3
*+
T%)U 5rduino( PI.For4s/resso library( $tt/P''???(arduino(cc'/layground'Main'BarebonesPI.For4s/resso T%<U I(X( nstrom _ #(>( >pgglundQ f9e? tuning met$ods for PI. controllersQg Proceedings of t$e +rd 4uro/ean Control ConferenceQ /(%3;)q)%( T%*U Info2obs( 6alario 5nalista( $tt/P''salarios(info2obs(net'resultados(cfmGsueldo]5nalista T%-U Info2obs( 6alario Ingeniero Informtico( $tt/P''salarios(info2obs(net'resultados(cfmG sueldo]ingenieroVinformaC+a51tico_oWid]%
*3
"3% 0ibliogra+a%
1( Di,drones TonlineU $tt/P''diydrones(com %( Aero:uad TonlineU $tt/P''aero7uad(com +( 'cout3A=( TonlineU $tt/P''???(scoutua0(com 3( '6redi:uette( TonlineU $tt/P''s$redi7uette(blogs/ot(com(es' ;( 7penpilot( TonlineU $tt/P''???(o/en/ilot(org )( ArduCopter( TonlineU $tt/P''code(google(com'/'arduco/ter' <( Air6ac;s TonlineU $tt/P''air$ac8s(org' *( Ted( TonlineU $tt/P''???(ted(com -( *nstructables( TonlineU $tt/P''???(instructables(com 1&( 'par;+un( TonlineU $tt/P''???(s/ar8fun(com' 11( 0ricogee;( TonlineU $tt/P''???(bricogee8(com 1%( Dobb,;ing TonlineU $tt/P''???($obby8ing(com 1+( 0uildcircuit TonlineU $tt/P''???(buildcircuit(com 13( 8erem,blum TonlineU $tt/P''???(2eremyblum(com 1;( Adal+ruit TonlineU $tt/P''???(adafruit(com 1)( 'ams6ield electronic designs( TonlineU $tt/P''sams$ieldesigns(blogs/ot(com(es' 1<( Arduino TonlineU $tt/P''???(arduino(cc 1*( Android TonlineU $tt/P''???(android(com' 1-( Modelling and control of mini-flying mac$ines By Pedro CastilloQ =ogelio LoJanoQ 5le2andro 4( .Jul %&( Ai8i/edia TonlineU $tt/P''en(?i8i/edia(org'?i8i'Multirotor %1( 5 bot tra0el Blog( TonlineU $tt/P''abottra0el(blogs/ot(com(es' %%( :aresano TonlineU $tt/P''???(0aresano(net
*;