Juan Gonzalez se ha casado!

Mi buen amigo Juan González, compañero de innumerables aventuras robóticas, se ha casado. Fue este pasado día 17 de Febrero. No hubo robots en su boda, aunque si se habló mucho del tema. A veces podemos llegar a ser muy aburridos :-) . Solo tengo una prueba de que de verdad esto ocurrió y es el Rock & Roll que bailó con su guapa esposa, Mercedes. Juan, espero que no te enfades, pero lo he colgado en YouTube :-)

La calidad es realmente mala, porque lo gravé con el móvil (a donde vamos a llegar con los gadgets!!), pero en cualquier caso podéis verlo AQUÍ

Sam empieza a estar vivo

Sam va avanzando con grandes éxitos. Actualmente está ya la cabeza y zona del pecho terminadas. Se continuará con el desarrollo de los brazos y resto del cuerpo. También se irán incluyendo más adelante algunas mejoras en la cabeza.

Sam cuenta actualmente con dos cámaras en los ojos, sistema PIR de detección de personas, sistema de audio, capacidad de hablar en Español e Inglés, movimiento de cuello (dos grados de libertad), sistema de expresibidad en la boca, pantalla interactiva en su pecho, sistema de transmisión de video inalámbrico y capacidad de seguimiento de objetos de color con la mirada.

Puede verse un vídeo en el que se muestran algunas de las capacidades de Sam AQUÍ.

Este cabeza podrá verse en acción en las próximas jornadas Robóticas de ARDE en Málaga, los días 17 y 18 de Marzo de 2007.

Un Cybor en casa

De vez en cuando miro que circula por eBay en temas de robótica. Es sorprendente la cantidad de cosas que se venden por ahí fuera, sobretodo en Estados Unidos. Hay tal oferta que los precios pueden llegar a ser tan bajos que merezca la pena comprar cosas, a pesar de los gastos de envío desde allí.

En España aún hay poca oferta de cosas de robótica, pero de vez en cuando sale alguna. Recientemente he comprado un Cybor (también llamado Cybot), robot que tiene múltiples funciones, como esquivar obstáculos utilizando sus sensores de ultrasonidos, seguir lineas negras pintadas sobre el suelo gracias a unos sensores de fotorreflexivos situados en su parte inferior, seguir luces gracias a sus fotosensores, perseguir objetos o personas gracias a sus sensores de movimiento, etc.

Este robot era parte de una colección por fascículos que sacó R.B.A. Editores en 2.001 bajo el nombre de “Cybor, tu robot real”. El robot fue creado por el Cybernetic Intelligence Research Group de la Universidad de Reading (Reino Unido).

Sinceramente, cuando veo un robot de estos en venta, me da pena. Pienso en que no es un simple robot construido en una cadena de montaje automatizada, sino que es un robot que ha significado una gran ilusión para el que lo ha construido, un desembolso de dinero nada despreciable y una gran cantidad de horas de dedicación, durante meses, para verlo finalmente funcionar delante de sus ojos. Me da pena porque pienso en qué es lo que habrá causado que finalmente un esfuerzo así acabe en una subasta. Supongo que hay veces que es por necesidades económicas y otras por pérdida de interés. En cualquier caso, cada robot que uno ha construido con sus manos creo que es un tesoro. Yo conservo los robots que he construido con el máximo cariño y espero que siempre sea así, pero no siempre fue así. Mi primer robot, Reck, acabó en un cubo de basura por mi falta de interés y cuidado hace muchos, muchos años. Es algo que lamento y recuerdo cada cierto tiempo.

A veces, sobretodo cuando se está empezando en el mundo de la robótica, se desmonta un robot para usar sus piezas en otro nuevo. conozco a muchos que lo hicieron. Con los años se lamentaron. Recuerdo que un amigo me dijo una vez que lo que había que hacer era comprarle el robot a todo el que quisiera hacer despiece de él para construir otro. Con los años ese constructor vendrá a pedirte que le revendas esa reliquia de sus inicios. No es mi caso. No compro robots para luego revendérselos a sus creadores. Los compro porque me gustan y porque valoro las horas y la ilusión que sus creadores han dedicado a su criatura.

Este Cybor está ya en una de mis estanterías, junto a otros robots, míos y de otros, apreciado por su verdadero valor: La ilusión con la que fue construido.

EconoBOT. Cap. 34. Programación y Fin

Básicamente el algoritmo que queremos implantar en el robot es el que se muestra en la imagen. El robot se mueve hasta encontrar un obstáculo. Cuando lo encuentra, retrocede, gira y sigue su camino tratando de evitar el obstáculo.

 

Existen muchos lenguajes de programación y prácticamente todos nos servirían para implementar este algoritmo. No obstante, utilizaremos uno extremadamente sencillo de aprender y que es utilizado con frecuencia en las primeras etapas de aprendizaje en robótica. Este lenguaje es el LOGO.

Existen varios interpretes de este lenguaje que podemos descargar de Internet. Los más interesantes son MSWLogo, que es freeware y WinLogo, que aunque es comercial, se puede utilizar la versión demo, que tiene el 100% de funcionalidad de la versión comercial, pero no permite grabar los programas. En cualquier caso los programas se puedes escribir desde otro editor, como el block de notas y guardarlos con extensión “.log” y posteriormente cargarlos en el intérprete. Utilizaré el WinLogo por resultarme más cómodo. Puede descargarse la versión demo de WinLogo AQUÍ. También hay una página con recursos interesantes sobre WinLogo AQUÍ.

Básicamente los comandos clave que utilizaremos serán:

escribepuerto (puerto) (dato): Permite escribir a un puerto. Para escribir un byte a las salidas del puerto paralelo, se elegirá el puerto 888. Los datos que escribiremos serán: 0 (0000b) para detener los motores, 9 (1001b) para avanzar con ambos motores en la misma dirección, 6 (0110b) para retroceder, 5 (0101b) para girar a la derecha y 10 (1010b) para girar a la izquierda. Los cuatro bits afectados por cada uno de estos valores corresponde a D3, D2, D1, D0, que son los que controlan los motores.

leepuerto (puerto): Es una función que devuelve el valor de las entradas de un puerto. Para leer las del puerto paralelo se utilizará el puerto 889. Los valores leídos serán: 72 para indicar que los bumpers no han detectado obstáculo, 104 para indicar que el bumber derecho (S5) ha detectado obstáculo, 88 para indicar que el bumper izquierdo (S4) ha detectado obstáculo y 120 para indicar que ambos bumpers han detectado obstáculo.

espera (csg): permite hacer una pausa de un numero de centésimas de segundo determinado. Como el Logo es un lenguaje interpretado, su ejecución es lenta y en la realidad no se consigue una precisión de pausa de centésimas de segundo. Por ello se ha creado en el programa un procedimiento llamado “pausar” que hace una pausa muy corta. Este procedimiento se utiliza para generar el PWM de los motores.

Los motores son demasiado rápidos, por lo que el robot se mueve de forma incontrolada. Por ello se ha utilizado la técnica de generar una señal PWM para hacer que los motores se muevan más lentos. Esta técnica consiste en mandar pulsos altos y bajos alternos. Cuanto más duren los pulsos altos y menos los bajos, el motor irá más rápido y viceversa.

 El código del programa es el siguiente:

Para robot_parar
escribepuerto 888 0
espera 100
Fin

Para robot_adelante
escribepuerto 888 0
pausar
escribepuerto 888 9
pausar
Fin

Para robot_atras
escribepuerto 888 0
espera 10
escribepuerto 888 6
espera 5
Fin

Para robot_derecha
escribepuerto 888 0
espera 10
escribepuerto 888 5
espera 200
Fin

Para robot_izquierda
escribepuerto 888 0
espera 10
escribepuerto 888 10
espera 200
Fin

Para robot_bumpers
Haz “bumpers leepuerto 889
Si :bumpers=104 [robot_parar robot_atras robot_izquierda robot_parar]
Si :bumpers=88  [robot_parar robot_atras robot_derecha robot_parar]
Si :bumpers=120 [robot_parar robot_atras robot_derecha robot_parar]
Fin

Para pausar
repite 5 [Haz “loquesea 20]
Fin

Para inicio
repite 5000 [robot_adelante robot_bumpers]
robot_parar
Fin

inicio

 Los valores de pausas y repeticiones se han calculado empíricamente, haciendo funcionar el robot y cambiándolos para mejorar su respuesta. El resultado es que Econobot finalmente funciona!!. Se puede descargar un video del robot en acción AQUÍ. (MPEG. 1,2Mb)

———–

El reto queda por tanto conseguido: Demostrar que la creatividad es capaz de superar las barreras económicas. Ha quedado con ello comprobado que es posible fabricar un robot básico por cero euros y con herramientas muy limitadas.

———–

EconoBOT. Cap. 33. Electrónica III

Ya queda poco!

En este capítulo terminaremos con la electrónica del robot. Ya en los capítulos anteriores se explicó cómo funcionaría la electrónica de Econobot. Compilando todo lo hablado, tenemos que la electrónica del robot será la mostrada en el siguiente esquema:

Como dijimos, el robot estará controlado desde el PC a través de su puerto paralelo. Para ello utilizaremos cuatro líneas de salida (motores) y dos de entrada (bumpers). Concretamente utilizaremos  las salidas Data 0 (D0) y Data 1 (D1) para la señal del motor izquierdo, Data 2 (D2) y Data3 (D3) para la señal del motor derecho, PE (S5) para le bumper derecho y SLCT (S4) para el bumper izquierdo

El puerto paralelo funciona con lógica TTL, es decir, 5v para indicar estado activo y 0v para indicar estado no activo.

Todos los pines indicados como GND han de estar unidos entre si y conectados a masa.

Reutilizaremos uno de los cables de las impresoras recuperadas.

Se puede utilizar el programa PARMON contenido en este ZIP, para ver el estado y activar/desactivar salidas del puerto paralelo. Un programa Freeware muy útil para verificar las correctas conexiones y funcionamiento del robot. 

Puesto que muchos de los hilos no los utilizaremos, aprovecharemos dos para enviar por ellos la corriente eléctrica del alimentador al robot y así enviar un solo cordón de cables.

Todas las conexiones las haremos sin soldadura, pelando y anudando cables. Puede verse a continuación cómo hacemos la unión de los cables del alimentador de 5V a dos cables que utilizaremos para esta función. Posteriormente aislamos los cables con cinta de embalar recuperada.

Utilizaremos la misma técnica para las resistencias de pull-up

Para el caso de los drivers, utilizaremos la misma técnica de anudamiento, pero en vez de utilizar cinta de embalar recuperada, utilizaremos fundas de cables para asegurar el aislamiento de las conexiones, tal como se muestra en la siguiente imagen.

Con los motores utilizaremos esta misma técnica

Para sujetar los drivers a una de las maderas utilizaremos un método un tanto MacGyver, consistente en extraer el pegamento utilizado en las cintas de embalar. Es realmente pegajoso.

De esta manera quedan los drivers colocados de forma más estética. Tampoco hace falta esto. También se podían haber envuelto en cinta de embalar sin más.

Tras colocar todos los cables para que no se enganchen con ruedas y engranajes, terminamos de montar el robot, quedando por encima como se muestra en esta imagen. El cristal superior permite ver parte del mecanismo y electrónica interior.

Por debajo se queda como se muestra a continuación. En esta vista es en la que se muestra más claramente el mecanismo de tracción.

y aquí se ve una perspectiva de cómo queda finalmente el robot terminado. Ahora tan solo nos falta programarlo para que empiece a darse paseos. Esto lo veremos en el siguiente capítulo.

EconoBOT. Cap. 32. Electrónica II

Como indicamos en el capítulo anterior, el robot estará controlado desde el ordenador a través de su puerto paralelo. El puerto paralelo tiene una serie de entradas y salidas. Se utilizarán cuatro salidas para el control de los motores y dos entradas para la detección de colisión de los bumpers.

Los bumpers, como vimos, se comportan eléctricamente como simples pulsadores. Lo que necesitamos es hacer que nos sirvan para obtener una señal 1 (alrededor de 5v) o 0 (alrededor de 0v) dependiendo de que choquen con un obstáculo (se abra el contacto) o no choquen (se mantenga cerrado el contacto). Para ello utilizaremos lo que se denomina una resistencia de pull-up. Nos servirá para asegurar que se obtiene una señal de 1 o 0 de cada bumper.

La resistencia de pull-up se conecta tal como se muestra en el esquema eléctrico.

 

Utilizando por ejemplo resistencias de 10k, que son muy comunes, con el contacto cerrado, la entrada del puerto estaría a cero voltios y habría un paso de corriente por la resistencia según la ley de ohm de I=V/R=5/10.000 = 500 microamperios, es decir que disipa una potencia de P=I2xR=2,5mW.  Mientras que si el contacto está abierto, la entrada del puerto estaría cercana a los 5v (4,8v, ya que hay una caída de potencial de 0,2v en la resistencia) y pasaría una corriente de unos 20 microamperios, suficiente para excitar la entrada del puerto. Es decir, que el consumo de energía se mantiene en cualquier caso bajo.

Hemos localizado sin excesiva dificultad un par de resistencias de 10k ohmios utilizando el sistema de identificación por código de colores. Estas resistencias, una vez extraídas del PCB quedan com se muestra en la figura siguiente.

EconoBOT. Cap. 31. Electrónica I

En el capítulo 4 veíamos los bloques estructurales del robot. El sistema de propulsión ya está terminado y el sistema sensorial (bumpers) también. Nos quedarían los sistemas de potencia, control y alimentación.

En cuanto al sistema de control, inicialmente pensé que lo más sencillo era hacer un robot analógico, puramente reactivo y así es, pero he decidido complicar un poco más el proyecto y así hacerlo más didáctico y práctico. No utilizaré un sistema de control analógico, sino digital, con programación. En cualquier caso, el sistema de control analógico sería tal como se muestra en esta página, sobre el robot “pegatortas” del grupo Cucabot: LINK

Es muy común construir robots en los que todas las operaciones lógicas son realizadas, no dentro del propio robot, sino en un ordenador externo a él, con el que se comunica bien mediante un cable, o bien mediante un sistema de transmisión inalámbrica (wiffi, bluetooth, gsm/gprs/umts, radiomodem, infrarrojos,..). También es común construir robots que toman su energía, no de baterías, sino de alimentadores externos a él. Econobot será un robot de estos, con lógica y alimentación externa. Para la alimentación utilizará el alimentador de móvil (item 19), de 5 voltios. Para la lógica externa utilizaré el ordenador, de manera que nos conectemos a él a través de su puerto paralelo. Pero de eso ya hablaremos en otro capítulo. En este hablaremos de la Etepa de Potencia.

El puerto paralelo de un PC tiene varias salidas y entradas que funcionan a 5v. Las salidas son las que nos permitirán activar los motores, no obstante, cada salida del puerto paralelo solo puede entregar del orden de 2,6mA de corriente. Puesto que los motores que utilizamos consumen un mínimo de 60mA y un máximo de 300mA según sus hojas de especificaciones. Si se conectan los motores directamente a las salidas del puerto paralelo, los motores “pedirán” más corriente de la que pueden entregar estas salidas del puerto y “en su afán de entregar dicha corriente” se quemará el puerto paralelo. Por tanto, para poder entregar a dichos motores tal corriente, manteniendo el control, necesitamos una etapa de potencia. Una etapa de potencia es un circuito capaz de “aumentar” los 2,6mA entregados por las salidas del puerto paralelo en mucho más, para poder mover los motores.

Las etapas de potencia más conocidas son los Puentes-H, que utilizan varios transistores para conseguir ese aumento de potencia. Otro tipo de etapas de potencia la constituyen los Drivers de Potencia, que son circuitos integrados que poseen toda la electrónica necesaria en su interior y que son extremadamente sencillos de utilizar. Uno de los más comúnmente utilizados en robótica de afición es el L293D. Este tipo de circuitos dispone al menos de un par de pines para la alimentación, pines de entrada de baja corriente y pines de salida de media/alta corriente. En los pines de entrada de baja corriente es donde se conectan las salidas del puerto paralelo (o las salidas de un microcontrolador cualquiera) y en las salidas de media/alta potencia es donde se conectan los motores.

Nos hemos dedicado por tanto a caracterizar los diferentes componentes que tienen aspecto de ser drivers, tomando nota de sus números de referencia y buscando sus datasheets (hojas técnicas de especificaciones) en páginas especializadas, como

Tras una búsqueda entre los componentes de todas las placas electrónicas encontramos los siguientes drivers:

  • BA6209 Driver dual. Alimentación: 6 a 18v. Corriente max: 1.6A
  • LB1641 Driver dual. Alimentación: 5 a 18v. Corriente max: 1.6A
  • TC4424 (2) Driver dual. alimentación: 5 a 22v. Corriente max: 3A
  • BA5983FM BTL DRIVE

Utilizaremos los TC4424. Su datasheet es ESTE (PDF)

Una vez extraídos los chips, a base de romper la placa de circuitos (PCB), quedan como se muestra a continuación:

Este chip tiene 8 pines. Dos de ellos son para la alimentación (5v), dos para las entradas de baja corriente y dos para las salidas de media/alta corriente. Es un chip realmente sencillo de utilizar. Cada vez que apliquemos un 1 (alrededor de 5v) en las entradas de baja corriente, obtendremos un 1 (5v) en las de salida de media/alta corriente. Cada vez que apliquemos un 0 (alrededor de 0v) en las entradas de baja corriente, obtendremos un 0 (0v) en las de salida de media/alta corriente. Cada chip tiene dos entradas y dos salidas, así que podremos utilizar un chip para cada motor.

 

Talleres de Robótica en CosmoCaixa

Se van a realizar una serie de talleres de Robótica de Lego Mindstorms en CosmoCaixa de Barcelona y Madrid. El calendario es el siguiente:

CosmoCaixa Madrid:
23, 26, 27, 28, 29, 30 Diciembre 2006  
2,3,4 Enero 2007
Horarios: 12.30, 13,30, 16,30, 17.30,18.30
http://obrasocial.lacaixa.es/centros/cosmocaixamadrid_es.html

CosmoCaixa Barcelona:
23, 24, 26, 27, 28, 29, 30, 31 Diciembre 2006  
2,3,4,5, 7 Enero 2007
Horarios: 12,13,16,17
http://obrasocial.lacaixa.es/centros/cosmocaixabcn_es.html

EconoBOT. Cap. 30. La rueda loca

Finalmente, para que el robot pueda desplazarse, le pondremos un tercer punto de apoyo, constituido por una rueda loca, que no es más que una rueda que se desplaza libremente hacia cualquier sitio, para servir simplemente como punto de apoyo. Para construirla hemos utilizado un par de piezas sacadas de los videos. Una es una polea y la otra un trozo de plástico, que se muestran en la siguientes imágenes.

Deformando la parte metálica de la polea y recortando partes de la pieza de plástico y doblándolas bajo la llama del mechero, podemos unirlas para formar la rueda loca. Es necesario que el eje de la rueda (eje horizontal) no haga intersección con el eje de desplazamiento del conjunto. Es decir, que el eje de la rueda esté más avanzado que el punto donde anclamos la rueda loca al chasis. Esto asegura que la rueda puede moverse hacia cualquier posición.

Poniéndole la goma pequeña de una polea a modo de “neumático”, para asegurar que la rueda haga buen contacto con el suelo y no resbale y montándolo en la parte inferior del robot, quedaría así:

con lo que el robot, puesto boca arriba quedará finalmente con sus tres puntos de apoyo:

Con esto tenemos ya la mecánica del robot completa.