Buenas a todos. Les comento que estoy realizando una marcador deportivo digital como ayuda comunitaria para un colegio.
Estoy utilizando un atmega328p programado directamente por ISP con un arduino UNO.
Bueno he realizado la software y el hardware.
Los display están hechos basados en el de 7 segmentos, usando 5 leds rojos en serie por segmento.
Cabe destacar, que los leds son de 10mm, alto brillo, con un angulo máximo de 45º de emisión, y los alimento con 12v.
En el programa, hice una matriz con los números en binario tipo BCD y luego de esta salen a un 74ls47 para que me controle el led 7seg.
Así:
Luego multiplexo los display controlando los ánodos comunes con salidas digitales, que a su vez van a un uln2003a, luego un transistor, y finalmente al ánodo.
Pin de salida digital>>Entrada uln2003a>>|---------|Salida uln2003a<<Resistencia<<base trans PNP
Adjunto cómo los conecté.
Para multiplexar los 14 displays enciendo uno, doy el número correspondiente, y lo apago.
Eso lo hago sucesivamente con los otros 13.
El problema radica en que si les pongo 5 de delay para los 14 display se ve el parpadeo.
Si se lo bajo a 1.5 ya no se ve el parpadeo, pero la luminosidad de los led cayó fuertemente.
Creo que es porque entre más pequeño sea el delay, el voltaje que sale en los pines digitales va disminuyendo, y creo que no alimentan bien la base del uln2003a, y a su vez los transistores pnp (2n3906) no trabajan bien.
Ahora, si cambio el voltaje de alimentación de 12v a 15v (el micro se alimenta por un 7805 que baja los 12-15v a 5v), los leds brillan un poco mas fuerte, pero lo máximo de amperaje que logro que obtengan es de 3-4mA. Cuando lo ideal es que brillen con 10mA que es un brillo fuerte.
Si le pongo 18v. Brillan totalmente fuertes, pero los transistores me dejan de conmutar bien y los displays cuando hacen su función de contar se ven mal (los segmentos que deben apagarse se mantienen encendidos con poco brillo,y los que deben estar encendido sobresalen de brillo un poco. a veces hasta se reinicia), y los transistores empiezan a calentar más de lo debido.
En sí, no está de más decir, que yo ya monté todo esto en placa y armé todo.
Pero como estaba trabajando dentro de mi casa, no me percaté que en el exterior a luz de sol, los leds no se ven bien.
Primero por la falta de brillo, y otro por el angulo de visión del led. (Cosa que resolví lijando el led)
Ahora no sé cómo hacer brillar más los led, no sé si es el transistor en los ánodos que no me deja pasar suficiente corriente. No sé si será por el voltaje.
En las imágenes les demuestro con un ejemplo, como va conectado un segmento de mi display, puesto que todos los demás tienen la misma estructura.
Quisiera su ayuda, si necesitan otra información de mi circuito, me dicen.
Estoy utilizando un atmega328p programado directamente por ISP con un arduino UNO.
Bueno he realizado la software y el hardware.
Los display están hechos basados en el de 7 segmentos, usando 5 leds rojos en serie por segmento.
Cabe destacar, que los leds son de 10mm, alto brillo, con un angulo máximo de 45º de emisión, y los alimento con 12v.
En el programa, hice una matriz con los números en binario tipo BCD y luego de esta salen a un 74ls47 para que me controle el led 7seg.
Así:
Código:
const unsigned short DIGITOS[] =
{
B0000,//0
B0001,//1
B0010,//2
B0011,//3
B0100,//4
B0101,//5
B0110,//6
B0111,//7
B1000,//8
B1001,//9
B0000,//10
};
Pin de salida digital>>Entrada uln2003a>>|---------|Salida uln2003a<<Resistencia<<base trans PNP
Adjunto cómo los conecté.
Para multiplexar los 14 displays enciendo uno, doy el número correspondiente, y lo apago.
Eso lo hago sucesivamente con los otros 13.
Código:
PORTD = DIGITOS[segundos1]; //
digitalWrite(disp1, HIGH);
delay(1.5);
digitalWrite(disp1, LOW);
PORTD = 0xff;
PORTD = DIGITOS [segundos2];
digitalWrite(disp2, HIGH);
delay(1.5);
digitalWrite(disp2, LOW);
PORTD = 0xff;
PORTD = DIGITOS [minutos1];
digitalWrite(disp3, HIGH);
delay(1.5);
digitalWrite(disp3, LOW);
PORTD = 0xff;
PORTD = DIGITOS[minutos2];
digitalWrite(disp4, HIGH);
delay(1.5);
digitalWrite(disp4, LOW);
PORTD = 0xff;
PORTD = DIGITOS[visitante1];
digitalWrite(disp5, HIGH);
delay(1.5);
digitalWrite(disp5, LOW);
PORTD = DIGITOS[visitante2];
digitalWrite(disp6, HIGH);
delay(1.5);
digitalWrite(disp6, LOW);
PORTD = 0xff;
PORTD = DIGITOS[local1];
digitalWrite(disp7, HIGH);
delay(1.5);
digitalWrite(disp7, LOW);
PORTD = 0xff;
PORTD = DIGITOS[local2];
digitalWrite(disp8, HIGH);
delay(1.5);
digitalWrite(disp8, LOW);
PORTD = 0xff;
PORTD = DIGITOS[faltasvisitante];
digitalWrite(disp9, HIGH);
delay(1.5);
digitalWrite(disp9, LOW);
PORTD = 0xff;
PORTD = DIGITOS[faltaslocal];
digitalWrite(disp10, HIGH);
delay(1.5);
digitalWrite(disp10, LOW);
PORTD = 0xff;
PORTD = DIGITOS[periodo];
digitalWrite(disp11, HIGH);
delay(1.5);
digitalWrite(disp11, LOW);
PORTD = 0xff;
PORTD = DIGITOS[tiempoextra];
digitalWrite(disp12, HIGH);
delay(1.5);
digitalWrite(disp12, LOW);
PORTD = 0xff;
Si se lo bajo a 1.5 ya no se ve el parpadeo, pero la luminosidad de los led cayó fuertemente.
Creo que es porque entre más pequeño sea el delay, el voltaje que sale en los pines digitales va disminuyendo, y creo que no alimentan bien la base del uln2003a, y a su vez los transistores pnp (2n3906) no trabajan bien.
Ahora, si cambio el voltaje de alimentación de 12v a 15v (el micro se alimenta por un 7805 que baja los 12-15v a 5v), los leds brillan un poco mas fuerte, pero lo máximo de amperaje que logro que obtengan es de 3-4mA. Cuando lo ideal es que brillen con 10mA que es un brillo fuerte.
Si le pongo 18v. Brillan totalmente fuertes, pero los transistores me dejan de conmutar bien y los displays cuando hacen su función de contar se ven mal (los segmentos que deben apagarse se mantienen encendidos con poco brillo,y los que deben estar encendido sobresalen de brillo un poco. a veces hasta se reinicia), y los transistores empiezan a calentar más de lo debido.
En sí, no está de más decir, que yo ya monté todo esto en placa y armé todo.
Pero como estaba trabajando dentro de mi casa, no me percaté que en el exterior a luz de sol, los leds no se ven bien.
Primero por la falta de brillo, y otro por el angulo de visión del led. (Cosa que resolví lijando el led)
Ahora no sé cómo hacer brillar más los led, no sé si es el transistor en los ánodos que no me deja pasar suficiente corriente. No sé si será por el voltaje.
En las imágenes les demuestro con un ejemplo, como va conectado un segmento de mi display, puesto que todos los demás tienen la misma estructura.
Quisiera su ayuda, si necesitan otra información de mi circuito, me dicen.
Adjuntos
Última edición por un moderador: