TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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
-
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.
-
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
-
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
-
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.
-
aqui otro enlace 8)
http://www.todopic.com.ar/foros/index.php?topic=13748.0
-
y sigues con la plancha!!!! :D
-
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!
-
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.
-
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:
-
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.
-
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!
-
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:
-
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
-
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
-
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
-
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
-
reiniertl ya veo doble :shock: :shock: :z) ajajajaja :D
-
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
-
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
-
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.
-
Ojalá yo fuese tan claro como tú flacoclau :mrgreen: :mrgreen: :mrgreen:
-
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
-
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.
-
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)
-
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:
-
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
-
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!
-
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 :-/