SOFTWARE PARA ‘ILUMINACIÓN ESPECTACULAR CON PC’
Por Carlos Rodríguez Navarro
Descrito el hardware necesario para poder controlar un display 8x8 a través de nuestro PC, entramos ahora a describir el software necesario para conseguir el máximo partido a nuestro montaje.
En primer lugar hay que decir que para todo el que no este ‘docto’ en programación o simplemente no quiera ‘perder el tiempo’ en el control por software, esta disponible por los servicios de la revista el programa que gestiona todo el display con infinidad de efectos especiales de luz, así como un interesante retraso programable en cada uno de los efectos del programa (seleccionado todo por menús gráficos).
Para todo aquel que desee realizar el software de control para el circuito, se le ofrecen dos caminos para controlar el display:
1º-Multiplexando en el tiempo los canales por software.
2º-Gestionar el display de una sola pasada.
Del primer apartado, por su complejidad hablaremos mas adelante dando las pinceladas sobre su implementacion, dedicándonos ahora al segundo apartado, es decir a la gestión del display en una sola pasada o del modo ‘directo’.
GESTIÓN DE MODO DIRECTO
Ante todo debemos intuir que la gestión del display del modo ‘directo’ atañe a atacar a este en una sola vez o de una sola pasada al display(es decir, sin ningún tipo de multiplexacion). Por ello es fácil de comprender que como disponiendo de tan solo 16 canales de potencia para controlar 64 ‘canales virtuales’ ,con dos bytes (es decir 16 líneas de todo salida) estaremos en condiciones de una sola pasada pilotar la totalidad del display .
Este sistema conlleva una seria desventaja: el no poder representar la totalidad de las figuras que deseamos en la matriz 8 x8, si bien con ingenio y esfuerzo podremos representar muchísimas figuras increíbles .
Aun así, utilizando este método, se obtienen importantes ventajas:
-Ausencia del desagradable barrido o parpadeo típico de la multiplexacion a bajas velocidades de muestreo.
-Simplicidad de programación, pues enviando únicamente dos bytes se envía toda la información al display, haciendo innecesario el refresco y permitiendo programar de un modo eficaz un retraso entre una figura o efecto y otra de un modo rápido y exacto.
-Mayor potencia entregada a las lámparas de incandescencia del panel gigante, implicando por tanto una mayor luminosidad, si bien esto nos obliga a:
a)Sobredimensionar los triacs por 8 (para lámparas 60W bastaría con triacs de 4A como se expone en artículos anteriores)
b)Proveer la sección adecuada a los cables de alimentación.
c)Preveer la toma de red del punto en el que vaya a conectar todo el conjunto.
d)No olvidar que en un instante dado con todo el display encendido con lámparas de 60W puede haber una carga de 3840W.
-Por no necesitar multiplexacion, tampoco se necesita sincronizacion por parte del programa que controla todo el conjunto, de este modo para el control total del display únicamente necesitamos 16 líneas de E/S (configuradas como salida ¡claro¡),ahorrándonos una línea de E/S (pudiendo usar el puerto que nos ‘sobra’ para otros menesteres).
Vistas las indudables ventajas de controlar el display del modo directo, pasemos a describir el modo de hacer todo esto:
-En primer lugar para poder utilizar la PIA de la tarjeta de E/S de la revista nº113, hemos de comprobar el estado de los puentes que configuran el rango de direcciones en el que operará esta. Nosotros para simplificar tanto en el programa disponible en la revista, como en toda nuestra explicación nos basaremos en que los dos están en ’OFF’ es decir ABIERTOS .Esto situación, nos lleva a las siguientes direcciones validas para la PIA:
-PUERTO A=780T(30B Hex)
-PUERTO B=781T(30C Hex)
-PUERTO C=782T(30D Hex)
-CONTROL=783T(30E Hex)
-En segundo lugar conociendo las direcciones, hemos de programar la PIA como TODO SALIDA en los puertos A y C (que son los que vamos a emplear), para ello remitiéndonos a la revista nº113 para un nivel mas detallado, hemos de enviar una única vez a la dirección 783T el dato 130T, (p.ej. mediante la instrucción del BASIC OUT 783,130) .El significado del byte ‘130T’ pasamos a desglosarlo:
B7=1( CE ,a ‘1’ activo)
B6=0 y B5=0 modo 0 de trabajo de la PIA
B4=0 Configura PORT A como salida
B3=0 Configura PORT C alto como salida
B2=0 Modo 0
B1=1 Configura PORT B como entrada
B0=0 Configura PORT C bajo como salida
-En tercer lugar, configurada la PIA basta ir mandando simultáneamente a los ports A y C los datos que deseamos mostrar en el display, teniendo en cuenta que tal y como esta diseñado el hardware deberemos mandar la información invertida, es decir p.ej. para encender el display completo habrá que mandar 00T(00h) a los dos puertos, y si queremos apagarlo por completo deberemos mandar 255T (FFh) a ambos puertos. Evidentemente en este apartado es donde se demuestra la inventiva y originalidad personal que puede imprimir en el display multitud de figuras y efectos infinitos sujetos únicamente a la inventiva y gusto personal.
GESTIÓN POR MULTIPLEXACION
Se ha expuesto que el sistema directo tiene el grave inconveniente de no poder representar por completo toda la información que nosotros deseamos mostrar en la matriz 8x8.
Puesto que en el hardware desarrollado se han provisto los circuitos necesarios, para evitar dicho inconveniente, podemos recurrir a la multiplexacion en el tiempo de las filas de la matriz (también se puede hacer por columnas).
Este sistema consiste en representar por cada paso por cero de la señal de la red una fila, de modo que a los 8 pasos por cero de la señal de la red hayamos mostrado la figura 8x8 completa. Si repetimos esta operación un número determinado de veces (a esto se le llama refresco), debido a la persistencia de la retina nos parecerá ver la imagen 8x8 en el display (!aunque en realidad estaríamos viendo una sola fila de lámparas que se enciende por cada paso por cero de la señal de la red.!)
Por ejemplo para representar una ‘A’ deberemos dar los siguientes pasos:
1º-Determinar la figura, y programar la PIA del modo en el que explicó en el apartado del gestión directa (Mandar 130T a la dirección de control)
Para la ‘A’ citada la transcripción sería:
0 0 0 0 0 0 0 0=0T negado 255T
0 0 0 1 1 0 0 0=24T negado 231T
0 0 1 0 0 1 0 0=36T negado 219T
0 0 1 0 0 1 0 0=36T negado 219T
0 0 1 1 1 1 0 0=60T negado 195T
0 0 1 0 0 1 0 0=36T negado 219T
0 0 1 0 0 1 0 0=36T negado 219T
0 0 0 0 0 0 0 0 =0T negado 255T
-2º-Detectar un paso por cero de la señal de la red, explorando el bit del puerto B de entrada de la PIA en el que hayamos conectado la salida de Sincronismo de nuestro circuito interfaz comprobando el momento en el que pase de nivel lógico alto a bajo.
3º-Activar la 1ª fila mandando un 245 al PORT A y mandar la información de columnas correspondiente a la primera fila (en nuestro caso 255) al PORT C.
4º-Repetir los pasos dos y tres para la totalidad de las 7 restantes filas:
FILA2,port A=253T Port C=231T
FILA3,Port A=251T Port C=219T
FILA4,Port A=247 T Port C=219T
FILA5,Port A=239 T Port C=195T
FILA6,Port A=223 T Port C=219T
FILA7,Port A=191 T Port C=219T
FILA8,Port A=127 T Port C=255T
5º-Repetir un número suficiente de veces para que la retina pueda apreciar con detalle dicha figura (¡nuestra llamativa ‘A’¡).
Vemos como fácilmente podemos representar cualquier figura que nos plazca si seguimos los pasos anteriores, teniendo en cuenta que al contrario de lo que pasaba en el modo directo en el que podíamos programar en BASIC mediante la instrucción OUT,XXT (en cualquiera de sus versiones), ahora necesitaremos al menos de algún lenguaje de programación lo suficiente rápido para que nos haga estos pasos al menos a la frecuencia de 50Hz (Se aconseja que al menos la rutina de visualización se realiza en en Ensamblador).
Se anima desde este artículo a que el lector experimente por si mismo y desarrolle el software ‘a medida’ a su gusto y preferencia ,sin necesidad de que recurra a difíciles lenguajes de programación y complejos algoritmos de representación, pues en esencia la labor de controlar el display es realmente simple: programar la PIA como salida y mandar a los puertos A y C respectivamente un byte (labor fácilmente realizable en BASIC en todas sus versiones: GW Basic, QBasic,..).
By CRN