Saltar al contenido
Control Automático Educación

Multiplexar Display 7 Segmentos con Arduino

En esta entrada entenderás como funciona la multiplexación y veremos como multiplexar un display de 7 segmentos con Arduino, el cual podrás aplicarlo para display de 7 segmentos de 2 dígitos, 3 dígitos, 4 dígitos, etc.

Antes que nada si no has visto todas las entradas que tenemos de Arduino, pues Mira los 👉 TUTORIALES DE ARDUINO

Multiplexar Display 7 Segmentos con Arduino

Tal y como lo vimos en la entrada pasada del Display de 7 Segmentos con Arduino, vimos que para poder usar este periferico en nuestra placa, vamos a tener que obligatoriamente ocupar 7 pines de nuestro Arduino, por lo tanto, el solo hecho de pensar en usar 2 displays, indicaría que deberíamos usar 14 pines del Arduino, lo cual comenzaría a volver inviable nuestros proyectos.

Sin embargo, para eso vamos a utilizar el concepto de Multiplexación, el cual nos va a permitir usar únicamente los 7 pines del Arduino que se conectan a un diplay sencillo y unos pines adicionales para el control, es decir si conectamos un display de 7 segmentos de 2 dígitos con arduino vamos a necesitar 2 pines de control (9 pines en total), si es de 4 dígitos serían 4 pines de control (11 pines en total del arduino).

displays 7 segmentos varios digitos

Multiplexación Display 7 Segmentos

La multiplexación de un Display, simplemente consiste en encender un único display, mostrar el numero y luego apagarlo, para encender el display que le sigue. El truco de encender y apagar el display a una alta velocidad, permite engañar al ojo humano, y tener la sensación de que todos los displays se encuentran energizados al mismo tiempo, pero en realidad, si lo vemos en cámara lenta, los displays de 7 segmentos de ánodo o cátodo común están haciendo la siguiente secuencia de multiplexación:

Multiplexación Display 7 Segmentos

Vemos que en cada segmento se le envia la secuencia del numero que se desea mostrar, y en las flechas de abajo indican la activación del respectivo display, donde si es ánodo común, indica que con un transistor PNP vamos a colocarlo a positivo para cerrar el circuito, por el contrario si es un display de catodo común, usamos un transistor NPN para mandar el display a tierra y cerrar el circuito.

Conexión del Display 7 Segmentos con Arduino – Multiplexación

Varios canales en YouTube y paginas en la web muestran que los pines de control que Activan cada display los conectan directamente a los pines del Arduino, y envían la secuencia de HIGH y LOW para activar cada display y con esto  parece que cerraría el circuito a GND y ya está.

Pero NO!!!. El consumo típico de cada segmento, (como de cada LED) es de entre 15 y 20mA. Como tenemos 8 segmentos, pensemos en el caso en el que mostramos el numero 8 junto con el punto decimal, el consumo será de 8 x 15 = 120 mA y pudiendo llegar a 160mA. Esto es más de lo que aguanta un Arduino que son 40mA, entonces corremos el riesgo de quemar nuestra placa.

Entonces, para evitar este problema, debemos usar la multiplexación a través de transistores NPN para cátodo común y PNP para ánodo común, configurados como switches.

Cátodo Común

Display de 7 Segmentos Catodo común

Aqui vemos la conexión de displays de 7 segmentos de cátodo común con transistores NPN (2N3904) donde poniendo LOW en los pines de control (la base del transistor) los transistores están al corte, y ningún digito puede iluminarse. Si ponemos tensión en el pin de más a la derecha su transistor se satura y permite la salida a Ground del primer digito que encenderá los segmentos que le indiquen los pines del a al g.

Interrupción con Arduino

Interrupciones en Arduino

Ánodo Común

Display 7 Segmentos Anodo Común

En este caso la conexión de displays de 7 segmentos de ánodo común con transistores PNP (2N3906) donde poniendo HIGH en los pines de control (la base del transistor) los transistores están al corte, y ningún digito puede iluminarse. Si ponemos LOW en el pin de más a la derecha su transistor se satura y permite la salida a VCC del primer digito que encenderá los segmentos que le indiquen los pines del a al g.

Display de 7 Segmentos 4 Dígitos con Arduino – Ejemplo con Código

El circuito que vamos a implementar en esta entrada es el siguiente, donde nos vamos a valer de un Display 7 Segmentos de 4 Digitos con Arduino, sabes que si no tienes el display de 7 segmentos de 4 digitos, puedes reemplazarlo por 4 displays sencillos, pero deberas unir todos los segmentos en el protoboard, es decir unir todos los segmentos A, todos los segmentos B, y asi sucesivamente.

Display 4 digitos
Display 7 Segmentos de 4 Digitos con Arduino

Lista de Materiales

  • Cualquier Placa de ARDUINO
  • 4 Displays de 7 Segmentos Catodo común
  • 7 Resistencias de 220ohms para los displays
  • 4 Resistencias de 1k para los transistores
  • 4 Transistores NPN (2n3904)
  • 1 Protoboard
  • Cables de conexión

Código

A continuación te dejo el código del Display de 7 Segmentos con Arduino para que te sirva como ejemplo y entiendas el funcionamiento de este periférico:

 

Que les a parecido esta entrada? Si te ha gustado puedes compartirlo con tus amigos y suscribirte al canal para que sigas aprendiendo mucho más. Puedes suscribirte también por Correo electrónico a este sitio web para saber cuando hayan nuevas publicaciones, el formulario esta en la barra derecha de esta página, es muy fácil inscribirse.

Entradas relacionadas

Deja un comentario

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.

Comentarios (12)

Muy interesante todos sus vídeos se aprende lo que el profe no nos deja ni siquiera copiar Gracias por dedicar tiempo para nosotros los que nos gusta el Arduino siga siga sin parar que es muy Bueno todo su material y que dios le bendiga grande mente
desde Bogota

Responder

Gracias Cristo, poco a poco iré montando más videos a nuestro curso de Arduino. Saludos para ti también!!

Responder

que referencia tienen los 4 trancistores y las redcistencias ? son 4 de 200k y 7 de 230?

Responder

transistor: 2N3904, resistencias del transistor: 1k, resistencia de los displays: 220ohms

Responder

Puedo incrementar la variable tempor por medio de una interrupción y así medir una frecuencia. Verdad.

Interesante tu video. Muy bien comentado. Excelente

Responder

Claro que si Juan Ortiz, puedes hacer lo que comentas. Gracias por el comentário. Saludos!!

Responder

Gracias!!, tratare de hacerlo con RTC, y desplegar solo las horas. Buen aporte.

Responder

De nada Abdul, me alegro que te haya servido. Saludos.

Responder

si quisiera hacer que contara de 25 min a 0 tendria quecambiar el codigo general y la parte de los dig[4]

Responder

No cambia el código no. Solo cambia la variable que lleva la cuenta, en este caso tempor quien debe decrementar, sería tempor–; E claro adicionando la lógica de tu programa. Saludos.

Responder

Buenísimo Sergio, me has ayudado mucho para recordar la implementación de unos displays multiplexados. Mi aporte seria el siguiente : en la función mostrar() se puede utilizar el operador % que es modulo residuo de la división de un numero entero. es ideal para descomponer números enteros.
Hice uno de seis dígitos 999999 para hacer unas pruebas de desbordamiento en micros de 8 Bits y su uso en micros de 32 bits quedando así

int dig[6]; //Declarar las variables

dig[5]=tempor/100000;
dig[4]=(tempor % 100000)/10000; // básicamente es una división con residuo solo se toma el residuo
dig[3]=(tempor % 10000)/1000;
dig[2]=(tempor % 1000)/100;
dig[1]=(tempor % 100)/10;
dig[0]= tempor % 10;

Se que da el mismo resultado pero yo también me enredé un poco al tratar de modificarlo 🙂

Siempre agradecido por la explicación del código.

Responder

Gracias Luis, nuevamente por el aporte. Un saludo grande!!!

Responder