Si has visto algún concurso de robótica y quieres participar, o estás interesado en construir un robot seguidor de línea quizás este proyecto pueda ayudarte. Construcción detallada de un robot velocista básico, fácil de hacer y de bajo coste, para iniciarse en esta prueba. unque ya está todo dicho en el proyecto !obot "ero, "ero, vuelvo a hacer un peque#o resu$en aquí con la versión final.
%no de los proyectos que tene$os en co$ún varias personas en el C.&.r.'. es el desarrollo de robots velocistas, por lo que lleva$os ya $eses hablando sobre el te$a y discutiendo ideas. &ntentando sintetizar parte de las ideas subo aquí $i versión final con la que cierro el proyecto de robot velocista de iniciación, a no ser que $e haya equivocado en algún pin del pcb o si$ilar dejo aquí el $undo de los velocistas. (o soy e)perto en el te$a y sólo he ido a un par de concursos, a falta de infor$ación disponible espero que a alguien que quiera ir a un concurso y sepa aún $enos que yo del te$a le pueda ayudar. ayudar. 'so sí no garantizo garantizo el funciona$ien funciona$iento to de nada, sólo pongo lo que a $i $e ha funcionado, por lo que si alguien lo $onta que lo haga según su criterio. %na opción es co$prar el velocista entero directa$ente, en internet se pueden encontrar algunos robots velocistas para co$prar. (o lo reco$iendo ya que pierde toda la gracia el asunto, nos dan todo hecho y la $ayor parte del progra$a, por lo que lo único que hay que hacer es darle al botón. * supongo que en los concursos concursos no ad$itirán ad$itirán su participación, participación, ya que el $+rito del que lo lleva es $íni$o y por tanto poco digno de ser pre$iado. o pri$ero a la hora de $ontar un robot es elegir los co$ponentes y es donde toda persona que quiere hacer su pri$er robot encuentra la pri$era dificultad, qu+ $otor elegir, qu+ sensores, etc.. o $ejor que he encontrado son los co$ponentes de -ololu -ololu,, por un precio $uy razonable encontra$os todos los co$ponentes necesarios para construir un robot que no lo haga $al en los concursos, no va$os a ganar pero lo $is$o pode$os pasar la pri$era clasificatoria, lo que sería un resultado satisfactorio satisfactorio para $uchos principiantes. i elección de co$ponentes es la siguiente/
•
-laca de control $ás progra$ador 012.34. 012.34.
•
-laca de sensores 025.34. sensores 025.34.
•
!uedas 06.37. !uedas 06.37.
•
!ueda loca 08.33. loca 08.33.
•
Soporte $otores 05.33. $otores 05.33.
•
9C:9C 022.34. 9C:9C 022.34.
•
;atería 022.34. ;atería 022.34.
•
Cargador 026.34. 026.34.
•
otor < <- 012.3= >opción ?.
•
otor 012.3= 012.3= >opción ;?.
-ode$os elegir dos $otores para el proyecto, si tu objetivo es hacer un pri$er robot y te confor$as con que funciones reco$iendo la opción ;, si tu objetivo es intentar ir lo $ás rápido posible reco$iendo la opción . 'l proble$a de la opción es que son $otores que consu$en $ucha intensidad y e)iste la posibilidad de que$ar el 9C:9C, es $uy poco probable que$arlo, pero la posibilidad está ahí, para $i gusto son los $ejores $otores que pode$os co$prar por ese precio. Con la rueda seleccionada y la opción ; se pueden alcanzar velocidades sobre 8 $@s, $ientras que con la opción podre$os alacanzar los 5 $@s. 'n total por unos 0288.66 tene$os todos los co$ponentes necesarios para el velocista, a lo que habría que su$arle unos 02=:24 apro)i$ada$ente en co$ponentes para unirlo todo. -onga -onga$o $oss el proy proyect ecto o co$p co$ple leto to sobr sobree uno unoss A2==: A2==:22 22= = al ca$b ca$bio io en $ate $ateri rial al.. o oss co$ponentes se encuentran en dos tiendas y los gastos de envio de cada una están entre 02= y 024 por correo nor$al y suelen tardar B:28 días, he realizado pedidos $uchas veces y sie$pre llegan y no suelen caer en aduanas. ún así si quere$o quere$oss co$pra co$prarlo rlo todo en un sólo pedido en http/@@.robotshop.co$@eu econtra$os todos los co$ponentes, aunque sale $ás caro ya que co$o toda tienda te hacen el ca$bio 02 D A2, por lo que la $ayoría de las veces sale $ejor co$prar directa$ente en 0 0. -ara unir todos los co$ponentes tene$os dos opciones/ usar un pcb que a la vez sirva de base del robot para conectarlo todo, o usar un pcb@placa de d e topos que poner en una base que fabrique$os. -ongo foto de las dos opciones/
a $ejor opción de a$bas para nuestros objetivos es la de construir un base sobre la que poner el pcb, ya que nos va a per$itir tener un robot versátil al que le pode$os poner distintas bases con diferente longitud y anchura, lo que nos per$itirá probar y e)peri$entar con diferentes configuraciones y adaptarnos a los circuitos que nos den en los concursos. -or eje$plo en un circuito con curvas con un radio grande y rectas largas nos puede interesar llevar una base $ás larga y ancha, $ientras que si nos dan un circuito con $uchas curvas peque#as y poca recta puede ser $ejor opción una base peque#a. de$ás las di$ensiones del robot dependen de las inercias y la fuerza de roza$iento del robot que nos adhiere al suelo, por lo que $uchas veces la única for$a de encontrar las di$ensiones ópti$as es probando distitnas bases. Si $onta$os todo el robot en un pcb pues no podre$os ca$biar sus di$ensiones, los robots que venden hechos vienen $ontados en un pcb ya que es $ás fácil integrar todo y supongo que $ás barato de fabricar, el ahorro de peso es $íni$o ya que la base en plástico pesa $ás o $enos igual que el pcb. -or lo que para un pri$er robot con el que aprender y e)peri$entar la $ejor es tener bases interca$biables. a idea final es tener algo co$o +sto, un robot que $ontar sobre distintas bases.
-or lo que lo pri$ero podría ser e$pezar a construir la base, para ello nos hace$os una plantilla a $ano o con el pc que pega$os sobre un trozo de -EC e)pandido o fore) de 1$$, con un punzón $arca$os los agujeros de los $otores > han de ir en la plantilla ya que deben quedar bien alineados? y con una cuchilla corta$os y $arca$os en el -EC la plantilla, pasando luego a recortarla y hacer el resto de taladros, el -EC e)pandido de 1 $$ se puede cortar y trabajar a $ano. djunto un par de plantillas de bases de eje$plo >las di$ensiones de los robots en los concursos $á)i$as son de 1= c$ de largo y 8= c$ de ancho? y una foto del proceso para realizar la base. ;ase 2. 2. ;ase 8. as di$ensiones de la base para $i gusto no son las ideales, pero son las que he probado.
a otra parte que necesita$os para unir los co$ponentes es realizar un pcb o utilizar una placa de topos co$o e)plicó Fuiller$o en la entrada anterior. de$ás esta placa nos servirá para pegar con cinta de doble cara la batería elegida, de tal for$a que quede por debajo del robot, lo que proporciona un centro de gravedad lo $ás bajo posible. a placa de la electrónica se puede ver aquí >clicG para $ayor detalle?/
as características con los co$ponentes $ontados serían las siguientes/ •
7 entradas digitales de senores ó 6 analógicas en los sensores centrales >no he querido desoldar el potencio$etro del 9C para poner los 7?.
•
-in para encender y apagar los sensores y así ajustar el nivel de luz que e$iten.
•
9os diodos leds.
•
%n pulsador para dar la salida, calibrar unos sensores !C, etc..
•
•
9os interruptores para seleccionar distintas estrategias en el concurso, funda$ental para ca$biar la velocidad contra un oponente, o arriesgar $ás si he$os perdido la pri$era ronda. %n dc:dc que nos proporciona una tensión de referencia fija para la velocidad de los $otores, por lo que facilita el algorit$o de control.
•
•
%n conector con salida de 4E y pines HI y !I de la %S!H del $icrocontrolador, para conectar un $ódulo de co$unicaciones si quere$os $andar datos del robot al -C. 9uración de la batería/ 87 $inutos >ciclo de trabajo 26=@844, E$ed D 824 c$@s en circuito de prueba?.
Si usa$os los $otores de alta intensidad el 9C:9C lo pode$os que$ar si no pone$os el condensador electrolítico que está a la altura del regulador, o si lo pone$os de un valor peque#o. unque es el condensador del $ontaje típico de cualquier regulador disipativo está proporcionando el pico de intensidad necesaria a los $otores cuando su f.c.e.$. es baja. o llevo con un valor de 88 uJ y es suficiente para que los $otores vayan a velocidad altas.
no s+ que integrado lleva? y se acaba que$ando, ya que los $otores <- pueden tener picos de hasta 2.6 por $otor y el 9C:9C sólo ad$ite 8 de entrada. -oniendo este condensador >una vez visto se podría poner $ás cerca del dc:dc o duplicar? no deberia$os tener proble$as de que$ar el dc:dc para una buena velocidad del robot. Con los $otores de baja intensidad no hay proble$a ya que sólo consu$en =.16 co$o $á)i$o a 6E. -ara conectar la placa de control y el dc:dc pone$os una tira de pines he$bra, donde los insertare$os, de esta for$a pode$os sacar la placa para utilizarla en otros proyectos y el dc:dc para ajustar la tensión de salida a distintos valores según los $otores a utilizar. Si usa$os los $otores de alta intensidad lo pondre$os sobre 4.4:6.4 E y si usa$os los de baja pode$os ponerlo a 3E para sacar $ás par y velocidad de ellos. os conectores de la batería, tira de pines que se ven en la i$agen, botones y de$ás ta$bi+n lo pode$os co$prar en -ololu >cuanto $ayor el pedido $ayor la posibilidad de aduana?, aunque en cualquier tienda física de electrónica se pueden encontrar los co$ponentes a un precio razonable. 'l esque$a para unir toda la parte de la electrónica >clicG en la i$agen para $ás detalle?, si todos los pines están bien asignados >no $e haya confundido en alguno ya que no lo he repasado? así se quedaría.
C2 y C8 son los condensadores electrolíticos de 88 $icroJaradios, !2 !8 y !5 5B= Kh$ios, !2= !B y !7 11= Kh$ios, !1 !4 y !6 24L, un regulador disipativo de 4E $irando su caída, si saca$os del dc:dc 3E podría$os poner un B7=4, pero sacando sólo 6E pues $ejor poner uno con un caída de tensión $enor co$o un J4=;-, 5352;E, es decir cualquier ldo. os co$ponentes S9 28=6. os co$ponentes $ontados en el pcb y el fotolito.
Montamos el pcb y lo ponemos en la base del robot, para conectar los motores se pueden poner un par de conectores o soldar los cables directamente. Lo siguiente es pegar la batería con cinta de doble cara al pcb y hacer un agujero para pasar el cable.
Coloca$os la rueda loca, pode$os usar unos tornillos para fijarla o pegarla directa$ente aunque +sto signifique tener que usar una por base. -or últi$o coloca$os la placa de sensores haciendo los correspondientes agujeros para pasar los tornillos, y hace$os el cables para unir los sensores con la placa de electrónica. !especto a la placa de sensores que co$pra$os hay que ca$biar o quitar unas resistencias, ya que los lleva$os $uy pegados al suelo y vienen pensados para una $ayor distancia.
'n la i$agen superior se puede ver co$o se ha soldado una resistencia de 2== Kh$ios >2=2? y desoldado dos resistencias, esas dos resistencias en paralelo vienen para li$itar la corriente de los diodos, pode$os quitar una o quitar las dos y soldar una donde aparece en la ia$gen de $ayor valor. unque no he probado $uchos valores una resistencia de unos 78 oh$ios podría funcionar bien, depende, ya que algunas placas de -ololu nos la dan con resistencias de 51 Kh$ios y otras con resistencias de 66 Kh$ios en los diodos. Ktra cosa que he$os podido co$probar es que estos sensores son terribles para hacer lecturas en analógico, ya que su orientación >inclinación? afecta enor$e$ente a la lectura, por lo que si el robot vibra u oscila, o la pista no es total$ente lisa pode$os encontrar proble$as, pero bueno esto se ve bien cuando desarrolle$os la parte de la tele$tría en el C.&.r.'., que supongo que será lo siguiente. -or lo que todo $ontado queda una cosa así/
'sta sería la parte de la base y ahora falta la parte de la progra$ación, adjunto un progra$a sencillo para estos robots que sigue la línea sin oscilar a una velocidad constante. l progra$a no se le ha dedicado tie$po, es el pri$ero que hic+ y ha ido pasando de robot a robot porque parecía que funcionaba, por lo que puede tener fallos por algún lado. a idea es $uy sencilla, $edir la distancia de la línea al centro de los sensores, $edir la velocidad con la que se aleja o se acerca la línea al centro de los sensores, $ultiplicar estas $edias por unas constantes que utiliza$os para ajustar la respuesta del robot, su$arlas y convertir la cantidad obtenida en una diferencia de velocidad entre los $otores, lo que provoca el giro. -rogra$a. -ongo un par de videos en los que se puede ver el funciona$iento del progra$a, el segundo de ellos a cá$ara lenta >a partir del segundo 1=?. 'l robot va $ontado en la base $ás larga y la tensión de salida del dc:dc es 6.5 E. >ALGORITMO EN ARDUINO
Minclude NOH!Sensors.hP @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@QQQQQQQQQQQQQ -rogra$a realizado por !LK . C;'!K K!'(KQQQQQQQQQQQQQQQ @@ @@ Solo para fines educativos @@ @@ robot velocista $ini JL ;KH E 8.= @@ @@ $icro $otores pololu - 2=/2, sensores qtr 7rc, driver drv7711, arduino nano @@ =4@28@8=25 @@ CH%&"9K 83@1@8=24 @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Mdefine (%RS'(SK!S 7 @@nu$ero de sensores usados Mdefine H&'K%H 8=== @@ tie$po de espera para dar resultado en uS Mdefine '&HH'!R-&( 6 @@pin led on @@@@@@@@@@@@@@@pines arduino a utilizar@@@@@@@@@@@@@@@@@@@@@ Mdefine led2 21 Mdefine led8 5 Mdefine $otRi B Mdefine $otRd 7 Mdefine sensores 6 Mdefine botonR2 8 @@pin para boton Mdefine pinRp$Ri 3 Mdefine pinRp$Rd 2= OH!Sensors!C qtrrc>>unsigned charT? U23, 27, 2B, 26,24,25,22,28V ,(%RS'(SK!S, H&'K%H, '&HH'!R-&(?W @@variables para al$acenar valores de sensores y posicion unsigned int sensorEalues(%RS'(SK!STW unsigned int positionD=W @@@ variables para el pid int derivativoD=, proporcionalD=, integralD=W @@para$etros int salidaRp$D=, proporcionalRpasadoD=W @@O%& C;&'!'KS KS -!'H!KS 9' (%'SH!K !K;KH int velocidadD28=W @@variable para la velocidad, el $a)i$o es 844 float LpD=.27, LdD5, LiD=.==2W @@constantes @@variable para escoger el tipo de linea int lineaD=W @@ = para lineas negra, 2 para lineas blancas void setup>? U delay>7==?W pinode>$otRi, K%H-%H?W@@pin de direccion $otor izquierdo pinode>$otRd, K%H-%H?W@@pin de direccion $otor derecho pinode>led2, K%H-%H?W @@led2 pinode>led8, K%H-%H?W @@led8 pinode>botonR2, &(-%H?W @@boton 2 co$o pull up
@@
for >int i D =W i N 5=W iXX? @@calibracion durante 8.4 segundos, U @@para calibrar es necesario colocar los sensores sobre la superficie negra y luego digitalYrite>led2, <&F8=?W qtrrc.calibrate>?W @@funcion para calibrar sensores digitalYrite>led2, KY?W delay>8=?W V digitalYrite>led2, KY?W @@apagar sensores para indicar fin @@de calibracion delay>5==?W digitalYrite>led8,<&F
hile>true? U int )Ddigital!ead>botonR2?W @@lee$os y guarda$os el valor @@ del boton en variable ) delay>2==?W if>)DD=? @@si se presiona boton U digitalYrite>led8,KY?W @@indica$os que se presiono boton digitalYrite>led2,<&F2==?W breaGW @@salta$os hacia el bucle principal V V
V
void loop>? U @@pid>=, 28=, =.27, 5, =.==2?W pid>linea,velocidad,Lp,Li,Ld?W @@funcion para algorit$o pid @@>tipo,flanco de co$paracion?
V
@@frenosRcontorno>=,B==?W frenosRcontorno>linea,B==?W @@funcion para frenado en curvas tipo @@= para lineas negras, tipo 2 para lineas blancas @@flanco de co$paración va desde = hasta 2=== , esto para ver @@si esta en negro o blanco
@@@@@@@@funciones para el control del robot@@@@ void pid>int linea, int velocidad, float Lp, float Li, float Ld? U position D qtrrc.readine>sensorEalues, OH!R'&HH'!SRK(, linea?W @@= para linea @@negra, 2 para linea blanca proporcional D >position? : 14==W @@ set point es 14==, asi obtene$os el error integralDintegral X proporcionalRpasadoW @@obteniendo integral derivativo D >proporcional : proporcionalRpasado?W @@obteniedo el derivativo if >integralP2===? integralD2===W @@li$ita$os la integral para no causar proble$as if >integralN:2===? integralD:2===W salidaRp$ D> proporcional Q Lp ? X > derivativo Q Ld ?X>integralQLi?W if > salidaRp$ P velocidad ? salidaRp$ D velocidadW @@li$ita$os la salida de p$ if > salidaRp$ N :velocidad ? salidaRp$ D :velocidadW if >salidaRp$ N =? U $otores>velocidadXsalidaRp$, velocidad?W V if >salidaRp$ P=? U $otores>velocidad, velocidad:salidaRp$?W V proporcionalRpasado D proporcionalW V void $otores>int $otorRizq, int $otorRder? U if > $otorRizq PD = ? @@$otor izquierdo U digitalYrite>$otRi,<&FpinRp$Ri,844:$otorRizq?W @@se controla de $anera @@inversa para $ayor control V else U digitalYrite>$otRi,KY?W @@con lo retrocede $otorRizq D $otorRizqQ>:2?W @@ca$bio de signo analogYrite>pinRp$Ri,$otorRizq?W V
if > $otorRder PD = ? @@$otor derecho U
digitalYrite>$otRd,<&FpinRp$Rd,844:$otorRder?W V else U digitalYrite>$otRd,KY?W $otorRderD $otorRderQ>:2?W analogYrite>pinRp$Rd,$otorRder?W V
V void frenosRcontorno>int tipo,int flancoRco$paracion? U if>tipoDD=? U if >positionND4==? @@si se salio por la parte derecha de la linea U $otores>:7=,3=?W @@debido a la inercia, el $otor @@tendera a seguri girando @@por eso le da$os para atras , para que frene @@ lo $as rapido posible hile>true? U qtrrc.read>sensorEalues?W @@lectura en bruto de sensor if > sensorEalues=TPflancoRco$paracion ZZ sensorEalues2TPflancoRco$paracion ? @@asegurar que esta en linea U breaGW V V V if >positionPD64==? @@si se salio por la parte izquierda de la linea U $otores>3=,:7=?W hile>true? U qtrrc.read>sensorEalues?W if >sensorEaluesBTPflancoRco$paracion ZZ sensorEalues6TPflancoRco$paracion ? U breaGW V V V
V @@QQQQQQQ if>tipoDD2? @@para linea blanca con fondo negro U if >positionND4==? @@si se salio por la parte derecha de la linea U $otores>:7=,3=?W @@debido a la inercia, el $otor @@tendera a seguri girando @@por eso le da$os para atras , @@para que frene lo $as rapido posible hile>true? U qtrrc.read>sensorEalues?W @@lectura en bruto de sensor if > sensorEalues=TNflancoRco$paracion ZZ sensorEalues2TNflancoRco$paracion ? @@asegurar que esta en linea U breaGW V V V if >positionPD64==? @@si se salio por la parte izquierda de la linea U $otores>3=,:7=?W hile>true? U qtrrc.read>sensorEalues?W if >sensorEaluesBTNflancoRco$paracion ZZ sensorEalues6TNflancoRco$paracion? U breaGW V V V V V
Robot Lenin, seguidor de linea para competencias enin básica$ente es un robot seguidor de lineas $uy sencillo construido con $ódulos básicos. Se dise#ó basándose en el robot "ero.
os co$ponentes usados son/ rduino -ro ini 26
Sensores OH!:7 de pololu
!uedas de pololu, solarbotic o banebots
;all caster de plastico
;ateria alGera de 1,B E y 85= $h
Soporte de $otores
;oost de 5:84 E
;oost de 4 E
otor <- pololu 2=/2
9river TB6612FNG
Hornillos de plastico >opcionales?
Jore) >para el chasis? en Eenezuela lo consigues co$o [pvc inflado[ o [espu$a de pvc[
'sta configuración se obtuvo luego de $uchas pruebas. !esultó ser la $as idónea para las pruebas en co$petencias venezolanas donde hay $uchas curvas y poco espacio para acelerar, por lo que se necesita un robot peque#o y lo $ás ligero posible, para salir de las curvas rápido y tener poca inercia. 'l te$a del peso fue e)tre$ada$ente i$portante, nos di$os cuenta que $ientras $ás ligero $ejor. legando al punto que el robot solo pesa 45 gra$os >5B sin batería?. -ara lograrlo usa$os hilos de cobre es$altado para las cone)iones entre $ódulos y sensores y substitui$os los pesados tornillos de $etal por unos de acrílico.
Eplicaci!n detallada de componentes probados" Dimensiones # peso" \24)2= c$ 4B gra$os $ontrolador %arduino pro $ini?"
'legi$os el arduino pro $ini por varias razones/ : 's liviano : Consu$e $uy poco : Jacilidad de progra$ación : Eiene sin pines soldados >usa$os los que necesite$os? : Se consigue en Eenezuela : 's el $ás econó$ico : 'n nuestro caso co$pra$os la versión $ás $oderna que tiene 7 entradas analógicas que es justa$ente la cantidad de sensores analógicos que va$os a usar. unque tiene la desventaja de no poseer puerto usb, hay que cargarle los sGetch a trav+s de un adaptador usb:serial, para ello usa$os un arduino dua$ilanove sin $icro.
&ensores de linea 'TR()A"
: -or ser analógico nos per$ite lecturas $ás precisas de la linea y una $ayor resolución, per$itiendo que poda$os distinguir si el sensor está sobre la linea inclusive esta a $edias sobre esta. : Hiene 7 sensores que es una cantidad suficiente para llevar u n buen control -&9 del robot. 'stos sensores son costosos, pero pueden ser sustituidos por C(*B= o por O!92225.
Ruedas" 's sin duda uno de los aspectos $ás i$portantes. -or lo general, la $ayor li$itación es el agarre. ientras $ás agarre a $ayor velocidad puede girar en las curvas.
Ruedas de solarbotics"
Hienen buen agarre, aunque son pesadas. Cuando se usan el robot es sacado de las curvas por la centrifuga.
Ruedas banebots* Eienen en tres tipos de $aterial/ verde blando, naranja se$iduro y azul duro. 'legí las verdes porque son las que tienen $ejor tracción. unque estas son las que se desgastan $ás no i$porta, puesto que las pistas de velocistas son lisas y el desgaste es $íni$o. 'stas ruedas tienen el $ejor agarre, el detalle es que son de$asiado pesada >incluso $ucho $as que las solarbotics?.
Ruedas pololu: Son fnitas y pesan solo 3 gramos. El caucho tiene surcos lo cual no es benefcioso en absoluto puesto que limita la superfcie de contacto. La solución a esto es quitar esos surcos lijando la rueda. or ser tan li!iana esta rueda n o nos saca en las cur!as. Es ideal para pistas peque"as y con muchas cur!as como en las competencias !ene#olanas. $os decantamos por estas rueditas. Un dato% en cada prueba del robot debe limpiar las ruedas. El pol!o limita mucho el agarre.
Actualizado (2015) ara las ultimas competencias se utili#aron ruedas impresas en 3D Estas o&recen m's superfcie de contacto y su radio es muy in&erior a las de pololu. El aumento de estabilidad y agarre &ue considerable. $os basamos en el modelo en 3( de las ruedas del robot #ero. Se le modifcó el ancho de la chapa
puesto que esta se quebraba con mucha &acilidad. ara las gomas se usaron las que traen las ruedas de pololu, las de banebots, inclusi!e se hi#o la prueba con silicón &rió. )l fnal nos quedamos con unas gomas kyosho que compramos por ebay
all caster La ball caster no debe estar muy alejada del eje de loas ruedas, puesto que mientras mayor sea la separación mayor es la distancia que recorre para un giro determinado, lo que aumenta la &ricción y disminuye el control.
uede !er que mientras mas se aleja del eje de las ruedas *m's se mue!e* Estas son las opciones que he probado%
!ed: Sí, así como lees. +n led como ball caster es una buena opción, Es li!iano y podemos graduar la altura inclinandolo. La des!entaja es que con la &ricción el led se !a desgastando y hay que cambiarlo continuamente.
all caster de metal% tiene muy poca &ricción y se desli#a muy bien. La recomiendo para pistas largas. La des!entaja es que pesa mucho 3.- gramos/ y si lo colocas en la parte delantera del robot el control se !a a complicar por el e&ecto palanca.
all caster de pl"stico. 0deal, es li!iana y rueda bien. Los in con!enientes es que luego de mucho uso !a desgastando el holder trayendo consigo serios problemas de control puesto que aumenta la &ricción. )unque tenga m's &ricción esta es la que gana la batalla por pesar 1 !eces menos que la de metal. La di&erencia de control entre ambas es notorio.
ater#a (!ipo $alkera 3%& ' y 20 mAh)
La batería a usar depende del consumo del robot y la duración de prueba en la competencia. La batería ideal es aquella que se agota justo despu2s de haber pisado la meta. Si dura mucho m's es porque hay peso adicional intil y si dura menos es que no es sufciente para nuestro robot. La tasa de descarga nos indica *cuanta corriente puede pro!eer la bateria*. (ebemos conseguir una batería en la cual la tasa de descarga sea ligeramente superior al consumo de nuestro robot. ara calcular la tasa de descarga puedes usar esta &ormula% Tasa_de_descarga = Capacidad_de_la_bateria * Razón_de_descarga Donde: La Capacidad_de_la_bateria es la indicada en mAh. La batería de la foto tiene una capacidad de 240 mAh.
La Razón_de_descarga es un número seguido de la letra "C" por e!emplo la batería de la foto indica 345 por lo que su ra#ón de descarga es 34. Entonces, la tasa de descarga de la batería de la &oto es 6 714 8 34 6 9744 m) 6 9,7 ) 5omo s2 que mi robot consume 1,7 ) en pico/ entonces puedo determinar que esta batería le &unciona per&ectamente sin cortes de energía. ara cargar las baterías se utili#ó un arduino fo
oporte de motores:
Es de suma importancia la alineación de los motores, para ello puedes usar estos soportes. :ecuerda que los elementos pegados con pegamentos tienden a ceder por la !ibración. Estos soportes !ienen con tornillos de metal con sus respecti!as arandelas. Substituimos esto por tornillos de acrílico y nos ahorramos unos cuantos gramos.
*le+ador de +olta,e (oost o D-.D-) Es lo que nos permite con!ertir los 3.9 ; de la batería a los <7 ; que necesitan los motores para &uncionar. Es una gran !entaja porque nos ahorra el tener que usar dos pesadas baterias de 9.1;. )dem's mantiene estable el !oltaje de alimentación lo que garanti#a que el =M aplicado a los motores no debe ser ajustado dependiendo del estado de la batería. Este circuito se puede &abricar a mano o se puede comprar el módulo ahorra mucho trabajo/. $osotros usamos el boost 1>7?; de ololu pero se pueden usar otros como el @L44-.
oost de .25 ' De /ololu
Son E@A:EM)()ME$AE delicados y deben ser tratados con mucha precaución. (urante el proceso de construcción del robot quemamos 3 de estos. Son bastante caros pero hacen bien su trabajo. El !oltaje de entrada nunca puede ser superior al !oltaje de salida. :ecomiendo colocar un diodo a la salida para e!itar contras. 5uando se recalienta, el carbon que tiene en la bobina se despega. S0 esto ocurre re!isa que est's haciendo mal, es el primer a!iso antes de quemarse.Este es un punto d2bil del robot que siempre nos tiene alertas porque puede da"arse en cualquier momento puesto que le eBigimos m's de lo que indica de &abrica.
oost !00
Es unas ? !eces m's barato que el de ololu. Soporta el doble de amperaje, se recalienta menos y es mucho m's robusto y durable, adem's de tener protección contra>corriente. El nico incon!eniente es su peso y tama"o. Es
una buena opción si quieres quitarte la preocupación de que se te queme el boost en cualquier momento.
Este es un !elocista llamado @ubots. articipó en la ulabots 74<1 y usaba el @L44-
oost de 5 ':
Se usa para alimentar los componentes lógicos )rreglo de sensores, arduino y motor dri!er/. Aambi2n son delicados y de igual &orma se recomienda ponerle un diodo a la salida.
otor 4/ 10:1 de /ololu:
0ncon!enientes% > El sha&t en media luna hace que !ibre > Su consumo no es efciente. > Los engranajes est'n eBpuestos y se da"an con &acilidad ante la obstrucción de algn granito de arena. Cay que protegerlos mucho. > $o son precisos y el &reno &em es d2bil. ;entajas% > Es peque"o y li!iano > Es lo mejor que !amos a conseguir en ese precio. > Aiene un torque aceptable. 5onsejo% suelden ien los cales de alimentaci6n puesto 7ue la +iraci6n por el sha8t en D hace 7ue se despe9uen con 8acilidad% 5uando se piensa en motores pololu generalmente se elige entre <4%< y ?%<. La elección depende del peso de tu robot y del tipo de pista. Si eliges motores <4%< tendras m's torque, lo que permite tener buen control, preciso, aceleración y un mejor &renado. Es ideal si tu robot pesa m's de 4 Dramos yo si el tipo de pista es peque"a con muchas cur!as. En las competencias !ene#olanas el mayor tiempo del recorrido se tarda en desacelerar para entrar en una cur!a y acelerar para salir de esta, no hay
tramos de recta que nos dejen alcan#ar altas !elocidades. Los ?%< nos permiten llegar a mayores !elocidades pero con menor aceleración. )dem's la inercia del motor es mayor y es di&ícil detenerlo para &renar en las cur!as. ara usarlos deberías tener un robot li!iano y bastante agarre. )dem's con la eBperiencia aprendimos que hay que trabajarlos con m's de <3 ;/ para poder &renar en las cur!as. EBisten otras alternati!as para los motores como los motores maBon o &aulhaber. )unque son alternati!as muy caras !alen la pena si queremos hacer un !elocista &uera de lo normal. or lo general, en micromouse usan los motores &aulhaber <9<9, logrando !elocidades increíbles. +na opción m's barata son los motores mabuchi. )quí puede !er un !ideo de un robot que los tiene y !a bastante r'pido.
Dri+er
!2n: Fue el primer dri!er que usamos % Es barato pero desperdicia demasiada energía en &orma de calor lo que reduce el tiempo de batería y recalienta el boost. )dem's de ser pesado y no poseer la &unción de &reno, ocupa mucho espacio y ele!a el centro de masa. El control se !uel!e bastante di&ícil y es complicado alcan#ar una !elocidad alta. $o lo recomiendo para seguidores de linea. )unque conseguimos un robot relati!amente r'pido.
uen dri+er; con el se lo9r6 una uena +elocidad% *s li+iano; pe7ue
-hasis
ara nuestro primer modelo usamos &oreB de 3 mm. Luego rebajamos el peso y lo cambiamos a uno de 7 mm, lo cual disminuyó de &orma considerable el peso. ;entajas
> eso ligero > )lta resistencia
> Facilidad de limpie#a
> $o se hincha ni se pudre
> Es rígido pero &'cilmente se puede cortar con un eBacto
> ermite imprimir sobre el para hacer dise"os/ El &oreB tiene muchos nombres% *;5 espumado* *Espuma de ;5* *;5 inGado*
Mis laminas de 74 B 74 las compre por mercadolibre a una distribuidora de p!c
$oneiones 9iagra$a de cone)iones de un seguidor de linea básico/
as cone)iones entre $ódulos se hicieron con hilos de cobre es$altado. o que reduce el peso de for$a considerable.
/* * [ Código Fuente: Robot Velocista Lenin ] * [ Fecha: Agosto 2013 ] * * [ !ui"o: #olche$i!ue ] * % Ab&aha' (os) * % Lihon F&ed * % +li$e&os ,ecto& */ -include .Renso&sh -de4ine -de4ine -de4ine -de4ine -de4ine -de4ine -de4ine
A56#7 9++RLF6;RA 9++RLF6;R# 9++RLF?@9 9++RR;B,6;RA 9++RR;B,6;R# 9++RR;B,?@9
8 < > 3 D
// "in A56#7 del 9oto& 6&i$e& // "in 1 de di&ección del 9oto& ;=!uie&do // "in 2 de di&ección del 9oto& ;=!uie&do // "in ?@9 del 9oto& ;=!uie&do // "in 1 de di&ección del 9oto& 6e&echo // "in 2 de di&ección del 9oto& 6e&echo // "in ?@9 del 9oto& 6e&echo
-de4ine 5E95+R
>
// n'e&o de senso&es usados
// cant lectu&as analógicas !ue se&Gn leHdas "o& senso& -de4ine 5E9A9?L?R5+R -de4ine 9;R?;5 -de4ine 5C+6R?;5 10 -de4ine L6?;5 13 -de4ine #E+5?;5 2
11
// "in e'iso& del R // "in del encode& // n'e&o del "in de test // boton eIte&no
// 4unción "a&a "ulsa& el botón es"e&a& !ue deJe de "ulsa&lo -de4ine es"e&aotonK MhileKNdigitalReadK#E+5?;5O MhileKdigitalReadK#E+5?;5
// est&uctu&a "a&a los senso&es Renso&sAnalog qtraKKunsigned char[] PA0Q A1Q A2Q A3Q AQ ADQ AQ A< Q 5E95+RQ 5E9A9?L?R5+RQ 9;R?;5O // a&&eglo "a&a al'acena'iento de $alo&es "o& senso& unsigned int senso&Values[5E95+R]O // 4unción Velocidad 9oto& ;=!uie&do void setMotorLeftKint $alue P if K $alue S 0 P // si $alo& "ositi$o $a'os hacia adelante digital@&iteK9++RR;B,6;RAQ,;B,O digital@&iteK9++RR;B,6;R#QL+@O else
P // si $alo& negati$o $a'os hacia at&as digital@&iteK9++RR;B,6;RAQL+@O digital@&iteK9++RR;B,6;R#Q,;B,O $alue *S %1O
// etea Velocidad analog@&iteK9++RR;B,?@9Q$alueO // 4unción Velocidad 9oto& 6e&echo void setMotorRightKint $alue P if K $alue S 0 P // si $alo& "ositi$o $a'os hacia adelante digital@&iteK9++RLF6;RAQ,;B,O digital@&iteK9++RLF6;R#QL+@O else
P // si $alo& negati$o $a'os hacia at&as digital@&iteK9++RLF6;RAQL+@O digital@&iteK9++RLF6;R#Q,;B,O $alue *S %1O
// etea Velocidad analog@&iteK9++RLF?@9Q$alueO // 4unción Velocidad 9oto&es void setMotorsKint le4tQ int &ight P digital@&iteKA56#7Q,;B,O set9oto&Le4tKle4tO set9oto&RighK&ightO // 4unción F&eno en 9oto&es void setBrakeKboolean le4tQ boolean &ightQ int $alue P // "in A56 #7 digital@&iteKA56#7Q,;B,O if K le4t
P // "ines LF 'oto& digital@&iteK9++RR;B,6;RAQ,;B,O digital@&iteK9++RR;B,6;R#Q,;B,O analog@&ite K9++RR;B,?@9Q $alueO
if K &ight
P // "ines R;B, 'oto& digital@&iteK9++RLF6;RAQ,;B,O digital@&iteK9++RLF6;R#Q,;B,O analog@&ite K9++RLF?@9Q $alueO
void setupK
P // iniciali=a& "ines de "in9odeKL6?;5 "in9odeKA56#7 "in9odeK9++RR;B,6;RA "in9odeK9++RR;B,6;R# "in9odeK9++RR;B,?@9 "in9odeK9++RLF6;RA "in9odeK9++RLF6;R# "in9odeK9++RLF?@9
salida Q+E?EO Q+E?EO Q+E?EO Q+E?EO Q+E?EO Q+E?EO Q+E?EO Q+E?EO
"in9odeK#E+5?;5
Q;5?EO
// "&esiona botón "a&a acti$a& calib&ación while K NdigitalReadK#E+5?;5 O // calib&a& senso&es RAQ titilando L6 co'o guHa for K int iS0O i.70O iTT P digital@&iteKL6?;5Q ,;B,O delaK 20O !t&acalib&ateKO digital@&iteKL6?;5Q L+@O delaK 20O // a"aga& L6 digital@&iteKL6?;5Q L+@O // "&esiona& botón "a&a co&&e& el &obot while K NdigitalReadK#E+5?;5 O // es"e&a& D segundos delaK5000O // 'o$e& el &obot sua$e "a&a gana& ine&cia set9oto&sK 90Q 90O // du&ante 03 segundos delaK300O unsigned int "osition S 0O // "osición actual de los senso&es int de&i$ati$e S 0O int "&o"o&tional S 0O int "oMe&di44e&ence S 0O
// de&i$ada // "&o"o&cional // $elocidad di4e&encial
// 9GIi'a $elocidad en el "ode& di4e&encial int 'aI S 123O // Elti'a ?&o"o&cional int last"&o"o&tionalO // Constantes ?&o"o&cional 6e&i$ati$a float U? S 017O float U6 S 22O // Constante "a&a Rango de F&eno KRange #&ae
!define RA5B#RAU 3500 void loopK
P // +btiene la "osición de la linea // A!uH no esta'os inte&esados en los $alo&es // indi$iduales de cada senso& "osition S !t&a&eadLineKsenso&ValuesO // l t)&'ino "&o"o&cional debe se& 0 cuando esta'os en lHnea "&o"o&tional S KKint"osition % 3500O
// i ent&a en el &ango de 4&enoQ a"lica&lo en la // di&eccion de la cu&$a if K "&o"o&tional .S %RA5B#RAU P set9oto&RighK 0O set#&aeKt&ueQ4alseQ255O delaK 1O else if K "&o"o&tional S RA5B#RAU P set9oto&Le4tK 0O set#&aeK4alseQt&ueQ255O delaK 1O
// Calcula el t)&'ino de&i$ati$o Kca'bio de la "osición de&i$ati$e S "&o"o&tional % last"&o"o&tionalO // Reco&dando la lti'a "osición last"&o"o&tional S "&o"o&tionalO // Calcula la di4e&encia ent&e la "otencia de los dos 'oto&es [ '1 % '2 ] // i es un n'e&o "ositi$oQ el &obot gi&a a la [ de&echa ] // i es un n'e&o negati$oQ el &obot gi&a a la [ i=!uie&da ] // la 'agnitud del n'e&o dete&'ina el Gngulo de gi&o int "oMe&di44e&ence S K "&o"o&tional * U? T K de&i$ati$e * U6 O // i $elocidad di4e&encial es 'ao& a la "osible tanto "ositi$a co'o negati$aQ // asigna& la 'GIi'a "e&'itida if K "oMe&di44e&ence 'aI "oMe&di44e&ence S 'aIO else if K "oMe&di44e&ence . %'aI "oMe&di44e&ence S %'aIO