Diseño de un robot

29
CONTROLABOT (1) Metodología clásica de la robótica en el taller de Tecnología. En los nuevos currículos de Tecnología se incorporan contenidos relativos a el control y la robótica, sin tener en cuenta el elevado coste que supone, para los Centros o departamentos, la adquisición de nuevos equipos que permitan poder experimentar en el taller dichos contenidos con los alumnos . La solución típica por parte del profesorado, consiste en aprovechar las dotaciones de tarjetas controladoras (tipo Inves, Enconor, CNICE) que se recibieron en los Institutos en los años 90 o quizás posteriores dotaciones de ladrillos Lego (adquiridas por las Consejerías de Educación de algunas Comunidades); el problema surge cuando existen insuficientes unidades de los equipos citados (con un precio mínimo de alrededor de 100 euros por unidad), de modo que es complicado que cada uno de los seis grupos de trabajo (compuesto de 4 ó 5 alumnos) con los que se organiza normalmente una clase en el taller de Tecnología, pueda disponer de su propia tarjeta o ladrillo. Aunque cualquiera de estas circunstancias pueda solventarse por parte del profesor, con estrategias metodológicas diversas e imaginativas que aprovechen nuestros siempre escasos recursos, creo que todos estamos de acuerdo en que son contenidos que deben ser tratados dignamente, ya que además suponen para muchos chicos y chicas, el punto de partida para ser atraídos hacia estudios tecnológicos posteriores. Las tarjetas controladoras a las que me he referido anteriormente, utilizan el lenguaje LOGO para su programación, y para funcionar, se conectan con el ordenador a través del puerto serie (Enconor) o paralelo (Inves, CNICE); además se necesita cargar un programa de cierta complejidad que las permita entenderse con el ordenador y con el software de programación correspondiente. En este punto es, en mi opinión, donde los alumnos (y sobre todo las chicas) se asustan con la robótica, perdiendo muchos el interés hacia los conocimientos relativos al ámbito de la Tecnología, la cual se muestra conceptualmente inabordable. Pasan de un modo súbito, dsde montar sencillos circuito eléctricos (por ejemplo, un mando con pulsadores conectado mediante un cable a un dispositivo móvil) o electrónicos (tipo sensores de luz con transistor y relé para activar un motor incidiendo en una LDR con una linterna) que pueden llegar a comprender, hasta trabajar con una tarjeta comercial llena de elementos electrónicos, componentes integrados y relés, es decir, de circuitería excesivamente compleja. No cabe duda del potencial que tienen estas tarjetas para automatizar todo tipo de proyectos utilizando sus entradas y salidas digitales o analógicas, pero creo que es de sumo interés que además los alumnos comprendan qué está pasando en cada dispositivo utilizado (así como a través de los cables con los que se conectan al ordenador) cada vez que se ejecuta una instrucción de programación. Aprovechando los ordenadores antiguos.

description

Diseño de un robot

Transcript of Diseño de un robot

Page 1: Diseño de un robot

CONTROLABOT (1)

Metodología clásica de la robótica en el taller de Tecnología.

En los nuevos currículos de Tecnología se incorporan contenidos relativos a el control y la robótica, sin tener en cuenta el elevado coste que supone, para los Centros o departamentos, la adquisición de nuevos equipos que permitan poder experimentar en el taller dichos contenidos con los alumnos .

La solución típica por parte del profesorado, consiste en aprovechar las dotaciones de tarjetas controladoras (tipo Inves, Enconor, CNICE) que se recibieron en los Institutos en los años 90 o quizás posteriores dotaciones de ladrillos Lego (adquiridas por las Consejerías de Educación de algunas Comunidades); el problema surge cuando existen insuficientes unidades de los equipos citados (con un precio mínimo de alrededor de 100 euros por unidad), de modo que es complicado que cada uno de los seis grupos de trabajo (compuesto de 4 ó 5 alumnos) con los que se organiza normalmente una clase en el taller de Tecnología, pueda disponer de su propia tarjeta o ladrillo.

Aunque cualquiera de estas circunstancias pueda solventarse por parte del profesor, con estrategias metodológicas diversas e imaginativas que aprovechen nuestros siempre escasos recursos, creo que todos estamos de acuerdo en que son contenidos que deben ser tratados dignamente, ya que además suponen para muchos chicos y chicas, el punto de partida para ser atraídos hacia estudios tecnológicos posteriores.

Las tarjetas controladoras a las que me he referido anteriormente, utilizan el lenguaje LOGO para su programación, y para funcionar, se conectan con el ordenador a través del puerto serie (Enconor) o paralelo (Inves, CNICE); además se necesita cargar un programa de cierta complejidad que las permita entenderse con el ordenador y con el software de programación correspondiente.

En este punto es, en mi opinión, donde los alumnos (y sobre todo las chicas) se asustan con la robótica, perdiendo muchos el interés hacia los conocimientos relativos al ámbito de la Tecnología, la cual se muestra conceptualmente inabordable. Pasan de un modo súbito, dsde montar sencillos circuito eléctricos (por ejemplo, un mando con pulsadores conectado mediante un cable a un dispositivo móvil) o electrónicos (tipo sensores de luz con transistor y relé para activar un motor incidiendo en una LDR con una linterna) que pueden llegar a comprender, hasta trabajar con una tarjeta comercial llena de elementos electrónicos, componentes integrados y relés, es decir, de circuitería excesivamente compleja.

No cabe duda del potencial que tienen estas tarjetas para automatizar todo tipo de proyectos utilizando sus entradas y salidas digitales o analógicas, pero creo que es de sumo interés que además los alumnos comprendan qué está pasando en cada dispositivo utilizado (así como a través de los cables con los que se conectan al ordenador) cada vez que se ejecuta una instrucción de programación.

Aprovechando los ordenadores antiguos.

En los ordenadores o portátiles de última generación prácticamente han desaparecido los puertos de conexión con periféricos de tipo paralelo o serie, siendo sustituidos por el puerto USB. Entender el funcionamiento de los dos últimos citados resulta difícil incluso para cualquier profesor del área, sin embargo ocurre justo lo contrario con el puerto paralelo que, a grandes rasgos, puede ser explicado a los alumnos y ser utilizado por ellos con soltura, tanto para establecer su cableado, como para programar a través de él.

Cualquier ordenador antiguo (incluso con procesador Pentium I) que disponga de puerto paralelo, puede ser utilizado para el desarrollo de las prácticas y circuitos que pasaré a describir a lo largo de este monográfico; no se necesitan tampoco requerimientos especiales de memoria Ram, excepto la que permita poner a funcionar el sistema operativo (desde Windows 95). Es importante saber que si nuestro sistema operativo va a ser el 2000 ó el XP,

Page 2: Diseño de un robot

debemos instalar un fichero especial en el sistema, tal y como se explica al descargar la aplicación gratuita “UserPort” (existen otras, pero esta es la más recomendable).

Dicho de otro modo, podemos aprovechar un montón de ordenadores desechados del aula de informática de nuestro Instituto o inutilizados por los profesores y por los mismos alumnos debido, sobre todo, a su incapacidad de conectarse en buenas condiciones a Internet; además existen en el mercado virtual muchos sitios donde adquirir equipos de segunda mano a muy bajo coste, y con garantía de al menos un año.

Breve introducción al puerto paralelo.

Al ser un puerto inventado por los ingenieros de IBM para conectar una impresora a los primeros ordenadores allá por 1981, tiene desde mi punto de vista, un carácter tecnológico muy primitivo que le proporciona un gran atractivo hoy día. Durante su funcionamiento se transmite un byte de información digital en cada instrucción efectuada desde el ordenador y los 8 bits que lo componen se transmiten a la vez (en paralelo) y desde su correspondiente pin numerado del puerto; en cada uno de ellos se podrá conectar un cable que nos lleve una señal digital desde el ordenadorhasta el dispositivo exterior que queramos controlar.

El puerto tiene 25 pines clasificados en cuatro grupos: ocho pines de salida o de Datos (del número 2 al 9), ocho de puesta a tierra (del número 18 al 25), cinco de entrada o de Estado (del 10 al 13 y el 15) y cuatro pines de Control (que no usaremos). Como consecuencia tenemos la posibilidad de enviar 8 señales electrónicas desde el ordenador y de detectar fácilmente hasta 5 señales desde el exterior; para ello bastará utilizar un cable para cada uno de estos pines, junto con uno más, conectado a los pines de masa (GND).

Los diodos led que voy a montar en mi placa electrónica, a modo de display, se van a alimentar únicamente con la corriente proporcionada por las propias salidas del puerto, es decir, sin necesidad de baterías externas: en la mayoría de los PC el puerto paralelo proporciona corriente suficiente (unos 20 mA) para una clara indicación visual de los diodos.

Como primer ejemplo, la programación del encendido de un diodo led sólo necesitaría de dos cables, lo que configura un circuito electrónico elemental (y conocido por los alumnos) compuesto por el ordenador (que hace de fuente de alimentación), cable de salida, resistencia de protección (que puede ser de valor 220 ohmios), diodo led y cable de puesta a tierra. Si queremos programar tres leds de distintos colores a modo de semáforo, sólo necesitaremos tres cables de salida más uno común de puesta a tierra, pasando el circuito a tener una configuración en paralelo: enlazamos así el mundo del control con los conceptos más básicos del estudio de la electricidad. Finalmente, si conectamos 8 diodos leds (con su resistencia de protección) tendremos que utilizar 9 cables para programar sus secuencias de encendido desde el puerto.

Page 3: Diseño de un robot

En las tiendas de electrónica pueden adquirirse conectores macho de 25 pines con los que fabricarse un cable que sirva para unir nuestros dispositivos con el puerto hembra del ordenador: es una opción que considero mucho más didáctica que el utilizar cables de tipo paralelo con su cableado completo y oculto; otra alternativa interesante puede ser pelar la funda exterior de algún cable paralelo standard antiguo y dejar sólo los cables del interior correspondientes a los pines que se vayan a utilizar.

Para programar con los alumnos recomiendo utilizar el lenguaje LOGO a través del programa de distribución gratuita MSWLogo en su versión 6.3c (anterior y distinta de la última desarrollada por el CNICE, que es la 6.5 y que sirve para las controladoras comerciales). Las ventajas frente a otros lenguajes de programación son la sencillez de su sintaxis, su vocabulario en castellano y , por supuesto, la facilidad que tiene el usuario para comunicarse con el puerto paralelo.

Construcción de una mini-tarjeta con 8 leds.

Para elaborar una pequeña tarjeta con 8 diodos led (cada bit de información va ha ser visualizado en un led de salida) basta con conectar cada uno de ellos en serie con una resistencia de unos 300 ohmios sobre un pletina de pruebas de fibra de vidrio con topos de soldadura (de venta en cualquier tienda de componentes electrónicos). Los tamaños standard de una pletina pequeña suelen ser de 77 x 90 mm ó de 100 x 80 mm, pero para esta experiencia bastará con utilizar una mitad (puede cortarse fácilmente con una sierra de metal).

Lo más correcto, dado que así aparecen en las tarjetas comerciales, sería utilizar diodos leds del mismo color ordenados en línea y con la salida correspondiente al pin 2 del puerto conectado al led situado más a la derecha; esta disposición tiene la ventaja de permitir que los alumnos entiendan fácilmente el paso de la numeración en código decimal a código binario, lo cual supone su iniciación en el mundo digital.

En mi caso he decidido realizar la tarjeta en un cuadrado de 5 x 5 cm (que descubrí que me cabía en un envase de plástico de los utilizados en los bricolajes para clasificar tornillos) y disponiendo los leds en dos líneas, ligeramente desplazadas, con una secuencia de colores rojo – verde – amarillo; además he utilizado una pletina con tiras de cobre cada 5 mm para así reducir el número de soldaduras; por contra, hay que eliminar algunas partes de la tira de cobre (utilizando la punta de una tijera o un cutter) para evitar cortocircuitar los diodos o las

Page 4: Diseño de un robot

resistencias. Al colocar los componentes, he tratado de crear dos líneas transversales de eliminación del cobre en cada tira (como puede observarse en la foto).

Page 5: Diseño de un robot

El circuito tiene un esquema simbólico sencillo, repitiéndose ocho veces la conexión: cable del pin de un dato, diodo led (polarizado correctamente), resistencia de protección (que puede

también situarse antes del led) y conexión común al cable de puesta a tierra, realizada en mi caso con grapas soldadas a las pistas, de modo que unen las ocho líneas transversalmente

para terminar en una novena pista en el extremo de la placa donde conectar el cable de masa que vuelve al pin 18.

Para conectarme con el ordenador he utilizado un cable paralelo antiguo que he dejado con una longitud de más o menos 1 m; después de quitar su vaina exterior y su empantallado de aluminio, he cortado todos los cables sobrantes conectados a los pines que no voy a utilizar y sólo he dejado los que van del pin 2 al 9 más el de masa (aunque no se si es del todo necesario, yo he unido con un cable todos los pines de puesta a tierra, del 18 al 25). El último paso ha sido soldar cada cable a su pista correspondiente, aunque previamente, para asegurar su resistencia a más que posibles tirones, he anudado los hilos de cada cable tras hacerlos pasar por dos orificios contiguos de la placa.

Page 6: Diseño de un robot

Conclusión

Hasta aquí queda descrito el modo de construcción de la tarjeta, dejando para los próximos capítulos de este monográfico la parte de su puesta en funcionamiento, con ejemplos de programación, así como el conexionado de sensores a los denominados pines de entrada o Estado.

CONTROLABOT (2)

Introducción

Una vez esté terminada la placa electrónica con su cableado, antes de conectarla al puerto del ordenador, podemos verificar visualmente, o mejor con un polímetro, que no existe ninguna soldadura defectuosa y que los cables están ordenados y relacionados con el pin del conector macho del puerto paralelo, según la numeración prevista.

Probando la mini-tarjeta.

Ya he comentado en el artículo anterior que voy a utilizar MSWLogo 6.3 (sin olvidarme instalar el fichero UserPort.sys en mi Sistema Operativo si éste es Windows 2000 ó XP) para realizar los programas que enciendan los leds de la mini-tarjeta. Aparte de conocer la sintaxis de un

Page 7: Diseño de un robot

procedimiento en el lenguaje LOGO, es obligado utilizar la primitiva ESCRIBEPUERTO 888 dato, que sirve para enviar una salida desde el puerto paralelo del ordenador a la tarjeta, indicando el número correspondiente al led que quiere encenderse.

Con un byte de información podemos enviar números decimales del 1 al 255, que aparecerán convertidos al código binario con el encendido en el display de unos u otros leds. La numeración en binario se ordena de derecha a izquierda con las potencias del número dos: el dato = 1 (salida 0 en la tarjeta, cable conectado al pin 2 del puerto) se corresponderá a 20, el dato = 2 (salida 1, cable en el pin 3) se refiere a 21,después vendrían sucesivamente los datos 4, 8, 16, 32, 64 y finalmente el dato = 128 (salida 7, cable en el pin 9) que significa 27. Cualquier número en decimal puede ser traducido a binario (e indicado en nuestra tarjeta) sumando los valores de datos anteriores: por ejemplo, 219 será la suma de 128 + 64 + 16 + 8 + 2 + 1, encendiéndose simultáneamente los leds numerados en mi tarjeta como 7, 6, 4, 3, 1 y 0.

Una vez esté terminada la tarjeta con su cable conectado al puerto, en la barra inferior del programa MSWLogo teclearíamos ESCRIBEPUERTO 888 219, y después pulsaríamos el botón de ejecutar; para apagar los leds, tenemos que teclear ESCRIBEPUERTO 888 0 y si queremos que el encendido dure un tiempo concreto (por ejemplo, 5 segundos) intercalamos ESPERA 500 entre las dos instrucciones anteriores.

Siempre es más correcto en LOGO crear procedimientos y almacenarlos en el Editor (botón Archivo – Editar en la barra del menú), ya que aquí son más fáciles de probar y depurar; un ejemplo de procedimiento para realizar una secuencia luminosa sería:

PARA LUCES

ESCRIBEPUERTO 888 1 ESPERA 100

ESCRIBEPUERTO 888 128 ESPERA 100

ESCRIBEPUERTO 888 2 ESPERA 100

ESCRIBEPUERTO 888 64 ESPERA 100

ESCRIBEPUERTO 888 4 ESPERA 100

ESCRIBEPUERTO 888 32 ESPERA 100

ESCRIBEPUERTO 888 8 ESPERA 100

ESCRIBEPUERTO 888 16 ESPERA 100

Page 8: Diseño de un robot

ESCRIBEPUERTO 888 0

FIN

Tecleando LUCES en la barra de ejecución, en la tarjeta observaríamos la secuencia de encendido de los leds 0, 7, 1, 6, 2, 5, 3, 4 durante un segundo cada uno, apagándose todos al final. Si queremos que la secuencia se repita una y otra vez, modificaríamos el procedimiento intercalando la palabra LUCES antes de FIN; ahora, dada la recursividad introducida en el programa, tendremos que pulsar sobre el botón Alto de la parte inferior derecha de la pantalla para poder detenerlo. (Nota: estoy utilizando las mayúsculas para la programación con la intención de facilitar la lectura del documento, ya que MSWLogo admite mejor la escritura en minúsculas).

Los alumnos se sienten cómodos y se familiarizan rápidamente con el lenguaje LOGO, escribiendo al principio una serie de programas que definan con exactitud el número decimal que quieren que se exprese en binario en los leds correspondientes; así pueden crear simulaciones de estribillos musicales sencillos, intermitencias que imiten las luces de los establecimientos, de las atracciones de feria, de supuestas naves espaciales, de coches fantásticos, y por supuesto, de semáforos:

PARA SEMAFORO

ESCRIBEPUERTO 888 146 ESPERA 200

ESCRIBEPUERTO 888 36 ESPERA 50

ESCRIBEPUERTO 888 73 ESPERA 200

ESCRIBEPUERTO 888 0 ESPERA 10

FIN

Escribiendo en la ventana de ejecución REPITE 5 [SEMAFORO] se creará una secuencia de cinco encendidos completos de nuestro particular semáforo. La primitiva REPITE he comprobado que es una de las favoritas de los alumnos y que la usan añadiendo números de repetición elevados en cuanto tienen definido algún procedimiento para su comprobación.

Programación con variables de la mini-tarjeta

Los procedimientos pueden ser mejorados, haciéndolos más flexibles, utilizando variables que modifiquen a nuestro antojo el tiempo de encendido o la salida que debe iluminarse. Si al procedimiento anterior lo denominamos LUCES :SEG y después en cada instrucción escribimos ESPERA :SEG, a partir de ahora el tiempo de encendido deja de tener un valor fijo de un segundo y se puede variar indicándolo al escribir en la barra de ejecución: por ejemplo, con LUCES 50 se encenderían los leds medio segundo.

Un procedimiento de pocas líneas para la traducción de números decimales a binario podría ser:

PARA NUMERO :LED

ESCRIBEPUERTO 888 :LED ESPERA 500

ESCRIBEPUERTO 888 0

FIN

Page 9: Diseño de un robot

Si tecleamos NUMERO 219 en la barra de ejecución, conseguiremos el mismo resultado en la tarjeta que con nuestro primer programa, pero con la ventaja de que ahora podemos expresar fácilmente en código binario, a través del encendido de los leds, cualquier número inferior a 256.

Para utilizar dos variables a la vez bastaría con indicarlas en el título del procedimiento y después asignarle su valor al llamar al procedimiento en la barra de ejecución; en el siguiente ejemplo (que incorpora una recursividad) se encenderían unos leds cualesquiera, estableciéndose un parpadeo de tiempo a decidir por el programador:

PARA PARPADEO :LED :SEG

ESCRIBEPUERTO 888 :LED ESPERA :SEG

ESCRIBEPUERTO 888 0 ESPERA :SEG

PARPADEO :LED :SEG

FIN

Page 10: Diseño de un robot

Ahora hay que teclear dos números acompañando al título (como PARPADEO 36 50, que crea en mi tarjeta una luz intermitente amarilla de medio segundo de duración). A partir de este momento se abre un enorme abanico de posibilidades de programación, ya que además podemos añadir operaciones matemáticas que modifiquen los valores asignados de inicio a las variables. Un procedimiento a proponer a los alumnos sería el que enciende de uno en uno los leds de tarjeta, en este caso durante 20 centésimas de segundo :

PARA SECUENCIA :LED

ESCRIBEPUERTO 888 :LED ESPERA 20

SECUENCIA :LED*2

FIN

El programa se iniciaría escribiendo en la barra de ejecución SECUENCIA 1 y no termina, debido a la recursividad, hasta que pulsemos el botón Alto. El valor 1 (que enciende el led 0) asignado a la variable en el inicio, se multiplica por 2 (led 1 encendido) en el primer ciclo recursivo, y este nuevo resultado vuelve a multiplicarse por 2 en la segunda recursividad, y así sucesivamente hasta que la variable valga 128 y se encienda el led 7. El recorrido del encendido de leds puede invertir su sentido utilizando en la división por la mitad de la variable (:LED/2), a la que de inicio asignaríamos el valor 128.

Programación de la mini-tarjeta incluyendo el condicional

Cualquier enunciado que se proponga en el taller para crear combinaciones matemáticas en el encendido de los leds, predispone a los alumnos a ejercitar el cálculo mental: se convierten así en sujetos activos de su aprendizaje al diseñar combinaciones originales de ráfagas luminosas que aumenten su tiempo de encendido en un sentido creciente, decreciente o integrando en un sólo procedimiento varios subprocedimientos que se sucedan uno tras otro (lo que más propiamente dicho se define como modularidad).

A medida que las combinaciones se van haciendo más complejas, es necesario poner unos límites a los valores numéricos que alcanzan las variables tras sucesivos ciclos recursivos, ya que es la única manera de que la mini-tarjeta no se quede “colgada” y podamos continuar ejecutando instrucciones con ella. Podemos marcar un límite a la variable :LED escribiendo una línea en el programa que diga que SI (:LED >256) [ALTO], que ejemplifica la sintaxis de una instrucción condicional, en la que si se cumple el paréntesis, se ejecuta el procedimiento entre corchetes (en este caso se detiene la recursividad cuando en el display se supere la indicación en binario del número 256, tal como si pulsáramos el botón de la pantalla).

Page 11: Diseño de un robot

Con el siguiente programa activaremos los leds de salidas de número par con RAFAGA 1, y las de número impar con RAFAGA 2 , con una duración de 30 centésimas para el encendido de los leds:

PARA RAFAGA :LED

SI (:LED >128) [ALTO]

ESCRIBEPUERTO 888 :LED ESPERA 30

RAFAGA :LED*4

FIN

Si nuestro propósito fuese alternar ambas posibilidades, teniendo en cuenta que todos los procedimientos y la denominación de sus variables queda almacenada en el Editor de MSWLogo, escribiríamos simplemente:

PARA DOBLERAFAGA

RAFAGA 1

RAFAGA 2

DOBLERAFAGA

FIN

También es interesante observar el resultado de operar con la suma o la resta para modificar la variable de tiempo en sucesivos ciclos recursivos, configurando aceleraciones o deceleraciones en el parpadeo de la mini-tarjeta, como el siguiente ejemplo, donde aprovecho la situación alternativa de mis leds por COLORES, para después ir aumentando los tiempos de activación en 10 centésimas:

PARA COLOR :LED :SEG

Page 12: Diseño de un robot

SI (:LED >128) [ALTO]

ESCRIBEPUERTO 888 :LED ESPERA :SEG

COLOR :LED*8 :SEG+10

FIN

PARA COLORES

COLOR 1 10

COLOR 2 40

COLOR 4 70

COLORES

FIN

Conclusión

En esta segunda entrega del monográfico hemos podido comprobar la mini-tarjeta y practicar con la programación en lenguaje LOGO, automatizando su funcionamiento según lo que se denomina “control en lazo abierto” de un dispositivo, ya que sólo se modifican las variables de los programas sin tener en cuenta posibles perturbaciones externas o señales de entrada a través de los correspondientes pines de Estado del puerto paralelo. Todo el capítulo no deja de ser un paso previo, aunque necesario, para acercarnos a la robótica propiamente dicha, en la que se da por supuesto que deben detectarse señales desde sensores diseñados al efecto, que sean activados por contacto, variación de la luminosidad, etc.

CONTROLABOT (3)

Introducción

En los dos capítulos anteriores de este monográfico, hemos aprovechado la facilidad de programar salidas desde el puerto paralelo para encender los leds de una mini-tarjeta diseñada para tal efecto, pero cabe recordar que disponemos de 5 pines donde conectar señales de entrada digitales para crear variaciones en nuestros programas cuando dichas entradas se accionen, es decir, cuando por ejemplo se cierre un pulsador al presionarlo.

Conexión a los pines de Entrada del puerto paralelo

Ya sabemos que el puerto paralelo proporciona 5 voltios de tensión en sus pines de salida, y también podemos decir que los pines de entrada son como un borne eléctrico que tuviera por defecto dicho potencial, con lo que al cerrar un circuito entre dos pines del puerto provocamos que una pequeña corriente recorra un cable fino (en el que intercalaríamos una resistencia) que una el pin de entrada (que hace las veces de un polo positivo) con el pin de masa (polo negativo). Al no existir alimentación externa, los riesgos de dañar el ordenador son mínimos, ya que en mi opinión, es como si estuviera el puerto paralelo autodetectándose.

El circuito de un sensor digital más sencillo, estará constituido por un pulsador (yo he escogido para mi montaje uno de tipo fin de carrera) en serie con una resistencia de 100 ohmios; desde la patilla libre de ésta saldrá un cable que se conecte al pin 25 (de puesta a tierra) del conector macho del puerto paralelo que he utilizado en la mini-tarjeta, y desde la patilla libre del pulsador saldrá otro cable que me lleve hasta el pin 13, que es el que detectará cuando, el circuito que acabo de configurar, está abierto o cerrado.

Page 13: Diseño de un robot

He repetido el montaje con otro fin de carrera conectando su cableado correspondiente a los pines 12 (entrada) y 24 (masa), disponiendo así de dos entradas que, contando con la posibilidad de pulsar los dos a la vez, me permitan tener al menos tres combinaciones de detección. Una vez terminemos de soldar los elementos y los cables, tendremos la posibilidad de interactuar con la mini-tarjeta durante la ejecución de nuestros programas; el circuito electrónico completo tendría la siguiente representación simbólica:

Page 14: Diseño de un robot

Escritura de programas que interpreten las señales de entrada

La primitiva de LOGO con la que podemos conocer el estado de las entradas del puerto paralelo es LEEPUERTO 889, de tal modo que si lo escribimos en la barra de ejecución, el programa MSWLogo nos devuelve una respuesta, que queda registrada en su ventana de Trabajo, y que en el caso de no estemos accionando ningún pulsador de entrada, dice literalmente: “No me has dicho que hacer con 120” ; éste valor numérico en código decimal, es la traducción de la información en forma de byte “01111000” código máquina que entiende el ordenador y que, en este caso, significa que no detecta nada en el puerto en entrada;con dos pulsadores conectados, podremos leer los siguientes mensajes numéricos en la ventana de Trabajo:

Entrada pulsada

Mensaje decimal

Byte en el puerto

Pin 13 104 “01101000”

Pin 12 88 “01011000”

Pines 12 + 13

74 “01001000”

Se observa como al ser presionado cada pulsador o ambos, el bit en el puerto pasa del estado en código binario “1” al valor cero“0”, es decir, según una lógica negativa, justo al contrario de la lógica positiva con la que se programan los pines de salida. Conociendo los valores de la tabla y recordando la expresión condicional utilizada en el lenguaje LOGO que ya utilicé en el capítulo anterior de este monográfico, escribiremos programas con la siguiente sintaxis:

PARA PULSADORES :SEG

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

SI ((LEEPUERTO 889) =”104) [ESCRIBEPUERTO 888 (128+16+2) ESPERA :SEG]

SI ((LEEPUERTO 889) =”88) [ESCRIBEPUERTO 888 (64+8+1) ESPERA :SEG/2]

SI ((LEEPUERTO 889) =”74) [ESCRIBEPUERTO 888 (32+4) ESPERA :SEG*2]

PULSADORES :SEG

FIN

En este programa sencillo visualizaremos en la tarjeta el encendido, durante tiempos cambiantes con la variable, de los leds agrupados por colores (para el caso de esta mini-tarjeta): los verdes si pulsamos el pin 13, los rojos con el pin 12 y los amarillos si pulsamos 12 y 13 a la vez. La primera línea del procedimiento sirve para apagar los leds hasta la siguiente pulsación, pero como existe recursividad, el procedimiento permanece activo hasta que hagamos click en el botón Alto de la pantalla de MSWLogo.

Page 15: Diseño de un robot

Dentro de los corchetes de la expresión condicional de PULSADORES, podremos incluir cualquiera de los programas que probé en la segunda entrega de este monográfico, ya que todos procedimientos que realicemos para la mini-tarjeta se pueden guardar agrupados en un solo fichero en el disco duro del ordenador, lo que permite aprovechar las variables :LED y :SEG (u otras con el nombre que se quiera, pero siempre indicadas con los dos puntos antes de la primera letra), que ya utilizamos anteriormente:

PARA SECUENCIANDO

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

SI ((LEEPUERTO 889) =”104) [SEMAFORO]

SI ((LEEPUERTO 889) =”88) [LUCES]

SI ((LEEPUERTO 889) =”74) [NUMERO 129]

SECUENCIANDO

FIN

Conviene que los procedimientos entre corchetes no dispongan de su propia recursividad, ya que no se observarían cambios en el funcionamiento de la mini-tarjeta mientras el procedimiento SECUENCIANDO continúe activo, a pesar de que pulsemos en las entradas.

Nueva propuesta de mini-tarjeta controladora

Dado lo económico (menos de 6 euros) que va ha suponer elaborar este tipo de placa electrónica, podemos proponer a los alumnos que realicen su propia mini-tarjeta y que dispongan los diodos de manera lógica (sin desordenar la numeración de las salidas), pero con un cierto grado de libertad en su colocación (delimitando un cuadrado, en diagonal, haciendo una línea quebrada, combinando colores, etc.). El inconveniente principal de este proyecto sería el de un consumo excesivo de cables paralelos pelados (en función del número de grupos de alumnos del Centro), lo que se soluciona utilizando un conector de 25 pines acodado para pinchar en la placa (lo he escogido de tipo macho, pues voy a utilizar los cables paralelos de las controladoras del taller).

Aunque tenemos dos líneas en dicho conector con trece y doce pines, nos basta con utilizar la línea de trece pines completa (que consta de 8 pines de salida y 4 de entrada) junto con el pin 25 (de la otra línea) para la puesta a tierra, el cual ligeramente doblado, lo podremos alinear con los anteriores; todos los demás pines (incluido el 1) pueden ser recortados ya que no vamos a utilizarlos y además, nos impedirían pinchar nuestro nuevo conector en las placas estándar.

Page 16: Diseño de un robot

Como ejemplo, he realizado una mini-tarjeta sobre una placa recortada de 4,5 x 7 cm, sobre la que he dispuesto los diodos leds configurando tres líneas diagonales paralelas de dos, cuatro y dos diodos, que me permitirán realizar distintas figuras luminosas; además, sus colores se ordenan agrupados (tres rojos, dos amarillos y dos verdes) en orden creciente al valor del bit de salida. Cada uno de los diodos led se conecta en serie con una resistencia de 220 ohmios, las cuales deben conectarse al pin 25 de masa, tal como ya se explicó en el primer capítulo de este monográfico.

Si bien la placa sobre la que se realiza el montaje dispone de una trama de topos de cobre cada 2,5 mm donde se supone que se pueden soldar los componentes, yo he optado por doblar las patillas de diodos y resistencias sin recortar, aprovechando su rigidez, para soldarlas alineadas directamente entre sí bajo la placa, incluso para llegar hasta cada pin correspondiente del conector. La conexión a masa de las patillas de las resistencias que cierran

Page 17: Diseño de un robot

cada circuito las he soldado entre sí, volviendo por la superficie de la placa con un cable de cobre negro hasta el pin 25 del conector.

He querido completar la mini-tarjeta aprovechando al menos dos de las entradas digitales de las cuatro posibles que me posibilitan los pines 10 al 13, eligiendo precisamente estas dos extremas; para su activación utilizaré dos mini pulsadores de cuatro patillas, conectados en serie con resistencias de 220 ohmios. El circuito simbólico completo vuelve a ser el mostrado justo antes del inicio del apartado b) de este capítulo, cambiando el pin 12 por el 10, por lo que las posibilidades de programación ahora quedarían así:

Entrada pulsada

Mensaje decimal

Byte en el puerto

Pin 13 104 “01101000”

Pin 10 56 “00111000”

Pines 10 + 13

40 “00101000”

Podemos probar esta nueva mini-tarjeta con distintos programas como, por ejemplo, el de simulación de un carrusel de luces de tiempo variable, el encendido de una “flecha” o el parpadeo de dos “comillas”:

PARA FLECHA :SEG

ESCRIBEPUERTO 888 (1+2+8+32+64+128) ESPERA :SEG

ESCRIBEPUERTO 888 0 ESPERA :SEG

FIN

Page 18: Diseño de un robot

PARA COMILLAS :SEG

ESCRIBEPUERTO 888 (4+32+128) ESPERA :SEG

ESCRIBEPUERTO 888 0 ESPERA :SEG

ESCRIBEPUERTO 888 (2+16+64) ESPERA :SEG

ESCRIBEPUERTO 888 0 ESPERA :SEG

ESCRIBEPUERTO 888 (4+32+128+2+16+64) ESPERA :SEG

ESCRIBEPUERTO 888 0 ESPERA :SEG

FIN

PARA CARRUSEL :SEG

ESCRIBEPUERTO 888 1 ESPERA :SEG

ESCRIBEPUERTO 888 2 ESPERA :SEG

ESCRIBEPUERTO 888 16 ESPERA :SEG

ESCRIBEPUERTO 888 64 ESPERA :SEG

Page 19: Diseño de un robot

ESCRIBEPUERTO 888 32 ESPERA :SEG

ESCRIBEPUERTO 888 4 ESPERA :SEG

ESCRIBEPUERTO 888 0

FIN

PARA BOTONES

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

SI ((LEEPUERTO 889) =”104) [CARRUSEL 50]

SI ((LEEPUERTO 889) =”56) [FLECHA 100]

SI ((LEEPUERTO 889) =”40) [COMILLAS 30]

BOTONES

FIN

El último programa integra los tres primeros posibilitando, a través de los pulsadores, que se ponga en marcha uno u otro, convirtiendo a la mini-tarjeta en un moderno panel de leds a escala reducida.

Conclusión

La posibilidad de que cada grupo de alumnos diseñe su propia placa, va a provocar que disfruten de su propia y original lista de programas consecuencia de la experimentación con distintas combinaciones luminosas, y como consecuencia, la motivación o curiosidad por estos contenidos de la Tecnología irán en aumento. Una vez dominada la programación de figuras luminosas, será el momento de pasar a escribir procedimientos menos caprichosos en los que se busquen combinaciones matemáticas, como los propuestos en el capítulo anterior.

CONTROLABOT (4)

Introducción

Hasta el momento hemos programado con una mini-tarjeta añadiendo pulsadores para aprovechar la capacidad de detección de entradas digitales que posee el puerto paralelo; las posibilidades de crear programas combinando estas señales se podría aprovechar en algún dispositivo de salida más completo, de mayor robustez, y donde aparezcan los pulsadores ordenados y sujetos a la base de una pequeña tarrina de plástico (de las utilizadas para la conservación de alimentos).

Propuesta de construcción de un display de 7 segmentos

Si duplico el número de leds (conectados en paralelo) en cada circuito de salida, manteniendo una sola resistencia de protección para ambos, puedo imitar a un display de siete segmentos y diseñar un “contador luminoso” (imitando a los displays de 7 segmentos comerciales) en el que se puedan representar los números del 9 negativo al 9 positivo: las salidas 1 a 7 del puerto paralelo configuran los segmentos del display y la salida 0 la utilizo para representar el signo negativo. Esta disposición de los leds no sólo me sirve para representar números (o secuencias programadas de operaciones matemáticas sencillas), sino que también puedo mostrar algunas letras en mayúscula del alfabeto (A, C, E, H, etc.) con las que visualizaré palabras o mensajes, una vez que se escriban los programas correspondientes.

Page 20: Diseño de un robot

Aunque en un primer vistazo el esquema electrónico parezca complicado, realmente la dificultad del montaje consiste en la diferenciación, para cada par de diodos led, entre las uniones en paralelo de ánodos y cátodos, y sobre todo, las conexiones entre todos éstos para formar un único camino que cierre el circuito en el pin 25 del conector paralelo (que hace de polo negativo del conjunto); en resumen, lo que tenemos es un conjunto de 8 circuitos independientes con “pin datos + resistencia + 2 leds en paralelo + conexión a masa”.

He recortado una placa de fibra de vidrio estandar (con topos para la soldadura cada 2,54 mm), con unas dimensiones de 6,5 x 8,5 cm, y sobre la que he ido colocando ordenadamente los leds (observando la polaridad que corresponda a cada par, según el esquema electrónico); las distancias en vertical y horizontal son de unos 0,5 cm, tal como puede apreciarse en la fotografía. A continuación he colocado las resistencias (de 220 ohmios) sin recortar sus patillas, pues las aprovecho como camino eléctrico hasta el ánodo del diodo led al que deba conectarse cada pin del conector para cable paralelo.

Las primeras soldaduras que voy a acometer cuando le de la vuelta a la placa, tienen que ser, como he subrayado antes, las de ánodos y cátodos de cada par de leds; después conecto las resistencias, por un lado,a cada pin del conector paralelo (soldado en la cara inferior de la placa) y por otro, al ánodo de los diodos correspondientes. Pintado con rotulador negro puede

Page 21: Diseño de un robot

apreciarse en la fotografía el camino de unión de los cátodos con el pin 25 del conector: lo he realizado doblando y soldando entre sí las patillas de aluminio de los diodos y aprovechando las zonas de holgura entre componentes para evitar contactos indeseados.

Los cables de colores que se aprecian en la imagen anterior me conectarán la placa con los pulsadores. Para la construcción propiamente dicha del contador, se necesita tener acabada la placa de leds y así poder marcar con precisión en la base de la tarrina, la posición de los agujeros donde se alojan los diodos, los pulsadores y los tornillos que servirán para fijar la placa; en la cara lateral se recortará un hueco por el que asome su conector paralelo (elegido de tipo macho como en las controladoras comerciales).

CONTROLABOT (5)

Introducción

El objetivo final de este monográfico es la construcción de un dispositivo móvil, dotado de sensores y reprogramable a través del puerto paralelo. Con el desarrollo de estos primeros capítulos adquirimos los conocimientos técnicos y teóricos que nos permitirán lograr dicho objetivo, si bien nos interesa además experimentar con una serie de dispositivos típicamente utilizados en las aulas de Tecnología y de fácil adquisición en las tiendas de electrónica, incluyendo el control de pequeños motores.

Los drivers en robótica

La corriente suministrada por el puerto, que hasta ahora utilizábamos para encender leds, es insuficiente para accionar un pequeño motor; la solución para que funcionen es añadir una alimentación de voltaje externa, pero a través de un nuevo componente electrónico denominado genéricamente en robótica como “driver”.

En un monográfico anterior denominado “Robot-bichos digitales” explicaba como crear una tarjeta de control con transistores darlington TIP 120 y TIP 125 combinados formando un esquema electrónico de “puente en H”. Sin embargo, existen circuitos integrados comerciales que incorporan esta disposición en H, ya que es muy utilizada en robótica; de entre los más comunes yo he escogido el TC-4424. Se trata de un driver de rápida respuesta, económico, que incorpora diodos de protección (necesarios en nuestro caso para no dañar el puerto paralelo del ordenador) y sólo 8 patillas, con lo que se facilita enormemente su conexionado y la explicación de su funcionamiento a los alumnos; como cada motor necesita un integrado para su control, también se detectan rápidamente los posibles fallos en el accionamiento del móvil.

Page 22: Diseño de un robot

En el esquema de conexionado del driver se observa que a un lado se disponen las patillas donde se soldarían los cables de salida provenientes de los pines del puerto paralelo, y del otro, las patillas que deben unirse a los cables del motor; las dos patillas, una a cada lado, que se alternan con las anteriores son para la conexión con el portapilas (teniendo en cuenta la polaridad) y quedan dos últimas patillas extremas sin utilidad, ya que están desconectadas del circuito interno de las anteriores.

Diseño de una tarjeta para robótica de reducidas dimensiones

Como ya planteé en las propuestas de mini-tarjetas controladoras de los capítulos anteriores, podemos conectarnos al puerto paralelo de ordenador con un cable standar grueso, o podemos pelarlo y eliminar todos los cables correspondientes a los pines que no vayamos a utilizar; en mi primera propuesta de tarjeta con drivers utilizaré la segunda opción ya que es más fácil de entender y confeccionar.

La tarjeta que he diseñado tiene de dimensiones cuadradas de 4,5 cm, y pistas de cobre en su cara inferior cada 5 mm (cada dos perforaciones). Para su elaboración situaré los dos drivers en la zona central (pinchados sobre un zócalo), haciendo coincidir las patillas de datos con las pistas de cobre, con una separación entre ellos de 1,5 cm y dejando a ambos lados al menos 3 pistas libres (a través de las que posteriormente ampliaré las posibilidades de funcionamiento con la incorporación de sensores).

Con el cable paralelo ya pelado, dejaré solamente los cables correspondientes a los cuatro primeros pines de datos de salida, los pines 12 y 13 de entrada y el pin 25 de masa

Page 23: Diseño de un robot

(cortocircuitado con el resto de los de puesta a tierra del conector); en total 7 cables que en su otro extremo soldaré (con una disposición simétrica) al mismo número de pistas de cobre en la tarjeta, haciendo coincidir cada par de cables de datos con las patillas de su driver.

En el siguiente paso uniré, con un cable fino rígido, las patillas de idéntica polaridad a ambos lados de los drivers, para después pelarles en una zona intermedia, en la que soldaré un trozo de cable que atraviese por un agujero de la placa coincidente con una pista de cobre de las situadas en el espacio entre los drivers: de este modo he definido cuáles serán las pistas a las que conectaré la alimentación de las pilas.

Para poder enlazar los cables de los motores y el portapilas con la pistas correspondientes de la placa voy a utilizar tres regletas dobles de circuito impreso (cuya distancia de separación entre patillas coincide con la distancia entre pistas de cobre) que situaré por delante de los drivers (coincidiendo con las patillas de salida a los motores), y también entre ellos (sobre las pistas citadas en el párrafo anterior).

El penúltimo paso será resolver el conexionado de sensores a la placa, para lo que he optado por utilizar tres pines metálicos alineados donde podré pinchar los cables que se conectan a los sensores; uno de los pines metálicos de cada lado (el más extremo) se debe conectar a la pista correspondiente al cable del puerto paralelo de cada entrada (número 12 a un lado y 13 al otro), mientras que las otras dos se unen, mediante cables en superficie, con las pistas de los polos positivo y negativo de la alimentación.

Antes de dar la placa por finalizada debo cortar las pistas de cobre justo debajo de cada driver (ya que sino entradas y salidas estarían conectadas, inutilizando el dispositivo) y también delante de las regletas de los motores (por precaución).

Page 24: Diseño de un robot

Construcción de un robot-explorador

Antes de comprobar la tarjeta para el control de pequeños motores diseñada en el capítulo anterior, voy a construirme un sencillo robot-explorador con una pieza de tablero perforado de 8 x 10 cm, una rueda loca, un portapilas de 6V y dos motores con mecanismo de gran reducción (con carcasa de plástico) y dos ruedas pequeñas. La rueda loca la sujetaré al tablero con dos tornillos con tuercas (de métrica 4 mm), mientras que los motores (una vez dispuestas las ruedas en su eje de salida) los encolaré al tablero con pistola termofusible, dejando los cables soldados a sus bornes con una longitud suficiente. En la parte superior del tablero será donde se sitúe la tarjeta de control de los motores (unida a un ordenador mediante los cables de salidas hacia el puerto), junto con el portapilas.

Para verificar la tarjeta con los drivers podemos sujetarla sobre el tablero de nuestro móvil (con una simple goma elástica), conectando a continuación los cables de ambos motores y del portapilas en las regletas azules y gris, respectivamente; enviando el mensaje ESCRIBEPUERTO 888 seguido del número 1 ó 2 (motor derecho) y 4 u 8 (motor izquierdo), comprobaremos si los ejes giran en los dos sentidos.

Page 25: Diseño de un robot

Primeros programas de exploración

Nuestro pequeño robot móvil ya puede ser programado para hacer movimientos temporizados, es decir, mediante un control en bucle abierto, sin la intervención de sensores; podemos escribir procedimientos con los que el móvil realice un sencillo “baile”, un movimiento de zig-zag, una maniobra de aparcamiento o sencillamente trace un recorrido. Para cualquiera de estos ejemplos necesitamos conocer que combinación de salidas (suma de dos números decimales, uno para cada motor) deben ser enviadas desde el puerto paralelo para producir el movimiento de nuestro móvil en sentido de avance, de retroceso y de giro a la derecha o a la izquierda; en el siguiente procedimiento se alternarían, en ese mismo orden, estas cuatro posibilidades, variando su duración mediante una variable con operadores matemáticos:

PARA BAILECITO :SEG

ESCRIBEPUERTO 888 (1+4) ESPERA :SEG*2

ESCRIBEPUERTO 888 (2+8) ESPERA :SEG

ESCRIBEPUERTO 888 (1+8) ESPERA :SEG/2

ESCRIBEPUERTO 888 (2+4) ESPERA :SEG/2

ESCRIBEPUERTO 888 0

FIN

Para lograr que nuestro robot reaccione a variables física externas (contacto, luz, magnetismo,etc..), además de incluir la primitiva LEEPUERTO 889 en nuestros programas, debemos utilizar las conexiones de entrada que hemos previsto en nuestra tarjeta. He recuperado los cables que se incluyen (pero no se usan) al adquirir un lector de CDRom para los ordenadores , ya que disponen de un conector con tres cables para insertar en pines metálicos como los que he soldado en mi tarjeta. Soldando dos de estos cables en las patillas de un pulsador de tipo final de carrera (con una resistencia de 100 ohmios en serie con una de sus patillas) y fijando éste sobre la plataforma del móvil con cola termofusible, dispondremos de un sensor de contacto o detector de choques, elemento que duplicaremos a ambos lados del extremo frontal del móvil.

Page 26: Diseño de un robot

La programación de su funcionamiento esquivando obstáculos puede escribirse así:

PARA SALVAOBSTACULO

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

SI ((LEEPUERTO 889) = “104) [ESCRIBEPUERTO 888 10 ESPERA 50 ESCRIBEPUERTO 888 9 ESPERA 50]

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

SI ((LEEPUERTO 889) = “72) [ESCRIBEPUERTO 888 10 ESPERA 50]

SALVAOBSTACULO

FIN

Cuando se ejecuta el programa el robot avanza recto, pero si detecta un obstáculo con su pulsador izquierdo, retrocederá medio segundo y girará otro tanto a la derecha, reiniciándose el programa; si detecta el obstáculo por la derecha, retrocederá y después girará a la izquierda y, por último, en el caso de sean presionados los dos detectores la vez, el robot antes de continuar su avance de modo indefinido, retrocederá durante medio segundo. Para detener el programa pulsaremos ALTO en la pantalla de MSWLogo 6.3c.

Conclusión

Puede proponerse a los alumnos que escriban programas que nos permitan salir de un laberinto o efectuar otros movimientos más caprichosos cuando se presionen los finales de carrera, en lo que constituirá, sin duda, su experiencia más auténtica en el mundo de la robótica.