1. Actuadores, sensores y programaciónComo se ha comentado en el tema anterior, la aparición de los microprocesadores, que dio lugar a los computadores personales, PC, aceleró vertiginosamente el desarrollo de sistemas de control, autómatas y robots. La cuestión es: ¿podemos hacer servir un 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:
En los apartados siguientes vamos a profundizar un poquito en los tres aspectos.
Por medio de los sensores el autómata o el robot conoce las condiciones 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.
Cuando queremos cambiar el entorno mediante dispositivos actuadores 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.
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, como conocerás de otros temas relacionados con las Ciencias y la Tecnología, contienen tres elementos básicos:
Existen también otros símbolos convenidos en la representación de ordinogramas, como son:
Y todavía, algunos más que especifican con
detalle el tipo de operaciones de entrada y salida que pueden realizarse:
Utilizando esta representación, podemos esquematizar, por ejemplo, un sencillo programa que envía a la impresora una lista de los n primeros números naturales (i = 1, 2, ...., n) y de sus cuadrados (c = i2). El valor de n se solicita a través del teclado al principio del programa.
En este ordinograma la acción i=1 denota que se asigna el valor 1 al dato i, de modo que se trata de una operación de asignación. En general, un programa utiliza datos almacenados en la memoria del computador. La forma de acceder a estos valores guardados en la memoria es el uso de variables, que son representaciones de los datos que tienen un nombre simbólico determinado. Así pues, en el ordinograma n, i y c representan variables. La acción i=i+1 es también un asignación (aunque puede resultar sorprendente a primera vista, ya que en matemáticas esta igualdad no tiene sentido, en programación esta acción significa asignar a la variable i el valor que tenía inmediatamente antes de ejecutarse la acción incrementado e una unidad). En la condición ¿i==n? se ha utilizado el signo doble igual (==) para denotar que se compara el valor del dato i con el del dato n para comprobar si son iguales, en cuyo caso el programa termina. Como puedes observar en el ordinograma, el orden de ejecución de un programa puede alterarse con esta instrucción en función de determinadas condiciones en los datos. Aquí, esta condición permite evitar el fin del programa y retornar a un punto anterior para repetir un número determinado de veces las instrucciones que interesan. 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 distinto de 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 denominaría subprograma. Esta idea está en el centro de lo que se denomina diseño descendente o programación estructurada, que no consiste más que en descomponer la operación global de un programa en otras operaciones más sencillas (es decir, 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).
2. Formas de realizar control programado con el PCHemos 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:
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, conlleva una complejidad que supera ampliamente el nivel de los alumnos a los que se destina. Por otro lado, el uso de las interfaces
de control facilita
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
ú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. 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 a desarrollarse en el curso 2003-04, basado en un estudio preliminar realizado por un grupo de profesores (fundamentalmente profesores y asesores del Área) durante el curso 2002-03.
La elección ha consistido en el conjunto de control programado distribuido por la empresa Alecop, constituido por:
El presente curso se centra en el aprovechamiento de estos materiales. En las próximas unidades didácticas estudiaremos las interfaces de control de ambos conjuntos y, en cuanto a los lenguajes de programación, nos centraremos inicialmente en Flowol desarrollando actividades prácticas de control, para estudiar después LLWin con actividades específicas de robótica, teniendo en cuenta que:
|