miércoles, 31 de marzo de 2010

Simulación de procesos con microcontroladores PICAXE

Los simuladores utilizados en el entrenamiento de conductores y pilotos de avión se desarrollaron hace casi un siglo. En aquellos primeros tiempos se trataba de máquinas que reaccionaban a las ordenes de quienes los utilizaban y les ayudaban a adquirir pericia en el manejo de esos medios de transporte, de forma economica y exenta de riesgos.

Simulador de vuelo descrito en un artículo de la revista Modern Mechanics de enero de 1936.

Hoy en día los simuladores son esencialmente electrónicos y se utilizan en todo tipo de sectores, desde la industria hasta las actividades espaciales.

Los microcontroladores PICAXE, que utilizan una versión del lenguaje BASIC, permiten la realización de simuladores, desde situaciones simples y totalmente virtuales, hasta problemas complejos en donde el entorno sea algo más realista (Mediante la utilización de LEDs, bombillas, motores, etc).

La situación sería la siguiente. Se trata de mostrar la situación de un depósito de agua (El volumen del agua acumulada está representado por el valor de la variable b0) que, por una parte, puede llenarse mediante una bomba (Pin 0) desde el nivel de un río y, por otra, vaciarse mediante una válvula (Pin 1) que conduce el agua hacia una casa.

Para realizar la simulación se edita un programa en BASIC tal como se muestra a continuación.

Para realizar esta simulación tan sólo se necesitan dos pines de entrada, por lo que bastaría con un PICAXE 08.

La última imagen, tal como aparece a la pantalla del ordenador la simulación, está hecha sobre un modelo PICAXE 28X. En el listado del siguiente ejemplo de programación no coinciden los pines de entrada con los del dibujo anterior, pero se pueden escoger los que queramos, siempre que dispongamos de ellos en nuestro microcontrolador.

Este programa comienza con la asignación de un valor a la variable b0 (let b0 = 0). A continuación comienza el programa principal (main:, pero puede ser cualquier nombre). Después del programa principal, dos subprogramas (suma: y resta:) permiten llenar y vaciar el depósito (El volumen acumulado nos lo indica la variable b0), es decir, incrementan o reducen en una unidad el valor de la variable b0.

Las lineas 6 y 7 que incluyen una condición (if ... then ...) detienen el vaciado del depósito si su valor es cero y el llenado si su valor es 255, que es el máximo valor que le podemos asignar a b0. Por tanto, si el valor de b0 no es cero el programa salta al subprograma resta: y si su valor es menor de 255 salta a continuación al subprograma suma:.

En los dos subprogramas la linea que incluye return nos devuelve al programa principal, a la siguiente línea desde la que habíamos llegado a este subprograma.

El subprograma suma: incrementa en una unidad el valor de b0 si el valor de pin3 es uno (Si a esta entrada del microcontrolador llega tensión). El subprograma resta: disminuye en una unidad el valor de b0 si el valor de pin1 es uno (Si a esta entrada del microcontrolador llega tensión).

El comando debug b0 muestra en la pantalla del ordenador el estado de las lineas de entrada y de salida y el valor de las diferentes variables (También podemos escribir simplemente debug), entre ellas b0. De esta forma se puede ver el estado del depósito de agua.

El programa se puede poner en marcha sin necesidad de disponer de un microcontrolador con la opción Simulate del menú principal (Opción Run) del software de edición. De esta forma podemos hacer click con el ratón sobre input3 (pin3) e imput1 (pin1) y ver como varía el valor de b0.

Con un modelo de microcontrolador con más pines de salida se puede realizar un display que nos muestre el valor de b0 sin necesidad de la pantalla del ordenador.

No hay comentarios: