Wednesday, 27 November 2024
MONOGRÁFICO: Controlabot - Controlabot (7) PDF Print E-mail
EQUIPAMIENTO TECNOLÓGICO - Didáctica de la tecnología
Sunday, 01 November 2009 00:00
Article Index
MONOGRÁFICO: Controlabot
Controlabot (2)
Controlabot (3)
Controlabot (4)
Controlabot (5)
Controlabot (6)
Controlabot (7)
All Pages

CONTROLABOT (7)

Introducción

En este último capítulo centrado en la robótica, utilizaré la tarjeta ControlaBot (diseñada en el capítulo anterior) para crear programas que puedan crear una reacción en el móvil, simultaneando cuatro posibles detecciones a la vez a través de sus entradas: pueden estar relacionadas con la presencia o no de luz directa sobre él, con el color de la superficie sobre la que se desplace, con el contacto o la cercanía a una superficie vertical, etc.

Experimentando con sensores

Existen disponibles en la red de forma gratuita una serie de programas desarrollados con el objetivo de mostrarnos en pantalla el estado en el que se encuentran cada uno de los pines del puerto paralelo, como son el “Parallel Monitor” o “Port Viewer”. La ventaja que nos proporcionan, es la de poder activar o desactivar los 8 bits de salida directamente con el ratón, sin necesidad de escribir instrucciones, pero lo más importante es que nos permiten visualizar rápidamente cuando las entradas del puerto cambian de estado, indicándonos además el número decimal que debe acompañar a la primitiva LEEPUERTO en la programación, números que ya conocemos de capítulos anteriores, a excepción del pin de entrada número 15 cuya identificación es:

Entrada pulsada

Mensaje decimal

Byte en el puerto

Pin 15

112

“01110000”

Un sensor digital de fácil creación, consiste en un relé reed de accionamiento magnético: este dispositivo tiene un fino encapsulado de cristal que aloja dos laminillas metálicas separadas medio milímetro, de modo que al aproximar un imán se doblan lo justo para contactar entre sí, cerrando un supuesto camino eléctrico. De los extremos del encapsulado surgen las dos patillas del relé, en una de las cuales soldaríamos una resistencia de valor 100 ohmios y en la otra un cable de masa; en la patilla libre de la resistencia soldaríamos el correspondiente cable del pin de entrada.


He experimentado con la conexión de un potenciómetro de 10 Kohmios en un circuito conectado al pin de entrada, por un lado, y a un pin de masa, por otro; al girar su eje, se observa en la pantalla del programa Parallel Monitor cómo, aproximadamente en el valor de 660 ohmios, se produce la activación (pin en verde) o desactivación (pin en rojo) de la correspondiente entrada; la conclusión es que podemos crear interruptores analógicos utilizando resistencias variables.

Un dispositivo muy utilizado en electrónica con los alumnos son las resistencias variables con la luz (comúnmente conocidas como L.D.R.), cuyo valor resistivo oscila entre los 20 Kohmios (en la oscuridad) y los 500 ohmios (con la luz incidente de una linterna normal o de un led de alta luminosidad). Si queremos que el puerto paralelo detecte cambios bruscos de luminosidad, sólo tenemos que intercalarlas, sin ningún otro elemento, entre los cables del pin de entrada y el de masa: proyectando a poca distancia de la resistencia la luz de una linterna, su valor óhmico disminuirá hasta valores los inferiores a 660 ohmios, permitiendo la detección de la luminosidad como señal de entrada; su transición a valores óhmicos elevados se produce de forma inmediata una vez desaparece la luz, conmutando la señal en el puerto (he probado LDR de distintos proveedores y han funcionado todas).

Programación de un robot sigueluces

Aprovechando la estructura de móvil descrita en el capítulo 5, voy a ubicar sobre su plataforma de tablero de fibras perforado, la tarjeta ControlaBot en la que conectaré los cables de los motores a las regletas de salida de los drivers, los cables del portapilas a la regleta de alimentación (con su polaridad correspondiente), y dos L.D.R a las regletas de entradas próximas al conector paralelo. El programa que escribiré servirá para guiar el móvil con una linterna dirigiendo su luz hacia las LDR, de tal modo que cuando incida en ambas a la vez, el móvil avance recto, cuando incida en la resistencia variable de la izquierda gire para ese lado y cuando lo haga en la derecha gire en esa dirección; por último, el móvil retrocederá en línea recta en el caso de no ser enfocado con la luz: asignando un tiempo de funcionamiento para cada uno de los movimientos anteriores, podremos lograr un desplazamiento ordenado.

Recordemos que el motor derecho se conectaría a los pines 2 y 4 del conector paralelo, y el motor izquierdo a los pines 7 y 9, generándose las siguientes combinaciones, respectivamente, para el avance, el giro a la derecha, el giro a la izquierda y el retroceso:

PARA PRUEBA

ESCRIBEPUERTO 888 (1+32) ESPERA 100

ESCRIBEPUERTO 888 (4+32) ESPERA 100

ESCRIBEPUERTO 888 (1+128) ESPERA 100

ESCRIBEPUERTO 888 (4+128) ESPERA 100

ESCRIBEPUERTO 888 0

FIN


Verificado el correcto funcionamiento de los drivers y una vez conectadas las dos resistencias variables con la luz a cada regleta doble de entrada (pines 12 y 15) con puesta a tierra anexa (insertando ellas directamente las patillas de cada LDR y doblándolas después ligeramente hacia arriba), el procedimiento en LOGO podría resolverse del siguiente modo con una variable de tiempo :SEG, ajustable al ejecutar el programa (funciona razonablemente bien escribiendo SIGUELUCES 200 en la barra de ejecución)

PARA SIGUELUCES :SEG

SI ((LEEPUERTO 889) = “120) [ESCRIBEPUERTO 888 132 ESPERA :SEG]

SI ((LEEPUERTO 889) = “112) [ESCRIBEPUERTO 888 36 ESPERA :SEG/2]

SI ((LEEPUERTO 889) = “88) [ESCRIBEPUERTO 888 129 ESPERA :SEG/2]

SI ((LEEPUERTO 889) = “80) [ESCRIBEPUERTO 888 33 ESPERA :SEG*2]

SIGUELUCES :SEG

FIN

Como el móvil dispone de motores con una gran reducción mecánica de su velocidad, disponemos de mucho par de fuerza en sus ruedas, lo que le permite desplazarse sin problemas aunque conectemos placa y ordenador con un cable paralelo estándar, relativamente pesado y rígido. De todos modos, yo me he construido un cable aligerado tras pelar uno comercial, eliminando su vaina exterior de plástico, su apantallamiento de aluminio trenzado, así como todos los cables excepto los correspondientes a los pines que he utilizado para el programa anterior: 2, 4, 7, 9, 12, 15 y 25.


Construcción de un detector de superficies blancas

Demostradas las posibilidades de uso de las LDR conectadas a las entradas del puerto paralelo, surge la idea de que reciban la luz producida por un diodo led blanco de alta luminosidad, pero reflejada en la superficie sobre la que se desplace el móvil. Como sabemos, la corriente proporcionada por el puerto paralelo es muy baja, por lo que los leds conectados directamente a sus salidas de datos emiten una luz débil, es decir, que para lograr una luz blanca con la intensidad suficiente como para que, reflejada en una superficie blanca, sea detectada por la LDR, debemos conectar directamente el diodo de alta luminosidad a la regleta del portapilas, y polarizándolo correctamente para probarle.


En un trozo cuadrado de cartón fino de unos dos centímetros de lado y doblado por la mitad en ángulo recto, pegaremos con una gota de cola termofusible la LDR y el led blanco, por separado, en ambas caras de uno de los lados de la escuadra, quedando la otra como elemento para la fijación del conjunto en un perfil de aluminio situado en el frontal del móvil. Los dos elementos deberán enfocarse hacia el suelo, del que se distanciarán en aproximadamente medio centímetro: puede comprobarse con la utilidad “Parallel Port “que la entrada del puerto paralelo distingue la presencia de una superficie blanca (cuya luz reflejada hará disminuir el valor óhmico de la LDR por debajo de 700 ohmios) o una línea negra.


Si disponemos de dos perfiles (separados 2 cm) en el frontal del móvil, pegando en ellos dos sensores como los descritos anteriormente (con los diodos conectados en paralelo para reducir el número de cables), aquel podría seguir la trayectoria de una línea negra, para lo cual bastaría con adaptar la programación mostrada en el anterior capítulo, a la nueva tarjeta,además de aprovechar que también disponemos de dos diodos led rojos con los que crear efectos luminosos (en este caso se enciende el diodo del mismo lado hacia donde gira el móvil):

PARA LINEANEGRA2

SI ((LEEPUERTO 889) = “80) [ESCRIBEPUERTO 888 33]

SI ((LEEPUERTO 889) = “88) [ ESCRIBEPUERTO 888 36 ESCRIBEPUERTO 888 8]

SI ((LEEPUERTO 889) = “112) [ ESCRIBEPUERTO 888 129 ESCRIBEPUERTO 888 16]

SI ((LEEPUERTO 889) = “120) [ESCRIBEPUERTO 888 0 ]

LINEANEGRA2

FIN

Nuestros nuevos sensores también podría ser colocados en posición horizontal para detectar posibles obstáculos verticales blancos, es decir, que podemos aprovechar nuestra experiencia con los finales de carrera del capítulo 5 para, como hemos hecho antes, adaptar el procedimiento:

PARA SALVAPAREDES

SI ((LEEPUERTO 889) = “80) [ESCRIBEPUERTO 888 33]

SI ((LEEPUERTO 889) = “88) [ESCRIBEPUERTO 888 132 ESPERA 50 ESCRIBEPUERTO 888 36 ESPERA 50]

SI ((LEEPUERTO 889) = “112) [ESCRIBEPUERTO 888 132 ESPERA 50 ESCRIBEPUERTO 888 129 ESPERA 50]

SI ((LEEPUERTO 889) = “120) [ESCRIBEPUERTO 888 132 ESPERA 50]

SALVAPAREDES

FIN

Una última idea que me sugiere el sensor, es la de poder programar el dispositivo móvil para que no se caiga de una mesa blanca o de color claro, ya que al asomarse uno de los leds blancos más allá del borde de la mesa, deja lógicamente de reflejarse su luz, pudiendo indicar en la programación la necesidad de que, en esa circunstancia, giren los motores en retroceso para evitar que el robot explorador vuelque.

PARA ANTIVUELCO

SI ((LEEPUERTO 889) = “80) [ESCRIBEPUERTO 888 33]

SI ((LEEPUERTO 889) = “112) [ ESCRIBEPUERTO 888 36 ESPERA 50]

SI ((LEEPUERTO 889) = “88) [ ESCRIBEPUERTO 888 129 ESPERA 50]

ANTIVUELCO

FIN

Finalmente, como disponemos de 4 entradas de detección en la tarjeta multitarea, podemos combinar varios de los procedimientos anteriores en un solo programa, por ejemplo, SIGUELUCES y ANTIVUELCO; para ello he conectado una patilla de cada LDR a cada una de las entradas, aún sin utilizar, de la regleta adyacente a las de los motores, y las otras patillas a la masa de la pila (de modo que hago útiles los pines 11 y 13 del conector paralelo), creándose las combinaciones decimales que se observan en el programa:

PARA MULTITAREA :SEG

SI ((LEEPUERTO 889) = “120) [ESCRIBEPUERTO 888 132 ESPERA :SEG]

SI ((LEEPUERTO 889) = “104) [ESCRIBEPUERTO 888 36 ESPERA :SEG/2]

SI ((LEEPUERTO 889) = “248) [ESCRIBEPUERTO 888 129 ESPERA :SEG/2]

SI ((LEEPUERTO 889) = “232) [ESCRIBEPUERTO 888 33 ESPERA :SEG*2]

SI ((LEEPUERTO 889) = “112) [ ESCRIBEPUERTO 888 36 ESPERA :SEG/2]

SI ((LEEPUERTO 889) = “88) [ ESCRIBEPUERTO 888 129 ESPERA :SEG/2]

MULTITAREA :SEG

FIN

Conclusión final

Creo que han quedado sobradamente demostradas las posibilidades que, para el desarrollo de una robótica de muy bajo coste con nuestros alumnos, proporciona el acceso al puerto paralelo de los viejos ordenadores, utilizando además, un lenguaje de programación sencillo y en castellano.



 

Revista INTEFP

Marcadores Sociales

Facebook MySpace Twitter Delicious Google Bookmarks 

Artículos relacionados