http://webdelcire.com/wordpress/archives/350 Robot Zero. Velocista para principiantes. December 2nd, 2010 41 Comments
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. Aunque ya está todo dicho en el proyecto Robot Zero, Zero, vuelvo a hacer un pequeño resumen aquí con la versión final. Uno de los proyectos que tenemos en común varias personas en el C.I.r.E. es el desarrollo de robots velocistas, por lo que llevamos ya meses hablando sobre el tema y discutiendo ideas. Intentando sintetizar parte de las ideas subo aquí mi versión final con la que cierro el proyecto de robot velocista de iniciación, a no ser que me haya equivocado en algún pin del pcb o similar dejo aquí el mundo de los velocistas. No soy experto en el tema y sólo he ido a un par de concursos, a falta de información disponible espero que a alguien que quiera ir a un concurso y sepa aún menos que yo del tema le pueda ayudar. Eso sí no garantizo el funcionamiento de nada, sólo pongo lo que a mi me ha funcionado, por lo que si alguien lo monta que lo haga según su criterio. Una opción es comprar el velocista entero directamente, en internet se pueden encontrar algunos robots velocistas para comprar. No lo recomiendo ya que pierde toda la gracia el asunto, nos dan todo hecho y la mayor parte del programa, por lo que lo único que hay que hacer es darle al botón. Y supongo que en los concursos no admitirán su participación, ya que el mérito del que lo lleva es mínimo y por tanto poco digno de ser premiado. Lo primero a la hora de montar un robot es elegir los componentes y es donde toda persona que quiere hacer su primer robot encuentra la primera dificultad, qué motor elegir, qué
sensores, etc.. Lo mejor que he encontrado son los componentes de Pololu, por un precio muy razonable encontramos todos los componentes necesarios para construir un robot que no lo haga mal en los concursos, no vamos a ganar pero lo mismo podemos pasar la primera clasificatoria, lo que sería un resultado satisfactorio para muchos principiantes. Mi elección de componentes es la siguiente:
Placa de control más programador $31.95. Placa de sensores $14.95. Ruedas $6.98. Rueda loca $2.99. Soporte motores $4.99. DC-DC $11.95. Batería $11.95. Cargador $16.95. Motor HP $31.90 (opción A). Motor $31.90 (opción B).
Podemos elegir dos motores para el proyecto, si tu objetivo es hacer un primer robot y te conformas con que funciones recomiendo la opción B, si tu objetivo es intentar ir lo más rápido posible recomiendo la opción A. El problema de la opción A es que son motores que consumen mucha intensidad y existe la posibilidad de quemar el DC-DC, es muy poco probable quemarlo, pero la posibilidad está ahí, para mi gusto son los mejores motores que podemos comprar por ese precio. Con la rueda seleccionada y la opción B se pueden alcanzar velocidades sobre 2 m/s, mientras que con la opción A podremos alacanzar los 4 m/s. En total por unos $122.66 tenemos todos los componentes necesarios para el velocista, a lo que habría que sumarle unos $10-15 aproximadamente en componentes para unirlo todo. Pongamos el proyecto completo sobre unos €100-110 al cambio en material. Los componentes se encuentran en dos tiendas y los gastos de envio de cada una están entre $10 y $15 por correo normal y suelen tardar 7-12 días, he realizado pedidos muchas veces y siempre llegan y no suelen caer en aduanas. Aún así si queremos comprarlo todo en un sólo pedido en http://www.robotshop.com/eu econtramos todos los componentes, aunque sale más caro ya que como toda tienda te hacen el cambio $1 = €1, por lo que la mayoría de las veces sale mejor comprar directamente en $$. Para unir todos los componentes tenemos dos opciones: usar un pcb que a la vez sirva de base del robot para conectarlo todo, o usar un pcb/placa de topos que poner en una base que fabriquemos. Pongo foto de las dos opciones:
La mejor opción de ambas para nuestros objetivos es la de construir un base sobre la que poner el pcb, ya que nos va a permitir tener un robot versátil al que le podemos poner distintas bases con diferente longitud y anchura, lo que nos permitirá probar y experimentar con diferentes configuraciones y adaptarnos a los circuitos que nos den en los concursos. Por ejemplo en un circuito con curvas con un radio grande y rectas largas nos puede interesar llevar una base más larga y ancha, mientras que si nos dan un circuito con muchas curvas pequeñas y poca recta puede ser mejor opción una base pequeña. Además las dimensiones del robot dependen de las inercias y la fuerza de rozamiento del robot que nos adhiere al suelo, por lo que muchas veces la única forma de encontrar las dimensiones óptimas es probando distitnas bases. Si montamos todo el robot en un pcb pues no podremos cambiar sus dimensiones, los robots que venden hechos vienen montados en un pcb ya que es más fácil integrar todo y supongo que más barato de fabricar, el ahorro de peso es mínimo ya que la base en plástico pesa más o menos igual que el pcb. Por lo que para un primer robot con el que aprender y experimentar la mejor es tener bases intercambiables. La idea final es tener algo como ésto, un robot que montar sobre distintas bases.
Por lo que lo primero podría ser empezar a construir la base, para ello nos hacemos una plantilla a mano o con el pc que pegamos sobre un trozo de PVC expandido o forex de 3mm, con un punzón marcamos los agujeros de los motores ( han de ir en la plantilla ya que deben quedar bien alineados) y con una cuchilla cortamos y marcamos en el PVC la plantilla, pasando luego a recortarla y hacer el resto de taladros, el PVC expandido de 3 mm se puede cortar y trabajar a mano. Adjunto un par de plantillas de bases de ejemplo (las dimensiones de los robots en los concursos máximas son de 30 cm de largo y 20 cm de ancho) y una foto del proceso para realizar la base. Base 1. Base 2. Las dimensiones de la base para mi gusto no son las ideales, pero son las que he probado.
La otra parte que necesitamos para unir los componentes es realizar un pcb o utilizar una placa de topos como explicó Guillermo en la entrada anterior. Además esta placa nos servirá para pegar con cinta de doble cara la batería elegida, de tal forma que quede por debajo del robot, lo que proporciona un centro de gravedad lo más bajo posible. La placa de la electrónica se puede ver aquí (click para mayor detalle):
Las características con los componentes montados serían las siguientes:
8 entradas digitales de senores ó 6 analógicas en los sensores centrales (no he querido desoldar el potenciometro del ADC para poner los 8). Pin para encender y apagar los sensores y así ajustar el nivel de luz que emiten. Dos diodos leds. Un pulsador para dar la salida, calibrar unos sensores RC, etc.. Dos interruptores para seleccionar distintas estrategias en el concurso, fundamental para cambiar la velocidad contra un oponente, o arriesgar más si hemos perdido la primera ronda. Un dc-dc que nos proporciona una tensión de referencia fija para la velocidad de los motores, por lo que facilita el algoritmo de control. Un conector con salida de 5V y pines TX y RX de la USART del microcontrolador, para conectar un módulo de comunicaciones si queremos mandar datos del robot al PC. Duración de la batería: 28 minutos (ciclo de trabajo 160/255, Vmed = 215 cm/s en circuito de prueba).
Si usamos los motores de alta intensidad el DC-DC lo podemos quemar si no ponemos el condensador electrolítico que está a la altura del regulador, o si lo ponemos de un valor pequeño. Aunque es el condensador del montaje típico de cualquier regulador disipativo está proporcionando el pico de intensidad necesaria a los motores cuando su f.c.e.m. es baja. Lo llevo con un valor de 22 uF y es suficiente para que los motores vayan a velocidad altas. Hice la prueba de quitar el condensador para ver si el dc-dc cortaba ante una intensidad mayor de la que puede dar (no sé que integrado lleva) y se acaba quemando, ya que los motores HP pueden tener picos de hasta 1.6 A por motor y el DC-DC sólo admite 2 A de entrada. Poniendo este condensador (una vez visto se podría poner más cerca del dc-dc o duplicar) no deberiamos tener problemas de quemar el dc-dc para una buena velocidad del robot. Con los motores de baja intensidad no hay problema ya que sólo consumen 0.36A como máximo a 6V. Para conectar la placa de control y el dc-dc ponemos una tira de pines hembra, donde los insertaremos, de esta forma podemos 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 motores a utilizar. Si usamos los motores de alta intensidad lo pondremos sobre 5.5-6.5 V y si usamos los de baja podemos ponerlo a 9V para sacar más par y velocidad de ellos. Los conectores de la batería, tira de pines que se ven en la imagen, botones y demás también lo podemos comprar en Pololu (cuanto mayor el pedido mayor la posibilidad de aduana), aunque en cualquier tienda física de electrónica se pueden encontrar los componentes a un precio razonable. El esquema para unir toda la parte de la electrónica (click en la imagen para más detalle), si todos los pines están bien asignados (no me haya confundido en alguno ya que no lo he repasado) así se quedaría.
C1 y C2 son los condensadores electrolíticos de 22 microFaradios, R1 R2 y R4 470 Ohmios, R10 R7 y R8 330 Ohmios, R3 R5 y R6 15K, un regulador disipativo de 5V mirando su caída, si sacamos del dc-dc 9V podríamos poner un 7805, pero sacando sólo 6V pues mejor poner uno con un caída de tensión menor como un LF50ABP, L4941BV, es decir cualquier ldo. Los componentes SMD 1206. Los componentes montados 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.
Colocamos la rueda loca, podemos usar unos tornillos para fijarla o pegarla directamente aunque ésto signifique tener que usar una por base. Por último colocamos la placa de sensores haciendo los correspondientes agujeros para pasar los tornillos, y hacemos el cables para unir los sensores con la placa de electrónica. Respecto a la placa de sensores que compramos hay que cambiar o quitar unas resistencias, ya que los llevamos muy pegados al suelo y vienen pensados para una mayor distancia.
En la imagen superior se puede ver como se ha soldado una resistencia de 100 Ohmios (101) y desoldado dos resistencias, esas dos resistencias en paralelo vienen para limitar la corriente de los diodos, podemos quitar una o quitar las dos y soldar una donde aparece en la iamgen de mayor valor. Aunque no he probado muchos valores una resistencia de unos 82 ohmios podría funcionar bien, depende, ya que algunas placas de Pololu nos la dan con resistencias de 43 Ohmios y otras con resistencias de 66 Ohmios en los diodos. Otra cosa que hemos podido comprobar es que estos sensores son terribles para hacer lecturas en analógico, ya que su orientación (inclinación) afecta enormemente a la lectura, por lo que si el robot vibra u oscila, o la pista no es totalmente lisa podemos encontrar problemas, pero bueno esto se ve bien cuando desarrollemos la parte de la telemtría en el C.I.r.E., que supongo que será lo siguiente. Por lo que todo montado queda una cosa así:
Esta sería la parte de la base y ahora falta la parte de la programación, adjunto un programa sencillo para estos robots que sigue la línea sin oscilar a una velocidad constante. Al programa no se le ha dedicado tiempo, es el primero 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. La idea es muy sencilla, medir la distancia de la línea al centro de los sensores, medir la velocidad con la que se aleja o se acerca la línea al centro de los sensores, multiplicar estas medias por unas constantes que utilizamos para ajustar la respuesta del robot, sumarlas y convertir la cantidad obtenida en una diferencia de velocidad entre los motores, lo que provoca el giro.