TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: paco1980 en 23 de Noviembre de 2007, 07:49:56

Título: displays de 7 segmentos.
Publicado por: paco1980 en 23 de Noviembre de 2007, 07:49:56
Hola amigos. Una pregunta facil para ustedes.
Vamos a ver, estoy controlando 4 displays de 7 segmentos mediante un 16f877, y un convertidoor a bcd 74ls47.
Los displays son de anodo común, por lo que del 74ls47 los enciendo cuando de este saco 0V, y el común de estos va cada uno a una patilla del pic dándole los 5V necesarios secuencialmente, de tal manera que solo está cada vez uno encendido, pero para el ojo humanos aparecen todos encendidos a la vez. Ahora bien, mi problema es que como es normal, el dígito 1 se ve con más intensidad que el ocho, etc..  Les he puesto una resistencia de 220 Ohms a cada uno de los cátodos, pero sigue igual. No le he subido la resistencia porque creo que ya los voy a ver con poca intensidad, y como ya he insolado la tarjeta, antes de andar guarreando, os pregunto.
¿Teneis alguna idea que no sea ponerle un transistor a cada uno de los leds?

Gracias de antemano y un saludo.
Título: Re: displays de 7 segmentos.
Publicado por: Leon Pic en 23 de Noviembre de 2007, 08:24:09
Hola paco. ¿Estás alimentando el circuito con pilas o con un transformador? Porque si es con pilas, lo más seguro es que no tengas el amperage necesario para el circuito. Ahora si es con transformador pues, la fuente no es.

El otro inconveniente puede estar en el programa.
Título: Re: displays de 7 segmentos.
Publicado por: Azicuetano en 23 de Noviembre de 2007, 08:51:16
Que resistencias tienes en los segmentos de los displays? Ten en cuenta que son como led´s y necesitan su correspondiente resistencia limitadora de intensidad.

Su pusieras una resistencia muy grande se apreciaría el efecto que comentas.

Es muy posible que sea por eso.


Un saludo desde Alicante.
Título: Re: displays de 7 segmentos.
Publicado por: MGLSOFT en 23 de Noviembre de 2007, 09:33:11
Que resistencias tienes en los segmentos de los displays? Ten en cuenta que son como led´s y necesitan su correspondiente resistencia limitadora de intensidad.

Su pusieras una resistencia muy grande se apreciaría el efecto que comentas.

Es muy posible que sea por eso.


Un saludo desde Alicante.

Esta contestado aqui:

Citar
Les he puesto una resistencia de 220 Ohms a cada uno de los cátodos, pero sigue igual.
Título: Re: displays de 7 segmentos.
Publicado por: Cryn en 23 de Noviembre de 2007, 12:26:33
paco1980 talvez si colacas tu codigo por aca podamos ayudarte de mejor manera, ya que talvez sea un error de tu codigo

para adelantar, cuando quiero visualizar en varios displays, lo que yo hayo es:

1. sacar los datos necesarios que quiero visualizar por el puerto deseado
2. habilitar pin de display correspondiente
3. retardo pequeño para que se logre visualizar (10us 20u)
4. deshabilito pin del display correspondiente (vuelvo a estado anterior ese pin encendido)
se repite tantas veces sea necesaria por cada display, y bueno siempre he tenido la misma intensidad en los displays, haciendolo asi
Título: Re: displays de 7 segmentos.
Publicado por: KALLITOS en 23 de Noviembre de 2007, 12:40:20
Hola, a mi me pasaba lo mismo y lo solucione poniendo una resistencia de 180 ohm por cada segmento es decir una R a cada salida del 74xx47 en total solo 7
saludos
Título: Re: displays de 7 segmentos.
Publicado por: Cryn en 23 de Noviembre de 2007, 12:47:32
si, exactamente lo que dice KALLITOS, eso tb es mas econonico (digamos en dinero, pero mucho mas en espacio) y efectivo a la vez

aca tengo un esquema, no use deco, pero la idea es la misma, solo que es deco va directamente de las salidas del micro

(http://img228.imageshack.us/img228/6297/eskxj4.jpg)
Título: Re: displays de 7 segmentos.
Publicado por: paco1980 en 23 de Noviembre de 2007, 15:29:18
gracias a todos por contestar.
Vamos por partes.
El circuito lo alimento con transformador.
A la salida del 74ls47 he puesto 7 resistencias de 220 Ohms como ya os dije.
Con cuatro patillas del pic voy alimentando el anodo común de cada display.
Cada vez uno, de tal manera que siempre hay encendido solo uno.
Según creo, los pines del pic no deberían tener ningún problema al encender los siete led del display, ya que son en teoría 10mA y esto lo aguante el pin con creces (creo).
Me pasa en todos los displays, ya que el funcionamiento es el mismo.
Voy a probar con transistores en el ánodo común de cada uno de ellos para así descargar al pic de esos 10mA, que creo que es lo que debe ocurrir, pero quería antes de guarrear la tarjeta vuestra opinion.
Agradecería que me dijerais si es una posible solución o creeis otra cosa.

Muchas gracias chicos.
Un saludo.
Título: Re: displays de 7 segmentos.
Publicado por: Cryn en 23 de Noviembre de 2007, 15:45:53
si no haz usado los transistores, es my probable que los pines de tu pic se hayan arruinado, ya que los 10ma lo que circula por los 7 segmentos, son suministrados por un pin del micro, por ese pin que suministra en el anodo cuando se enciendan los 7 segmentos, circularn como 70ma (sera mas si circula mas correinte por cada segmento), y el pic no puede suministrar mas de 25ma por pin, entonces los suministradores estaran siendo muy exigido, por eso siempre hay qeu usar transistores, ya sea para catodo o para anodo, como el la imagen que te mostre.
Título: Re: displays de 7 segmentos.
Publicado por: paco1980 en 26 de Noviembre de 2007, 05:02:53
Muchas gracias chicos. Es lo que me temía. Voy a por los transistores.
Por el impreso no pasa nada, ya que de momento es prototipo, se insola otro y marchando.

Un saludo a todos y gracias.
Título: Re: displays de 7 segmentos.
Publicado por: Cryn en 27 de Noviembre de 2007, 21:01:31
bueno pues, haznos saber tus resultados

un saludo :mrgreen:
Título: Re: displays de 7 segmentos.
Publicado por: paco1980 en 04 de Diciembre de 2007, 07:42:46
Bueno gente, ya he probado con transistores (bc337), y se ha solucionado el problema, ahora todos los número se ven a la misma intensidad, como creiamos.
Os adjunto un dibujo un poco chapuza, pero creo que lo entendereis, si veis que algo creeis que va ha dar problemas o no va ha funcionar bien, os agradecería que me lo comentarais, ya que yo lo he probado poco tiempo hasta que vuelva a insolar la nueva tarjeta.

Un saludo
Título: Re: displays de 7 segmentos.
Publicado por: NANO1985 en 04 de Diciembre de 2007, 10:02:34
Hola PACO1980, son muy bueno los consejos que te dieron hasta el momento, espero que los aproveches, te digo tambien una cosilla, te aconsejaria que le coloques en la base de cada BC337 una resistencia de por lo menos 10K, para obligar y estár más que seguro que los transistores estén totalmente cortados, a veces ocurre que por soft "tocas" sin queres el byte entero sólo para modificar tan sólo un Bit y si es que realizaste algun algoritmo con él (byte), en éste caso se verán afectados los demás y por ende los transistores tambien, visualizandose parparedos indeseados en leds. que supestamente creias apagados. Espero no haberte enrredado mucho.
ahhh! otra cosa, para que no se note a simple vista el multiplexado que realizas con los 4 transistores, el tiempo en que cada display debe mostrar su informacion, no debe superar los 20ms (persistencia retiniana del ojo humano). de ésta forma visualizarás un mensaje totalmente "estático" y sin oscilaciones.
Saludos.  8)
Título: Re: displays de 7 segmentos.
Publicado por: paco1980 en 04 de Diciembre de 2007, 12:43:16
Gracias nano. Probaré a seguir tu consejo también.
Respecto a lo de los 20ms, yo los voy variando cada bastante menos tiempo, porque si no al variar el dato del display me tiembla.
El problema del que ya he desistido, es que quiero que los datos que se muestran en el display se graben a la eeprom del pic, y cada vez que esto sucede, me es imposible durante este tiempo mostrar los valores en los display, por lo tanto hay parpadeos en este momento. Aunque he conseguido que el parpadeo sea pequeñisimo, todavía se ve algo.

Un saludo.
Título: Re: displays de 7 segmentos.
Publicado por: NANO1985 en 04 de Diciembre de 2007, 12:45:15
ok PACO1980, cualquier cosa despues comentanos como vas... saludos.  8)
Título: Re: displays de 7 segmentos.
Publicado por: Cryn en 05 de Diciembre de 2007, 00:00:11
ese tu dibujo si que esta feo :D :D jeje :mrgreen: es broma hombre, jeje :mrgreen:

pero que bueno que hayas solucionado el problema, pues has visto algunas "cosas" que traen algunos circuitos, jeje, pues mas bien tu micro no sufrio muchos daños, o talvez ningun daño, a mi por no usar transistores (de flojo, jaja, para no conexionar) se me arruino todo el puerto,  :oops: y ahora mi 84a tiene su lapida :mrgreen: ni modo cosas que uno pga por aprender y experimentar, jeje, a ti te costo una placa :D :D
Título: Re: displays de 7 segmentos.
Publicado por: sander en 05 de Diciembre de 2007, 12:36:50
paco1980 veo en tu esquema que los transistores son NPN , pero si tus displays son de Anodo comun  lo mejor es usar transistores PNP, y deberias conectarlos de la siguiente manera:  Emisor a 5 V Colector al anodo y la base mediante una resistencia a la pata del PIC, si usas esta configuracion deberas activar los transistores con un cero en vez de hacerlo con un uno.
Título: Re: displays de 7 segmentos.
Publicado por: paco1980 en 05 de Diciembre de 2007, 12:57:23
¿pero es que no funciona de la forma que lo he montado?. En el tiempo que lo probé no me dio problemas.Además, es básicamente lo mismo, solo que en vez de poner un cero lógico en la patilla del pic para alimentar el display, pongo un 1.
¿no crees?

Un saludo
Título: Re: displays de 7 segmentos.
Publicado por: sander en 05 de Diciembre de 2007, 13:37:21
Si basicamente son los mismo ademas ambos funcionan, pero hay  una pequeña diferencia que es la potencia disipada, en la configuracion que pones el transistor en realidad no esta en saturacion , el voltaje entre c y e es de 0,7 que multiplicado por la corriente total uno 100 mA te da unos 70 mW que en este caso es poco y los transistores lo soportaran , pero si utilizas la otra configuracion el transistor si entrara en saturacion y tendra una caida menor entre c y e, teniendo por lo tanto menor consumo.

En este caso en particular no tendras problemas por que la potencia disipada es poca pero si tu carga  fuese  mayor tu transistor podria calentar mucho.
Título: Re: displays de 7 segmentos.
Publicado por: paco1980 en 05 de Diciembre de 2007, 15:16:39
ok sander lo tendré en cuenta para otros proyectos. Gracias a todos.
Un saludo.
Título: Re: displays de 7 segmentos.
Publicado por: Cryn en 06 de Diciembre de 2007, 10:58:59
yo tb alguna vez he usado la configuracion que mostraba paco tanto para anodo como para catodo, y pues no se me ocurrio pensar en lo que menciona sander :mrgreen: bueno ahora me comprare unos pnp para la proxima

un saludo
Título: Re: displays de 7 segmentos.
Publicado por: vicent en 06 de Diciembre de 2007, 11:21:01
Hola chicos.

Hace no mucho tiempo hice yo algo parecido para mostrar una temperatura de un sensor en unos displays.
Yo utilicé displays de cátodo común y claro, los transistores eran NPN, como bien dice sander.
Esto no era lo que quería comentar, pero bueno.

El caso es que yo también tuve problemas con lo de la intensidad y era por el software, lo tenía más tiempo en el primer display que en los demás y se notaba bastante. Corregí el software y sin problemas.

Un saludo. Au.
Título: Re: displays de 7 segmentos.
Publicado por: Enigma en 01 de Enero de 2008, 23:52:43
Hola una pregunta... Para hacer este refrescamiento, como lo hiciste...? mandaste a rotar un nibble??? y le dabas un delay (retardo) de 5 ms a cada display???

Atte: Enigma... La llanerita de Guayana :-)
Título: Re: displays de 7 segmentos.
Publicado por: vicent en 02 de Enero de 2008, 16:34:56
Te pongo lo que tengo yo:

No utilizo multiplexor para el display, era añadir un integrado más, así que codifiqué los digitos.

void main()
{
   int dig[10]={0xE7, 0x84, 0xD3, 0xD6, 0xB4, 0x76, 0x77, 0xC4, 0xF7, 0xF4}; // Codificamos los digitos para el display según nuestras conexiones
   long temp;

   setup_adc_ports(sAN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);

   set_tris_a(0x01);

   for(;;)
   {

      output_b(dig[temp%10]);
      output_high(PIN_A4);
      delay_ms(2);

      temp = (long)(temp/10);
      output_b(dig[temp%10]);
      output_high(PIN_A3);
      delay_ms(2);

      temp = (long)(temp/10);
      output_b(dig[temp%10]);
      output_high(PIN_A2);
      delay_ms(2);

      for(i=0; i<200;i++)  //Tomas 200 muestras y las sumas en grados_temperatura
      {
        grados_temperatura += read_adc();
      }
        grados_temperatura /= 200; //aqui calculas el promedio de 200 muestras;
   
      temp = (long)(((long)grados_temperatura*4.88)/10); // 5000mV / 1024 (10 bits) muestras posibles
   }
}

Espero que te sirva.
Un saludo. Au.