PDA

Ver la versión completa : Displays de 7 segmentos



Fernandocasa
27/11/2015, 16:55
Hola a Tod@s.

Tengo un problema con 4 displays individuales multiplexados, estos funcionan a través de un 74LS48 y unas resistencias de 220 ohmios pero los displays se ven muy ténues. He cambiado una resistencia por otra de 100 ohmios y no se nota que el segmento correspondiente se ilumine más, incluso he puenteado una resistencia y tampoco se nota más brillo en ese segmento. Los cátodos de cada display van a través de un transistor BC547 y la alimentación a 5v.

Espero que alguno me "ilumine".

Gracias y saludos.

Aunolose
28/11/2015, 12:41
Pon el circuito. ¿solo lleva una resistencia? cuando solo lleva una resistencia y hay muchos segmentos encendidos, se iluminan menos, pues la corriente total que pasa por ella se reparte entre los encendidos. Si lleva 7 resistencias y todos se ven mal, tiene pinta de el transistor. ¿antes se veían bien?

Edito, ya entiendo que cada uno lleva su resistencia. También puede ser el integrado. Piensa que si fallan todos, tiene que ser lo común a todos.

Aunolose
28/11/2015, 12:50
Mirando el datasheet, parece que tiene una pata (la 5) para que se apaguen todos los segmentos, si ahí se ha colado algo algo de ruido, o de PWM que funcione mal, que hace que se encienda y se apague, la luminosidad total baja. ¿ha cambiado algo ahí?

Fernandocasa
28/11/2015, 13:02
No, no ha cambiado nada, es un circuito nuevo que acabo de hacer y al probarlo los displays casi no se iluminan. He medido la tensión de salida en cada una de las 7 patas del 7448 y varía entre 0.15v y 2,86v dependiendo de que dígito hay en los displays. Los displays funcionan por que los probé antes de ponerlos en la placa.
Subo el circuito.

140204

Gracias y saludos.

Josefe17
28/11/2015, 13:36
No será que tienes baja la alimentación del circuito. Se me hacen pocos voltios para la salida high del decodificador. Prueba con el CD4511, que también es un deco de 7 segmentos, aunque no se si es compatible pin a pin.


Edito, sí lo es.

Reedito: lo es pero el pin 5 tiene lógica inversa: lo has de conectar a masa en lugar de a 5v para que funcione.

Josefe17
28/11/2015, 13:46
Es más, el 74LS48 acepta la lógica del 4511, así que mejor pon el pin 5 a masa en cualquier caso.

Aunolose
28/11/2015, 19:15
Edito. Voy a revisar lo de los niveles, pone que la máxima corriente es a nivel bajo (6mA) pero todos los circuitos que encuentro son a nivel alto.

https://www.physics.rutgers.edu/ugrad/327/sn74ls48rev5.pdf

Aunolose
28/11/2015, 19:21
Otra cosa, la multplexación hace que el led no esté encendido todo el tiempo, la resistencia hay que calcularla para que la corriente equivalente sea la misma que si estuviera siempre encendido. Hay cuatro displays, 1/4 de tiempo, la resistencia hay que calcularla para que "meta" 4 veces más corriente (si dura poco el led debería soportar ese pico, la corriente efectiva sería la misma), o no se iluminará del todo. Aunque si dices que lo has probado sin resistencia... Quizá haya un tiempo en el que los cuatro estén apagados.

Aunolose
28/11/2015, 19:39
A lo mejor es que no se ve mucho más.

En este datasheet indica que sí es a nivel alto, pero a través de una resistencia de 2k. Esto es, según ellos, 6mA como mucho.
http://www.ti.com/lit/ds/symlink/sn7446a.pdf

Se contradice un poco con el anterior, o así lo entiendo yo con lo que he entendido del otro datasheet. En la web hay circuitos que van a nivel bajo y también a nivel alto. :dontknow: atención a si es 7447 ó 7446 (que son en colector abierto -> salida activa a nivel bajo)

¿de donde salen los 6mA? pues 2k x 6mA= 1.2V en la resistencia, en el led -> 5V- 1.2= 3.8V, que se corresponde con un led blanco, el rojo debería verse más (a costa de más corriente) también quiere decir que no es necesaria resistencia adicional.

Puesto que está multiplexado, quizá es eso lo que hace que no ilumine bien. 6mA/4 = 1.5mA, si no son leds de alta eficiencia, se iluminará poco.

Edito: me parece que no puedes cambiar la programación ¿no? si pudieras, se podría poner un 7447, display con ánodo común, un transistor a positivo en vez de a negativo y, lo más interesante, resistencias más bajas que dan más corriente.

Fernandocasa
28/11/2015, 21:01
Es más, el 74LS48 acepta la lógica del 4511, así que mejor pon el pin 5 a masa en cualquier caso.

¿Quieres decir que ponga la pata 5 del 7448 a masa?, ¿no hay que variar nada más?.


A lo mejor es que no se ve mucho más.

En este datasheet indica que sí es a nivel alto, pero a través de una resistencia de 2k. Esto es, según ellos, 6mA como mucho.
http://www.ti.com/lit/ds/symlink/sn7446a.pdf

Se contradice un poco con el anterior, o así lo entiendo yo con lo que he entendido del otro datasheet. En la web hay circuitos que van a nivel bajo y también a nivel alto. :dontknow: atención a si es 7447 ó 7446 (que son en colector abierto -> salida activa a nivel bajo)

¿de donde salen los 6mA? pues 2k x 6mA= 1.2V en la resistencia, en el led -> 5V- 1.2= 3.8V, que se corresponde con un led blanco, el rojo debería verse más (a costa de más corriente) también quiere decir que no es necesaria resistencia adicional.

Puesto que está multiplexado, quizá es eso lo que hace que no ilumine bien. 6mA/4 = 1.5mA, si no son leds de alta eficiencia, se iluminará poco.

Edito: me parece que no puedes cambiar la programación ¿no? si pudieras, se podría poner un 7447, display con ánodo común, un transistor a positivo en vez de a negativo y, lo más interesante, resistencias más bajas que dan más corriente.

No, no tengo acceso a al programa y aunque pudiera no sabría como hacer el cambio. Si cambio al 7447 y displays de ánodo común, aparte de no valer el programa tendría que volver a empezar de cero.

Gracias y saludos.

Aunolose
29/11/2015, 00:11
¿tienes un fuente de alimentación y un amperímetro sensible? Puedes hacer la prueba de lo que se ilumina un led con 6mA y con 1.5, si es parecido a lo que se iluminan en el circuito, es que no hay ningún fallo. Quizá hay en el mercado algún display más brillante.

Fernandocasa
29/11/2015, 00:41
No tengo fuente de alimentación como tal, utilizo un transformador de 12v y luego un regulador ajustable para bajarlo a 5v. El lunes si puedo subo una foto con el mismo display en dos montajes diferentes alimentados con la misma "fuente" para que veas la diferencia de luminosidad.

Gracias y saludos.

Aunolose
30/11/2015, 17:53
No tengo fuente de alimentación como tal, utilizo un transformador de 12v y luego un regulador ajustable para bajarlo a 5v. El lunes si puedo subo una foto con el mismo display en dos montajes diferentes alimentados con la misma "fuente" para que veas la diferencia de luminosidad.

Gracias y saludos.

El regulador ajustable te sirve, si tienes el amperímetro. Pones una resistencia de 2k2 y un led del display (no hay resistencias standar de 2K) como puedes ajustar la tensión y la resistencia siempre es la misma, puedes ajustar la corriente. Pues cuando midas 6mA, verás la luminosidad que da el led, esa será la máxima luz que puede entregar el led con el 74LS48. Luego le quitas 3/4, es decir, ajustas a 1.5mA y si esa luminosidad será la que entregue en el circuito. Más o menos, pues el display está multiplexado, y el micro reparte el tiempo de encendido entre los 4 displays.

Fernandocasa
30/11/2015, 20:47
Hola a Tod@s.

Subo las fotos que he hecho, una con luz ambiente y la otra a oscuras, en los dos montajes es el mismo display.

140281
140280

No se aprecia mucho, pero en directo el de la izquierda apenas se ve.

Saludos.

Josefe17
30/11/2015, 23:06
Es un 16F84 el micro? Es porque hagas una prueba.

Josefe17
30/11/2015, 23:44
Este código que he hecho te debería permitir hacer pruebas. Dándole a cada botón en interruptor se enciende cada display sin multiplexados al máximo brillo mostrando un 8 (o eso debiera), para poder medir la tensión y corriente sobre cada diodo. No sé como habrás programado el micro, por lo que te paso el código fuente y el fichero .hex con el código máquina para que lo grabes. Me he basado en el esquema y en la asignación de pines de la imagen. Si no funciona o has cambiado algo dímelo.

// CONFIG

#define _XTAL_FREQ 4000000
#include <xc.h>

// CONFIG
#pragma config FOSC = XT // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF // Watchdog Timer (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (Power-up Timer is disabled)
#pragma config CP = OFF // Code Protection bit (Code protection disabled)


void main (void){
TRISA=0b00011111;
TRISB=0;
while(1){
PORTB=8;
PORTBbits.RB4=!PORTAbits.RA1;
PORTBbits.RB5=!PORTAbits.RA2;
PORTBbits.RB6=!PORTAbits.RA3;
PORTBbits.RB7=!PORTAbits.RA4;
}
}



140284

Cambia la extensión de .txt a .hex para poderlo grabar.

Fernandocasa
01/12/2015, 03:23
Este código que he hecho te debería permitir hacer pruebas. Dándole a cada botón en interruptor se enciende cada display sin multiplexados al máximo brillo mostrando un 8 (o eso debiera), para poder medir la tensión y corriente sobre cada diodo. No sé como habrás programado el micro, por lo que te paso el código fuente y el fichero .hex con el código máquina para que lo grabes. Me he basado en el esquema y en la asignación de pines de la imagen. Si no funciona o has cambiado algo dímelo.

// CONFIG

#define _XTAL_FREQ 4000000
#include <xc.h>

// CONFIG
#pragma config FOSC = XT // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF // Watchdog Timer (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (Power-up Timer is disabled)
#pragma config CP = OFF // Code Protection bit (Code protection disabled)


void main (void){
TRISA=0b00011111;
TRISB=0;
while(1){
PORTB=8;
PORTBbits.RB4=!PORTAbits.RA1;
PORTBbits.RB5=!PORTAbits.RA2;
PORTBbits.RB6=!PORTAbits.RA3;
PORTBbits.RB7=!PORTAbits.RA4;
}
}



140284

Cambia la extensión de .txt a .hex para poderlo grabar.

Gracias por contestar.

Efectivamente el micro es un 16F84A.

Buscando por internet he encontrado los archivos ASM y HEX, pero no se programar, no se modificar el programa y tampoco se compilarlo. Lo más que puedo hacer es pasaros los archivos.

Gracias y saludos.

Fernandocasa
01/12/2015, 20:22
Hola a Tod@s.

Pensando en el esquema, creo que la falta de brillo en los displays ¿puede ser debido a la programación?. Me explico, he dado la vuelta a los dos displays de los minutos para que con los puntos de los dos centrales ( : ) parpadeen una vez por segundo y separen las horas de los minutos. Esa parte la he hecho yo con un 555 y también he sustituido el led para indicar que la alarma está conectada por el punto del display de la derecha. Todo esto no pasa por el 7448 ni por el micro. Al probarlo con resistencias de 220 ohmios había una diferencia de luminosisdad muy grande con respecto a los dígitos, las he cambiado por resistencias de 1k y se ha igualado.

Saludos.

Aunolose
01/12/2015, 20:41
Hola a Tod@s.

Pensando en el esquema, creo que la falta de brillo en los displays ¿puede ser debido a la programación?. Me explico, he dado la vuelta a los dos displays de los minutos para que con los puntos de los dos centrales ( : ) parpadeen una vez por segundo y separen las horas de los minutos. Esa parte la he hecho yo con un 555 y también he sustituido el led para indicar que la alarma está conectada por el punto del display de la derecha. Todo esto no pasa por el 7448 ni por el micro. Al probarlo con resistencias de 220 ohmios había una diferencia de luminosisdad muy grande con respecto a los dígitos, las he cambiado por resistencias de 1k y se ha igualado.

Saludos.

Claro. Es lo que comentaba antes. Tal y como está montado, no pueden estar encendidos dos display al mismo tiempo: está multiplexado, es decir, durante 1/4 del tiempo se activa solo un transistor y se manda la información para que se enciendan los leds correspondientes, por ejemplo los minutos, pasado ese 1/4 del tiempo, se activa otro transistor y solo ese, por ejemplo las decenas de minutos, la información del 74LS48 cambia para mostrar esos dígitos, así con los 4 leds.

Como la corriente que pasa por los leds viene marcada por la resistencia del 74LS48 y es de 2K, la corriente máxima será (5V- tensión del led)/2k, pero es que solo pasa durante 1/4 del tiempo, luego es eso, partido por 4.

En el circuito que tu pones, es todo el tiempo (aunque se corte cada segundo) entonces es 5V/1K, que es mucha más corriente.

En este circuito no hay solución posible, pues no podemos cambiar la resistencia del 74LS48. Tendríamos que poner una de 500 ohm, por ejemplo.





Bueno... quizá si haya solución... aunque no simple. El integrado no lo puedes alimentar a más de 5V, luego entre masa y la salida, eso será lo que salga: 5V respecto a masa en serie con una resistencia de 2k. Y los cátodos del led están a masa a través del transistor, pero ¿y si el transistor no fuera a masa? si pones el transistor a -2V respeto a masa, la corriente aumenta y aumenta la luminosidad de los leds.

Atención, si cambias de sitio el emisor de los transistores, la base de base debe cambiarse también, debería ser -2 también para que se corte, como el PIC solo manda 0V, la tensión base emisor le llegan 2V (a través de la resistencia de 680 ohm) y satura... tampoco es complicado hacer eso, pero es un suma y sigue, que no sé si vale la pena.

Aunolose
01/12/2015, 20:44
Edito, no vale, el 74LS49 es colector abierto, es decir, da negativo o nada.


Otra opción es usar la información del 7448 para atacar un driver que pueda meter más corriente, mucho más sencillo.

Aunolose
01/12/2015, 21:05
http://www.mitsubishielectric.com/semiconductors/content/product/icsensor/transistorarray/tarray/tarray_lv4/m54564fp_e.pdf

Con este se puede hacer. Lo pones después del 74LS48, en cada salida la resistencia adecuada y ya. Lo más seguro es que para que funcione bien haya que añadir en las entradas una resistencia pull-down, para que los ceros sean ceros cuando el 74LS48 manda "nada".

Aunolose
03/12/2015, 21:35
¿Cómo lo llevas? ¿has probado el código de Josefe?

Fernandocasa
04/12/2015, 00:35
No, no he podido hacerlo, cuando tenga tiempo lo probaré.

Saludos.

Fernandocasa
04/12/2015, 01:27
Hola a Tod@s.

Acabo de probar el código de Josefe y pasa lo siguiente:

Al pulsar el botón 3 se enciende el 8 del display 4 muy muy ténue, menos luminosidad que antes.
Al pulsar el botón 2 se enciende el 8 del display 3 con igual luminosidad que antes.
Al pulsar el botón 1 se enciende el 8 del display 2 con un poco más de luminosidad que antes.

Saludos.

Fernandocasa
04/12/2015, 01:39
Al pulsar el interruptor de la alarma se enciende el 8 del display 1, con la misma luminosidad del display 2 o un poquitín más, tengo dudas.

Esto sucede pulsando solo uno cada vez, si se acciona más de un pulsador a la vez baja la luminosidad de los displays que están encendidos.

Saludos

Aunolose
04/12/2015, 17:13
Hola a Tod@s.

Subo las fotos que he hecho, una con luz ambiente y la otra a oscuras, en los dos montajes es el mismo display.

140281
140280

No se aprecia mucho, pero en directo el de la izquierda apenas se ve.

Saludos.

Buscando el código de Josefe he vuelto a ver esta foto ¿no son el mismo circuito? ¿tienes el esquema del otro?


Sobre el código de Josefe ¿puedes medir la tensión en un segmento del display, pulsando solo un botón? con esa información y sabiendo la resistencia interna del 74LS48, podremos saber la corriente que pasa "a tope". Luego hay que dividir entre 4...

Josefe17
05/12/2015, 17:42
Creo que definitivamente la solución pasaría por pillar un CD4511, que es compatible como te dije y aguanta hasta 25 mA por patilla, y problema resuelto.

http://pdf.datasheetcatalog.net/datasheets/150/109579_DS.pdf

Aunolose
06/12/2015, 11:36
Creo que definitivamente la solución pasaría por pillar un CD4511, que es compatible como te dije y aguanta hasta 25 mA por patilla, y problema resuelto.

http://pdf.datasheetcatalog.net/datasheets/150/109579_DS.pdf

¿cuando lo dijiste? Muy bueno, con este necesitarás resistencia, pero como la calculas tú, será la corriente que quieras. Además, podrìas elevar la tensión de alimentación (solo de este) y sin cambiar la resistencia, aumentas la corriente.

Fernandocasa
02/02/2016, 13:06
Creo que definitivamente la solución pasaría por pillar un CD4511, que es compatible como te dije y aguanta hasta 25 mA por patilla, y problema resuelto.

http://pdf.datasheetcatalog.net/datasheets/150/109579_DS.pdf

He cambiado el integrado por el CD4511 y no se ilumina ningún display.

Saludos.

Aunolose
02/02/2016, 20:06
He cambiado el integrado por el CD4511 y no se ilumina ningún display.

Saludos.

Es posible que la pata 3 (LE) tengas que conectarla a negativo. Cuando he tenido que hacer algo así, si el integrado va en un zócalo, he doblado la pata de integrado para que no entre y le he soldado un cablecillo.


Edito:
Sí, eso tienes que hacerlo, fíjate que en uno es /LT y en otro LE, es decir, uno activo a nivel bajo y el otro a nivel alto.

Aunolose
02/02/2016, 20:13
143238

Aunolose
08/02/2016, 17:38
¿qué tal? ¿has podido probarlo?

Fernandocasa
09/02/2016, 20:20
Esta tarde he podido probarlo.

He alimentado la pata 3 del CD4511 con negativo y todos los dígitos se iluminan bastante más que antes pero..... todos los dígitos muestran el número 8, osea se encienden todos los segmentos y no hay forma de cambiar los números, siempre el 8. Hay más luminosidad pero no funciona el reloj.

Gracias por vuestra ayuda.

Saludos.

Aunolose
09/02/2016, 21:06
Esta tarde he podido probarlo.

He alimentado la pata 3 del CD4511 con negativo y todos los dígitos se iluminan bastante más que antes pero..... todos los dígitos muestran el número 8, osea se encienden todos los segmentos y no hay forma de cambiar los números, siempre el 8. Hay más luminosidad pero no funciona el reloj.

Gracias por vuestra ayuda.

Saludos.

¿has probado con el código que te envió Josefe? ¿parpadean los leds o están siempre en marcha?

Aunolose
09/02/2016, 21:13
Es posible que la pata 3 (LE) tengas que conectarla a negativo. Cuando he tenido que hacer algo así, si el integrado va en un zócalo, he doblado la pata de integrado para que no entre y le he soldado un cablecillo.


Edito:
Sí, eso tienes que hacerlo, fíjate que en uno es /LT y en otro LE, es decir, uno activo a nivel bajo y el otro a nivel alto.

Me equivoqué de pata :oops: no es la 3 (/LT, Lamp Test) la que hay que poner a 1, si no la 5 (LE Latch Enable) :oops: perdón, me bailaron las patas...

Fernandocasa
10/02/2016, 19:59
Ahora si.

He vuelto a cambiar la alimentación de la patilla 3 a la original y he cambiado el + por el - en la patilla 5 y ahora si funciona bien y con más intensidad en los displays.

Muchas gracias por vuestra ayuda sois unos MONSTRUOS.

Saludos.

Aunolose
10/02/2016, 22:27
Gracias a ti por sacarnos de dudas. :salute: