Autor Tema: Llevar una cuenta de tiempo que sea precisa  (Leído 2341 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado mariosaul

  • PIC10
  • *
  • Mensajes: 21
Llevar una cuenta de tiempo que sea precisa
« en: 20 de Febrero de 2005, 17:48:00 »
hola, a ver si alguien me puede explicar,

tengo dudas acerca de como llevar una cuenta de tiempo precisa, como para hacer un  reloj.

Si por ejemplo quiero hacer algo cada un segundo, hago un delay de un segundo, pero el "algo" que hago (como por ejemplo actualizar un display) ocupa algunos ciclos.

Por lo tanto entre ciclo y ciclo pasa un segundo, menos el tiempo que se demora en actualizar los datos o lo que sea que se quiera hacer.

Entonces deberiamos descontar del delay lo que se demora en realizar la accion. pero como saber cuanto es eso?

Estoy medio liado con el tema
muchas gracias

juaco


Desconectado fenix_jn

  • PIC18
  • ****
  • Mensajes: 418
RE: Llevar una cuenta de tiempo que sea precisa
« Respuesta #1 en: 20 de Febrero de 2005, 23:05:00 »
Ok, bueno aki hay un particular asunto de lo q kieres hacer, en primer lugar un CI nunca t dara el tiempo "exacto", siempre habra una desviacion debido a las imperfecciones del oscilador y del propio PIC, si lo q deseas es saber cuanto tiempo t demora una rutina X en ejecutarse usa un simulador tipo MPLAB, tiene un buen cronometro y un contador de instrucciones y con esos dos puedes obtener una idea bastante cercana a cuanto tiempo se demorara tu rutina en ejecutarse, personalmente he obtenido desviaciones del tiempo en el MPLAB contra la aplicacion real cercanas al 0.02% (0.0016%), y estoy conforme con ese valor.

Si lo q necesitas es una aplicacion a "tiempo real", vas a tener q considerar muchos factores: programa, voltajes, ruido, componentes, tolerancia...

En fin, tendras q considerar un valor de tolerancia para tu aplicacion a fin de compensar las imperfecciones mencionadas.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Llevar una cuenta de tiempo que sea precisa
« Respuesta #2 en: 21 de Febrero de 2005, 06:20:00 »
Si necesitas mucha precisión, lo mejor será que te hagas de un reloj de tiempo real externo y lo leas desde tu micro.
Si quieres echar un vistazo a estos chips, mira este link en donde encontrarás varios modelos de Maxim:
http://www.maxim-ic.com/products/timers/real_time_clocks.cfm

Desconectado mariosaul

  • PIC10
  • *
  • Mensajes: 21
RE: Llevar una cuenta de tiempo que sea precisa
« Respuesta #3 en: 21 de Febrero de 2005, 10:02:00 »
Se han ido al extremo!, mis posibles aplicaciones son mucho mas simples, por ejemplo  un reloj que no se adelante/atrase mas de 30 seg por mes (por tirar un numero), o algo asi.

Simplemente que no haya que estar ajustandolo todo el tiempo.

Hay alguna forma de estimar el error? o solo de construyendo el aparato y comparandolo por ejemplo con el reloj del PC.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Llevar una cuenta de tiempo que sea precisa
« Respuesta #4 en: 21 de Febrero de 2005, 10:59:00 »
Jajaja, ¿y tú dices que nos hemos ido al extremo?

He estado calculando el % de error que supondría esos 30seg por mes, y mira lo que sale.

Nº de segundos en un mes = 30 días * 24 horas * 60 minutos * 60 segundos = 2.592.000 segundos

Error máximo: 30 seg.

% de error máximo = 30 / 2.592.000 = 0,0000115%

¿Que no necesitas gran precisión?, pues ya nos dirás, jeje Giño

Desconectado mariosaul

  • PIC10
  • *
  • Mensajes: 21
RE: Llevar una cuenta de tiempo que sea precisa
« Respuesta #5 en: 21 de Febrero de 2005, 11:10:00 »
Damn!!!!

jajajajaja,

pero se puede lograr ese nivel de precision sin usar un reloj externo?, solo ajustando el delay del pic?

Que tan dificiles de implementar son los relojes externos? y mas o menos cuanto cuestan? (porfavor si alguien sabe que me responda en euro o dolar, que otras monedas me complican mucho)

gracias nocturno66

juaco

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Llevar una cuenta de tiempo que sea precisa
« Respuesta #6 en: 21 de Febrero de 2005, 11:17:00 »
No se si se podrá conseguir esa precisión con Delay; me parece una empresa difícil pero no me gustaría decir que es imposible. A ver si algún experto responde con algo concluyente.

Con respecto a los RTC que te he comentado más arriba, si los pides amablemente, es probable que Maxim te los envíe.

Desconectado Flugplatz

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 279
    • Mi canal de YouTube
RE: Llevar una cuenta de tiempo que sea precisa
« Respuesta #7 en: 21 de Febrero de 2005, 11:39:00 »
Si vas a alimentar el circuito con una fuente de alimentación con un transformador conectado a la red eléctrica, lo mejor es que saques la señal alterna del secundario y mediante el circuito correspondiente lo conectes al pin b0 para utilizar la interrupción externa del micro.

#int_EXT
EXT_isr()
{
   contador ++;
}

No se en Chile, pero aquí en España, tenemos unos ultraestables 50 Hz ... Date cuenta que todos los motores eléctricos industriales son trifásicos, y la mayoría de las veces, su velocidad de giro es fundamental, por lo que la frecuencia de la tensión alterna tiene que ser muy precisa.
Mi canal de YouTube

Un saludo desde Madrid

Desconectado mariosaul

  • PIC10
  • *
  • Mensajes: 21
RE: Llevar una cuenta de tiempo que sea precisa
« Respuesta #8 en: 21 de Febrero de 2005, 15:42:00 »
Me podrian recomnedar algun reloj externo especifico, pues en la pagina maxim hay muchos y no tengo para nada claro que es lo que necesito.
Lo que quiero es lo mas sencillo que halla por ahi.

Ojala alguien conosca los distintos modelos y me pueda recomendar alguno

gracias

juaco

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
RE: Llevar una cuenta de tiempo que sea precisa
« Respuesta #9 en: 27 de Febrero de 2005, 16:48:00 »
Hola, puedes usar el DS1307 de Dallas, muy popular pues usa protocolo I2C, no se que microcontrolador PIC usas si usas por ejemplo un 16F870, puedes poner un XTAL de 32.768,  y hacer que el timer 1 se incremente con este, cargando 32768 en el registro del timer este tardata exactamente un segundo en desbordarse, entonces, activas l ainterrupcion de este y ahi cuentas tu tiempo real, pues cada vez que se produzca una interrupcion sera 1 segundo y no importan ni los ciclos de reloj de tu programa ni el XTAL que uses o el tipo de oscilador, puedes usar un barato RC para la maquina, si usas un PIC16F84 por ejemplo, puedes hacer lo mismo, pero tendras que agragar un circuito externo para los 32.768, los ingresas al TMR0 por el pin y pones el presscaler en 128 esto hara que el timer te produca una interrpcion cada 1 segundo tambien, entonces despues de que sales de la interrucion actualizas el display o que se yo, pero tienes hasta la proxima inetrrupcion mucho tiempo 1.000.000 de instrucciones para ejecutar, con esto puedes hacer un TIMER perfecto, claro dependera de la estabilidad del XTAL de 32.768, que se consigue en cualquier relojeria uno bueno.

espero que te sirva.

saludos

ARIEL
saludos
PikMan


 

anything