El PC como Sistema de Control

 

Actuadores, sensores y programación

La aparición del computador en la década de los 40 acelera vertiginosamente el desarrollo de autómatas y robots. La cuestión es: ¿podemos hacer servir el PC como un autómata o un robot?. Para poder responder es preciso verificar si se cumplen las siguientes condiciones:

La respuesta a las tres cuestiones es afirmativa:

Conocimiento del entorno: sensores

Por medio de ellos el autómata o el robot conoce la situación del mundo exterior. ¿Cómo recopila esta información?. Supongamos que hablamos por teléfono con un amigo de otra localidad y le preguntamos qué tiempo hace allí. Nos puede contestar de dos maneras posibles:

Las primeras respuestas son de tipo digital: si o no; sol o nubes; calor o frío; sequedad o humedad.
Las últimas son de tipo analógico: 10, 9, 5, 2 son posibles valores de las horas de insolación. La temperatura puede oscilar entre -10 ºC y 35 ºC y, con un termómetro doméstico, se pueden apreciar décimas de ºC. La humedad puede variar entre 0 y 100%.

Las señales digitales se interpretan en el PC utilizando voltajes de 0 V o de +5 V. A una entrada digital se le puede adaptar un elemento de mando del estilo del interruptor de la figura para establecer su valor. Cualquier dispositivo que se comporte de forma similar a éste es útil para el control de entradas digitales.

Muchas señales analógicas se pueden tratar como digitales con circuitos muy sencillos, teniendo en cuenta el cambio que experimenta el sensor utilizado. Véase, por ejemplo, el circuito de la figura. La LDR puede variar de una resistencia del orden de 1 MW en oscuridad hasta 100 W a plena luz.

Puesto que la mayoría de los puertos del PC son digitales, otras señales analógicas requerirán, sin embargo, la utilización de circuitos de conversión analógico-digital.

 

Modificación del entorno: actuadores

Cuando queremos cambiar el entorno podemos hacerlo dando órdenes que pueden ser también de dos tipos: digitales y analógicas. Podemos encender la calefacción, subir una persiana o apagar la luz (digitales), o bien podemos aumentar el volumen de un televisor o regular el termostato de una estufa (analógicas).

Los puertos digitales del PC nos permiten dar órdenes digitales de forma directa o podemos codificar estas señales digitales mediante un conversor analógico-digital para obtener una salida analógica.

Las salidas digitales no proporcionan mucha potencia; como mucho permiten iluminar un LED. Pero se pueden utilizar para excitar un relé o un transistor que controlen el actuador.

     

En robótica es típico el uso de motores como actuadores. En concreto, por su controlabilidad, los servomotores y los motores paso a paso.
 

Dar las instrucciones: programación

En general, las máquinas operan a lo largo del tiempo, de modo que el concepto de máquina lleva asociado el de un proceso de funcionamiento en el cual diferentes operaciones se van realizando sucesiva o simultáneamente. Desde el punto de vista del control de su funcionamiento tenemos máquinas no automáticas, o de control manual y máquinas automáticas, que actúan sin necesidad de operador, aunque pueden responder a estímulos externos.

El funcionamiento de una máquina puede depender únicamente de los elementos que la componen y de sus interconexiones, de modo que ante determinados estímulos siempre responde de manera fija. Pero en otras máquinas automáticas su comportamiento no es siempre el mismo. Estas son las máquinas programables y se pueden concebir como una máquina base de comportamiento fijo, que se completa con una parte modificable que describe el funcionamiento de la máquina base. Esta parte modificable se denomina programa. Dependiendo de cuál sea el programa que gobierne su funcionamiento, una máquina programable responderá a estímulos externos de una forma u otra. Así se puede comportar como diferentes máquinas particulares en función del programa utilizado. Cuando una máquina opera bajo el control de un programa determinado, se dice que el programa se ejecuta en dicha máquina. Un programa es, por tanto, una descripción en forma codificada del comportamiento deseado de una máquina.

La máquina programable por excelencia es el ordenador. Éste se define como una máquina programable para tratamiento de la información. Los ordenadores actuales corresponden a un tipo particular de máquina programables que se denominan máquinas de programa almacenado. La estructura general del ordenador es la representada en la figura superior. Como se observa, poseen una memoria donde se pueden almacenar tanto la representación codificada del programa como los datos con los que opera.

La labor de desarrollar programas se denomina, en general, programación y los lenguajes de programación sirven precisamente para representar programas de manera simbólica, en forma de un texto que puede ser leído con relativa facilidad por una persona (programa fuente). Además estos lenguajes son prácticamente independientes de la máquina en la que se van a usar. Pero un programa escrito en un lenguaje de programación simbólico debe ser transformado en el lenguaje particular de cada máquina (código de máquina). Los programas en código de máquina son extraordinariamente difíciles de leer por una persona. Normalmente contienen códigos numéricos, sin ningún sentido nemotécnico, y compuestos por millares e incluso millones de operaciones elementales muy sencillas que en conjunto pueden realizar los tratamientos muy complejos que vemos a diario.

Los mecanismos que permiten ejecutar un programa escrito en un lenguaje de programación simbólico son proporcionados por otros programas denominados procesadores de lenguajes: compiladores e intérpretes. Un compilador traduce programas de un lenguaje de programación simbólico a código de máquina. La compilación del programa ha de hacerse sólo una vez, quedando el programa en código de máquina disponible para ser ejecutado en forma inmediata tantas veces como se desee. Un intérprete es un programa que analiza directamente la descripción simbólica del programa fuente y ejecuta "sobre la marcha" las operaciones oportunas. El proceso mediante intérprete es más sencillo pero también de ejecución más lenta, ya que hay que ir haciendo el análisis y la interpretación de las operaciones descritas en el programa fuente cada vez que se solicita la ejecución.

El modelo de programación imperativa responde a la estructura interna habitual de un computador, que se denomina arquitectura Von Neumann. Un programa en lenguaje máquina aparece como lista de instrucciones u órdenes elementales que han de ejecutarse una tras otra, en el orden en que aparecen en el programa. Un programa imperativo se plantea como el cálculo o modificación de sucesivos valores intermedios hasta obtener el resultado final. La mayoría de lenguajes de programación actualmente en uso siguen el modelo de programación imperativa.

La estructura de los programas imperativos se representa tradicionalmente mediante diagramas de flujo u ordinogramas (flow-chart). Estos contienen dos elementos básicos, correspondientes a acciones y condiciones. Existen también otros símbolos convenidos en la representación de ordinogramas, como son:

Utilizando esta representación, podemos esquematizar, por ejemplo, un sencillo programa que imprime una lista de los n primeros números naturales (i = 1, 2, ...., n) y de sus cuadrados (c = i2). La figura siguiente representa el ordinograma de una estructura secuencial en la que el flujo de control durante la ejecución del programa se refleja mediante líneas o vías que van de un elemento a otro. Las acciones tiene una sola vía de entrada y una de salida mientras que las condiciones tiene una vía de entrada y dos de salida. En este diagrama se produce la repetición de ciertas acciones (contar, elevar al cuadrado, imprimir) mientras se cumple una determinada condición (mientras i es menor o igual que n). A esto se le denomina iteración.

Podríamos también haber agrupado las acciones "contar, elevar al cuadrado e imprimir" en un bloque de código designado por un nombre simbólico. A este bloque se le denomina subprograma y está el el centro de lo que se llama programación estructurada  (o modular), que no consiste más que en subdividir un problema principal en sub-problemas. Esto resulta ventajoso, no en el sencillo ejemplo descrito, pero sí especialmente en programas que codifican procesos complejos (para reducir la dificultad de la visión global), y en situaciones en las que se repiten operaciones análogas (lo que reduce substancialmente el tamaño y legibilidad del código fuente).

Volver al principio de página

 

Una forma de realizar control programado con el PC

Hemos indicado antes que disponemos de una considerable variedad de canales de interacción del PC con el exterior. La mayoría de formas de aprovechar estos canales para realizar control de dispositivos en el aula-taller se puede resumir en dos:

  1. Utilizar directamente los puertos de entrada/salida del PC, fabricar la electrónica necesaria para proporcionar potencia -y/o realizar una conversión de señales- y utilizar un lenguaje de programación de propósito general (como BASIC, C o LOGO) para llevar a cabo el control.
  2. Utilizar tarjetas de interfaz especializadas comerciales que enlacen directamente los puertos del PC (serie, paralelo, USB) con los dispositivos finales, actuando como "cajas negras" de las cuales sólo interesan sus entradas y salidas. A estas tarjetas se las ha denominado tradicionalmente "controladoras". Entre ellas, las hay de muy diversas marcas y características, y muchos profesores han manejado en los últimos años algún modelo clásico (Inves, Data Harvest, Enconor, ... ) mediante algún lenguaje de programación como LOGO (en alguna de sus distintas versiones). Esta utilización se ha llevado a cabo, en muchos casos, únicamente de forma puntual, dado que no ha existido una dotación regular ni unificada para los distintos centros.

La primera de ambas es muy atractiva pero consume una parte importante del tiempo disponible en la realización de la electrónica mencionada. Además, en algunos casos, requiere una complejidad que supera ampliamente el nivel de los alumnos a los que se destina.

Por otro lado, el uso de las interfaces controladoras facilitan enormemente las tareas del profesor y del alumno a la hora de controlar los proyectos que los alumnos realizan en el aula-taller. Además, en los tres últimos años, las grandes modificaciones que ha sufrido el currículo de la Tecnología obligan cada vez más inexcusablemente a utilizar recursos para el aula que permitan ahorros de tiempo considerables.
Desde este punto de vista, existe también otro tipo de interfaces de control comerciales, además de las que clásicamente se han utilizado, orientadas al manejo de conjuntos de control/robótica específicos de algún fabricante, que proporcionan montajes bastante complejos y atractivos (tanto desde el punto de vista del aprovechamiento como del gusto del alumno) y funcionalmente muy aprovechables desde el punto de vista del currículo. Nos referimos a interfaces y conjuntos de control como los proporcionados por fabricantes como FISCHER y LEGO en sus líneas más técnicas y adecuadas a las edades de los alumnos de Secundaria (líneas "fischertechniks computing" y LEGO Dacta RoboLab). Estos conjuntos tienen un valor añadido nada desdeñable que radica en el lenguaje de programación que incluyen, gráfico y sencillo, muy adecuado para los alumnos.

Por tanto, parece conveniente optar por una solución mixta entre el uso de interfaces clásicos orientados al manejo de proyectos que el alumno pueda seguir diseñando y construyendo en el aula-taller, e interfaces específicos para conjuntos de control/robótica de apariencia y funcionalidad finales relativamente complejos pero de montaje y aprovechamiento relativamente sencillos.

En este punto conviene entroncar con el plan de dotación de las Aulas-taller de Tecnología acorde con el currículo actual del área en Castilla y León, que ha comenzado ha desarrollarse en el presente curso y se extenderá durante los dos próximos, basado en un estudio preliminar realizado por un grupo de profesores (fundamentalmente profesores y asesores del Área) durante el curso pasado.

Evaluación de materiales didácticos para la dotación de las aulas de Tecnología en relación con el nuevo Currículo del Área en Castilla y León 

comprimido, 620 KB

 

 

En el capítulo II.2 de este estudio se aborda la dotación correspondientes a los apartados de Control y Robótica. Los detalles sobre los distintos equipamientos estudiados, así como la justificación de los materiales finalmente elegidos se puede encontrar en el mismo.

La elección ha consistido en el conjunto de control programado distribuido por la empresa Alecop, constituido por:

y el conjunto de robótica "Fischertechnik computing", constituido por:

La presente documentación se centra en el aprovechamiento de estos materiales. En la misma, se hace referencia a las interfaces de control de ambos conjuntos y, en cuanto al lenguaje de programación, la documentación se centra inicialmente en Flowol 2 por varios motivos:

Por otra parte, en esta documentación se ofrece también un apartado bastante amplio de fundamentos de robótica, con la intención de introducir al lector en los conceptos generales básicos, historia y aplicaciones de la robótica. En dicho apartado se presenta también una descripción de los distintos elementos que integran el conjunto de robótica de fischertechnik.

Por último, se ofrece un numeroso conjunto de actividades prácticas (con sus correspondientes soluciones) diseñadas con grado de complejidad creciente, que provean al profesor de una batería de ideas para desarrollar en el aula el currículo actual de Tecnología en su apartado de Control y Robótica.

Volver al principio de página

Fuentes bibliografícas

Guía para el programador para el IBM PC y PS/2. Peter Norton, Richard Wilton. Anaya Multimedia.

Programación I. José A. Cerrada, Manuel Collado. UNED

BASIC básico, curso de programación. Autores editores: R. Aguado, A. Blanco, J. Zabala, R. Zamarreño.

Página personal de Jordi Orts. www.arrakis.es/~j_orts/6703/robots.html

Volver al principio de página

2002-03 Víctor R. González

volver a Inicio