jueves, 19 de abril de 2012

MSP430: 7 Segmentos + BCD To 7-Seg

En esta entrada no vamos a exponer ninguna librería (tal y cómo veníamos haciendo), sino que el propósito es explicar de manera clara, el funcionamiento y control de los dispositivos de representación: 7 segmentos.

Antes de empezar, tenemos que tener presente que existen dos tipos de display de 7 segmentos: Cátodo Común y Ánodo Común.


7 SegmentosCátodo ComúnÁnodo Común


En otras palabras:

· Cátodo Común: Como se puede ver en la imagen anterior, todos los leds que conforman el display de 7 segmentos comparten el cátodo, es decir, todos conforman un nodo a tierra. Por lo tanto, para encender uno de sus leds es necesario poner la entrada del mismo en alta, es decir, uno '1' lógico.

· Ánodo Común: Como se puede ver en la imagen anterior, todos los leds que conforman el display de 7 segmentos comparten el ánodo, es decir, todos conforman un nodo a la alimentación. Por lo tanto, para encender uno de sus leds es necesario poner la entrada del mismo en baja, es decir, uno '0' lógico.

Generalmente, cuando empleamos este tipo de dispositivos de representación visual, usamos más de uno, una conexión típica para cuatro displays de 7 segmentos de cátodo común se muestra a continuación:


Dónde vemos que existen dos zonas perfectamente diferenciadas:

· Zona de Control: Son aquellas (que para este caso al ser 7 segmentos de cátodo común) que están conectadas a la base de los transistores NPN. Si en la base de dicho transistor aparece un '1' lógico, éste entrará en saturación o activa (depende de sus características) y el dígito correspondiente estará encendido (representará el dato correspondiente), en caso contrario, si aparece un '0' lógico en la base, el transistor estará en corte y por ende, el dígito estará apagado.

· Zona de Datos: Comprendida por los segmentos: a-b-c-d-e-f-g-dp. El número o leds que queremos mostrar por el dígito correspondiente. Al ser 7 segmentos de cátodo común, cada led de cada dígito se iluminará si aparece un '1' lógico en su segmento, en caso contrario, si aparece un '0' lógico, el led correspondiente al segmento se apagará.

· NOTA: La función de los resistores conectados a cada segmento del display de 7 segmentos, es la de reducir la intensidad que circula por cada uno de dichos segmentos (debemos cumplir la intensidad máxima que soporta cada segmento del 7 segmentos mencionada en su hoja de características).

Una de las cosas que ya nos podemos dar cuenta es que si tenemos por ejemplo, siguiendo con la figura anteriormente mostrada, 4 displays de 7 segmentos conectadas y cada uno de ellos tiene 8 segmentos, necesitaremos: 4·8 = 32 patitas del microcontrolador o del dispositivo lógico para representar la información de cada dígito (aparte, las patitas de control).

Eso es una barbaridad tanto por parte del malgasto de patitas del dispositivo lógico cómo desde el punto de vista de consumo de potencia (más si tenemos en cuenta aplicaciones móviles) tener los cuatro displays de 7 segmentos encendidos a la vez y controlar cada dígito independientemente.

Para solventar dichos problemas, trabajaremos con los 7 segmentos mediante la multiplexación de cada dígito. ¿Qué significa ésto de multiplexar? Es fácil, vamos a tener encendido sólo un dígito (de los cuatro) cada cierto tiempo.

Y para ello, nos vamos a basar (y aprovechar) de las características del ojo humano. El ojo humano contempla (o interpreta) un movimiento continuo si la frecuencia de refresco es aproximadamente 30 Hz (o mayor).

¿Qué quiere decir esto? Pues que si nuestro período de refresco (un ciclo completo de que cada dígito se encienda y apague sólo una única vez) es de 30 Hz, el ojo humano interpretará de que todos los dígitos de 7 segmentos están encendidos a la vez, pero como ya hemos dicho, ésto no es cierto, ya que cada dígito estará encendido un total de:

· Tiempo ON = (1/N)·(1/f) = (1/4)·(1/30) ≈ 8.33 ms.

Donde:

· N ≡ 'Cantidad de dígitos de 7 segmentos'.
· f ≡ 'Frecuencia de refresco'.

Por lo tanto, cada dígito (uno sólo cada vez) en un ciclo completo (30 Hz) estará encendido, aproximadamente 8.33 ms.

En cambio, el ojo humano interpretará que todos están encendidos a la vez (¡magia!). Aunque esta frecuencia es bastante baja, normalmente se suele adoptar los tiempos de refresco que se muestran a continuación en función de la cantidad de dígitos:


Frecuencia RefrescoCantidad de Dígitos
500 Hz2-3
1 kHz3-5
2 kHz5-6
4 kHz6-8


La tabla anterior son datos orientativos que garantizan que dependiendo de la cantidad de dígitos que presente el proyecto, ofrece una frecuencia de refresco que proporcionará al ojo humano, que todos los dígitos están encendidos a la vez.

Otra manera es, suponer que el ojo humano interpreta movimiento continuo a un ciclo de aproximadamente 26 ms. Por lo tanto, si tenemos cuatro dígitos:

· Dígito ON = 26/4 ms = 6.5 ms

Por lo tanto, cada dígito estará encendido cada 6.5 ms en el ciclo de refresco de 26 ms. La diferencia con la tabla anterior es que ésta proporciona mejores resultados en condiciones adversas (por ejemplo, si se realiza una grabación vía cámara frente a los displays de 7 segmentos).

Una vez que hemos dado una solución óptima para el control de los dígitos del dispositivo de 7 segmentos, ahora nos vamos a centrar en el ahorro de patitas por parte del microcontrolador o dispositivo lógico encargado de manejar los dígitos de 7 segmentos.

Para este fin, generalmente se emplean decodificadores del tipo BCD a 7 segmentos, que no es más que un dispositivo externo que transforma una señal dada (por lo general, en BCD) a una señal válida en 7 segmentos.

Una representación esquemática se muestra a continuación:


Dónde podemos advertir que simplemente con cuatro patitas del microcontrolador (asociadas a los segmentos A-B-C-D), el dispositivo es capaz de transformarla a 7 segmentos.

Prácticamente todas las empresas en lo referente a la producción de dispositivos electrónicos, tienen en sus catálogos este tipo de dispositivos llamados decodificadores a 7 segmentos y éstos al igual que los displays de 7 segmentos, pueden controlarlos en la configuración de ánodo común o cátodo común.

Esto es importante ya que deberemos elegir el decodificador que sea compatible (tenga la misma configuración de ánodo ó cátodo común) con nuestro display de 7 segmentos.

Para poner en práctica los conceptos y el control de dispositivos de representación 7 segmentos, os dejo un ejemplo:

Ejemplo: MSP430 + 7 Segmentos + Decodificador BCD a 7 Seg
1. ProgramaContador ascendente 0000-9999.


El capítulo presente ha intentado ser una breve (pero intensa) guía de cómo trabajar con dispositivos de representación tales cómo los displays de 7 segmentos mediante dispositivos lógicos.

1 comentarios:

Cristian Veloso dijo...

Muy bueno, hace un tiempo arme un articulo donde solo controlo un display 7 segmentos, y estaba buscando como multiplexar varios display con solo un 74HC595 y tu diagrama me fue de gran ayuda :) te comparto mi articulo
http://www.electrontools.com/2014/08/registro-de-desplazamiento-74hc595.html

cuando tenga el nuevo terminado con el multiplexado voy a citar tu pagina.

gracias!