Académique Documents
Professionnel Documents
Culture Documents
Captulo2
DescripcindeComponentesUtilizados
2.1Arduino
Figura2.1:ArduinoDuemilanove
El sistema Arduino utilizado en esta tesis, se muestra en la figura 2.2, este fue
programado mediante el Software: Arduino 0013, ver figura 2.3, gracias a este
programayalhardwareconelquecuentaArduinofueposiblehacerlalecturadelos
sensores y generar la accin de los actuadores. Arduino est basado en 3 partes
principalesmediantelascualesestedispositivosecomunicaconelexterior:Unaparte
de entradas y salidas digitales ubicada en la parte superior, una parte de entradas
anlogas y una parte de pines de voltajes ubicadas en la parte inferior de Arduino,
estassemuestranclaramenteenlafiguras2.4y2.5.
As mismo, la descripcin de las terminales con que cuenta el sistema Arduino se
describenenlastablas2.1,2.2y2.3
Figura2.2:InterfazdelprogramaArduino.
Figura2.3:PinesdigitalesArduino
Figura2.4:Pinesanlogosydevoltaje.
Tabla1:PinesDigitalesUsados
PinesAnlogos Aplicacin
3 PWMMotor1
4 Activacinmotores
5 PWMMotor2
5
6 PWMMotor3
7 SensorUltrasnico
9 PWMMotor5
Tabla2:PinesanlogosArduino
PinesAnlogos Aplicacin
4 DatosNunchuk
5 SealrelojNunchuk
Tabla3:PinesdeVoltajeArduino
PinesdeVoltaje Aplicacin
Gnd. Tierra
5V 5VoltsUltrasnico
3V3 3.3VoltsNunchuk
El sistema Arduino posee dos opciones diferentes de alimentacin, una es por medio
del cable USB y la otra es mediante una entrada de voltaje la cual puede ser
suministrada de entre 5V y 12V para un rendimiento optimo, la primera opcin nos
permiteademsdealimentarloconectarloalacomputadoraparaasserprogramado
ascomotambinenviardatoshacialacomputadorapormediodelpuertoserial.
Figura2.5:FuentesdealimentacinArduino.Izquierda:USB,Derecha:Alimentacinexterna
Conrespectoalvehculopropuestoparaestatesisalsernecesarioqueesteenelaire
requiereforzosamentequenoestsujetadoanadaporlotantolaopcindeconexin
por medio de USB para transmisin de datos no estar disponible y no se podrn
visualizar las variables utilizadas en la computadora por el momento ya que en esta
tesisnoseconsideraelenvodedatosdemanerainalmbricasinembargoestosera
posibleparafuturasaplicaciones.
2.2SensoresUltrasnicos
Despusdeanalizarvariasopcionesparadeterminarladistanciaalaqueelvehculose
encuentra con respecto al suelo se decidi utilizar un sensor ultrasnico con la
posibilidad de medir hasta 4 metros de distancia con una gran precisin, su
funcionamiento bsico es el envo de pulsos ultrasnicos los cuales al rebotar contra
un objeto producen un eco que es recibido por el sensor para de esta manera
determinarladistanciaalobjeto.
Figura2.6:SensorultrasnicoSRF05.
Estesensorultrasnico,mostradoenlafigura2.7,tiene2manerasparafuncionar[7]:
Modo1Sealdeactivacinydeecoendiferentespines
Enestemodoseutilizanterminalesindependientesparalasealdeactivacin
y para la seal de retorno del eco. Para activar este modo se debe dejar la
terminaldemodosinconexin
1
.
Figura2.7:Mododeconexin1
2
.
1
InformacinobtenidaenlahojadedatosdelSRF05.
2
Figuraobtenidograciasalahojadedatosdelsensorenespaol.
8
Elprimermodoeselmsfcildeutilizarvindolodesdelapticadelaprogramacin
ya que se cuenta con terminales independientes para la entrada y para la salida, sin
embargosisevedesdeelpuntodevistadeconexiones,implicaquesalgandoscables
y no uno solo desde el Arduino hacia el sensor SRF05. La figura 2.9 muestra el
diagramadetiemposquedebeconsiderarsecuandoelsensorestsiendoutilizadoen
elmodo1.
Figura2.8:Diagramadetiemposenmodo1
3
.
Modo2Sealdeactivacinyecodiferente
En este modo se utiliza un solo pin para las seales de activacin y eco lo que nos
permitereducirelnmerodeterminalesquedebenutilizarseenelmicrocontrolador.
3
Diagramaobtenidograciasalahojadedatosdelsensorenespaol.
9
Para utilizar este modo es necesario conectar la terminal de modo a la tierra del
Arduino.
4
Figura2.9:Mododeconexin2
5
Enestemodolasealdeoperacinylasealdelecoseenvanporlamismaterminal,
porlotantoesnecesarioconfigurarelpincomoemisoryreceptorteniendoencuenta
eltiempoquesetomaparaenviaryrecibirelpulso.Estepinenunprincipiodebeser
declaradocomoemisorysolopuedesercambiadoareceptorhasta700Sdespusde
haber finalizado la seal de activacin. El diagrama de tiempos para que el sensor
funcioneenelmodo2semuestraenlafigura2.11
4
Informacinobtenidaenlahojadedatos.
5
Figuraobtenidaenlahojadedatosenespaol
10
Figura2.10:DiagramadetiemposenModo2
6
ParapodermedirladistanciaenelArduinoseutilizaunafuncinllamadaPulseInla
cual lee un pulso en estado HIGH o LOW sobre la terminal apropiada, y segn la
programacin,esperaaqueelpinsepongaenestadolgico1o0esdecirdetecta
uncambiodeflancopositivoonegativoycuandostellegaseiniciaunacuentaquese
parar en cuanto se detecte otro cambio, entonces la funcin entregar como
resultado un valor en microsegundos. Esta instruccin funciona correctamente entre
valoresde10sa3minutos[8].
ElfuncionamientobsicodelainstruccinPulseineselsiguiente:
i nt pi n = 7;
unsi gned l ong dur at i on;
voi d set up( )
{
pi nMode( pi n, I NPUT) ;
}
6
Diagramaobtenidoenlahojadedatosenespaol
11
voi d l oop( )
{
dur at i on = pul seI n( pi n, HI GH) ;
}
Apartirdeestafuncinsepuedecalcularladistancia,paraestoesnecesarioteneren
cuentaqueelecoqueserecibeesunpulsoporlotantosuanchoesproporcionalala
distancia con respecto al objeto, este sensor si no detecta nada en 30s su nivel
cambiaaestadobajo.Paracalcularladistanciaencmsedebetenerencuentaquela
velocidaddelsonidoes340m/so29microsegundosporcentmetro.
Elsonidollegahastaelobjeto,rebotayregresacomoecoporloquesetomaeltiempo
en milisegundos y se divide entre 29 para obtener la distancia y despus dividimos
entre dos porque solo queremos la distancia que a el pulso le tomo regresar o en
llegar,nolas2[9].
Para calcular la distancia en pulgadas es necesario seguir un proceso similar, pero es
necesariorevisarlashojasdedatos,estasnosproporcionandosdatosimportantes:el
sonidoviajaa1130piesporsegundoyserecorren73.746microsegundosporpulgada,
por lo tanto para obtener una distancia en pulgadas es necesario dividir la seal que
nos da entre 74 para obtener la distancia total y finalmente dividir entre 2 para
obtenerladistanciadelsensoralobjeto
7
.
En el cdigo del programa solo es necesario aplicar las siguientes frmulas para
obtenerlasdistanciasencentmetrosyenpulgadas.
7
InformacinobtenidaconelejemplodePINGquevieneenlapginadeArduino.
12
l ong msPul gadas( l ong mi cr osegundos)
{
r et ur n mi cr osegundos / 74 / 2;
}
l ong msCent i met r os( l ong mi cr osegundos)
{
r et ur n mi cr osegundos / 29 / 2;
}
Elresultadodeestasmedicionessenosdapormediodelpuertoserialporloquesolo
es necesario activar la funcin de monitoreo serial en la interfaz del programa del
Arduino. El cdigo completo de cmo medir la distancia con estos sensores se puede
verenelApndiceA
8
.
2.3Nunchuk
El vehculo que se propuso en esta tesis tiene 4 brazos ubicados a 90 cada uno
formandounaX,elsistemadecontrolpropuestonecesitadetectarlainclinacindelos
motores por lo tanto es necesario un dispositivo capaz de medir al menos dos ejes
paratomardosbrazoscomoelejeXylosotrosdoscomoelejeY.
8
EstecdigoseencuentraenelApndiceAenlapagina78.
13
Figura2.11:ElacelermetrodelNunchuk,losbotonesyeljoystick.
9
Figura2.12:unacelermetrocomercialmontadoenplacasuperficial.
9
Figuragraciasalapgina:http://gear.ign.com/articles/748/748146p1.html
14
En las imgenes 2.12 y 2.13 se puede ver que los acelermetros son similares y de
tamaos reducidos, pero el que viene montado en el circuito impreso del Nunchuk
posemuchasventajasacomparacindeunsimpleacelermetro.
Un acelermetro es un dispositivo que mide fuerzas de aceleracin estticas como la
constantedegravedadqueseejercesobreuncuerpoodinmicascomolainclinacin
queseaplicasobreunacelermetro.
Estos dispositivos funcionan porque debido a la medicin de aceleracin esttica
debido a la gravedad se puede encontrar un ngulo al que el dispositivo est siendo
movido con respectoa la tierra, ydebidoa laaceleracindinmicasepuedesaberla
direccinconlaqueseestmoviendo[10].
Existen muchos tipos de acelermetros pero dos de los ms importantes y comunes
son los de efecto piezoelctrico y los de efecto capacitivo. Los acelermetros
piezoelctricos se valen de estructuras microscpicas de cristales los cuales al ser
excitadosporfuerzasdeaceleracinproducenunvoltajedeterminadoqueseusapara
saber la inclinacin, los acelermetros de efecto capacitivo contienen micro
estructuras separadas una de otra por una distancia determinada por lo que poseen
unacapacitanciafija,peroestasalseralejadasoacercadasporefectodelainclinacin
producirnuncambioenlacapacitanciaelcualesusadoparasaberlainclinacin
10
.
10
InformacinobtenidaenDimensionEngineering.
15
}
El Nunchuk es un control que trabaja en conjunto con otro control de la consola Wii llamado
Wiimote. El Nunchuk cuenta con un acelermetro de 3 ejes, un control anlogo o Joystick y
dosbotones[11].
Figura2.13:ControlNunchuk.
11
ParapoderconectarloalArduinoesnecesariosaberculessonlospinesquesetienen
queutilizar,estecontrolensuconectorcuentacon6pinesdeloscualessolo4llegan
hastaelcircuitoimpresodondeseencuentraelacelermetro.
Figura2.14:ConectordelcontrolNunchuk.
Figura2.15:diagramadeconexindelNunchuk.
12
11
Figuragraciasalapgina:http://www.wiili.org.
16
Lospinesdeconexinsonlossiguientes:
Tabla4:PinesNunchukysuconexin
#dePin Descripcin Arduino
1 Datos Pin4anlogo
2 Noconectado Noconectado
3 3.3V 3.3V
4 sealdeReloj Pin5anlogo
5 Noconectado Noconectado
6 Tierra Tierra
12
Diagrama obtenido en la pgina: www.wiili.org en la seccin Wiimote/Extension
Controllers/Nunchuk
17
funcionamientoalcambiarlaestructuraoriginaldndoleunenfoquedeprogramacin
orientadoaobjetos.
Laestructuradeprogramacinrenovadasemuestraacontinuacindondesolamente
seasignanlastareasarealizaryelcdigoquerealizatodosepresentaenlapartefinal
delcdigoparatenertodomsordenadoyestructurado.
voi d set up( )
{
begi nSer i al ( 19200) ;
Wi r e. begi n ( ) ;
Nunchuk_i ni t ( ) ; / / i ni ci aci n par a el Nunchuk
pul seWi dt h = mi nPul se; / / ancho de pul so se r educe al m ni mo
}
voi d l oop( )
{
/ / I nt er val o de t i empo deseado par a que se act i ve l a f unci n
/ / de i ncl i naci n del Nunchuk
t ++;
i f ( t == 25 )
{
i ncl i naci on( ) ;
}
del ay( 20) ;
}
ElcdigocompletodecmocontrolarelNunchukseencuentreenelapndiceB
13
.
Estecdigonosdalosresultadosdelainclinacindelos2ejesquenecesitamos,eleje
X y el eje Y, y debido a las modificaciones realizadas sobre el programa los valores
13
CdigodelNunchuckenApndiceBenlapagina80.
18
entregados ahora estn dados en forma de porcentaje en donde el valor de 50 es el
centrodelosdosejes.
AnteriormentelosvaloresdadosporelNunchukeranlossiguientes:
Tabla5:RangodevaloresdelNunchuk.
Ejes Mnimo Mximo Rangodevalores
X 10 163 153
Y 10 163 153
Estos valores por medio de una regla de 3 fueron adaptados para realizar un
porcentajedeinclinacinyunporcentajedePWMparalosmotores.
Con estas pequeas funciones agregadas al programa es ms fcil administrar las
variablesqueserecibenparapoderascontrolarlosmotoresysaberlainclinacindel
dispositivo. La inclinacin con respecto a los ngulos y al valor de porcentaje de
inclinacinentregadopormediodelArduinoeselsiguiente:
Tabla6:InclinacindelejeX
x<50 x>50
Inclinacin PWM Inclinacin PWM
0 50 0 50
2.1 49 1 51
2.4 48 1.7 52
19
3.3 47 2.8 53
4.5 46 4.7 54
5.5 45 5.9 55
6.5 44 6.9 56
7.5 43 7.9 57
8.5 42 8.9 58
9.5 41 9.9 59
10.5 40 10.9 60
12.6 39 12.9 61
13.9 38 13.9 62
14.8 37 15.3 63
15.9 36 16.3 64
Enlatabla7sepuedeobservarcmocambianlosdatosdeporcentajedeinclinacin
del acelermetro en donde los valores menores a 50 significan que el acelermetro
est siendo girado a la izquierda y los valores mayores a 50 significan que este est
inclinndosehacialaderecha.
Figura2.16:InclinacindelejeXdelacelermetro.
20
Figura2.17:GraficadelcomportamientodelejeX.
EnlagraficamostradaenlaFigura2.18sepuedevercomportamientoconrelacinal
ngulo deinclinacin delacelermetro y del% quese manejaen el programaparala
inclinacindesde0a100.
Tabla7:InclinacindelejeY
Y<50 Columna1 Y>50 Columna2
0 50 0 50
2.6 49 0.3 51
3.8 48 1.8 52
4.7 47 2.7 53
5.8 46 3.9 54
6.8 45 4.8 55
7.9 44 5.9 56
8.9 43 6.9 57
9.9 42 7.9 58
11.1 41 8.9 59
12.2 40 9.9 60
14.3 39 12.3 61
15.5 38 13.3 62
21
16.5 37 14.3 63
17.6 36 15.7 64
Los datos en la tabla 8 muestran los valores obtenidos para la inclinacin del
acelermetro respecto al eje Y adems del porcentaje de inclinacin, donde los
valores menores a 50 significan que el acelermetro est siendo girado hacia atrs y
losvaloresmenoresa50significanqueesteestinclinndosehaciaadelante.
Figura2.18:inclinacindelacelermetroenejeY.
22
Figura2.19:GraficadelcomportamientodelejeX.
2.4Motores
23
Figura2.20:MotoresdeDCparaavionesRC.
Figura2.21:MotoresBrushless.
2.4.1MotoresDC
24
Este tipo de motores son dispositivos electromotrices que convierten la energa
elctrica en movimiento mecnico, estos basan su funcionamiento en la accin de
campos magnticos opuestos que hacen girar el rotor (eje interno) en direccin
opuestaalestator(imnexternoobobina),conlocualcuandosteessujetadoporsu
superficieelejedelrotoreslonicoquegiraydeestamaneraescomogeneramosel
movimientohacialashlices[12].
Tabla8:Caractersticasmotorconcepillado
Corriente: 2A
Peso: 70gr
Dimetro: 28mm
Largo: 50mm
Estosmotoresa18voltstenanunpicodecorrientede2.6Ayseestabilizabana2A
porlocualelcontroldeestosmotoressepodarealizarpormediodeunpuenteHde
lafamiliaL293.
2.4.2MotoresBrushless
25
Losmotoressincepilladoestnhechosparaunagraneficienciayunbajopesodebido
a que son para uso especfico de aeromodelismo, los 4 motores que se utilizaron
fueron de la marca HIMAX modelo HC28120650
14
. Estos motores tienen las
siguientescaractersticas:
Tabla9:CaractersticasMotorBrushless
Potencia: 150W
IdelESC: 10A
Peso: 64gr
Dimetro: 28mm
Largo: 40mm
Losmotoressincepilladoaltenerunagranpotenciayconsumirunagrancantidadde
corrientesetienenquecontrolarporunESC(ElectronicSpeedController)ynoporno
porunpuenteH.
Este tipo de motores, a diferencia de los otros no utilizan escobillas para realizar el
cambiodepolaridadenellossinoquelohacenmedianteunprocesodeconmutacin
electrnicaynomecnica.Losmotoresaltenerescobillasdisminuyenelrendimiento,
producencaloryruido.
Los motores sin cepillado se alimentan con una seal trifsica que realmente es una
combinacin de pulsos que hacen que la seal de DC tenga una componente de AC,
pero se les clasifica como motores de DC porque poseen imanes permanentes los
14
DatosdelosmotoresobtenidosenlapginadeDraganFly.
26
cuales reciben pulsos en una determinada manera haciendo que el campo secuencial
giremsrpidoomslentoalaumentarodisminuirlafrecuenciadelospulsos.
Enlosmotoresconvencionalesalaumentarelvoltajeseaumentalavelocidadperoen
estosno,aqulosESCsubministranlacorrientenecesariaparalavelocidadqueseelija
seafija[13].
Algunasventajasprincipalesdeestosdispositivossonlassiguientes:
Mayoreficiencia
Mayorrendimiento
Conmutacinelectrnica
Mayorpotenciaparaelmismotamao
Rangodevelocidadelevadoalnotenerlimitacinmecnica.
2.5ControlesElectrnicosdeVelocidad(ElectronicSpeedController)
Un ESC es usado principalmente para controlar motores por medio de radio control,
pero en este caso lo utilizaremos solamente para poder variar la velocidad del motor
27
por medio de una seal PWM proveniente del Arduino. Los ESC trabajan
principalmente por medio de FETs (Field Effect Transistors) debido a que son ms
rpidos para hacer transiciones adems de que pueden soportar una corriente de
entre 15 a 25 A, lo cual no se puede lograr fcilmente con puentes H. El ESC que se
utilizoenestatesisfueelmodelo:Phoenix25delamarcaCastleCreationselcual
tienelassiguientescaractersticas[14]:
Tabla10:CaractersticasESC
Voltaje 12.6a19.2V
Corriente: 25A
Conmutacin: 11000Hz
Peso: 17gr
dimensiones: 3.5x2x.4cm
28
Figura2.22:ESC.
Los reguladores de velocidad (ESC) para su funcionamiento bsicamente miden el
tiempo de 1ms a 2ms como un servo estndar y lo transforman en un mximo y
mnimodeRpmparaelmotor
15
.
2.6PuenteH
15
DatosobtenidosdelapginaERadiocontrol.
29
Figura2.23:PuenteH.
Figura2.24:AccionesdelosinterruptoresenunpuenteH[15].
En la Figura 2.25 el primer circuito hace que el motor gireen una direccin debido al
voltaje recibido, en cambio en la otra figura el voltaje entra al motor inversamente y
hace que este gire en la otra direccin. Una pequea tabla muestra las acciones
correspondientesenlosinterruptores:
Tabla11:AccionesdelosinterruptoresenpuenteH
S1 S2 S3 S4 Accin
1 0 0 1 Elmotorgiraenavance
0 1 1 0 Elmotorgiraenretroceso
0 0 0 0 Elmotorsedetieneporinercia
0 1 0 1 Frenadorpidodemotor
30
ParapodercontrolarunmotoresrecomendableusarunpuenteHparacadamotorya
que estos alimentados a 18 V tienen una corriente de pico de 2.6 A y una corriente
establede2A.AlprincipioseutilizaronpuentesHdelmodeloL239Dqueincluyeuna
proteccindediodosylaposibilidaddecontrolar4motores,sinembargoseutilizoun
puente H para cada motor y no limitar la corriente en el integrado pero de todas
manerasesemodelodepuenteH nodabalosrequerimientosdecorrienteasquese
prosiguiautilizarelmodeloL293Belcualalnotenerunaproteccindediodospuede
soportarlasnecesidadesdecorrientedelosmotores[16].
Figura2.25:Esquemticodeunmotor,unArduinoyunpuenteHL239D[17].
31
Figura2.26:Motor,ArduinoypuenteHL239D
16
.
2.7PWM
PWM son las inciales en ingls de Pulse Width Modulation cuya traduccin es
Modulacin por Ancho de Pulso, esta principalmente sirve para controlar el ciclo de
trabajodeunasealperidica,confinesdetransmitirinformacinatravsdeuncanal
decomunicacionesoparacontrolardelacantidaddeenergaqueseenva
a una carga y un ejemplo de esto es que los motores que se utilizaron es esta tesis
fueroncontroladosporPWM.
16
Figuradelaconexinsugeridaporlapgina:http://gestaltung.fhwuerzburg.de
32
Figura2.27:ControlPWMdeunaseal[18].
UnparmetroimportantedentrodelPWMeselciclodetrabajoqueeninglsesDuty
Cycle el cual determina el porcentaje de tiempo que el pulso est en estado activo
duranteunciclo.LasealPWMseutilizaparacontrolarcircuitosanalgicos.Elperiodo
33
y la frecuencia del tren de pulsos pueden determinar la potencia entregada a dicho
circuito.
En un Arduino la seal de salida PWM nos permite cambiar el ciclo de trabajo o el
tiempo que el pulso est activo utilizando la funcin analogWrite(). El siguiente
programaesunmuestrasencilladecmosepuedenmodificarintervalosdetiempoa
travsdelafuncindigitalWrite()[19].
i nt di gPi n = 10; / / pi n di gi t al 10
voi d set up( )
{
pi nMode( di gPi n, OUTPUT) ; / / pi n en modo sal i da
}
voi d l oop( )
{
di gi t al Wr i t e( di gPi n, HI GH) ; / / asi gna el val or HI GH al pi n
del ay( 500) ; / / esper a medi o segundo
di gi t al Wr i t e( di gPi n, LOW) ; / / asi gna el val or LOWal pi n
del ay( 500) ; / / esper a medi o segundo
}
ElprogramaanterioreslaformamsbsicadeaplicaruncontrolPWMacualquierpin
del Arduino, pero existe una funcin especfica que solo se puede aplicar a 6 pines
digitalesdelArduino(3,5,6,9,10y11),estafuncinsellamaanalogWrite()[20].
Con esta funcin lo que se logra es generar una seal cuadrada estable de un
determinadociclodetrabajohastaquesevuelvaaaplicarlamismafuncinenelpin,
losvaloresdelciclodetrabajovandesde:
34
0=Siempreapagado 255=Siempreencendido
0=0Volts 255=5volts
Elfuncionamientobsicodelcontroldemotoreseselsiguiente:
17
Cdigoutilizadoparacontrolarlos4motoresenelapndiceCenlaPgina84.