Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
Hola a todos, Me gusta trabajar con pantallas LED de 7 segmentos o con matriz de puntos y ya hice muchos proyectos diferentes con ellas.
¡Cada vez son interesantes porque hay una especie de magia en cómo pueden funcionar porque lo que estás viendo es una ilusión óptica!
Las pantallas tienen muchos pines para conectarse con un Arduino (u otro microcontrolador) y la mejor solución es aplicar las técnicas de multiplexación de datos para minimizar el uso de sus puertos.
Al hacer esto, cada segmento o cada LED se encenderá durante unos instantes (milisegundos o menos), pero la repetición de eso tantas veces por segundo crea la ilusión de la imagen que desea mostrar.
Para mí lo más interesante es desarrollar la lógica, el programa para averiguar cómo pueden mostrar la información correcta de acuerdo con tu proyecto.
En un solo proyecto, el uso de pantallas requiere mucho tiempo para ensamblar todos los componentes en una placa de pruebas con muchos cables para las conexiones.
Sé que hay muchas pantallas diferentes en el mercado que funcionan con I2C, con formas simplificadas (o no) de programarlas y las he usado también, pero prefiero trabajar con componentes estándar como 74HC595 (multiplexor IC) y ULN2803 (controladores) porque le dan más control en su programa y también más robustez y confiabilidad en su utilización.
Para simplificar el proceso de ensamblaje, he desarrollado un módulo LED Dipslay para múltiples propósitos utilizando componentes simples y comunes en el mundo de Arduino.
Con este módulo puedes trabajar con matriz de puntos con LED de dos colores en dos tamaños estándar (mayor y menor) y también puedes controlar la pantalla de 7 Seg x 4 Dígitos que son muy comunes y fáciles de encontrar en el mercado.
Y también puede trabajar con estos módulos en cascada en forma serial (diferentes datos en pantallas) o en forma paralela (mismos datos en pantallas).
¡Así que veamos cómo puede funcionar este módulo y ayudarte en tus desarrollos!
Video (módulo de pantalla LED)
Video (prueba de matriz de puntos)
Saludos, LAGSILVA
Paso 1: componentes
PCB (placa de circuito impreso)
- 74HC595 (03 x)
- ULN2803 (02 x)
- Transistor PNP - BC327 (08 x)
- Resistencia 150 ohmios (16 x)
- Resistencia 470 ohmios (08 x)
- Condensador 100 nF (03 x)
- Zócalo IC 16 pines (03 x)
- Zócalo IC 18 pines (02 x)
- Conector pin hembra - 6 pines (8 x)
- Cabezales de pines 90º (01 x)
- Cabezales de clavija 180º (01 x)
- Conector Borne KRE 02 pines (02 x)
- PCB (01 x) - Fabricado
Otros
- Arduino Uno R3 / Nano / similar
- Pantalla LED de 04 dígitos x 7 segmentos - (Ánodo común)
- Matriz de puntos LED de doble color (verde y rojo) - (Ánodo común)
Observaciones importantes:
- Pongo la hoja de datos de todos los componentes más importantes solo como referencia, pero debes verificar la hoja de datos de tus propios componentes antes de usarlos.
- Esta placa fue diseñada para usar solo pantallas de ÁNODO COMÚN.
Paso 2: primeros prototipos
Mi primer prototipo se hizo en una placa para probar el circuito.
Después de eso hice otro prototipo usando una placa universal como se puede ver en las imágenes.
Este tipo de placa es interesante para producir un prototipo rápido pero te das cuenta de que aún conserva muchos cables.
Es una solución funcional pero no tan elegante en comparación con un PCB fabricado final (el azul).
No soy bueno soldando porque no tengo suficiente experiencia con este proceso pero aun así obtuve buenos resultados con ambas experiencias y lo más importante: ¡no quemé ningún componente ni mis manos!
Probablemente los resultados en mi próxima tabla serán mejores debido a la práctica.
Por ello te animo a que pruebes este tipo de experiencia porque será excelente para ti.
Solo ten en cuenta que debes tener cuidado con la plancha caliente y procura no pasar más de unos segundos en un componente para evitar quemarlo !!
Y finalmente, en Youtube puedes encontrar muchos videos sobre soldadura que puedes aprender antes de ir al mundo real.
Paso 3: Diseño de PCB
Diseñé esta PCB usando un software dedicado para producir una placa de doble capa y se desarrolló varias versiones diferentes antes de esta última.
Al principio tenía una versión para cada tipo de pantalla y después de todo decidí combinar todo en una sola versión.
Objetivos de diseño:
- Simple y útil para prototipos.
- Fácil instalación y expansible.
- Capaz de utilizar 3 tipos diferentes de pantallas.
- Ancho máximo de la gran matriz de puntos de LED.
- Largo máximo a 100 mm para minimizar los costes de producción del tablero.
- Aplique componentes tradicionales en lugar de SMD para evitar más dificultades durante el proceso de soldadura manual.
- La placa debe ser modular para poder conectarse con otras placas en cascada.
- Salida en serie o paralela para otras placas.
- Varias placas deben ser controladas solo por un Arduino.
- Solo 3 cables de datos para la conexión de Arduino.
- Conexión de alimentación externa de 5V.
- Incrementar la robustez eléctrica aplicando transistores y drivers (ULN2803) para controlar los LEDS.
Observación:
En relación con este último elemento, le recomiendo que lea mis otros Instructables sobre estos componentes:
Uso de Shift Register 74HC595 con ULN2803, UDN2981 y BC327
Fabricación de PCB:
Una vez terminado el diseño, lo envié a un fabricante de PCB en China después de muchas búsquedas con diferentes proveedores locales y en diferentes países.
El problema principal estaba relacionado con la cantidad de tableros versus el costo porque solo necesito algunos de ellos.
Finalmente, decidí hacer un pedido regular (no un pedido expreso debido a costos más altos) de solo 10 tableros con una empresa en China.
Después de solo 3 días, las tablas se fabricaron y me enviaron cruzando el mundo en más de 4 días.
¡Los resultados fueron excelentes!
¡Una semana después de la orden de compra, las tablas estaban en mis manos y quedé realmente impresionado con la alta calidad de las mismas y con su rápida velocidad!
Paso 4: programación
Para la programación debe tener en cuenta algunos conceptos importantes sobre el diseño del hardware y sobre el registro de desplazamiento 74HC595.
La función principal del 74HC595 es transformar la entrada serial de 8 bits en un cambio de salida en paralelo de 8 bits.
Todos los datos en serie van al Pin # 14 y en cada señal de reloj los bits van a sus correspondientes pines de salida en paralelo (Qa a Qh).
Si continúa enviando más datos, los bits se moverán uno por uno al Pin # 9 (Qh ') como salida serial nuevamente y debido a esta funcionalidad puede poner otros chips conectados en cascada.
Importante:
En este proyecto tenemos tres circuitos integrados de 74HC595. Los dos primeros funcionan para controlar las columnas (con lógica POSITIVA) y el último para controlar las líneas (con lógica NEGATIVA debido al funcionamiento de los transistores PNP).
La lógica positiva significa que debe enviar una señal de nivel ALTO (+ 5V) desde Arduino y la lógica negativa significa que debe enviar una señal de nivel BAJO (0V).
Matriz de puntos de LED
- La primera es para las salidas de los cátodos de LEDs Rojos (8 x) >> COLUMNA ROJA (1 a 8).
- El segundo es para la salidaL de los cátodos de LED verdes (8 x) >> COLUMNA VERDE (1 a 8).
- El último es para la salida de ánodos de todos los LED (08 x Rojo y Verde) >> LÍNEAS (1 a 8).
Por ejemplo, si desea encender solo el LED verde de la columna 1 y la línea 1, debe enviar la siguiente secuencia de datos en serie:
1º) LÍNEAS
~ 10000000 (solo la primera línea está activada): el símbolo ~ es invertir todos los bits de 1 a 0 y viceversa.
2º) COLUMNA Verde
10000000 (solo la primera columna de LED verde está encendida)
3º) COLUMNA ROJA
00000000 (todas las columnas de LED rojos están apagadas)
Declaraciones de Arduino:
shiftOut (dataPin, clockPin, LSBFIRST, ~ B10000000); // Lógica negativa para las líneas
shiftOut (dataPin, clockPin, LSBFIRST, B10000000); // Lógica positiva para las columnas verdes
shiftOut (dataPin, clockPin, LSBFIRST, B00000000); // Lógica positiva para las columnas rojas
Observación:
También puede combinar ambos LED (verde y rojo) para producir el color AMARILLO de la siguiente manera:
shiftOut (dataPin, clockPin, LSBFIRST, ~ B10000000);
shiftOut (dataPin, clockPin, LSBFIRST, B10000000);
shiftOut (dataPin, clockPin, LSBFIRST, B10000000);
Pantalla de 7 segmentos
Para este tipo de pantallas, la secuencia es la misma. La única diferencia es que no es necesario utilizar los LED verdes.
1º) DIGIT (1 a 4 de izquierda a derecha) ~ 10000000 (establecer el dígito # 1)
~ 01000000 (establecer el dígito # 2)
~ 00100000 (establecer el dígito # 3)
~ 00010000 (establecer el dígito # 4)
2º) NO UTILIZA
00000000 (todos los bits puestos a cero)
3º) SEGMENTOS (A a F y DP - verifique su hoja de datos de visualización)
10000000 (establecer segmento A)
01000000 (establecer segmento B)
00100000 (establecer segmento C)
00010000 (establecer segmento D)
00001000 (establecer segmento E)
00000100 (establecer segmento F)
00000010 (establecer segmento G)
00000001 (ajuste DP)
Ejemplo de Arduino para configurar la Pantalla # 2 con el número 3:
shiftOut (dataPin, clockPin, LSBFIRST, ~ B01000000); // Establecer DISPLAY 2 (lógica negativa)
shiftOut (dataPin, clockPin, LSBFIRST, 0); // Establecer datos a cero (no usados)
shiftOut (dataPin, clockPin, LSBFIRST, B11110010); // Establecer segmentos A, B, C, D, G)
Finalmente, aplicando este proceso puedes controlar cualquier LED de tu pantalla y también puedes crear cualquier carácter especial que necesites.
Paso 5: prueba
Aquí hay dos programas como ejemplo de funcionalidad del módulo de visualización.
1) Pantalla de cuenta atrás (de 999,9 segundos a cero)
2) Matriz de puntos (dígitos del 0 al 9 y alfabeto de la A a la Z)
3) Reloj digital RTC en pantalla LED de 4 dígitos y 7 segmentos
Esta última es una actualización de mi primera versión de Reloj digital.
Paso 6: Conclusión y próximos pasos
Este módulo será útil en todos los proyectos futuros que requieran alguna pantalla LED.
Como próximos pasos montaré más placas para trabajar con ellas en modo cascada y también desarrollaré una librería para simplificar aún más la programación.
Espero que hayas disfrutado de este proyecto.
Por favor, envíeme sus comentarios porque esto es importante para mejorar el proyecto y la información de este Instructable.
Saludos, LAGSILVA
26 de mayo de 2016