Display múltiple de 7 segmentos.

PROLOGO.

Quien no dispone en su cajón desastre, de un conjunto de display a LED con dos, tres o cuatro dígitos. Este es el momento de reutilizar dicho display (multiplexado) en un contador cuya aplicación puede mejorar una presentación que tenía pendiente. En este artículo, veremos como aplicar código a un display multiplexado y como debe funcionar.

INICIANDO.

Actualmente es fácil encontrar en Internet códigos sobre pantallas LCD y cómo adaptarlas a distintas aplicaciones. En cambio, son muy pocos los sitios donde se describe cómo utilizar un display de siete segmentos y no digamos, cuando se trata de conjuntos de displays de 2, 3 o 4 dígitos multiplexados. Sin embargo, este dispositivo es bastante común en un gran número de electrodomésticos que podemos desguazar y reutilizar su display. Aquí, con este artículo, voy a intentar rellenar esta laguna.

Este artículo, no se puede considerar como una extensión a uno anterior que puede verse aquí. En aquella ocasión se contemplaba el caso de aplicar el contador de dos dígitos, como contador en una aplicación del propio Arduino que, como ejercicio es esclarecedor y consigue ayudar el interesado en realizar un contador de esas características. En esta ocasión, si bien, puede utilizarse con unos pequeños ajustes, del mismo modo, la diferencia radica en que se visualizará la cuenta obtenida reflejada en un pantalla o display de dos, tres o cuatro dígitos de siete segmentos a LED, mediante la multiplexación de los dígitos utilizados. Esta es la estructura del display múltiple.

4digitos7segmentosFig. 1

Sin más, vamos a entrar en harina, como diría un panadero. La teoría, se puede ver en el mencionado artículo, así que sólo nos preocuparemos de los tipos de pantalla a utilizar, para este caso usaremos un display múltiple (multiplexado). El display que vamos a utilizar aquí, tiene la particularidad en su encapsulado, es decir, que en una pieza ( o encapsulado) nos presenta varios dígitos. Tenemos que tener en cuenta que en algunos casos, las patillas que vienen en el encapsulado, parece que no están bien, ya que hay menos de las que se supone debería tener, esto es debido a que se han dispuesto de forma especial, lo que se llama multiplexado.

EL PROGRAMA.

La cuestión importante radica en el propio programa. El programa consta de 3 partes bien diferenciadas:

  • Los displays, definición propia de los segmentos, de como se constituyen los dígitos (estructura interna).
  • La asignación y correspondencia de los pines del display, del Arduino y pulsadores, para su aplicación sin posteriores consultas por ese motivo.
  • Rutinas, además de la configuración (Set up), dentro del lazo (loop) se encuentran las subrutinas pertenecientes a los pulsadores.

LOS DISPLAYS.

No voy a describir con detalle cómo se construye un display, más arriba se puede ver su estructura. El display que voy a utilizar en este artículo, es el de un display multiplexado, es decir, que sus segmentos están conectados internamente de tal manera que al exterior sólo aparecen (normalmente) los correspondientes a los siete segmentos, más el común de cada uno de los dígitos que lo componen, en el caso de cuatro dígitos, muestra los siete pines de los siete segmentos, más cuatro correspondientes a cada uno de los cuatro dígitos. Estos son, unos ejemplos de encapsulados.

display_365 tyc-365wbg7segmentosx3s127139pines_displaypines_displayFig. 2

Hay que tener en cuenta que podemos encontrar estos displays en cátodo común y en ánodo común. Si usted, no dispone de un encapsulado de este tipo y está interesado en poner en práctica un contador de los descritos aquí y en cambio, si dispone de los display individuales, tranquilo, usted puede auto construir uno fácilmente, con los dígitos que necesite, vea cómo está construido el de 2 dígitos, de abajo y póngase a su construcción.

autoconstruidoFig. 3

Se pueden apreciar con todo detalle, los dos cablecillos blancos que son los comunes de cada dígito, por otra parte los siete hilos rojos, corresponden a los 7 segmentos, los cuales unen entre sí, los pares de segmentos (porque son dos) de cada dígito en paralelo. Recuerde utilizar todos en ánodo o cátodo común.

CIRCUITO DE 1 DÍGITO.

El circuito de montaje de encendido de un dígito, es muy simple, se muestra a continuación y debajo el código.

contador1digitoFig. 4

El código es igual de sencillo, se ha incluido el Dp (pin digital point), por ese motivo se ha añadido la octava resistencia. La secuencia enciende y apaga cada segmento y luego una secuencia de los 7 al tiempo. Por cierto, el display es un ánodo común FND507 que tenía a mano.

Encendido de 7 segmentos de un display de 1 dígito.

Secuencia de encendido de los segmentos del display.


Fig. 6

CIRCUITO DE 2 DÍGITOS.

El circuito se muestra a continuación. Es muy sencillo y no creo necesario entrar a describir cada componente. Dos apuntes importantes:

  • Este mismo circuito, con sólo añadir unas resistencias, nos sirve, para el resto de ejemplos que se describen.
  • Los pines analógicos del Arduino (A0…A6), pueden tomarse como digitales, siguiendo el orden, A0 = A14; A1 = A15; … A6 = A19.

circuito2x7segmtFig. 7

1ER. EJEMPLO.

Esta es una primera versión y su correspondiente código realizado con Arduino v.013 y v.023. El display utilizado para este caso es de cátodo común (CC). Como de costumbre, puede seleccionar el código y pegarlo en su editor dándole un nombre para guardarlo y su posterior ejecución.

Contador con dos display de 7 segmentos.

Observación. Para una IDE mayor de v0023, cambie #define F 7 por const int F = 7;

2º EJEMPLO.

En este segundo ejemplo, voy a utilizar otra forma de resolver el programa y además aprovechando que dispongo de un display múltiple de 4 dígitos, haré un contador de dos dígitos.

El circuito electrónico es similar al del ejemplo anterior, con unos pocos cambios, por lo que no lo mostraré aquí. El código se muestra a continuación.

Contador de dos displays de 7 segmentos y 2 botones.

Este ejemplo, muestra un código mejorado al representado en el primer ejemplo. Como puede apreciarse, he utilizado los mismos pines del Arduino, en cada ejemplo. Con esto, trato de minorar los errores de asignación en los distintos listados de código.

PROBLEMAS A CAUSA DEL MULTIPLEXADO.

El problema que se puede encontrar el programador, frente a una representación por multiplexado, radica en los tiempos de muestreo de cada dígito, por este motivo, recomiendo que se tenga en cuenta, diría, muy en cuenta, no utilizar o minimizar los delay(), ya que éstos, tienden a producir el efecto de «parpadeo» que se aprecia en los dígitos.

En un multiplexado, siempre se producirá un parpadeo, aunque este sea poco apreciable, cuantos más dígitos se muestren, más evidente se hará. Por ese motivo hay que reducir en lo posible los tiempos de muestreo.

3ER. EJEMPLO.

Voy a presentar el código de un contador de 3 dígitos en un display de 7 segmentos LED. El lector, puede apreciar las pocas diferencias que se presentan en este código. Un punto a tener en en cuenta, se encuentra precisamente en la rutina de asignación de encendido de cada dígito, representados por digit1, digit2 y digit3, con sus fórmulas.

contador4x7_3Fig. 8

Contador con tres displays de 7 segmentos.

 Veamos la importancia que tiene la reducción de lo que yo llamo tiempos muertos, probemos a modificar estas líneas, simplemente, comentemos las que aquí se muestran, compilemos y carguemos el programa en el Arduino:

Habrá comprobado que ahora el parpadeo no parece afectar a la normal visión del contador. A esto es, a lo que me refería, con llevar cuidado al programar, evitando rutinas que tomen excesivo tiempo en tareas que retengan el normal desarrollo del microprocesador.

Ahora, puede eliminar de su código, las líneas que ha comentado, guarde el archivo, compile y cargue el programa en el Arduino y finalmente compruebe que la solución es la esperada.

4º EJEMPLO.

En este ejemplo, vamos a utilizar los cuatro dígitos del encapsulado del display (es uno que tenía de una impresora). En este programa la tarea de multiplexar se dedica a cuatro displays, lo que puede llevar algún problema si no se vigilan los tiempos. Si no utilizamos bien las rutinas, aparecerán dos consecuencias, el parpadeo y una notable bajada de luminosidad de los dígitos.

Veamos el listado del código, estos listados están probados y sin duda funcionan como se espera de ellos.

Contador con cuatro displays de 7 segmentos.

A demás de lo comentado, el punto delicado de este sistema de multiplexado está en la elección correcta de la rutina de control de presentación de dígitos, cuanto menor tiempo se utilice en comparaciones, retardos, etc. más rápido se logrará la activación del dígito a visualizar:

Esto es un pequeño vídeo de baja calidad que muestra el contador de 4 dígitos y 7 segmentos a LED, ciertamente no se ve con la calidad que hubiera deseado. También puede descargar una versión.

Fig. 9

 Con estos ejemplos, he querido llenar un vacío que, había entre tantos ejemplos que se pueden encontrar en diferentes foros de Arduino. Realmente, en los foros se puede encontrar mucha colaboración y en la web, muchos artículos que hablan de contadores, realizados con LCD. Sin embargo, no son muchos los que se inclinan por los displays de siete segmentos a LED. En la mayoría de los que se encuentran teorizan y hablan de como funcionan, pero que lo describan en español, hay pocos. Por ese motivo, me he tomado la tarea de introducir al interesado en este tema de la multiplexación, en este caso, de unos dígitos. Tal vez le pueda ayudar a alguien en su trabajo.

Como siempre, comentarios, criticas y sugerencias para mejorar este artículo, son bienvenidos y apreciados.

5 thoughts on “Display múltiple de 7 segmentos.”

    1. Hola Ernesto, el código que estás buscando está en el mismo artículo.
      Se encuentra en la barra que se encuentra debajo de:
      ‘Contador con tres displays de 7 segmentos’.
      Si pulsas en «Download.txt» podrás descargarlo. Verás un ?V a la derecha, pulsando en él se abre la ventana que muestra el código.

  1. Disculpe Vicente donde tiene el codigo para los 4 displays es que no lo encuentro, me lo podria proporcionar por favor??

  2. Buena información que ayuda en el manejo del Arduino. me sirve a mi y para jóvenes que se inician en la electrónica.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.