TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: J.C en 06 de Marzo de 2007, 09:54:10

Título: Reloj de tiempo real
Publicado por: J.C en 06 de Marzo de 2007, 09:54:10
Hola a todos
Soy nuevo en este foro y necesito ayuda... el problema es el siguiente

estoy haciendo una aplicacion que necesita que el conteo del tiempo sea exacto, pero esto no lo puedo lograr con ningun timer interno del PIC16F73 que es el que estoy usando, es por eso que me veo obligado a usar un reloj de tiempo real, y nunca he trabajado con uno de esos... es por eso que les pido ayuda si alguien me pudiera decir donde puedo conseguir informacion util sobre el tema, se lo agradeceria mucho saludos a todos J.C
Título: Re: Reloj de tiempo real
Publicado por: electrotacto en 06 de Marzo de 2007, 10:09:14
Reloj de tiempo real???  :shock: perdonenme mi ignorancia pero quien decide si un reloj cuenta el tiempo real, el tiempo relacionado a horas, no depende de la ubicacion geografica??? debido a los meridianos, hasta donde se los relojes son mas o menos precisos. si hay algo que ignoro me gustaria saber tambien a que se le llama tiempo real.
Título: Re: Reloj de tiempo real
Publicado por: Marioguillote en 06 de Marzo de 2007, 10:12:56
Se trata de un RTC y aquí (http://www.todopic.com.ar/foros/index.php?topic=13282.msg76855#msg76855) está fantásticamente desarrollado.
En este foro, claro.

Saludos
Mario
Título: Re: Reloj de tiempo real
Publicado por: reiniertl en 06 de Marzo de 2007, 10:21:11
El conteo exacto del tiempo lo puedes lograr con un proyecto como el que te refiere nuestro amigo Mario, sin embargo en determinadas aplicaciones este método no es el más adecuado y es posible que requieras mayor precisión o estabilidad. Los circuitos RTS como el DS1307 u otros pueden ver afectada su estabilidad como consecuencia de el ruido eléctrico o la temperatura, si tu aplicación va a estar en un entorno agresivo en alguno de esos sentidos y aún así necesitas precisión una buena variante es que utilices un receptor GPS para hacer la temporización.

De todas formas tienes que valorar muy bien cual es la solución que te resuelve tu problema a un menor coste, no solo monetario,sino también en tiempo, recursos y sencillez de la solución.

Un saludo Reinier
Título: Re: Reloj de tiempo real
Publicado por: electrotacto en 06 de Marzo de 2007, 10:25:26
ahhhhhhhhhhhhhhhhhhhhhhhhh ya, los RTC yo los llamo "reloj calendario" asi de simple no mas, eso de reloj de tiempo real me asusto y pues claro son las siglas en ingles de RTC.
Título: Re: Reloj de tiempo real
Publicado por: Kedutpic en 06 de Marzo de 2007, 10:44:17
aqui otro enlace  8)

http://www.todopic.com.ar/foros/index.php?topic=13748.0
Título: Re: Reloj de tiempo real
Publicado por: micro_cadaver en 06 de Marzo de 2007, 11:02:07
y sigues con la plancha!!!!  :D
Título: Re: Reloj de tiempo real
Publicado por: LABmouse en 06 de Marzo de 2007, 11:22:04
Hola a todos
Soy nuevo en este foro y necesito ayuda... el problema es el siguiente

estoy haciendo una aplicacion que necesita que el conteo del tiempo sea exacto, pero esto no lo puedo lograr con ningun timer interno del PIC16F73 que es el que estoy usando, es por eso que me veo obligado a usar un reloj de tiempo real, y nunca he trabajado con uno de esos... es por eso que les pido ayuda si alguien me pudiera decir donde puedo conseguir informacion util sobre el tema, se lo agradeceria mucho saludos a todos J.C

Bueno amigo pues Para una aplicacion final, definitivamente diria que te fueras por el DS1307, pero por el lado educativo, si es posible lograr tiempos exactos de 1seg con el TMR0.

Lo que hay que hacer es lo siguiente:

1.) Debes colocar un oscilador de 32768hz. es el mismo que usa el DS1307.
2.) Hagamos los siguientes calculos.

Fcristal=32768Hz
Tcristal=1/Fcristal = 0.000030517578125 seg

Ahora bien el Pic por 4 pulsos de reloj ejecuta una instruccion

Ttrabajo = Tcristal x 4= 0.0001220703125 seg

Este valor anterior, es la velocidad a la que el pic ejecuta las instrucciones

Ahora si el TMR0 es de 8 bits, por lo que hay que incrementar 256 veces para que se desborde.

Tdesborde = Ttrabajo x 256 = 0.03125 seg

Ok, ahora seleccionamos un Preescalador que nos permita lograr una interrupcion acada 1 seg y seria 32

Entonces tenemos.

Tinterrupcion= Tdesborde x 32.= 1seg


Listo ya con lo anterior, tendras una interrupcion cada segundo y si quieres puedes hacer lo mismo que el DS1307 pero con el PIC.

Saludos!

Título: Re: Reloj de tiempo real
Publicado por: maunix en 06 de Marzo de 2007, 11:46:24
Me remito a lo que dijo reiniertl.  Cualquier sistema de tiempo real será tan impreciso como el más impreciso de sus elementos.

Si el oscilador o cristal que usemos a 32768Hz tiene una desviación , por más pequeña que sea, eso afectará nuestro conteo.

La temperatura, las pequeña variaciones de tensión y hasta el más mínimo corrimiento del oscilador por sus propias imperfecciones harán que al estar horas, días y meses funcionando la precisión que pensábamos era del 100% no lo es.



Título: Re: Reloj de tiempo real
Publicado por: electrotacto en 06 de Marzo de 2007, 11:49:49
es cierto maunix, recuerdo que un dia entre a una tienda y estaba viendo un ROLEX y me llamo la atencion que el margen de error lo indicaba asi 1seg/dec, osea que se retrazaba 1 segundo por cada 10 años de la hora real  :shock:  :shock:
Título: Re: Reloj de tiempo real
Publicado por: LABmouse en 06 de Marzo de 2007, 11:56:36
Es de entender, nada en la vida es perfecto, lo que se puede hacer es tratar de que esas inperfecciones se noten muy poco. Si se necesita mucha exactitud, se pueden usar osciladores TTl que traen compensacion por temperatura que es una de las varibales que mas altera el funcionamiento del cuarzo de los cirstales. tambien los hay con Autocalibracion de frecuencia para cuando las condiciones han cambiado y este se ajusta de forma que se logre la mayor estabilidad en la señal de reloj.

Y bueno para cosas demasiado exactas, habria que mirar tecnologia militar o muy especializadas que depronto ofrezcan mayor estabilidad.
Título: Re: Reloj de tiempo real
Publicado por: LABmouse en 06 de Marzo de 2007, 11:58:11
Claro que nada de lo anterior que comente asegura una exactitud del 100%. Es por ello que le colocamos botones al reloj para cuadrarlo cuando se note mucho. jajajaj :D 

saludos amigos!
Título: Re: Reloj de tiempo real
Publicado por: maunix en 06 de Marzo de 2007, 12:32:37
es cierto maunix, recuerdo que un dia entre a una tienda y estaba viendo un ROLEX y me llamo la atencion que el margen de error lo indicaba asi 1seg/dec, osea que se retrazaba 1 segundo por cada 10 años de la hora real  :shock:  :shock:

Jeje, que buen dato.

Algo está muy claro la precisión cuesta... y mucho!!  No solo en un Rolex, también en la electrónica  :mrgreen:
Título: Re: Reloj de tiempo real
Publicado por: LABmouse en 06 de Marzo de 2007, 12:39:59
Es po eso que los el reloj que venden los chinos por U$1  no te dicen nada.

jajajaja  :D  solo te lo pones y ya, no preguntas cuanto se retrasa. jajaja :D
Título: Re: Reloj de tiempo real
Publicado por: reiniertl en 06 de Marzo de 2007, 13:24:13
Como dice Maunix, la precisión cuesta, y muchas veces bastante caro. Mientras mayor sea la precisión que quieras, más recursos tendrás que invertir en lograrla, no solo dinero, sino también tiempo y esfuerzo.

Es por eso que una buena solución a este problema ha sido el uso de receptores GPS, ya que con esto actulizas tu base de tiempo desde un reloj atómico, con una presición de 1seg/30000 años. ¡Sufre ROLEX!, y por supuesto con un costo muy inferior al de un ROLEX, o al de otras soluciones electrónicas para el caso como las que nos recomienda PICmouse.

Sin embargo el uso de un receptor GPS normalmente se combina con alguna base de tiempo muy barata, por ejemplo algun timer de nuestro amado uC, de esta forma actulizas tu base de tiempo, digamos cada 1 o 10 segundos con el reloj del GPS y si este te falla porque no pueda recibir la señal de los satélites, al menos tienes un reloj con el cual trabajar y que probablemente esté recientemente actualizado.

un saludo Reinier
Título: Re: Reloj de tiempo real
Publicado por: PalitroqueZ en 06 de Marzo de 2007, 13:26:07
la idea que pretende J.C es construir un reloj digital usando un micro, ¡¡por supuesto que siempre habrá un margen de error!!. incluso los llamados relojes atomicos tienen su errores (aunque muuuuy  pequeños)

J.C aquí tienes otro link (http://www.todopic.com.ar/foros/index.php?topic=8427.0) con un ejemplo montado en protoboard

Salu2
Pedro
Título: Re: Reloj de tiempo real
Publicado por: reiniertl en 06 de Marzo de 2007, 13:30:05
Como dice Maunix, la precisión cuesta, y muchas veces bastante caro. Mientras mayor sea la precisión que quieras, más recursos tendrás que invertir en lograrla, no solo dinero, sino también tiempo y esfuerzo.

Es por eso que una buena solución a este problema ha sido el uso de receptores GPS, ya que con esto actulizas tu base de tiempo desde un reloj atómico, con una presición de 1seg/30000 años. ¡Sufre ROLEX!, y por supuesto con un costo muy inferior al de un ROLEX, o al de otras soluciones electrónicas para el caso como las que nos recomienda PICmouse.

Sin embargo el uso de un receptor GPS normalmente se combina con alguna base de tiempo muy barata, por ejemplo algun timer de nuestro amado uC, de esta forma actulizas tu base de tiempo, digamos cada 1 o 10 segundos con el reloj del GPS y si este te falla porque no pueda recibir la señal de los satélites, al menos tienes un reloj con el cual trabajar y que probablemente esté recientemente actualizado.

un saludo Reinier
Título: Re: Reloj de tiempo real
Publicado por: LABmouse en 06 de Marzo de 2007, 13:32:40
reiniertl ya veo doble  :shock: :shock:  :z)  ajajajaja :D
Título: Re: Reloj de tiempo real
Publicado por: J.C en 07 de Marzo de 2007, 09:35:34
Muchos me han hablado del DS1307, pero como mi aplicacion va a estar en la calle donde va a estar sometido a interferencias y a temperatura variable, quisiera saber cual RTC es el mas resistente a esto... otra cosa tambien quisiera saber como se comporta el DS1302 frente a la interferencia y los cambios de temperatura, ya que ese RTC lo tengo a mano y me seria util usarlo y no tener que buscar otro, de todas formas si ese no sirve... pues me lo dicen
 Saludos a todos J.C 
Título: Re: Reloj de tiempo real
Publicado por: reiniertl en 07 de Marzo de 2007, 10:29:03
El problema fundamental en una aplicación que estará en el campo no radica en el Circuito Integrado (CI), sino como ya te dijeron en los componentes para completar el reloj, te explico con más detalle:

Un circuito de reloj, como el DS1307 o cualquier temporizador de un PIC, el mismo RTC de una PC, consta de dos partes un circuito oscilador y un resonador. El circuito oscilador es el que normalmente te encuentras dentro del encapsulado del CI y el resonador puede encontrarse dentro o fuera este.

Por lo tanto cuando tienes un CI con un reloj, que no incluye el resonador, debes completar este poniendo uno externo (la práctica más común en el mundo del control y las aplicaciones embebidas), para ello existen varios componentes y circuitos que permiten obtener diversos niveles de estabilidad y presición del reloj en su conjunto y van desde una red RC hasta los más sofisticados resonadores cerámicos o de cuarzo con circuitos de compensación por frecuencia y temperatura.

Después de la charla anterior lo que me resta decirte es que el problema no está fundamentalmente en el DS1307, aunque debes revisar en su hoja de datos (data sheet), cuales son los valores de temperatura, humedad y rechazo a ciertos niveles de ruido es capaz de soportar el integrado.

El encapsulado también es importante, los CI con encapsulado de metal o crámica son más resistentes a los cambios de temperatura y humedad aunque su costo es a veces hasta más del doble de los que vienen en encapsulado plástico.

Y por último de acuerdo al entorno de trabajo y a los niveles de precisión que requieres en tu aplicación es que debes determinar cual es el tipo de resonador que necesitas para completar tu aplicación.

Por ejemplo si lo que vas a diseñar es un reloj para ponerle a un automóvil, no creo que requieras un resonador muy sofisticado o comprar un CI con ecnacpsulado de cerámica, pero si tu aplicación va  trabajar en un ambiente donde los segundos son valiosos, y el equipo debe trabajar en condiciones muy variables de humedad, calor y sometido a interferencias debes plantearte bien desde los chasis hasta los resonadores y CI.

Por ejemplo, un semáforo, requiere cierto nivel de precisión en su temporización, pero en principio no muy alta, pero cuando combinas varios de estos aparatos en una calle para que trabajen sincronizadamente la situación cambia y como el semáforo está sometido a cambios de temperatura de unos 10 a 20 grados celcius entre el día y la noche, a cambios de humedad, interferencias provocadas por el tráfico (sobre todo las motos) y demás, entonces hay que hacer otras consideraciones sobre la temporización porque los relojes suelen desfasarse en varios segundos durante una semana y hacer que se pierda el sincronismo, es por eso que actualmente este tipo de instalaciones sincrocnizadas suelen sincronizar sus reloj con los de un satélite GPS.

un saludo Reinier
Título: Re: Reloj de tiempo real
Publicado por: flacoclau en 07 de Marzo de 2007, 10:43:12
J.C.:En síntesis trabaja con el ds1307 y un cristal como te dice el datasheet que anda bastante bien. visita los links que te dejaron los muchachos, sobre todo el desarrollo que hizo redpic del tema y cuando lo tengas montado y no te funcione solo tienes que soplar el silbato que te vamos a ayudar en loq ue podamos  :-)
saludetes.
Título: Re: Reloj de tiempo real
Publicado por: reiniertl en 07 de Marzo de 2007, 11:07:51
Ojalá yo fuese tan claro como tú flacoclau  :mrgreen: :mrgreen: :mrgreen:
Título: Re: Reloj de tiempo real
Publicado por: PalitroqueZ en 07 de Marzo de 2007, 11:17:34
con la explicación que hizo el amigo reiniertl, no había pensado en la actualización del tiempo usando el gps, es una buena opción, también se podría hacer conectando el reloj a una PC, tal como lo hizo RedPic ya sea a través de un medio alámbrico ó inalámbrico.

Salu2
Pedro
Título: Re: Reloj de tiempo real
Publicado por: flacoclau en 07 de Marzo de 2007, 11:31:01
Reinierlt: como es tu nombre? me cuesta escribir tu nick :D aparte me cuesta escribir todo, por eso lo hago poco :D
hoy ando un poco al garete en el trabajo (al pedo en mi país), pero en el foro andamos a full, un post atrás de otro...
saludos.
Título: Re: Reloj de tiempo real
Publicado por: maunix en 07 de Marzo de 2007, 12:52:57
Reinierlt: como es tu nombre? me cuesta escribir tu nick :D aparte me cuesta escribir todo, por eso lo hago poco :D
hoy ando un poco al garete en el trabajo (al pedo en mi país), pero en el foro andamos a full, un post atrás de otro...
saludos.

Mmm, su nombre no es tanto más fácil.  Se llama Reinier así que a tener paciencia al escribirlo, no queda otra  8)
Título: Re: Reloj de tiempo real
Publicado por: perry en 09 de Marzo de 2007, 07:29:06


Hola!!!

Quiero aprovechar este tema para exponer una duda.

Estoy creando código para generar un rtc con el timer0 usando un oscilador de 32.768Khz(en un 18F4550). No puedo usar un rtc externo ya que tengo usadas las patillas del I2c. Estoy empapándome del datasheet pero no consigo aclararme en cómo tengo que configurar el timer0 para que me coja la frecuencia del oscilador secundario. ¿como tengo que configurar los registros(en ccs)? Si me pudieseis echar una mano os lo agradecería muchisimo.

muchas gracias a todos. Admiro y envidio lo que dominais estos temas.  :wink:
Título: Re: Reloj de tiempo real
Publicado por: dhmejia en 09 de Marzo de 2007, 09:49:21
No puedo usar un rtc externo ya que tengo usadas las patillas del I2c.

El ccs permite usar la comunicación I2C por software, o sea que puedes usar otra patas diferentes del micro para esta funcion.

saludos
Título: Re: Reloj de tiempo real
Publicado por: LABmouse en 09 de Marzo de 2007, 11:25:15
Bueno esa es una opción, usar otros dos pines de PIC para que CCS se encargue de todo el protocolo I2C por software. Ahora si quieres seguir con la idea de usar un reloj de 32768 Hz para generar tus retardos de 1 segundo, ya no se usa el TMR0 sino el TMR1, Y el cristal debes colocarlo en los pines C0 y C1. Para luego configurar el TMR1 indicándole que la señal de reloj será externa.

En este momento no tengo información mas precisa de como se hace bien. Pero ese es el camino.

Saludos!
Título: Re: Reloj de tiempo real
Publicado por: perry en 13 de Marzo de 2007, 05:37:38

Muchas gracias dhmejia!

No conocía que ccs daba la opción de usar otros pines para la comunicacion i2c. Probaré esa opción y ya os contare si me surgen problemas o me va todo bien.

gracias :-/