Está en la página 1de 85

Ttol: Autor: Data: Director: Dep% del director: Titulaci: Centre: 3ni4ersitat:

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

Cuadricptero Arduino por control remoto Android

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

3( 4stado del 5rte(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1+


3(1( 6$ri7uette /ro2ect(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((13 3(%( Mi8uadrico/tero((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((13 3(+( 9G "5:P(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((13 3(3( 5ero7uad(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((13 3(;( .iy.rones - 5rduPilot(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1; 3()( 1/en/ilot(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1; 3(<( Parrot 5= .rone((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1; 3(*( 5nlisis de la o/ortunidad(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1<

;( 5r7uitectura del sistema cuadric,/tero((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1*


;(1( >ard?are( .ise@o((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1* ;(1(1( Configuraci,n((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((%& ;(1(%( Frame(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((%1 ;(1(+( Motores((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((%1 ;(1(+(1( Brus$ed Motors .C Motors!((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((%% ;(1(+(%( Brus$less Motors(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((%% ;(1(3( Batera(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((%) ;(1(;( 46C 0ariador!(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((%* ;(1()( PA.((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+& ;(1(<( =egla B?atts /er /oundC((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((++ ;(1(*( Microcontrolador(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+3 ;(1(*(1( >ard?are libre(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+3 ;(1(*(%( 5rduino((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+3

;(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((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()-

*( 5lgoritmo de estabiliJaci,n( Bases(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<1


*(1( Controlador PI.((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<1 *(1(%( Pro/orcional((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<% *(1(+( Integral(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<% *(1(+( Integral(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<% *(1(3( .eri0ati0o (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<+ *(%( PI. en 5rduino((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<+

-( Conclusiones((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<;
-(1( 1b2eti0os conseguidos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<; -(%( .es0iaciones de /lanificaci,n((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<; -(+( :aloraci,n econ,mica(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<;

1&( Planificaci,n(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((<* 11( Posibilidades de traba2o futuro(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*&


11(1( Prueba del algoritmo de estabiliJaci,n(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*& 11(%( 5ero7uad 6oft?are((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*&

1%( =eferencias((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( *+ 1+( Bibliografa((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*;

"% Lista de .iguras


Figura 1( 5= .rone (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((1+ Figura %( 4s7uema general interconeKi,n de dis/ositi0os(((((((((((((((((((((((((((((((((((((((((((((((((((((1) Figura +( 6entido de rotaci,n de los cuatro motores((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 1* Figura 3( Motor de Corriente Continua .C motor ' Brus$ed motor!(((((((((((((((((((((((((((((((((( 1Figura ;( .iferencia entre motores con y sin escobillas(((((((((((((((((((((((((((((((((((((((((((((((((((((((( %& Figura )( Motor sin escobillas Brus$less .C motor!(((((((((((((((((((((((((((((((((((((((((((((((((((((L(( %& Figura <( >ac8er 6tyle Brus$less 1utrunner %&-%*M( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((( %% Figura *( Batera MIPPN Flig$tmaK %%&&m5$ +61P %&C((((((((((((((((((((((((((((((((((((((((((((((((((((( %+ Figura -( 42em/lo de 46C((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( %; Figura 1&( Onico 46C controlando % motores brus$less a una misma 0elocidad(((((((((((((((((( %) Figura 11( 4s7uema de coneKi,n de un 46C(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( %< Figura 1%( PAM((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( %* Figura 1+( #urnigy 54-%&5 Brus$less 46C(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( %Figura 13( Logo 1/en >ard?are(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+1 Figura 1;( Logo 5rduino(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+% Figura 1)( 5rduino "no(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( +3 Figura 1<( Na? Pitc$ =oll(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( +) Figura 1*( Na? Pitc$ =oll(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( +) Figura 1-( 6/ar8fun IM" .igital Combo Board - I#G+%&&'5.XL+3;((((((((((((((((((((((((((((((((+< Figura %&( Parte /osterior de la IM" I#G+%&&'5.XL+3;(((((((((((((((((((((((((((((((((((((((((((((((((((( +Figura %1( BBluetoot$ Modem - Blue6Mi=F 6il0erC de s/ar8fun((((((((((((((((((((((((((((((((((((((((( +Figura %%( IJ7uierdaP Protos$ield 5rduino( .erec$aP 5rduino "91((((((((((((((((((((((((((((((((((((( 3% Figura %+( 4s7uema de coneKi,n con IM" y Bluetoot$((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 3% Figura %3( 4s7uema de coneKi,n con conmutador((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 33 Figura %;( 4s7uema de coneKi,n definiti0o((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 3; Figura %)( arduino "no y /rotos$ield acabado(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 3) Figura %<( Protos$ield acabado(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((3) Figura %*( Protos$ield sobre 5rduino "no((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 3< Figura %-( Protos$ield sobre 5rduino "no((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 3* Figura +&( IM" y Bluetoot$ en la /laca Protos$ield((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 3* Figura +1( Protos$ield aco/lado al micro((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 3-

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

3%"%"% Descripcin general del pro,ecto

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

3%3%"% 7b8eti4os del pro,ecto

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(

3%3% % 7b8eti4os personales


5/rendiJa2e sobre 0e$culos =C control remoto!( 5frontar un /roblema 7ue combine $ard?are V soft?are( ProfundiJar los conocimientos de electr,nica de los 7ue dis/ongo( 5/rendiJa2e del entorno 5rduino Lengua2e de /rogramaci,n 5rduino basado en Airing! I.4 5rduino basado en Processing!

ProfundiJar en el dise@o de a/licaciones 5ndroid(

11

"tiliJaci,n del I.4 4cli/se en con2unto con la 6.I de 5ndroid( 6ensores intrnsecos en telFfonos 5ndroid(

5/render el funcionamiento bsico de diferentes elementos electr,nicos(

1%

9% &stado del Arte


4s necesaria una fase inicial de anlisis /ara determinar el alcanceQ ob2eti0oQ re7uisitos del /royecto( #ambiFn $abr 7ue $acer una selecci,n del $ard?are y $erramientas de soft?are del 7ue se $ar uso( 4n este ca/tulo se 0a a abordar las fase /re0ia al desarrollo( 6e 0a a /oner la atenci,n en diferentes cuadric,/teros eKistentes 7ue nos ayudar durante el anlisis y desarrollo de nuestra idea(

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/en source 0s Pro/ietario


Por otro ladoQ /odramos se/arar entre /royectos de c,digo abierto y /ro/ietario( 4Kisten 0arias comunidadesQ 7ue desarrollan soft?are de c,digo abiertoQ orientadas a determinadas /lataformas( 1tras en cambio no /ublican su c,digo( Pero no solo eso( 5l tratarse de a/aratos fsicosQ tambiFn los es7uemas de alguna s! /arte s! del $ard?are /ueden $acerse /Sblicas o no( "n claro e2em/lo de $ard?are o/en-source es 5rduino( 6e eK/lica ms adelante en este documento(

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%"% '6ri:uette pro8ect


Iniciado a finales de %&&* en 5lemaniaQ 6$ri7uette /ro2ectT+U es un /royecto amateur 7ue surge con el nimo de /rofundiJar en conocimientos de /rogramaci,nQ electr,nica y control( 4l c,digo se /ublica ba2o un ti/o de licencia Creati0e Commons( 4l /rimer modelo es un tric,/teroQ /ero le siguen otros modelos con un nSmero mayor de rotores( .is/one de un girosco/io de tres e2es y un aceler,metro(

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%3% <G 3A=#


9G "5:PT-U es un /royecto de =C de c,digo abierto 7ue se inicia en %&&( 6e a/oya en una comunidad de desarrolladores(

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%>% Di,Drones - Ardu#ilot


5l estilo del anteriorQ se trata de un /royecto de c,digo abierto( 5barca un gran nSmero diferente de dis/ositi0osQ desde multirotores y a0iones $asta 0e$culos terrestres( 6e basa en 5rduPilotQ un sistema de /ilota2e remoto com/atible con la /lataforma 5rduino( Im/lementa un $ard?are llamado 5PMW% en el cual se /uede correr diferentes /rogramas de c,digo abierto es/ecficos /ara 5rduino(

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(

9%@% #arrot AA Drone


Proyecto reciente de la em/resa Francesa ParrotT*U( 4n el a@o %&1& /resentaron su cuadric,/tero 5= .roneT-U en el una conferencia de Las 0egasP "n multirotor con cubierta de /lstico y es/uma de a/roKimadamente +& centmetros de largo(

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)

9%C% An-lisis de la oportunidad

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<

>% Ar:uitectura del sistema cuadricptero


6e $a realiJado un anlisis /ara determinar 7uF elementos sern necesarios /ara lle0ar a cabo /royecto( Podemos diferenciar claramente el traba2o realiJado entre as/ectos 7ue tienen 7ue 0er con el $ard?are o la estructura fsica del a/arato y /or otro ladoQ todo lo 7ue tiene 7ue 0er con el tema l,gico o de soft?are( :amos a 0er en ms detalle el camino recorrido(

>%"% DardEare% DiseFo%


6e $a lle0ado a cabo un estudio de todos y cada uno de los com/onentes fsicos 7ue com/ondrn el cuadric,/tero( 5ntes de entrar a eK/licar ms en /rofundidad cada uno de ellosQ con0iene antes $acer un re/aso r/ido /ara /oder entender cual es la relaci,n de cada uno de ellos con el resto( ComenJamos /or el frame o armaJ,n 7ue ser el so/orte fsico donde irn anclados todos los dems com/onentes( #endr forma de cruJ y en cada uno de los eKtremos ir anclado un motor( >abr 7ue determinar 7uF ti/o de motor se utiliJa y c,mo 0a a ser controlado( 4n este caso se $a o/tado /or la utiliJaci,n de motores brus$less sin escobillas!( Cada uno de ellos ser controlado /or un ESC 4lectronic 6/eed Controller! o tambiFn llamado 0ariadorQ cuyo funcionamiento se eK/lica ms aba2o en este ca/tulo( 4l Zcerebro[ del sistema ser un microcontrolador 5rduino( 4ste ser el encargado de mandar sobre los 46Cs 7ue sern los encargados Sltimos de mo0er los motores(

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(

Figura %( 4s7uema general interconeKi,n de dis/ositi0os(

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

5.1.3.1. Brushed Motors (DC Motors)


6egSn la ?i8i/ediaQ Bel motor de corriente continua es una m7uina 7ue con0ierte la energa elFctrica continua en mecnicaQ /ro0ocando un mo0imiento rotatorioC T1&U( 6u /o/ularidad y uso descendi, muc$o con la llegada de los motores de corriente alternaQ aun7ue se siguen utiliJando en determinadas industrias( La /rinci/al caracterstica del motor de corriente continua es la /osibilidad de regular la 0elocidad desde 0aco a /lena carga( 6e com/one /rinci/almente de dos /artesQ un estator 7ue da so/orte mecnico al a/arato y tiene un $ueco en el centro generalmente de forma cilndrica( 4n el estator adems se encuentran los /olosQ 7ue /ueden ser de imanes /ermanentes o de0anados con $ilo de cobre sobre nScleo de $ierro( 4l rotor es generalmente de forma cilndricaQ tambiFn de0anado y con nScleoQ al 7ue llega la corriente mediante dos escobillas( =e7uieren muc$o mantenimiento(

Figura 3( Motor de Corriente Continua .C motor ' Brus$ed motor!(

5.1.3.2. Brushless Motors


#ambiFn llamados Brus$less .C motorsQ son motores 7ue carecen de colector y escobillas o carbones( 4n 0eJ de funcionar en .CQ funcionan con una se@al trifsica 7ue aun7ue idealmente debera de tener una forma sinusoidalQ en la /rctica son /ulsos $aciendo 7ue la se@al sea una continua(

%%

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(

Figura )( Motor sin escobillas Brus$less .C motor!(

%+

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(

Figura <( >ac8er 6tyle Brus$less 1utrunner %&-%*M(

Las caractersticas de este motor sonP

.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 <(

Figura *( Batera MIPPN Flig$tmaK %%&&m5$ +61P %&C(

%)

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!

%%&&ma %(%5! %&C battery can deli0er I ] %(%5 K %&! ] 335

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

%<

>%"%>% &'C 14ariador2


"n 46C 4lectronic 6/eed Controller! o en castellano 0ariadorQ es un circuito electr,nico cuyo ob2eti0o es 0ariar la 0elocidad de un motor elFctrico /udiendo 2ugar tambiFn el /a/el de freno dinmico( "tiliJaremos los 46Cs /ara controlar nuestros motores brus$less( Cada 46C /ro/orcionar a cada motor una se@al elFctrica trifsica 7ue generar la rotaci,n de las $o2as(

Figura -( 42em/lo de 46C(

"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&!(

Figura 1+( #urnigy 54-%&5 Brus$less 46C(

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(

>%"%@% Aegla GEatts per poundH


4Kiste una regla llamada B?atts /er /oundC o B0atios /or libraCQ 7ue determina 7ue un multirotor necesita ;&?'lbs ;& 0atios /or cada libra de /eso! /ara /oder des/laJar su /ro/io /eso( 5un7ue se trata de una a/roKimaci,n generalQ $emos com/robado 7ue con los elementos 7ue dis/onemosQ efecti0amente cum/limos esta regla( :atio ] :oltio ^ Corriente ?atts ] :oltios ^ Corriente ] 11(1 0 ^ 11 am/s ] 1%%(1 1 /ound K /ounds 9os da %(% /ounds ;& ? K ` 1 /ound ` %(% /ounds ` &(3;+;-%+< 8g ` 1 Ig

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

5.1.#.1. $ard%are li!re

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

5.2.8.2.2. Por qu arduino?

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

Multi-Plataforma % 5l soft6are de Arduino funciona en los sistemas


operativos 7indo6s# Macintosh 8"$ y 1inu . 1a mayora de los entornos para microcontroladores est/n limitados a 7indo6s.

Entorno de pro rama!i"n simple # dire!to % 5l entorno de pro)ramacin


de Arduino es f/cil de usar para principiantes y lo suficientemente fle ible para los usuarios avan,ados. Pensando en los profesores# Arduino est/ basado en el entorno de pro)ramacin de Procesin) con lo .ue el estudiante .ue aprenda a pro)ramar en este entorno se sentir/ familiari,ado con el entorno de desarrollo Arduino.

$oft%are ampliable # de !"di o abierto% 5l soft6are Arduino se publica


ba-o una licencia libre y preparado para ser ampliado por pro)ramadores e perimentados. 5l len)ua-e puede ampliarse a trav9s de libreras de C::# y si se est/ interesado en profundi,ar en los detalles t9cnicos# se puede dar el salto a la pro)ramacin en el len)ua-e AVR C en el .ue est/ basado. ;e i)ual modo se puede a<adir directamente cdi)o en AVR C en tus pro)ramas si as lo deseas.

&ard%are ampliable # de '"di o abierto % Arduino est/ basado en los


microcontroladores A+M5=A>2?# A+M5=A@&? y A+M5=A>&?3. 1os planos de los mdulos est/n publicados ba-o licencia Creative Commons# por lo .ue dise<adores de circuitos con e periencia pueden hacer su propia versin del mdulo# ampli/ndolo u optimi,/ndolo. *ncluso usuarios relativamente ine pertos pueden construir la versin para placa de desarrollo para entender cmo funciona y ahorrar al)o de dinero.

+)

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(

4l modelo concreto 7ue se $a utiliJado el el 5rduino "no de la figura 1)(

Figura 1)( 5rduino "no(

+<

Las es/ecificaciones tFcnicas sonP

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

"RAM 55PR8M ClocH "peed

& G! BA+me)a@&?C > G! BA+me)a@&?C >2 MH,

.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(

Figura 1<( Na? Pitc$ =oll(

Figura 1*( Na? Pitc$ =oll(

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(

+-

Figura 1-( 6/ar8fun IM" .igital Combo Board - I#G+%&&'5.XL+3;(

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

Figura %&( Parte /osterior de la IM" I#G+%&&'5.XL+3;(

>%"%"9% Mdulo 0luetoot6


4n la /rimera fase del /royectoQ se analiJ, si era me2or $acer la comunicaci,n mediante AiFi o bluetoot$( Pienso 7ue ambas o/ciones son 0lidasQ /ero se decidi, coger el camino del bluetoot$ /or moti0os econ,micos( 4Kiste un m,dulo bluetoot$ con un coste de +%Y y no se encontr, en ese momento ninguna o/ci,n Ai-Fi tan econ,mica( Por com/araci,nQ eKiste un m,dulo aco/lableT%;U /ara arduinoQ 7ue /ermite una comunicaci,n AiFi( 6u coste sin embargoQ es de <1YQ lo 7ue $ace esta o/ci,nQ +-Y ms cara 7ue la o/ci,n bluetoot$( "tiliJaremos /or tanto un m,dulo bluetoot$ /ara realiJar la comunicaci,n con el smart/$one( >aremos ser0ir el BBluetoot$ Modem - Blue6Mi=F 6il0erCT1;U de s/ar8fun de la figura X(

Figura %1( BBluetoot$ Modem - Blue6Mi=F 6il0erC de s/ar8fun(


3%

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

Peso unidad 234 gr 56 gr 23 gr 2<= gr 57 gr < gr 6= gr 7gr < gr < gr

Cantidad " x5 x5 " " " " x5 " "

Sub Total 234 278 79 2<= 57 < 6= 8< < <

3+

0rn(s de energia Conmutador Aotal

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!(

>% % DardEare% *mplementacin%


4n el /resente ca/tulo se trata de mostrar como se $a lle0ado a cabo la im/lementaci,n del sistema cuadric,/tero dise@ado en el a/artado anterior( 4l /rimer /aso $a sido dotar al microcontrolador de los sensores y el bluetoot$( 6e muestra un es7uema de coneKiones y fotosQ una 0eJ terminado el traba2o( 4l segundo /aso $a sido montar uno /or uno los distintos elementos del sistema( #ambiFn se muestran fotos de todo este /roceso(

>% %"% Micro


>emos utiliJado un /rotos$ield figura %&! del mismo tama@o 7ue el micro arduino( 6oldaremos la IM" y el m,dulo bluetoot$ a este /rotos$ieldQ 7ue des/uFs aco/laremos al micro 5rduino( .e esta manera tendremos todos los dis/ositi0os en una misma /laca y en caso de necesidadQ /odramos aco/larla a otro micro 5rduino si el nuestro sufriera algSn da@o /or cual7uier circunstancia(

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)

Figura %3( 4s7uema de coneKi,n con conmutador(

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<

Figura %;( 4s7uema de coneKi,n definiti0o(

>asta a7u el /roceso de monta2e del micro( :amos a 0er algunas fotos del resultadoP

3*

Figura %)( arduino "no y /rotos$ield acabado(

Figura %<( Protos$ield acabado(

3-

Figura %*( Protos$ield sobre 5rduino "no(

;&

Figura %-( Protos$ield sobre 5rduino "no(

Figura +&( IM" y Bluetoot$ en la /laca Protos$ield(


;1

Figura +1( Protos$ield aco/lado al micro(

: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!(

Figura ++( ConeKi,n entre motor y 46C(

;+

>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(

Figura +;( 5rduino instalado dentro del frame(

;3

Figura +)( 5rduino instalado dentro del frame(

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

;)

Figura +<( Logo 5ndroid(

"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(

Figura +*( Logo 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 3&( 42em/lo 5rduino(

)&

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(

@%"% Lectura de la *M3

@%"%"% .iltro de Jalman


4l filtro de Ialman es un algoritmo 7ue utiliJa una serie de medidas recogidas de una se@al en el tiem/o 7ue contienen ruido e im/erfecciones( Con estos datosQ trata de /roducir una nue0a 0ariable 7ue de una informaci,n ms /recisa 7ue los datos medidos inicialmente( La idea es eliminar el ruidoQ /roduciendo una se@al ms lim/ia( 4l /roceso consta de dos eta/as( 4n una /rimera fase de /redicci,nQ se

)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

)+

Figura 3+( Rngulos de 4uler(

@% % Comunicacin Android - Arduino


.esde el momento en el 7ue se tom, la decisi,n de comunicar ambos dis/ositi0os mediante bluetoot$Q se $a ido buscando una soluci,n 7ue fuera a/licable a este conteKto( :amos a utiliJar una $erramienta llamada 5mariro(

@% %"% 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(

);

Figura 3;( 6ee8bar 7ue controlar la 0elocidad de rotaci,n(

Figura 3)( 5ourMotorActi6it7.

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

#eKt:ie? t06tatus ] #eKt:ie?! find:ie?ById =(id(t06tatus!h

)<

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

)*

@% %3% Arduino .irmEare


Por otra /arte el c,digo 7ue correr en 5rduino tambiFn tiene 7ue ser ca/aJ de Bescuc$arC( 5ntes de mostrar el c,digo 7ue $emos creadoQ lo eK/licamos bre0ementeP Primero se incluyen las libreras necesarias y des/ues en la secci,n de configuraci,n funci,n setu/ !! se registra !ontrolMotors como una funci,n 7ue se e2ecutar cada 0eJ 7ue a 5rduino le llegue una funci,n con el tag BfC en este caso!( 4n esa funci,n lo 7ue $acemos es ma/ear el 0alor 7ue $emos recibido en el rango 7ue nos interesa y escribirlo en los motores( Pasemos a 0er el c,digo(
EJ He)alari v 3.@ Control a .uadricopter from Android author0 $abier 1e)asa Martin%=il % Rune &3>& JE Sinclude Sinclude Sinclude Sinclude Sinclude Sinclude TMeetAndroid.hU T"ervo.hU T7ire.hU TFree"i *MU.hU TF*MUVA;$1@'A.hU TF*MUV*+=@&33.hU

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

<&

C% Algoritmo de estabiliMacin% 0ases%


C%"% Controlador #*D
La familia de controladores PI.Q es una estructura de control mediante realimentaci,nQ 7ue calcula la des0iaci,n entre un 0alor medido y un 0alor 7ue se 7uiere obtenerQ $aciendo una correcci,n en consecuencia( 4ste ti/o de controladores $an demostrado ser robustos y es /or eso 7ue son utiliJados en ms del -;a de los /rocesos industriales en laJo cerradoT%<U( 4l algoritmo de control calcula tres /armetros diferentesP el /ro/orcionalQ el integral y el deri0ati0o( 4l Pro/orcionalQ es directamente /ro/orcional al error actualQ el Integral $ace una correcci,n del error acumulado en el tiem/o integral del error! y el .eri0ati0o determina la reacci,n del tiem/o en el 7ue el error se /roduce(

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 determine ho6 badly 6e are doin)


error W tar)et+emp % cur+empM

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

EE the ma)ic feedbacH bit


return p+erm : i+erm % d+ermM P

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(

I%3% =aloracin econmica


4l clculo total del /royecto se 0a a calcular res/ecto a do factores( Coste del material y coste /or las $oras de traba2o realiJadas( La siguiente tabla muestra el /recio de cada com/onente utiliJado( #odos los /recios estn en Y(

<;

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

Precio BChora 29.5 B 29.5 B 25.2 B 25.2 B 29.5 B "

Aotal B 295= B 8<7= B 228< B 8849 B 2635 B 9288

Total con material

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(

<*

<-

""% #osibilidades de traba8o +uturo%


""%"% #rueba del algoritmo de estabiliMacin%
"na 0eJ 7ue $emos dise@ado y construido el sistema y cuadric,/teroQ un traba2o futuro /odra ir encaminado a /robar algoritmos de control utiliJando algSno de las libreras de control PI. descritas anteriormente( 4Kiste 0arios /royectos de los mencionados en el ca/tulo 3 4stado del arte!Q 7ue /ublican el c,digo con algun ti/o de licencia abierta( 4l c,digo de B5ero7uadCQ /or e2em/loQ $a sido utiliJado en otros /royectos como Bscout "5:CQ /ara $acer 0olar su cuadric,/tero( "na /osible linea a seguir /or tantoQ sera intentar enterder este c,digo y modificarlo /ara $acerlo funcionar con nuestro $ard?are( >ay 7ue destacar 7ue la migraci,n de este c,digo no es una tarea tri0ial( 4sto se debe a 7ue el c,digo de 5ero7uad est /ensado /ara /oderse usar con diferentes ti/os de microcontroladores 5rduino en combinaci,n con diferentes /lacas 7ue contienen a su 0eJ diferentes sensores( >abr 7ue ada/tar el c,digo a nuestras necesidades(

""% % Aero:uad 'o+tEare%


:amos a dar una idea de /or donde 0a el soft?are 7ue utiliJa el /royecto 5ero7uad( 4l c,digo tiene un fic$ero de configuraci,n 8serCon/i2uration.h! 7ue /ermite configurar diferentes modelos del microcontrolador 5rduino y diferentes configuraciones en K o en V! as como definir diferentes sensoresQetc((( ( 4l arc$i0o /rinci/al 7ue se e2ecuta es B5eroEuad(inoC( 4n la funcion setup"# de ese arc$i0o es donde se $acen todas las configuraciones( 6e inicialiJan las 0ariables o/ortunas de/endiendo de las lineas comentada'descomentadas del mencionado arc$i0o( 4n el bucle /rinci/al loop"# 7ue se e2ecutar constantementeQ se $acen lecturas de los sensores dis/onibles y se dan las ,rdenes corres/ondientes( >e realiJado un /e7ue@o /seudoc,digo de esta funci,n /rinci/alP

*&

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

*;

También podría gustarte