Una alternativa de bajo costo a la visualización LED de 7 segmentos… ULCD

“Ultra Low Cost Display – ULCD” by FZamora 2007( bit.ly/fzulcd )

Orígenes de la “Visualización de Ultra Bajo Costo”

Hace ya varios años (2007) surgió una idea para utilizar un esquema de visualización simple y de muy bajo costo que pudiese realizar en esencia las mismas funciones de un display 7 segmentos de n dígitos, pero reemplazando cada uno de los n dígitos con sólo un diodo emisor de luz LED emitiendo continuamente un código de pulsos.

Se adoptó el acrónimo ULCD por el curioso contraste de esta alternativa frente a los modernos  televisores LCD de ultra alta definición, que paradójicamente comparten el mismo acrónimo.

La idea se simuló en Proteus e  implementó con éxito en una popular MCU de entonces, el PIC16F877A.  Posteriormente, tras una charla con el benemérito maestro Vytautas Gabriunas, infortunadamente hoy retirado de la docencia, más nunca de la ingeniería, surgieron valiosas apreciaciones para mejorar la idea inicial y es justamente esta nueva versión mejorada la que se explica a continuación.

Principio de operación

La idea básica es que el usuario cuente la cantidad de pulsaciones repetitivas de un LED para determinar una cantidad decimal  entre 0 y 9 indicada por dicho LED.  El utilizar varios LED y diferentes colores (RGB), permite establecer varias cifras e inclusive notación decimal básica.

Como obviamente contar hasta nueve pulsos (y en cada dígito!) no es una idea nada novedosa ni mucho menos práctica ni atractiva para el usuario, se limita entonces el conteo a una cantidad máxima de 4 pulsos, pero para cubrir toda la gama de valores necesaria se requiere que haya al menos dos tipos de pulsos emitidos por cada LED:

  • Ciclo útil activo:  pulsaciones de luz breves y estado normal apagado.
  • Ciclo útil inactivo:  pulsaciones de apagado breves y estado normal de luz encendido.

Adicionalmente a lo anterior, los valores de 0 y 9 corresponden al LED permanentemente apagado y encendido respectivamente.

Para los cuatro valores entre 1 y 4, y entre 5 y 8 se establece una convención de secuencia de pulsos de tipo activo y de tipo inactivo respectivamente.

Cada secuencia de pulsos debe ser lo suficientemente rápida para poder leer varios dígitos en poco tiempo, pero lo suficientemente lenta para poder detectarlos y contarlos bajo las ventajas y limitaciones del sentido de la vista humana promedio.  Las secuencias de pulsos en cada dígito se reproducen indefinidamente con el mismo patrón, siempre y cuando los valores BCD que representan no cambien en el tiempo.

El tiempo de cada dígito se estructura entonces en dos partes:  La primera, un tiempo durante el cual se presentan las pulsaciones (de una a cuatro, de tipo activo o inactivo) y un tiempo de guarda (activo o inactivo) antes de que la misma secuencia empiece a repetirse nuevamente.  El tiempo de guarda advierte a la visión del usuario para que inicie el conteo de cada  nuevo tren de  pulsos que viene a continuación.

La Tabla 1 muestra la codificación de pulsos asignada para el valor BCD a mostrar por cada dígito, indicando el número de pulsos activos o inactivos:

BCD Ton/Tdig=activo Toff/Tdig=inactivo
0 OFF
1 1
2 2
3 3
4 4
5 4
6 3
7 2
8 1
9 ON

En la Figura 1 se aprecia la estructura de temporización diseñada para cada dígito de un ULCD con dos casos de ejemplo (4 y 7):

Figura 1. Temporización para ULCD

En la parte superior  de la Figura 1 se aprecia el caso de la visualización de un valor 4 que según la Tabla 1 corresponde a cuatro (4) pulsos activos más un tiempo de guarda.

En la parte inferior de la Figura 1 se aprecia el caso de la visualización de un valor 7 que según la tabla 1 corresponde a dos (2) pulsos inactivos más un tiempo de guarda.

El tiempo de guarda Tg1 consiste en la introducción de un estado de pausa nulo (alto o bajo según tipo de siguiente pulso a visualizar), sin pulsación de conteo, durante el mismo tiempo de duración de un pulso, Tpuls.  El tiempo de guarda apreciado por el usuario resulta ser mayor, Tg2, si el pulso siguiente es de la misma naturaleza que el actual, dado que  el usuario no percibe cambio en LED desde el Toff del pulso anterior, más el Tg1 de guarda actual.  Esta pausa permite al usuario demarcar los conteos de pulsos que representan una cifra BCD en cada LED que emite el mismo patrón repetitivo de pulsos (mientras la cifra BCD no cambie).

Se recomiendan algunos valores ajustables para los tiempos definidos en la Figura 1, los cuales están sujetos a mejoras con la experimentación según realimentación y confort de los diferentes tipos de usuarios:

3 dígitos máximo

¼ < Ton/Tpuls< ⅓

1 seg < Tdig < 2 seg

Tg1 >= Tpuls

Tg2>=Toff+Tg1

⅕ seg < Tpuls < ⅖ seg

1/20 seg < Ton < 2/15 seg

El archivo .zip (adjunto en el enlace) contiene un proyecto de simulación Proteus para PIC 16F877A y el código C del algoritmo ULCD, para mplabIDE y HiTech PICC demostrando el principio de funcionamiento ULCD para la convención original, en la cual la cantidad de pulsos inactivos asignados para los valores 5, 6, 7 y 8 difiere de la asignada en la Tabla 1(versión nueva) y corresponde a 1, 2, 3 y 4 pulsos inactivos respectivamente. En dicho ejemplo dos potenciómetros alimentan distintos canales de ADC y sus respectivos valores entre mínimo y máximo (0-5V) voltaje se escalan equitativamente para mostrar valores entre 0 y 9, en una visualización ULCD de dos cifras independientes, cada una ajustable con su respectivo potenciómetro.

Adicionalmente a reducir el esquema de visualización a un solo led por dígito, la cantidad de pines de I/O utilizada por la MCU para controlarlos puede también minimizarse utilizando la estrategia conocida coloquialmente como “charlieplexing” cuyos orígenes datan de mediados de los años 90.  Este formato que toma ventaja de la persistencia del ojo humano y del control de tres estados sobre los pines I/O de las MCU modernas, permite utilizar LEDs bicolores o tricolores, individuales o con terminales comunes (RGB), en la visualización ULCD para indicar mediante color si las cifras BCD visualizadas corresponden a enteros o decimales o establecer nuevos patrones particulares de visualización que faciliten la lectura, como por ejemplo no utilizar pulsos de formato inactivo sino pulsos de formato activo pero de otro color para indicar los valores de 5 a 8.  

Como reto para el lector se propone que identifique cuál es el número de 4 cifras bcc presente en la siguiente imagen, secuenciado de acuerdo al algoritmo ULCD:

Pista:  representa una fecha sensible para la comunidad de la Universidad Distrital FJC!

Deja un comentario