¿Cuál es la mejor manera de conectar un LED de 4 dígitos de 7 segmentos a Atmega168?

5

Estoy trabajando en un dispositivo con un contador de 4 dígitos de 7 segmentos y me pregunto cuál es la mejor manera de controlar todos los LED. Ahora mismo tengo un PCB personalizado que los impulsa a todos desde un Atmega168, utilizando la mayoría de los pines de E / S. El problema es que algunos de los números aparecen más brillantes que otros. Por ejemplo, un "1" es más brillante que un "8888".
Alguien sugirió que debería estar usando un controlador de LED como el TLC5940.

¿Es esto necesario? Ya que es para un dispositivo portátil, estoy tratando de mantener el tamaño y la potencia al mínimo.

El prototipo actual funciona bien, pero quiero asegurarme de que los dígitos sean tan brillantes y tan brillantes como puedan ser, para aumentar su visibilidad.

    
pregunta user4101

4 respuestas

2

Puede reducir la cantidad de pines que está utilizando en el AVR multiplexando las pantallas. Conecte todos los segmentos juntos y conéctelos a siete pines de salida a través de resistencias, y conecte los cuatro cátodos comunes a otros cuatro pines de salida. Esto debería darle brillo constante. El software será más complejo, pero es una solución mucho mejor.

Debido a que el ojo humano responde al brillo máximo, la multiplexación puede proporcionar más brillo del que es posible con pantallas no multiplexadas, y consume menos energía, especialmente si se reduce el ciclo de trabajo.

Debe asegurarse de que los límites actuales de los pines del AVR no se excedan, por supuesto. Se necesitarán dispositivos controladores si se requieren mayores corrientes que el límite de 25 mA para los pines del AVR. Los uso en una PCB que diseñé para una aplicación similar.

    
respondido por el Leon Heller
1

No necesita un controlador LED, pero tiene sus ventajas. Ahorras mucho en la E / S de tu microcontrolador, solo necesitas un par de líneas para la interfaz serial (SPI o I2C). También puede ahorrar espacio en la placa, ya que no necesita un montón de componentes discretos para la multiplexación.
Personalmente, me gusta el Maxim MAX6950 / 51 para cinco y ocho dígitos de 7 segmentos resp. Se presenta en un pequeño paquete de 16 pines. Tiene control de brillo digital y decodificador hexadecimal a 7 segmentos. Interfaces para tu uC con 3 líneas.

    
respondido por el stevenvh
1

Estás diciendo que este es un dispositivo portátil. Es posible que los problemas de brillo que está viendo no tengan nada que ver con los chips involucrados, pero es el resultado de la resistencia interna de la batería, especialmente si está usando las celdas de los botones. Es decir, cuando intenta encender todos los LED (en un segmento) a la vez, llega al límite de la cantidad de corriente que puede suministrar la batería, independientemente de los controladores del microcontrolador.

    
respondido por el nitro2k01
0

Un enfoque viable es usar una cadena de cuatro registros de desplazamiento de 8 bits (por ejemplo, 74HC595) para controlar todos los segmentos, y usar la resistencia limitadora de corriente del mismo tamaño para cada segmento (importante: cada segmento tiene su propia resistencia).

Luego simplemente cambie el patrón de 32 bits apropiado desde el AVR para el valor que está tratando de representar. Eso disociará los requisitos de alimentación de la pantalla LCD de las restricciones de fuente actuales del PIN del AVR. También reducirá la utilización de pines AVR a tres pines (datos, reloj, cierre).

En términos de complejidad del software, todo lo que necesita es una tabla para asignar valores de dígitos a patrones de bits. Si mantiene el cableado consistente entre los dígitos, eso es solo una tabla de búsqueda de 10 entradas (si solo está mostrando números de base 10 antiguos). El protocolo de comunicación del registro de desplazamiento no podría ser mucho más simple: abra el pestillo, el reloj en los bits de datos, cierre el pestillo y son capaces de un funcionamiento confiable a velocidades mucho mayores que las que puede lograr con los AVR, de modo que puede simplemente mover Los cables lo más rápido posible en el software. Si desea reducir la potencia, posiblemente puede lograr PWM cambiando en 0x0000 durante el ciclo de apagado y también utilizando interrupciones de temporizador para garantizar la consistencia del ciclo de trabajo, por ejemplo.

Lo último, estas cosas son baratas y vienen en paquetes DIP si eso es importante para ti.

    
respondido por el vicatcu

Lea otras preguntas en las etiquetas