5 votos

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

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 manejar todos los LEDs. Ahora mismo tengo una PCB personalizada que los maneja todos desde un Atmega168, usando 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 utilizar un controlador de LED como el TLC5940.

¿Es esto necesario? Dado 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 igual de brillantes y tan brillantes como puedan serlo con seguridad, para aumentar su visibilidad.

7voto

Mark Biek Puntos 41769

Puedes reducir el número de pines que utilizas en el AVR multiplexando las pantallas. Conecta todos los segmentos juntos y conéctalos a siete pines de salida mediante resistencias, y conecta los cuatro cátodos comunes a otros cuatro pines de salida. Esto debería proporcionarle un brillo consistente. El software será más complejo, pero es una solución mucho mejor.

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

Por supuesto, hay que asegurarse de que no se superan los límites de corriente de los pines del regulador. Se necesitarán dispositivos controladores si se requieren corrientes mayores que el límite de 25 mA de los pines del AVR. Yo los uso en una PCB que diseñé para una aplicación similar.

5voto

JW. Puntos 145

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

Entonces, simplemente cambie el patrón de 32 bits apropiado desde el AVR para el valor que está tratando de representar. Esto desacoplará los requerimientos de energía del LCD de las restricciones de suministro de corriente de los pines del AVR. También reducirá la utilización de los pines del AVR a tres pines (datos, reloj, latch).

En términos de complejidad del software, todo lo que necesitas es una tabla para asignar los valores de los dígitos a los patrones de bits. Si mantienes el cableado consistente entre los dígitos, eso es sólo una tabla de búsqueda de 10 entradas (si sólo estás mostrando números de base-10). El protocolo de comunicación de los registros de desplazamiento no podría ser mucho más simple - abrir el latch, introducir los bits de datos, cerrar el latch, y son capaces de operar de forma fiable a velocidades muy superiores a las que se pueden alcanzar con los AVRs, por lo que puedes simplemente mover los cables tan rápido como sea posible en el software. Si quieres reducir la potencia, puedes lograr PWM desplazando en 0x0000 durante el ciclo de apagado también y utilizando interrupciones del temporizador para asegurar la consistencia del ciclo de trabajo, por ejemplo.

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

1voto

lillq Puntos 4161

Usted no necesito un controlador de LED, pero tiene sus ventajas. Ahorras mucho en la E/S de tu microcontrolador, sólo necesitas un par de líneas para la interfaz serie (SPI o I2C). También puede ahorrar espacio en la placa, ya que no necesitas 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 respectivamente. Se presenta en un pequeño paquete de 16 pines. Tiene control de brillo digital y decodificador hexadecimal a 7 segmentos. Se conecta a su uC con 3 líneas.

1voto

Sarah Puntos 33

Dices que se trata de un dispositivo wearable. Es posible que los problemas de luminosidad que observas no tengan nada que ver con el/los chip(s) en cuestión, sino que sea el resultado de la resistencia interna de la batería, especialmente si estás usando pilas de botón. Es decir, cuando intentas encender todos los LEDs (en un segmento) a la vez, llegas al límite de la corriente que puede suministrar la batería, independientemente de los controladores del microcontrolador.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X