TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: ituarte en 27 de Junio de 2013, 01:50:35
-
Buenos dias,
Estoy haciendo un circuito que utiliza un PIC16f84 y 5 displays de 7 segmentos. Todo ello va alimentado a 5V con un 78L05 que toma la corriente de un transformador.
Pero lo que me gustaria es proveer al PIC de una pila de 5V para que siga trabajando en caso de desconexion, es decir que si lo desconecto el display se apage pero el PIC no pierda la informacion y siga trabajando.
Como puedo hacer esto?
Cuanto tiempo aproximado duraria la pila alimentando solo al PIC?
Muchas gracias
-
Que es lo que seguiría haciendo el pic después de desconectado?
-
El 16f84 dispone de una memoria de datos EEPROM, de 64 bytes en la cual puedes guardar los datos de esos 5 display. y recuperar la información leyendo la eeprom interna y recuperar esos datos sin problemas, ante una falta de alimentación del PIC
-
Es que en el Display se muestra una cuenta atras, la idea es que cuando los desconecto el pic tiene que ser haciendo la cuenta atras
-
Si es lo que te estoy diciendo, almacena el valor del display en la memora EEPROM, cuando se interrumpe el suministro energetico hacia el PIC, cuando vuelve a conectar el pic, simplemente tiene que hacer una rutina para leer la eeprom lo primero, luego se carga el display con el numero donde estaba , y finalmente sigue la cuenta atras tal cual.
-
Que tal ituarte,
Creo que lo de la EEPROM no te serviría, ya que lo que tu quieres es que el PIC continue haciendo la cuenta atras, simplemente no se muestra esa cuenta en los displays para disminuir el consumo de corriente mientras se usa la batería (pila).
Para sugerir algo, necesito preguntarte lo siguiente:
¿Que tipo de pila o batería quieres usar?
¿Usaras un cargador, para que mientras exista la alimentación principal, la pila se recargue?
Saludos,
Elreypic.
-
Hola Ituarte, con algo parecido a lo tuyo anduve indagando en la red de redes soluciones para mi caso, en tu situación Yo lo resolvería de dos formas,
_la primera, sencillísima, el PIC conectado a la fuente de respaldo que está a la tensión de "flote", y totalmente separado el hardware adjunto al pic, esto es, no comparte, GND ó +5V, porque en ese punto instalo un simple micro relé, que le quite la alimentación a toda esta circuitería inmediatamente al producirse un fallo en la alimentación principal. Con esto logro que el pic quede funcionando y corriendo su programa, con un consumo mínimo.
_la segunda (más elaborada y comleja) es que te pases a un pic de esos que tienen la posibilidad de emplear un oscilador interno (16F628/648, 16F819/88/87) y lo pongo a funcionar con este tipo de oscilador, replanteando el soft y hard, logro detectar el fallo de la fuente principal, ahora, desde el programa cambio la frecuencia del PIC, a la mínima accesible, con ello se minimiza el consumo en ese integrado, además, como en el caso anterior dejo sin alimentar la circuitería adjunta al PIC, también incorporo un DS1307, para emplear su NVRAM (56 bytes)) guardando una copia de la cuenta, esto por si la fuente falla con demasiada frecuencia, grabar valores en la EEPROM, la destruirá, en cambio en el DS1307 eso no sucede y me guardo una copia, al menos de la última cuenta.-
-
Hola,
Tenia pensado utilizar una pila de boton no recargable.
Y no puedo cambiar de PIC ya que uno de los puntos que tengo que conseguir es que salga lo más economico dentro de lo posible
-
Estás en el horno si querés alimentar lo que propones con unas de esas pilas botón, es muy poca energía lo que manejan, los pic consumen bastante cuando están operativos.
Debes tener en cuenta que los pic 16F819&628 son más baratos que los 16F84, a este último no lo tendría en cuenta, por ser caro y con menos prestaciones.
-
Estás en el horno si querés alimentar lo que propones con unas de esas pilas botón, es muy poca energía lo que manejan, los pic consumen bastante cuando están operativos.
Debes tener en cuenta que los pic 16F819&628 son más baratos que los 16F84, a este último no lo tendría en cuenta, por ser caro y con menos prestaciones.
No se si sabré hacer lo que planteabas anteriormente, es mejor un par de pilas AAA? Cuanto me podria durar una pila conectada al pic desconectado de red?
-
Un pic 16F628 es más barato, potente y fácil de encontrar:
http://ww1.microchip.com/downloads/en/DeviceDoc/40300C.pdf
Consume 20uA a 32Khz de frecuencia de reloj (suficiente para una cuenta atrás)
Una pila botón tipica (CR2032 http://en.wikipedia.org/wiki/CR2032_battery) tiene unos 200mAh, con lo que podrías hacer funcionar tu pic durante 10000horas (un poco más de un año).
Saludos.
-
Creo que la solucion sería un Low loss powerpath Contoller LTC4412 de Linear Technology.
Una solucion elegante y eficiente.
http://cds.linear.com/docs/en/datasheet/4412fa.pdf
Otra solución económica y fácil de implementar sería usando 2 diodos Schottky 1N5817 como se muestra en las figuras de los archivos adjuntos.
Saludos.
Elreypic.
-
yo hice esto una vez. Necesitaba exactamente lo mismo que en tu caso.
Armé un pack de 4 pilas AA, con un total de 6v. (te recomiendo usar minimamente las AA porque las tipo boton no aguantan mucho tiempo tienen poca capacidad).
Al terminar de armar el pack, colocas la pila en paralelo con tu fuente principal, pero le colocas un diodo en cualquiera de los cables del pack para evitar que la fuente principal pase hacia la pila.
De esta manera la pila alimentará al pic solamente cuando la fuente principal deje de funcionar, y la respuesta es lineal o sea que no hay problemas durante el cambio de fuente (de fuente principal a pila) .
-
Eso ultimo es exactamente lo q he hecho, y parece que funciona bien, lo que no se exactamente es el tiempo que me duraran las pilas sin conectarlo a la corriente
gracias
-
Usaste las AA? Si es así te duraran bastante y mejor si son las alcalinas. Yo había implementado en el programa una sentencia para que cuando la fuente principal dejara ade alimentar al pic, este ponga todas las salidas a 0, de esta manera logré un consumo muy muy bajo, y la duración de la pila alcanzaba hasta mas o menos un mes, incluso mas. Pero para hacer esto se necesita utilizar una de las entradas para detectar el corte de fuente principal, si tenes disponible una podes usarla. Y si necesitas aún más duración de parte de las pilas armá una pack de nuevo pero con las pilas D (creo que son las gordas), cuanto más grande más dura la pila.
-
Habia pensado usar pilas de LI-ion de 3.7V, dos en serie y CI cargador de bateria, la cuestion es que desde que lo desconecto de la DC no depende de mi cuando se vuelva a conectar y el circuito debe funcionar, por lo que puede ser 1 dia, 1 semana, 1 mes o incluso más por eso necesitaba larga duración de la pila
-
Habia pensado usar pilas de LI-ion de 3.7V, dos en serie y CI cargador de bateria, la cuestion es que desde que lo desconecto de la DC no depende de mi cuando se vuelva a conectar y el circuito debe funcionar, por lo que puede ser 1 dia, 1 semana, 1 mes o incluso más por eso necesitaba larga duración de la pila
Entiendo perfectamente. Te digo por experiencia propia y comprobada que con el pack de 4 AA comunes te durará aproximadamente un mes o más si tu circuito, a parte del pic, no tiene nada activo durante el corte (ningun led ni nada solo el funcionamiento interno del pic). Con las pilas gordas te durará el doble.
-
Puedes probar a usar un "super condensador" de botón, yo uso estos de la foto de 4 faradios, 2 conectados en paralelo (8 faradios) para mantener el contenido de una RAM. Los compré a los chinos, a 0,69 dólares la unidad, los tienes de hasta 400 Faradios (a 9,5 dólares). Lo bueno es que no te tienes que preocupar por cambiar pilas, ni corres el peligro del sulfatado de las pilas que rompen y desparraman el ácido sobre el circuito.
(http://img819.imageshack.us/img819/930/ekac.jpg)
-
Pero que voltaje dan? tengo que alimentar al PIC todo el tiempo
-
Pero que voltaje dan? tengo que alimentar al PIC todo el tiempo
El voltaje con el que los cargues, máximo 5.5 voltios (el de la foto), aunque también los hay de 2.7 voltios.
-
A raiz de esto me ha surgido un problema, lo expongo:
El circuito va conectado al pic que despues muestra unos numeros por unos displays de 7-segmentos.
He montado el circuito en la protoboard y al cabo de un rato (30 segundos), o si desconecto la toma de DC los displays empiezas a blinkear asi como los leds que tengo para verificar el funcionamiento
Cual puede ser el problema?
-
Puede deberse a muchas cosas. Puede que haya un falso contacto en alguna parte. El 78l05 es para maximo 100mA, talvez estas casi llegando aqui. Talves te falte mas filtrado en la fuente, como un condensador electrolitico de 220uf tanto en la entraa como en la salida del regulador. Por otro lado, tu bateria puede estar al borde del colapso y no le entrega el voltaje correcto a la entrada del regulador (verifica esto con un mutimetro). Tu programa esta mal echo. Hay un corto. En fin.
-
Que tal ituarte,
Creo que el problema en si es el mismo circuito que estas proponiendo. Y la razon es la siguiente:
El regulador 78L05 necesita 7.5V minimo en la entrada para poder regular adecuadamente el voltaje de salida de 5V, pero en tu caso no es así, ya que estas usando una pila de 7.4V y luego hay una caida de tension de 0.7V debido al Diodo 1N4004 eso hace que el voltaje de entrada al regulador sea de 6.7 volts solamente, lo que hace que el regulador no trabaje adecuadamente.
Saludos,
Elreypic.
-
Entiendo, pero si tengo conectado la fuente de 12V el circuito deberia funcionar correctamente no?
Es como si alternara las dos fuentes de alimentacion.
Descarto fallo en contactos esta todo revisado y testeado y software ya que no he implementado mas que el envio de un numero
-
Mide el voltaje que hay a la entrada del regulador, eso de tener dos tensiones distintas conectadas a la vez a la entrada del 7805, no creo que pueda funcionar bien.
Reemplaza D2 por un diodo schottky y sube el voltaje de la batería al menos a 7.7 voltios.
Lo ideal es que tanto la fuente, como la batería suministren el mismo voltaje, y ten en cuenta que a la entrada del 7805 tienes que tener al menos 7.5 voltios. Si metes diodos 1N4004 le estás restando 0.7 voltios tanto a la tensión de la fuente, como a la de la batería. Con diodos schottky la caída de tensión es mucho menor, de 0.1 ó 0.2 voltios.
-
ituarte,
Podrias subir tu circuito completo (fuente, PIC, display, etc) y el codigo para poder ayudarte un poco mas?
Saludos,
elreypic.
-
Pues aqui va el esquema, he conectado una pila de petaca de 9V... es como si cuando el condensador se carga blinkeara
-
has puesto condensador 100nf entre vcc y vss del pic?
-
No, hay que poner??
-
Que tal ituarte,
He realizado una prueba haciendo un programa en PICBASIC y no tengo ese destello que mencionas. Lo realize en proteus basado en el esquemático que tú subiste y todo está bien. Así que lo que creo es que tienes algún problema en tu código.
Como te lo solicité anteriormente, si puedes subir el codigo para analizarlo y ver si hay algun problema allí.
Saludos,
Elreypic.
-
Que tal ituarte,
No se si todavía estes trabajando en ese asunto, pero aqui esta otra forma de hacer tu cricuito de conteo descendente eliminando todos tus circuitos integrados, Usando solamente el PIC, los displays, 5 transistores y algunas resistencias.
Saludos,
El reypic
-
Sigo trabajando... tiene que ser por algun corto o algo parecido ya que conecto un led en la fuente y luce perfecto, pero en el momento que saco el cable al circuito blinkea, puede ser por conectar los displays directamente a tierra en vez de al transistor?
-
/////////////////////////////////////////////////////////////////////////
//// GREENHOUSE CORE ////
//// ////
//// Countdown timer logic. ////
//// ////
//// Configure PIC as follows: ////
//// LED seg a Pin B0 ////
//// LED seg b Pin B1 ////
//// LED seg c Pin B2 ////
//// LED seg d Pin B3 ////
//// LED seg e Pin B4 ////
//// LED seg f Pin B5 ////
//// LED seg g Pin B6 ////
//// LED Control 1 Pin A0 ////
//// LED Control 2 Pin A1 ////
//// LED Control 3 Pin A2 ////
//// ////
//// Jumpers: ////
//// PCB pin A2 to RS232 RX, pin A3 to RS232 TX ////
//// PCM,PCH pin C7 to RS232 RX, pin C6 to RS232 TX ////
//// ////
//// This example will work with the PCB, PCM and PCH compilers. ////
//// The following conditional compilation lines are used to ////
//// include a valid device for each compiler. Change the device, ////
//// clock and RS232 pins for your hardware if needed. ////
/////////////////////////////////////////////////////////////////////////
//// (C) Copyright 1996,2003 Custom Computer Services ////
//// This source code may only be used by licensed users of the CCS ////
//// C compiler. This source code may only be distributed to other ////
//// licensed users of the CCS C compiler. No other use, ////
//// reproduction or distribution is permitted without written ////
//// permission. Derivative programs created using this software ////
//// in object code form are not restricted in any way. ////
/////////////////////////////////////////////////////////////////////////
#if defined(__PCB__)
#include <16C56.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=4000000)
//#use rs232(baud=9600, xmit=PIN_A3, rcv=PIN_A2)
#elif defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
//#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#elif defined(__PCH__)
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
//#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#endif
void number(int num) {
output_low(PIN_B0);
output_low(PIN_B1);
output_low(PIN_B2);
output_low(PIN_B3);
output_low(PIN_B4);
output_low(PIN_B5);
output_low(PIN_B6);
switch(num) {
case 0:
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
break;
case 1:
output_high(PIN_B1);
output_high(PIN_B2);
break;
case 2:
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B6);
break;
case 3:
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B6);
break;
case 4:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B5);
output_high(PIN_B6);
break;
case 5:
output_high(PIN_B0);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B5);
output_high(PIN_B6);
break;
case 6:
output_high(PIN_B0);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
break;
case 7:
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B2);
break;
case 8:
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
output_high(PIN_B6);
break;
case 9:
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B5);
output_high(PIN_B6);
}
}
void control(int place) {
switch(place) {
case 0:
output_high(PIN_A0);
output_high(PIN_A1);
output_high(PIN_A2);
break;
case 1:
output_low(PIN_A0);
output_low(PIN_A1);
output_low(PIN_A2);
break;
case 2:
output_high(PIN_A0);
output_low(PIN_A1);
output_low(PIN_A2);
break;
case 3:
output_low(PIN_A0);
output_high(PIN_A1);
output_low(PIN_A2);
break;
case 4:
output_high(PIN_A0);
output_high(PIN_A1);
output_low(PIN_A2);
break;
case 5:
output_low(PIN_A0);
output_low(PIN_A1);
output_high(PIN_A2);
}
}
void main() {
int i;
int uni, dec;
//set_tris_b(0);
//output_b(0);
control(1);
number(5);
control(2);
number(4);
control(3);
number(3);
control(4);
number(2);
control(5);
number(1);
/*
for(i=1;i<=5;i++) {
control(i);
number(10);
}
*/ /*
control(1);
for(i=3;i>=0;i--) {
number(i);
//delay_us(10);
}
//while(TRUE) { }
control(4);
for(i=99;i>=0;i--) {
uni=i%10;
number(uni);
/*if(uni==999.7687) {
dec=i/10;
control(10);
number(dec);
control(5);
//delay_ms(50);
control(10);
} */
//}
//}
}
-
Que tal ituarte,
Tu codigo tiene problemas de lógica y creo que por eso tienes ese problema.
He realizado un código de contador descendente y trabaja muy bien en la simulacion.
Te adjunto los archivos de la simulacion y el codigo en C (CCS compiler). Para que lo pruebes
Saludos,
Elreypic.
-
Hola, en el codigo solo queria mostrar 1 - 2 - 3 - 4 - 5 era para probar si todo funcionaba correctamente
Voy a simular tu codigo y tu esquematico y si funciona hago los cambios en la protoboard y te informo :)
Mi idea es hacer un contador descendente de 86400 (segundos en un dia) en plan motivador
-
Buenas, espero no llegar tarde. Si lo que querés hacer es que cuando se desconecta de la corriente siga funcionando (como una luz de emergencia) podés utilizar una compuerta NOT modificada, si tenés el LiveWire fijate que hay un archivo con varias compuertas armadas como son internamente (transistor, diodos, resistencias), yo modifiqué una NOT e hice una luz de emergencia, no recuerdo cómo era pero experimentando con el simulador ya te vas a dar una idea. Obviamente le tendrías que colocar un capacitor para cuando cambie de corriente alterna a la batería no se le vaya la alimentación por unos milisegundos.
Saludos!
-
Lo de la alimentacion, desactivare las salidas del pic cuando lo desconecto de Vcc para dure mas la bateria y siga contando
Hay una cosa que me sigue fallando, cuando un display llega a 0, en vez de desactivarse queda un hilillo de luz (muy debil) supongo que es por la intensidad residual... es posible que esto sea por no haber puesto unas resistencias?
-
Hey ituarte,
Que bien, cual fue el problema. O mas bien como lo resolviste?
elreypic
-
Hey ituarte,
Que bien, cual fue el problema. O mas bien como lo resolviste?
elreypic
Soluciones:
- El problema del blinkeo se debia a una mala conexion. Ya que fui probando parte a parte y ni blinkeaba ni se calentaba el 7805. Por lo cual el problema debia estar en alguna conexion de los displays (lo desmonte y volvi a montar)
- Tuve algun problema con el PIC y era debido a que algun condensador estaba averiado y el xtal no funcionaba adecuadamente (los cambie y se soluciono)
- Utilize tu codigo y lo edite para mi montaje con los flip-flops
Errores:
Hilillo de luz residual
Pendiente:
Conectar el cargador de baterias Li-ion y probar si al desconectar el Vcc se apagan los Displays pero el PIC sigue con la cuenta atras
-
Pusiste las resistencias pull-down?
Saludos!
-
Pusiste las resistencias pull-down?
Saludos!
No, del PIC van a los Flip-Flops y de ahi al display. he solucionado el tema poniendo un 0 en vez de apagandolos
-
Cuando conecto la parte de los Displays el 7805 se calienta demasiado funcionar funcionad pero no creo que tanto calor sea bueno, he puesto un disipador pero aun asi se calienta muchisimo.
Cuando desconecto los displays se enfria rapidamente...
alguna manera de reducir este calentamiento?
-
Que tal Ituarte,
Como va todo?
Saludos,
elreypic.
-
He diseñado la PCB de la parte de los displays, para poder hacer pruebas reales. Espero tenerla hecha para la semana que viene. Comento novedades
-
He testeado el cicuto parte a parte y funciona todo perfecto menos cuando conecto los flip-flops.
Con solo conectar un solo flip-flop a la VCC que sale del 7805 se empieza a calentar rapida y excesivamente... no entiendo el porque
En la imagen se puede ver el testeo que hago ( Solo conecto un flip-flop) los demas no los pongo en protoboard
-
He leido que el 74ls373 solo puede entregar máximo 2 ma para una salida de estado alto y puede absorber 20ma en estado bajo, para eso tendria que usar display de ánodo común y con eso solucionaria el calentamiento....
-
que tal ituarte,
En realidad no se soluciona el problema del calentamiento como tu lo planteas. Porque aun asi el circuito esta consumiendo (5X7X20ma) 700mA. Lo único que vas a lograr es que los display tengan mejor luminosidad ya que estas haciendo circular los 20mA que necesita el segmento. Como ya te he explicado, tienes que usar un disipador de calor para resolver el problema o bien usar dos o mas reguladores para alimentar tu circuito de esta manera reduces la corriente en cada regulador y por lo tanto su calentamiento.
Saludos.
elreypic.
-
que tal ituarte,
En realidad no se soluciona el problema del calentamiento como tu lo planteas. Porque aun asi el circuito esta consumiendo (5X7X20ma) 700mA. Lo único que vas a lograr es que los display tengan mejor luminosidad ya que estas haciendo circular los 20mA que necesita el segmento. Como ya te he explicado, tienes que usar un disipador de calor para resolver el problema o bien usar dos o mas reguladores para alimentar tu circuito de esta manera reduces la corriente en cada regulador y por lo tanto su calentamiento.
Saludos.
elreypic.
Creo que usare otro 7805 y lo conectare a una entrada del PIC y a los displays, para que cuando desconecte de la toma de 12 V (del enchufe) se desconecten los displays y por software ponga todas las patillas a 0 y me consuma menos bateria.
Mañana ire al mercado de electronica y si me da tiempo a montarlo lo comento
-
Bueno, he doblado el circuito del 7805, con uno alimento todo el circuito (menos los flip-flops (74ls373) y los displays) y con el otro solamente los 74ls373 y los 5 displays. El resultado es que uno de los 7805 (el que va a los displays) se sigue calentando :cry: ... No se que mas hacer
-
Bueno, he doblado el circuito del 7805, con uno alimento todo el circuito (menos los flip-flops (74ls373) y los displays) y con el otro solamente los 74ls373 y los 5 displays. El resultado es que uno de los 7805 (el que va a los displays) se sigue calentando :cry: ... No se que mas hacer
Mete el amperímetro y mide el consumo, puedes bajarlo aumentando las resistencias limitadoras que van a los displays.
Si el consumo está próximo al amperio, reemplaza el 7805 por un estabilizador que aguante más amperaje, por ejemplo el LM1085 aguanta 3 amperios, o el LM1084 que aguanta 5 amperios.
-
Mete el amperímetro y mide el consumo, puedes bajarlo aumentando las resistencias limitadoras que van a los displays.
Si el consumo está próximo al amperio, reemplaza el 7805 por un estabilizador que aguante más amperaje, por ejemplo el LM1085 aguanta 3 amperios, o el LM1084 que aguanta 5 amperios.
Hay que poner una resistencia en cada patilla de cada led, es decir 35 resistencias?
-
Mete el amperímetro y mide el consumo, puedes bajarlo aumentando las resistencias limitadoras que van a los displays.
Si el consumo está próximo al amperio, reemplaza el 7805 por un estabilizador que aguante más amperaje, por ejemplo el LM1085 aguanta 3 amperios, o el LM1084 que aguanta 5 amperios.
Hay que poner una resistencia en cada patilla de cada led, es decir 35 resistencias?
Si los displays están multiplexados, no deberían de consumir tanto, máximo 7 segmentos a 20mA por cada uno, serían 140mA, muy por debajo del amperio que puede dar el 7805, así que algo tienes mal, o el 7805 está defectuoso, mete el amperímetro y lo verás enseguida. O has metido displays de menor voltaje, y por eso consumen más, no se quemarían al estar multiplexados.
Por otra parte, ese circuito de multiplexación que has empleado, es bastante raro, con menos componentes y menos gasto tienes lo mismo, 5 transistores y unas cuantas resistencias, pero el display debe de ser de ánodo común:
(http://embedded-lab.com/blog/wp-content/uploads/2011/03/Lab11_Circuit_SevenSegmentMultiplexing.jpg)
-
El consumo de los displays es aprox. de 0.7A (7 leds x 20mA x 5 displays) el 74LS373 no sé cuanto consume ¿20 mA? x 5 CI = 0.1A.
En total unos 0.8A y el 7805 da 1 A... pero todo esto lo estoy haciendo en placa de baquelita con muchisimos cables y soldaduras a mano ... es posible que por eso el consumo se dispare. Esta semana espero poder hacer la PCB y probarlo más "realmente"
-
El consumo de los displays es aprox. de 0.7A (7 leds x 20mA x 5 displays) el 74LS373 no sé cuanto consume ¿20 mA? x 5 CI = 0.1A.
En total unos 0.8A y el 7805 da 1 A... pero todo esto lo estoy haciendo en placa de baquelita con muchisimos cables y soldaduras a mano ... es posible que por eso el consumo se dispare. Esta semana espero poder hacer la PCB y probarlo más "realmente"
Es que con 700-800mA de consumo, ya es normal que el 7805 se caliente, está cerca del límite, además contra más elevado sea el voltaje a su entrada, más se va a calentar. Si multiplexas (con un esquema similar al que te he puesto), el consumo será 5 veces menor (solo 140mA), y además la circuitería será mucho más simple y barata.
PD: no me había dado cuenta de que estás utilizando los 74LS373 que incluyen latches, osea que no multiplexas sino que enciendes todos los displays a la vez, por eso tienes ese consumo tan elevado.
-
Entiendo, intentare cambiar el esquematico
-
Que tal Ituarte:
Anteriormente te comenté acerca de hacerlo multiplexado como lo sugiere nuevamente planeta9999, hasta te coloque el esquematico completo con los 5 displays:
http://www.todopic.com.ar/foros/index.php?topic=41061.20 (del día 17 de Julio). Esa sería la forma de bajar el consumo de tu circuito ademas de que no utilizarias ningun circuito integrado extra (los latch 74ls373 y el decoder74ls238).
Esto haria que el consumo en los display fuera de solo 140mA max, que es cuando despliegas el numero 8. A esos 140mA agregale 8mA del Regulador 7805 y segun el datasheet del PIC, otros 5mA. Eso es unos 153mA. Digamos 160mA para exagerar. Si esto es asi entonces, la potencia que hay que disipar en el regulador es:
P = (Vin-Vout)*Icc
Vin = 12V, según hascomentado anteriormente
Vout = 5V (voltaje de salida del regulador)
Icc = 160 mA calculados en este texto o mensaje
P = (12V-5V)*160mA = 1.12 W
Ahora bien para calcular la temperatura que tendria el regulador en estas condiciones usemos la formula para tal efecto.
Tj - Ta = P(Rthjc + Rthja)
Donde:
Tj es la temperatura de la union del dispositivo (en otras palabras la temperatura del regulador)
Ta es la temperatura ambiente
P es la potencia que disipara el regulador
Rthjc es la Resistencia de union al encapsulado
Rthja es la resistencia de union al aire.
Del datasheet del 7805, tenemos que:
Rthjc = 5ºC/W
Rthja = 65ºC/W
y hemos calculado que la potencia es de 1.12W, y supondremos que la temperatura ambiente es de 25ºC
Despejando Tj de la ecuacion anterior, tenemos que:
Tj = P(Rthjc+Rthja) - Ta
Sustituyendo:
Tj = 1.12W (5ºC/W + 65ºC/W) - 25ºC
Tj = 1.12W (70ºC/W) - 25ºC
Tj = 78.5ºC - 25ºC
Tj = 50ºC !!!!!!!!!!!!!!!!!!!!!!!!!
Esa seria la temperatura del regulador 7805 si usaras multiplexado.
Si usas este mismo analisis te daras cuenta que la forma en que lo estas haciendo la temperatura del regulador puede ser de hasta 318ºC!!!!!!!!!!, lo que dañaria el regulador ya que está operando muy por encima de su temperatura de operacion, que el datasheet dice que es de 125ºC.
Ahi esta la respuesta a tu problema pero ya depende de ti, lo que vayas hacer. Tu tienes la decision.
Saludos,
Elreypic.
-
Que tal Ituarte:
Anteriormente te comenté acerca de hacerlo multiplexado como lo sugiere nuevamente planeta9999, hasta te coloque el esquematico completo con los 5 displays:
http://www.todopic.com.ar/foros/index.php?topic=41061.20 (del día 17 de Julio). Esa sería la forma de bajar el consumo de tu circuito ademas de que no utilizarias ningun circuito integrado extra (los latch 74ls373 y el decoder74ls238).
Esto haria que el consumo en los display fuera de solo 140mA max, que es cuando despliegas el numero 8. A esos 140mA agregale 8mA del Regulador 7805 y segun el datasheet del PIC, otros 5mA. Eso es unos 153mA. Digamos 160mA para exagerar. Si esto es asi entonces, la potencia que hay que disipar en el regulador es:
P = (Vin-Vout)*Icc
Vin = 12V, según hascomentado anteriormente
Vout = 5V (voltaje de salida del regulador)
Icc = 160 mA calculados en este texto o mensaje
P = (12V-5V)*160mA = 1.12 W
Ahora bien para calcular la temperatura que tendria el regulador en estas condiciones usemos la formula para tal efecto.
Tj - Ta = P(Rthjc + Rthja)
Donde:
Tj es la temperatura de la union del dispositivo (en otras palabras la temperatura del regulador)
Ta es la temperatura ambiente
P es la potencia que disipara el regulador
Rthjc es la Resistencia de union al encapsulado
Rthja es la resistencia de union al aire.
Del datasheet del 7805, tenemos que:
Rthjc = 5ºC/W
Rthja = 65ºC/W
y hemos calculado que la potencia es de 1.12W, y supondremos que la temperatura ambiente es de 25ºC
Despejando Tj de la ecuacion anterior, tenemos que:
Tj = P(Rthjc+Rthja) - Ta
Sustituyendo:
Tj = 1.12W (5ºC/W + 65ºC/W) - 25ºC
Tj = 1.12W (70ºC/W) - 25ºC
Tj = 78.5ºC - 25ºC
Tj = 50ºC !!!!!!!!!!!!!!!!!!!!!!!!!
Esa seria la temperatura del regulador 7805 si usaras multiplexado.
Si usas este mismo analisis te daras cuenta que la forma en que lo estas haciendo la temperatura del regulador puede ser de hasta 318ºC!!!!!!!!!!, lo que dañaria el regulador ya que está operando muy por encima de su temperatura de operacion, que el datasheet dice que es de 125ºC.
Ahi esta la respuesta a tu problema pero ya depende de ti, lo que vayas hacer. Tu tienes la decision.
Saludos,
Elreypic.
Voy a probar como me comentaste multiplexando. Ahora bien, a la hora de programar, lo que quiero hacer es mas o menos un contador descendente. Cada segundo tengo que descontar 1 unidad. El codigo del contador ya lo tengo implementado en base al codigo que me enviaste. Pero como se haria en este caso para enviar la informacion sin que se apage ningun display, cada cuantos ms tengo que enviar los datos?
-
Que tal ituarte,
En realidad no se puede hacer el multiplexado sin que se apague ningun display. Es decir, precisamente eso es lo que hace el multiplexado, enciende un display a la vez, pero como la hace tan rápido, la vista humana no puede darse cuenta de que mientras uno esta encendido los otros estan apagados y eso da la sensación de que estas viendo todos los displays encendidos y cada uno mostrando diferente número.
Lo que se hace es encender el display de las unidades durante 1ms, lo apagas y luego enciendes el display de las decenas, lo apagas y asi sucesivamente. Como puedes darte cuenta el tiempo de encendido de todos los displays es de 5ms, lo que significa que la frecuencia a la que lo estas haciendo es f =1/5ms =200Hz. Que es suficientemente rápido para ver los displays mostrando tu contador.
Por lo tanto podemos decir que si vas a decrementar tu contador en 1 unidad cada segundo, estarias mostrando la actual cuenta 200 veces cada segundo, esto es en teoría porque en la realidad tienes que considerar el tiempo de ejecucion de las instrucciones para mostrar el dato, etc, etc.
Para tener un mejor control del tiempo, es mejor el uso del timer del microcontrolador y con ese llevar la base de tiempo, así cuando cumplas 1 segundo de tiempo decrementas tu contador y muestras el dato en los displays, y continuas asi hasta que nuevamente se cumpla el tiempo de otro segundo.
Saludos,
Elreypic