Professional Documents
Culture Documents
Zaragoza
N: 106.10. 0
MEMORIA
REALIZADO POR:
I.T.I.S
I.T.I.S
, /
) .
. 2 %$ %%
0. So)1$#o!%& 'ro'1%&+a&
10 1/
%6 #$
#$
6&*& 7onta8e de los sensores en la 'laca +9(#2* 6&5& Ensam3la8e de las dos 'lacas 6&6& Pre'araci,n del PI; 6. Pr1%7a& "%) 8ar"5ar%
#. #: *$
. Ca&o& "% 1&o 9. D#agra3a "% "%&')#%g1% :. D#agra3a "% $)a&%; "%&$r#'$#(! "% 3<+o"o& * =>!$#o!%&
2&%& Pro-rama de monitori<aci,n
2&%&% Dia-rama de clases 2&%&# Descri'ci,n de las clases del 'ro-rama monitor 2&%&* Dia-rama de estados 2&%&5 Descri'ci,n de las clases
0 ,0 ,1 ,5#
5# 5# 5) 5:
6*
6* 65 )%
10. Pr1%7a& "%) &o=+5ar% 11.B)#7)#ogra=?a * 5%7gra=?a 1-. R%)a$#(! "% "o$13%!+o& 10.E21#'o "% "%&arro))o
*
66, 6/ 66
I.T.I.S
I.T.I.S
-.
El 'ro(ecto "%7%r@ contar con las si-uientes caracterDsticasE !Un modelo funcional del microrobotE El modelo contendr@ di1erentes sensores 'ara 'oder desenvolverse en las tareas de des'la<aminento ( comunicaci,n con el terminal& "Un software controlador para el microbotE +e de3er@ desarrollar el so1t0are interno necesario, 'ara 4ue el ro3ot 'ueda desenvolverse tanto en modo aut,nomo, como en modo manual& Adem@s tendr@ 4ue 'oder comunicarse con el terminal& Para 4ue se 'ueda ver 4ue el modelo es via3le, de3emos mostrar 4ue el micro3ot es ca'a< de moverse 'or un camino diseado & Esto inclu(e ida /asta un destino, simular una descar-a de al-Bn modo, volver al 'unto de inicio ( 'onerse en dis'osici,n de recivir m@s ordenes& "Un software monitor E ;rearemos ademas una a'licaci,n 'ara 4ue sirva de 'uente entre el o'erario ( el micro3ot& Este so1t0are monitor de3e de incluir las si-uientes caracterDsticasE " Al-Bn indicador de 4ue se esta conectado al ro3ot >(a sea mediante un indicador o mediante la lectura de 'arametros del ro3ot?& "Un inter1a< 4ue nos 'ermita seleccionar cada uno de los caminos 4ue 'ro-ramemos& "Un inter1a< 4ue nos 'ermita controlar manualmente el micro3ot&
I.T.I.S
I.T.I.S
0.
So)1$#o!%& 'ro'1%&+a&
I.T.I.S
Tenemos ele-ido el cere3ro de nuestro micro3ot, 'ero nos 1alta el es4ueleto,o8os ( los mBsculos& Para crear una estructura 4ue se ada'te a nuestras necesidades seleccion las '#%za& "% L%go >en concreto una ca8a con re1erencia :$5: ( otra ca8a con re1erencia :$6#? & Es cierto 4ue 1rente a otras 'osi3ilidades 'uede resultar un 'oco m@s cara, 'ero nos a/orra el -asto eFtra 4ue su'ondrDa el com'rar /erramientas 'ara 'oder tra3a8ar con otros materiales& Las venta8as de seleccionar 'ie<as Le-o como materia 'rima 'ara nuestro c/asis es 4ue a'ortan, solide<, ada'ta3ilidad ( un 1@cil sistema 'ara crear 1ormas& Ademas las 'ie<as son di1Dciles de rom'er ( 1@cil de re'arar en caso de 4ue se desmonte al-Bn elemento& ;omo eFtra, si nos /acemos con una ca8a de 'ie<as variada conse-uiremos unas 3uenas ruedas 'ara los motores& A la /ora de seleccionar un motor, me decant 'or las o'ciones 4ue menciona3an en /tt'EGG000&iearo3otics&com & A4uD eF'lican 4ue la me8or o'ci,n es el uso de servomotores& +on ase4ui3les ( adem@s o1recen una 3uena 'otencia& La marca mas tD'ica es la =uta3a& Pero esta elecci,n tiene una 'e-a ( es 4ue los servomotores no a'ortan un movimiento de -iro com'leto, si no 4ue su e8e -ira %:$J & Esto se soluciona mediante una 'e4uea modi1icaci,n& AsD 4ue usaremos - &%r.o& B1+a7a 0000 como 'otencia motri< 'ara nuestro 'ro(ecto& +olo nos 4ueda ele-ir 4ue sensores usaremos en nuestro ro3ot, 'ara 4ue 'ueda relacionarse con el entorno& Al i-ual 4ue en las otras o'ciones nos decantamos 'or los conse8os de la '@-ina /tt'EGG000&iearo3otics&com & AsD 4ue como 3uen se-uidor de linea montaremos dos sensores ;K.$ 'ara 4ue 'odamos se-uir la linea& Adem@s como 4uiero 4ue 'odamos de8arle seales en el entorno, aado otros dos sensores m@s & Esto /ace un total de , &%!&or%& CN 0 'ara leer seales del suelo& Adem@s aadir - &%!&or%& "% $o!+a$+o; 'or si 4uiero aadirle al-Bn mtodo de se-uridad ( 1! &%!&or LDR 'ara 'oder com'ro3ar las 1unciones del conversor Anal,-icoGDi-ital"Di-italGAnal,-ico& ;on esto tenemos de1inida la estructura /ard0are, en el si-uiente ca'Dtulo veremos la
:
I.T.I.S
selecci,n del so10are con el 4ue tra3a8aremos& 0.1.- S%)%$$#(! "%) &o=+5ar% ;uando o'tamos 'or un len-ua8e de 'ro-ramaci,n de3emos valorar todas las im'licaciones 4ue conlleva& Estas 'ueden ser desde, si somos nuevos al desarrollar en ese len-ua8e, nos a'orta ma(or 1acilidad al desarrollar la a'licaci,n o nos da o'ciones 4ue en otros len-ua8es nos costarDa muc/o m@s conse-uir& En este 'ro(ecto adem@s nos encontramos con otro 'ro3lema m@s& Esto se de3e a 4ue ten-o 4ue reali<ar dos a'licaciones 4ue aun4ue en su naturale<a son di1erentes tendr@n 4ue interactuar entre si& Primero ser@ en 'ensar en el 'ro-rama controlador& Res'ecto a este tenemos mu( 'ocas o'ciones realmente, (a 4ue no estamos tra3a8ando con un 'rocesador al uso& +ino 4ue tra3a8aremos con un PI; & +o'esando las o'ciones me decanto 'or usar el )%!g1a6% C & Lo 'rimero es 4ue no me resulta un len-ua8e desconocido, ( 'or tanto la curva de a'rendi<a8e ser@ menos 'ronunciada & Lo se-undo es 4ue 'ro-ramar tareas sim'les en este len-ua8e resulta mu( sencillo ( de3ido a 4ue el 'ic no so'orta estructuras de 'ro-ramacion mas com'licadas >los o38etos?, se nos anto8a este len-ua8e como todo un acierto& Por Bltimo en la '@-ina de /tt'EGG000&iearo3otics&com encontramos e8em'los sencillos, 'ara 'oder dar nuestro 'rimeros 'asos en la reali<aci,n de las 1unciones 3@sicas& +olo nos 4ueda seleccionar en 4ue len-ua8e 'ro-ramaremos nuestra a'licaci,n monitor& Tenemos multi'les len-ua8es 'osi3les& Lueremos 'oder /acer una ventana donde se muestren los estados de los sensores& Adem@s se de3er@ incluir unos 3otones 'ara las ordenes& ;rear una ventana con estas caracterDsticas es sencillo& Anteriormente en la carrera (a /ice 'ro-ramas en !ava con estas caracterDsticas, adem@s, encontr documentaci,n ( una li3rerDa 4ue 1acilita enormemente el uso del 'uerto serie& Por lo 4ue seleccionamos Da.a como nuestro len-ua8e 'ara nuestro 'ro-rama monitor&
I.T.I.S
0.1.0 Ta7)a R%&13%! "% )a& ar21#+%$+1r@& %)%g#"a& Ta7)a So)1$#o!%& 4ar"5ar%
Par+% 4ar"5ar%
Placa controladora Placa eta'a 'otencia Pic ;/asis 7otores +ensores +ensores +ensores
So)1$#(!
+9('ic +9(#2* %)=:.)A Pie<as Le-o =uta3a *$$* ;K.$ +ensor de contacto LDR
%$
I.T.I.S
0.1., O+ra& ar21#+%$+1ra& Ar21#+%$+1ra& 8ar"5ar% "%&$ar+a"a&E "Mo!+ar 1! PIC %! 1!a ')a$a "% 'r1%7a& E Aun4ue esta o'ci,n es mas 3arata 4ue la ele-ida el es1uer<o 4ue su'ondrDa el montar el ca3leado en una 'laca de 'rue3as no com'ensarDa el es1uer<o 4ue tendrDamos 4ue reali<ar 'ara o3tener el mismo resultado 4ue tra3a8ar directamente con las 'lacas +9('ic& "U&ar %) PIC 16B9,E La cantidad de in1ormaci,n 4ue /a( de este PI; ( su contrastado uso so3re otros modelos lo /acen una 3uena o'ci,n& +in em3ar-o el ele-ir el modelo %)=:.)A se de3e a 4ue es un modelo su'erior al anteriormente citado, aadiendo ademas la 'osi3ilidad de usar dis'ositivos anal,-icos -racias a su conversor& "C8a&#& =a7r#$a"o a 3%"#"aE +uele ser mu( comBn el uso de c/asis 1a3ricados a medida 'ara las 'lacas 4ue se va(an a usar& Esto /ace 4ue o3viamente las 'ie<as se ada'ten mu( 3ien a la estructura & Pero 'ara 1a3ricar las 'ie<as del c/asis se necesitan /erramientas de 3ricola8e, lo 4ue aumentarDa considera3lemente el 'recio 1inal del 'ro(ecto& Adem@s los materiales 'ueden lle-ar a rom'erse, lo 4ue si-ni1icarDa re/acer con 'ie<as nuevas o 'arc/es de 3a8a calidad 'ara su3sanar dic/as averDas& "Mo+or%& %)<$+r#$o& E Aun4ue eFisten motores elctricos, conse-uir un motor un 'oco 'otente eFi-e un desenvolso eFtra& Por lo 4ue la soluci,n a'ortada es muc/o mas ase4ui3le ( via3le& "S%!&or%& "% 1)+ra&o!#"o&E Los sensores de ultrasonidos son un elemento mu( interesante 'ara un micro3ot de nuestras caracterDsticas& Des-raciadamente los m@s ase4ui3les no tienen una -ran 'recisi,n 'or lo 4ue se vuelven una o'ci,n no mu( recomenda3le&
%%
I.T.I.S
"Ar21#+%$+1ra& So=+5ar% "%&$ar+a"a&E "Progra3a $o!+ro)a"or %! E!&a37)a"orE 7uc/os 'ro-ramas 'ara PI;s los encuentras en este len-ua8e& Aun4ue ten-o nociones 'ara desarrollar el 'ro-rama en len-ua8e ensam3lador, no le veo nin-una venta8a& Es m@s cual4uier 1unci,n re4uiere de muc/o mas es1uer<o 4ue el 'ro-ramar en un len-ua8e de ma(or nivel como es ;& "Progra3a Mo!#+or %! E#&1a) CFFE En un 'rinci'io estuve 'ro3ando el reali<ar el 'ro-rama monitor en M;NN, (a 4ue al i-ual 4ue !ava me o1recDa /erramientas 'ara desarrollar una a'licaci,n sim'le como es la de una ventana ( unos la3els& Realic 3astantes 'rue3as e incluso /ice un 'rimer 'rototi'o 'ara /acer 1uncionar el ro3ot de modo remoto en este len-ua8e& Des-raciadamente me 4ued atascado intentando reali<ar la rece'ci,n de datos con el 'uerto serie& ;omo tam3in esta3a 'ro3ando la soluci,n !ava ( encontr una li3rerDa de 1acil uso descart se-uir desarrollando esta a'licaci,n en len-ua8e M;NN&
%#
I.T.I.S
En el es4uema 'odemos di1erenciar los * di1erentes niveles del /ard0are 4ue com'onen nuestro micro3ot& "P)a$a SA*'#$E El cere3ro de nuestra m@4uina es la ')a$a SA*'#$, 4ue contiene el microcontrolador ( 4ue se encar-a de 'rocesar la in1ormaci,n 4ue le lle-a desde la 'laca de a'o(o >la s9(#2*? mediante los di1erentes 'uertos >A,C ( ;? & Tam3in se encar-a tanto de inter'retar las ,rdenes 4ue nos lle-an desde el ordenador, como de enviar la in1ormaci,n del estado al mismo& Todo esto lo /ace mediante el c/i' de comunicaci,n >%) MAG-0-?&
%*
I.T.I.S
"P)a$a SA*-:0E La tar8eta con el c/i' #2* nos servira como una 'laca de a'o(o, un sim'le inter1a< /ard0are, 'ara conectar los di1erentes com'onentes 4ue usar@ el micro3ot 'ara desenvolverse 'or el entorno& Estos com'onentes son desde los motores, /asta cada uno de los sensores 4ue usemos& Toda la in1ormaci,n de estos dis'ositivos es reco-ida ( enviada mediante los 'uertos de la tar8eta >A,C ( ;?& "Or"%!a"or Por+a+#)E Es una ca'a secundaria& +u Bnica la3or es la de monitori<ar los datos 4ue envDe el micro3ot& Tam3in tiene la 'osi3ilidad de mandar instrucciones al micro3ot >selecci,n de caminos ( en modo manual su control?&
%5
I.T.I.S
/.
%6
I.T.I.S
%)
I.T.I.S
%.
I.T.I.S
CN 0 )a+%ra)%&
B13'%r&
%:
I.T.I.S
LDR
%2
I.T.I.S
/.-. Mo"#=#$a$#(!%& /.-.1. Mo"#=#$ar )o& &%r.o& Para la modi1icaci,n del servo necesitarmos las si-uientes /erramientas ( materialesE !"T# !#estornilladores pe$ueos %tanto de estrella como planos& !Soldador !lima !pinzas electr'nica !tenacillas !estao !cable trenzado %azul ( blanco&
Primero de3emos desmontar el servo, 'ara ello destornillaremos la rueda del e8e &
#$
I.T.I.S
Una ve< con el circuito al aire 'odemos sacar con cuidado todo el mecanismo& Kos 4uedar@ el servo como 'odemos ver en la ima-en&
#%
I.T.I.S
+i nos 1i8amos en los en-rana8es 3lancos>E%,E#,E* ( E5?, veremos 4ue estan en-rasados& Es im'ortante 4ue cuando los va(amos a mani'ular, nos ase-uremos de 4ue no sustraemos esta -rasa (a 4ue es la 4ue 1acilita el movimiento del motor& Lo 4ue /aremos acontinuaci,n es retirar el en-rana8e su'erior >E#? ( acto se-uido el en-rana8e ne-ro >E%? como indicamos en la si-uiente ima-en&
Tras /acer esto, el e8e del motor elctrico nos 4ueda li3re& +olo de3emos 'resionar /acia a3a8o ( el motor 8unto con la circuiterDa 4uedar@ desaco'lado&
##
I.T.I.S
La 'arte si-uiente es delicada, (a 4ue tendremos 4ue /acer uso del soldador& R%$or"ar 21% !o "%7%3o& a')#$ar "1ra!+% 31$8o +#%3'o %) &o)"a"or %! 1! $#r$1#+o o $o3'o!%!+% %)%$+r(!#$o *a 21% '1%"% $a1&ar "aHo& #rr%'ara7)%&. Procedemos a desoldar el motor mediante la 3om3a sucionadora >MTD? ( el soldador& +e-uramente nos /a-a 1alta re'etir varias veces el 'roceso soldadorGMTD antes de 'oder retirar el motor&
;on el motor li3re del circuito tan solo de3emos soldar el 'ar de ca3les en el motor& El colorG'olaridad 4ue us en mi monta8e 1ue a<ul >N? G3lanco>"??& La 'olaridad del motor viene marcada en la 'arte in1erior con una marca ro8a 'ara la 'olaridad >N?&
#*
I.T.I.S
;on el motor ca3leado, solo nos 4ueda introducirlo en la carcasa ( atornillarlo >/acer los 'asos inversos 'ara montar los en-rana8es?&Es interesante /acer un nudo 4ue /a-a de to'e 'ara nuestros ca3les ( asD 'rote-erlo de 'osi3les tirones 4ue 'uedan a1ectar a las soldaduras&
#5
I.T.I.S
Antes de colocar la 'arte su'erior de la ca8a, se de3e 4uitar el to'e del e8e ne-ro& Para ello usaremos las tenacillas ( lue-o 'asaremos la lima 'ara 4ue no 4uede nin-una as'ere<a 4ue 'ueda entor'ecer el -iro&
#6
I.T.I.S
A/ora esta todo montado& +olo 4ueda cerrar del todo el motor ( (a tendremos listos los motores 'ara su uso&
;on los servos trucados solo nos /ace 1alta 'e-arle las ruedas de Le-o& ;o-eremos la 'istola de silicona ( 'e-aremos am3as ruedas a las 'lata1ormas circulares del e8e del motor&
#)
I.T.I.S
/.0.
La 'laca +9(#2* ser@ la encar-ada de conectar todos los sensores ( motores 4ue 4ueramos usar con nuestra 'laca controladora >la +9('ic?& Por lo 4ue 'rocederemos a montar todos los sensores ( los servos 4ue 'reviamente /emos modi1icado& La coneFi,n de los sensores ( servos ir@n distri3uidos en los 'uertos como mostramos a continuaci,n&
#.
I.T.I.S
/.,.
La 'laca +9(#2* (a est@ conectada a los sensores ( los servos& Pero nos 1alta el Acere3roA del micro3ot& Este es el PI;%)=:.)A 4ue viene montado en la 'laca +9('ic& Aun4ue 'ara tra3a8ar con el PI;, necesitemos 4uitarlo de la 'laca, 'odemos ir aco'lando las dos 'lacas& Para reali<ar esto necesitaremosE "Separadores !Tornillos !#estornillador plano !)ables de bus plano Este 'roceso es mu( sencillo& +olo de3emos atornillar los se'aradores 'ara 4ue 4uede 'or la 'arte su'eriror de la 'laca +9(#2* ( 4ue asD 'ueda sostener la 'laca +9(3ot& De8amos esta Bltima 'or encima, (a 4ue si tra3a8amos 4uitando el PI; nos a/orramos el tener 4ue desmontar las 'lacas& Ademas como la +9('ic lleva la comunicaci,n >el 'uerto serie? es me8or cuanto m@s alto est >entor'ece menos el ca3le?& Luedar@ como mostramos en la si-uiente ima-en&
#:
I.T.I.S
En la ima-en anterior se 'uede ver tam3in como aco'lamos todos los 3uses >4uedando comunicados los sensores ( motores con la 'laca +9('ic?& +olo nos 4ueda inserta las 'lacas en nuestro c/asis en el si-uiente /a3it@culo ( /a3remos 1inali<ado&
#2
I.T.I.S
/./. Pr%'ara$#(! "%) PIC Para 'oder tra3a8ar con el PI; sin necesidad de la 'laca 'ro-ramadora, necesitaremos 'rimero introducirle el 1ic/ero Cootloader& Este 1ic/ero nos 'ermite usar la 'ro'ia +9('ic como 'ro-ramadora , lo 4ue nos a/orra el tener 4ue estar sacando ( 'inc/ando el PI; cada ve< 4ue /a-amos una modi1icaci,n al 'ro-rama controlador& Para introducir el 1ic/ero Cootloader reali<aremos los si-uientes 'asos E %"Pinc/ar el PI; en la 'laca 'ro-ramadora
*$
I.T.I.S
#";onectar la 'laca 'ro-ramadora en con al 'uerto serie (altamente recomendable que sea un puerto serie real y no un conversor US !SE"#E$&
*%
I.T.I.S
*#
I.T.I.S
**
I.T.I.S
*5
I.T.I.S
."Reali<ar la -ra3aci,n
*6
I.T.I.S
*)
I.T.I.S
*.
I.T.I.S
;omo 'odemos com'ro3ar en la ima-en todo los valores estan marcados con una IFI& Esto se de3e a 4ue no tenemos coneFi,n con el dis'ositivo, tal como in1orma el a'artado de coneFi,n&
Para comen<ar las 'rue3as con la 'laca montada conectaremos el ca3le serie a la 'laca ( al ordenador& Lue-o seleccionaremos el 'uerto serie con1i-urado 'ara el uso de la 'laca >en nuestro caso es el 'uerto ;O7 5?
*:
I.T.I.S
;on el 'uerto serie seleccionado 'rocedemos a descar-ar la a'licaci,n monitor en el 'ic >a&%g1rar&% "% 21% )a ')a$a %&+@ a)#3%!+a"a?& A/ora 'ulsaremos el 3ot,n a3rir, 4ue se encuentra situado al lado de la 'estaa de selecci,n de 'uerto& A continuaci,n 'ulsamos el 3ot,n de Adescar-a monitorA& A'arecer@ una 3arra de 'ro-reso 4ue nos indica la -ra3aci,n del 'ro-rama en el 'ic& veremos como cam3ian el estado de coneFi,n ( los valores de los sensores se re1le8an en la a'licaci,n
;on esto /a3remos com'ro3ado el 1uncionamiento tanto de la coneFi,n como de los di1erentes com'onentes&
*2
I.T.I.S
Dada la naturale<a del 'ro(ecto, los casos de uso s,n mu( limitados& Las acciones 4ue 'uede reali<ar el o'erario se reducen a unas cuantas ,rdenes& #iagrama de casos de uso para la aplicaci'n monitor
5$
I.T.I.S
-rden caminoE ;on estas ,rdenes mandamos al ro3ot 4ue e8ecute un recorrido se-Bn la elecci,n del o'erario& -rden o,imientoE 7ediante la inter1a< -r@1ica el usuario 'uede mane8ar el ro3ot a su anto8o& -rden .omeE Para 4ue el micro3ot sea ca'a< de tener un 'unto de re1erencia tras moverse en modo manual el o'erario de3e seali<arselo al ro3ot& /arada de emergenciaE Al tratarse de una m@4uina 4ue de3e tra3a8a de 1orma aut,noma es aconse8a3le tener una orden de 'arada de emer-encia& Al entrar en modo 'arada de emer-encia el micro3ot con-elar@ sus acciones a la es'era de 4ue se le 'ermita continuar& 9. D#agra3a "% "%&')#%g1% icrobot ( el pc
5%
I.T.I.S
:. :.1.
5#
I.T.I.S
5*
I.T.I.S
55
I.T.I.S
56
I.T.I.S
5)
I.T.I.S
5.
I.T.I.S
$)a&& Ro7o+Ma#!
Esta es la clase 'rinci'al del 'ro-rama monitor& $)a&& I3ag%& Esta es la clase 4ue contiene cada una de las la3els 4ue se utili<an en la a'licaci,n 'ara re'resentar los datos&
5:
I.T.I.S
$)a&& Mo!#+or
;lase 4ue 'inta cada uno de los elementos de la ventana de la a'licaci,n & $)a&& B1++o!A$+#o!&
;lase 4ue contiene cada una de las acciones de los 3otones de la a'licaci,n&
52
I.T.I.S
$)a&& S%!"S#!g)%Da+aA$+#o!
;lase 4ue se encar-a de enviar un caracter 'or el 'uerto serie& $)a&& S%!"Togg)%A$+#o!
6$
I.T.I.S
$)a&& E&+a"oRo7o+ La 1unci,n de esta clase es contener cada uno de los valores 4ue com'onen el estado del ro3ot ( los re-istros del 'uerto A ( el 'uerto C&
6%
I.T.I.S
$)a&& Ro7o+O7&%r.%r
Esta clase se en car-a de actuali<ar la ventana cuando recive los datos 4ue le 'asa la clase Lector& $)a&& D%=#!#+#o!& La clase De1initions contiene los valores de las m@scaras 4ue usamos 'ara inter'retar los datos 4ue nos lle-an desde el micro3ot& Por le-i3ilidad los valores de las m@scar@s son los mismos 4ue en el c,di-o ;&
6#
I.T.I.S
:.-.
Progra3a $o!+ro)a"or
6*
I.T.I.S
:.-.- L#7r%r#a& El 'ro-rama en ; se divide en las si-uientes li3reriasE I=1!$#o!%&J&A*7o+.8: En esta li3reria se inclu(en las 1unciones de uso -enrico& void Seguir3*inea(void$: El ro3ot reali<a un movimiento de'endiendo de lo 4ue ca'ten los sensores * ( 5E Mo.#3#%!+o Recto Giro i<4uierdo Giro Derec/o Parar L%"K0L 01GR01GR2L30)2L30)L%"K,L 01GR2L30)01GR2L30)-
void ,ambiar3'rientacin(unsigned c4ar giro$: El ro3ot reali<a un -iro de %:$J tomando como e8e central la linea ne-ra donde est situado& El sentido del -iro se le 'asa como varia3le& unsigned c4ar giroO El sentido del -iro& +i se 'asa III -irar@ /acia la i<4uierda& +i se le 'asa el valor IDI, -irar@ a la derec/a
65
I.T.I.S
unsigned c4ar Estado3Sensores(void$5 ;om'rue3a el valor de los sensores laterales % ( #& De'endiendo de la com3inaci,n del estado de los sensores devuleve un valorE L%" K1L 2L30)01GR2L30)01GRL%" K-L 2L30)2L30)01GR01GREa)or "%.1%)+o 4 5 6 7
I$o31!#$a$#o!J&A*7o+.8:En esta 1unci,n vienen de1inidas las constantes 'ara la con1i-uraci,n del 'uerto serie del ro3ot, asD como las 1unciones de envio ( rece'ci,n de datos& void sci3conf(void$: Iniciali<a los re-istros del PI; 'ara 4ue se 'ueda usar el 'uerto serie& unsigned c4ar sci3read(unsigned c4ar6 dato$: ;om'rue3a si el 3u11er del 'uerto serie no esta vacio& +i no lo est@ -uarda en la direcci,n del 'untero el dato recivido& Lue-o si /a -uardado al-Bn dato devuelve un %, en caso contrario devuelve un $& unsigned c4ar6 dato5 Puntero 4ue nos -uarda los datos 4ue envDa el ordenador& void sci3write(unsigned c4ar car$: ;om'rue3a 4ue el 'uerto serie le 'ermita transmitir& En caso a1irmativo manda al ordenador el caracter 4ue le 'asemos& unsigned c4ar carE varia3le donde se encuentra la varia3le 4ue 4ueremos enviar 'or el 'uerto serie &
66
I.T.I.S
I$a3#!o&.8E En esta li3reria se de1inen cada una de las 1unciones 'ara recorrer los caminos& Tam3in se inclu(e las 1unciones de iniciali<aci,n de estado 'ara cada camino& void #niciali7a( unsigned c4ar camino8 Estado6 estado$E Iniciali<a el re-istro de estado del ro3ot se-Bn el camino seleccionado& unsigned c4ar camino5Maria3le donde se -uarda la selecci,n del camino ele-ido 'or el usuario& Estado6 estadoE Puntero al re-istro del estado del ro3ot 'ara 'oder actuali<ar los valores del mismo& void ,amino3#7q(Estado6 estado$E =unci,n 4ue reali<a los 'asos 'ara recorrer el camino i<4uierdo& Estado6 estado:Puntero al re-istro del estado del ro3ot& Kecesario 'ara ir actuali<ando al micro3ot so3re su situaci,n en el camino& void ,amino3"ec(Estado6 estado$E =unci,n 4ue reali<a los 'asos 'ara recorrer el camino central& EstadoP estadoEPuntero al re-istro del estado del ro3ot& Kecesario 'ara ir actuali<ando al micro3ot so3re su situaci,n en el camino& void ,amino3+er(Estado6 estado$E =unci,n 4ue reali<a los 'asos 'ara recorrer el camino derec/o& Estado6 estado:Puntero al re-istro del estado del ro3ot& Kecesario 'ara ir actuali<ando al micro3ot so3re su situaci,n en el camino&
6)
I.T.I.S
I$8%21%o.8: En esta li3reria vienen de1inidas las estructuras 4ue usaremos 'ara -uardar el estado del ro3ot& Adem@s inclu(e las 1unciones 4ue actuali<an estos re-istros ( la 1uncion 4ue se encar-a del envio de 'a4uete a la a'licaci,n monitor& Los re-istros E +*'%"%= &+r1$+ M 1!&#g!%" $8ar &a)+o&I"aN 1!&#g!%" $8ar &a)+o&E1%)+aN 1!&#g!%" $8ar &a)+o&R%&+a!+%&N 1!&#g!%" $8ar r%a)#za!"oSa)+oN 1!&#g!%" $8ar $a3#!oN 1!&#g!%" $8ar .o).#%!"oN 1!&#g!%" $8ar %3%rg%!$#aN 1!&#g!%" $8ar $argaN 1!&#g!%" $8ar 8o3%N 1!&#g!%" $8ar a1+o3a+#$oN 1!&#g!%" $8ar &%!+#"oN 1!&#g!%" $8ar or"%!J3a!1a)N O E&+a"oN Re-istro donde se -uarda el estado del ro3ot, dondeE " unsigned c4ar saltos#da5 KBmero de saltos 4ue se dan en el recorrido a la ida "unsigned c4ar saltos9uelta5 KBmero de saltos 4ue se dan en el recorrido a la vuelta& "unsigned c4ar saltos"estantes5 ;ontador de saltos 4ue 4uedan en el camino en curso& "unsigned c4ar reali7andoSalto5 7arca 4ue nos indica si estamos en medio
6.
I.T.I.S
de una o'eraci,n de salto& Iunsigned c4ar camino:Maria3le donde -uardamos el camino seleccionado& Iunsigned c4ar volviendo: 7arca 4ue nos indica si estamos re-resando de un camino& Iunsigned c4ar emergencia: 7arca 4ue nos indica si estamos en una 'arada de emer-encia& Iunsigned c4ar carga: 7arca 4ue nos indica si /emos car-ado el ro3ot o si va vacio& Iunsigned c4ar 4ome: 7arca 4ue nos indica si nos encontramos en el 'unto de inicio& Iunsigned c4ar automatico: 7arca 4ue nos indica si estamos en modo autom@tico& Iunsigned c4ar sentido: varia3le donde -uardamos el sentido del -iro& Iunsigned c4ar orden3manual: varia3le donde -uardamos la orden reali<ada manualmente&
6:
I.T.I.S
+*'%"%= &+r1$+ M #!+ 7*+%&J%!.#a"o&N 1!&#g!%" $8ar 'or+AN 1!&#g!%" $8ar 'or+BN 1!&#g!%" $8ar &+a+%N O Pa21%+%N Re-istro donde -uardamos la trama 4ue vamos a enviar desde el micro3ot a la a'licaci,n monitor , dondeE " int bytes3enviados: Maria3le donde reali<amos la cuenta de los 3(tes enviados& Iunsigned c4ar portA: Maria3le donde -uardamos los valores de los 3its del 'uerto A& Iunsigned c4ar port : Maria3le donde -uardamos los valores de los 3its del 'uerto C& Iunsigned c4ar state: Maria3le donde -uardamos los valores de los 3its del estado del ro3ot& unsigned c4ar ,4equea3Estado (Estado6 estado$E =unci,n 4ue a'lica las m@caras del ro3ot 'ara traducir a un -ru'o de : 3its >unsi-ned c/ar? el valor del re-istro de estado del ro3ot& Estado6 estado:Puntero al re-istro del estado del ro3ot& Los valores de este re-istro ser@ los 4ue tradu<camos a un -ru'o de : 3its& void enviar(Estado6 estado8 Paquete6 paquete$E =unci,n 4ue se encar-a del envio en 'a4uete de cada uno de los re-istros del micro3ot& Estado6 estadoE Puntero al re-istro de estado 'ara 'oder leer los datos de este re-istro&
62
I.T.I.S
Paquete6 paqueteE Puntero al re-istro donde em'a4uetamos la in1ormaci,n 4ue enviaremos a la a'licaci,n monitor&
I"%=#!#$#o!%&.8E A4uD vienen de1inidas cada una de las m@scaras 4ue usaremos 'ara inter'retar los 3its de los re-istros del ro3ot&
)$
I.T.I.S
:.-.0 B1!$#(! 'r#!$#'a) B1!$#o!%&: void Parada3Emergencia(void$:=unci,n 4ue -uarda el estado del ro3ot ( lo mantiene 'arado /asta 4ue no recive la de nuevo la orden de 'arada de emer-encia& En el reinicio se devuelve al ro3ot el estado anterior a la 'arada& void #nterpreta3'rden(unsigned c4ar orden$:=unci,n 4ue reali<a la selecci,n del movimiento 4ue se va a reali<ar& unsigned c4ar orden5 Maria3le donde -uardamos la orden 4ue vamos a reali<ar& void ,ontrol3manual(void$: =unci,n 4ue 'one al ro3ot en control manual& Para reali<ar las ordenes escuc/a el 'uerto serie ( le 'asa a la 1unci,n #nterpreta3'rden( $ las instrucciones& ;uando recive la instrucci,n Qome el modo manual termina ( el micro3ot 'asa a modo escuc/a& void ,aminos(Estado6 estado$E =unci,n 4ue selecciona la 1unci,n del camino seleccionado& Estado6 estadoE'untero al re-istro del ro3ot& Lo necesitamos 'ara consultar el camino 4ue tiene seleccionado&
Para el desarrollo de estas li3rerDas usamos las si-uientes li3rerias 'ro'ietarias E "li3reriaRs9(3ot&/ >desarrollada 'or !uan G,n<ale< G,me<? "dela($&/ >desarrollada 'or !uan G,n<ale< G,me<? "'%)1:.)a&/ >desarrollada 'or 7icroc/i' Tec/nolo-( Inc& ?
)%
I.T.I.S
En la anterior ima-en 'odemos ver como lle-an $ al 'uerto, esto 4uiere decir 4ue el 'uerto esta vacio de in1ormaci,n& +e-Bn las lecturas nos vienen di1erentes valores
)#
I.T.I.S
En la 'antalla anterior vemos la consola reciviendo in1ormaci,n desde el micro3ot& +i ocurriese cual4uier 1allo vendrDa re1le8ado en la consola&
)*
I.T.I.S
)5
I.T.I.S
RELACIQN DE DOCUMENTOS
Documento Plie-o de condiciones Plani1icaci,n Presu'uesto 7emoria 7anual de usuario KJ de '@-inas ## 56 2 )) %:
)6
I.T.I.S
))