Autor Tema: Calibrar el rtc por "smooth calibration"  (Leído 3375 veces)

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

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5420
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #60 en: 19 de Febrero de 2020, 10:47:59 »
¿Estás seguro de que comienzas la cuenta con un flanco ascendente y terminas de contar con el siguiente flanco ascendente?

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2802
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #61 en: 20 de Febrero de 2020, 03:29:57 »
Lo normal es que haya un error en la cuenta de +-0.5 pulsos. Es decir, que el error será aproximadamente de 1 pulso.

Si cuentas 1947 pulsos, el error relativo será de 1/1947 = 0.0005136
Que significa que solo puedes tomar como válidas las primeras 3 cifras de cualquier cálculo que hagas con ese número que has contado (1947).


Cuenta pulsos entre dos flancos ascendentes del GPS. A mí me sale bastante bien con cualquier micro. El error está en 0.1ppm aproximadamente. Si soplas un poco el oscilador, puede cambiar hasta varias partes por millon, pero si la temperatura la mantienes estable no debe haber problemas.


Si tienes dudas del GPS, utiliza otro micro que tenga un oscilador a cristal para generar una señal de 1 pulso por segundo y prueba con esa señal. Solo para descartar que sea error del GPS.

Un saludo.

No dudo del GPS, lo veo en el osciloscopio y parece que va perfecto, dudo del reloj interno del micro de 64Mhz, entre que es un micro de 60 centimos y que tengo que manejar las interrupciones para ver los desbordamientos y demás, cada vez me sale una cuenta distinta entre dos pulsos del gps.


¿Estás seguro de que comienzas la cuenta con un flanco ascendente y terminas de contar con el siguiente flanco ascendente?

Si de eso estoy seguro, he comprobado con el osciloscopio que entra en la interrupcion de comienzo de la rutina en el flanco ascendente del pulso.

No se si has visto mi otro post, pero no me fio mucho del reloj interno, los timer me hace cosas raras con algunas configuraciones.

http://www.todopic.com.ar/foros/index.php?topic=49964.0

Lo que si he visto haciendo pruebas, es que los pulsos de 32,768KHz del cristal LSE si me dan siempre igual si los mido entre dos pulsos del GPS. Me da siempre una diferencia entre lo que mido y lo que deberia ser de -3 (32768 - PulsosMedidos).

¿Esto me podría servir para calibrarlo? si debo ver 32768 pulsos LSE en un periodo del LSE, me puede servir para ver los pulsos que faltan o sobran.

un saludo.

PD: Esto ya como duda personal, yo pensaba que el reloj de 32768 KHz era mas estable que los relojes de frecuencias mas altas. Pero entre lo que me comentas, y que el otro dia vi un ejemplo de ST, para sincronizar el RTC ya no estoy seguro.

En el ejemplo utilizaban un micro con un cristal externo, y lo tenian rodando a 100MHz y utilizaban un timer para generar el pulso de 1 segundo para sincronizar el RTC del propio micro  :?
Para que narices se utiliza entonces el reloj de 32Khz si el otro es mas preciso?
« Última modificación: 20 de Febrero de 2020, 03:43:30 por juaperser1 »
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5420
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #62 en: 20 de Febrero de 2020, 08:01:15 »
Lo que si he visto haciendo pruebas, es que los pulsos de 32,768KHz del cristal LSE si me dan siempre igual si los mido entre dos pulsos del GPS. Me da siempre una diferencia entre lo que mido y lo que deberia ser de -3 (32768 - PulsosMedidos).

¿Esto me podría servir para calibrarlo? si debo ver 32768 pulsos LSE en un periodo del LSE, me puede servir para ver los pulsos que faltan o sobran.
Puedes calibrarlo con ese método, pero no tendrás mucha precisión. Deberías contar pulsos durante 30 segundos para tener una precisión de 1 parte por millón. Ahora solo tienes una precisión de +-30 partes por millón y eso es demasiado pobre.



El oscilador de 32kHz se utiliza porque consume muy poco, no porque sea más preciso.

Un saludo.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2802
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #63 en: 21 de Febrero de 2020, 07:44:37 »
Citar
El oscilador de 32kHz se utiliza porque consume muy poco, no porque sea más preciso.

Un saludo.

¿Entonces mientras mas rápido sea el reloj mas precisión no?

Si sigo este método (ya que parece que el reloj de 64Mhz tiene mucha incertidumbre), ¿mientras mas tiempo lo deje contando mas precisión alcanzaré. ¿como has hecho la cuenta para saber que son 30 segundos para 1ppm? ¿si lo dejo 8 segundos por ejemplo?

un saludo?
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5420
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #64 en: 21 de Febrero de 2020, 14:57:01 »
No, los dos relojes son igual de precisos.


La precisión te la da el numero de cuentas que haces. 10 cuentas te dan un dígito de precisión. 1000000 de cuentas te dan 6 dígitos de precisión o un error de 1 parte por millón.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5420
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #65 en: 21 de Febrero de 2020, 14:59:29 »
No creo que el reloj de 64MHz tenga mucha incertidumbre. Debe ser un error de software.

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2802
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #66 en: 24 de Febrero de 2020, 04:16:50 »
¿Que error de software puede haber?

he hecho una prueba mas sencilla aun.

capturo los pulsos en alto del reloj LSE este seria el seudocodigo:

Código: [Seleccionar]
-Encender timer17 (64MHz corriendo libremente)
-delay 1000mS
-Encender timer16 (salta la interrupción cada vez que lee un flanco ascendente del LSE)

while(1)


#interrupciones

if (PrimeraEntrada== 0)
{
       htim17.Instance->CNT = 0;
       PrimeraEntrada++;
}
else if (PrimeraEntrada>= 1)
{
       Pulsos64MHz = __HAL_TIM_GetCounter(&htim17);
}
}

Cada vez que reinicio el programa obtengo un valor distinto, 1962,1965,1964,1963,1962,1960...  (el ideal seria 1953,125)

eso solo en un periodo de LSE5, imagina en un segundo las diferencias que me encuentro.
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5420
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #67 en: 24 de Febrero de 2020, 08:52:24 »
Prueba con esto:

Código: [Seleccionar]
#interrupciones

if  (CuentasLSE == 0) {
     htim17.Instance->CNT = 0;
}

if (CuentasLSE < 32000) {
     CuentasLSE++;
     Pulsos64MHz = __HAL_TIM_GetCounter(&htim17);
}


A ver cuanto cuenta en 32000 pulsos LSE.
Cuando CuentasLSE llegue a 32000, entonces Pulsos64MHz debería tener una cuenta más o menos estable.
« Última modificación: 24 de Febrero de 2020, 16:51:13 por Picuino »

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2802
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #68 en: 25 de Febrero de 2020, 04:15:56 »
Código: [Seleccionar]
  if(CuentasLSE == 0)
  {
  htim17.Instance->CNT = 0;
  }

  if(CuentasLSE < 32000)
  {
  CuentasLSE++;
  Pulsos64MHz = __HAL_TIM_GetCounter(&htim17);
  }
  else
  {
  CuentasLSE = 0;
  }

el else lo he puesto simplemente para parar la depuración y comprobar el valor de Pulsos64MHz, y los resultados igual de dispares, cada vez que compilo y quemo.
-36663
-50915
-50280
-26160
-38241
...
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5420
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #69 en: 25 de Febrero de 2020, 07:10:27 »
No entiendo por qué pasa eso. Las pruebas que he hecho con cristales salen mucho más estables, con errores de una o dos cuentas por segundo y como mucho una desviación de veinte a cuarenta cuentas por segundo cuando se calienta el cristal un poco.

Puede que te venga bien hacerte un pequeño frecuencímetro con otro microcontrolador, por ejemplo un PIC. En ese caso yo te puedo ayudar con el código y las pruebas.

Te recomiendo el PIC18F2550
« Última modificación: 25 de Febrero de 2020, 07:15:33 por Picuino »

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2802
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #70 en: 26 de Febrero de 2020, 04:45:04 »
No entiendo por qué pasa eso. Las pruebas que he hecho con cristales salen mucho más estables, con errores de una o dos cuentas por segundo y como mucho una desviación de veinte a cuarenta cuentas por segundo cuando se calienta el cristal un poco.

Puede que te venga bien hacerte un pequeño frecuencímetro con otro microcontrolador, por ejemplo un PIC. En ese caso yo te puedo ayudar con el código y las pruebas.

Te recomiendo el PIC18F2550

Supongo que sera el micro que no da para mas.

bueno pues esta vez lo calibraré usando los pulsos de 32,768 KHz que es lo unico que si sale estable entre dos pulsos de gps, aunque tenga que dejar mas de un segundo par darle mas precisión.

cuando vuelva a rehacer el circuito cambiare el micro y retomaré el tema, entonces ya si que me montare el frecuencimetro para poder hacer las cosas bien desde el principio.

Muchas gracias por tu ayuda Picuino, retomare el tema en cuanto pueda.

un saludo.
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5420
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #71 en: 26 de Febrero de 2020, 15:42:49 »
Ok, un saludo.

Desconectado allennet

  • PIC12
  • **
  • Mensajes: 88
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #72 en: 04 de Marzo de 2020, 20:48:19 »
Hacer contadores por software te agrega error por el tiempoºenºque se demora ingresar a la interrupcion y llegar a capturar el reguistro a una variable.

Yo se hacer en un micro de 8bit creo el programa simulo y utiliso una frecuencia de 1hertz y obtengo los pulsos extra que tengo, luego seria solo restar
"La curiosidad mato al gato, pero murio sabiendo"

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2802
Re:Calibrar el rtc por "smooth calibration"
« Respuesta #73 en: 05 de Marzo de 2020, 07:08:35 »
Basicamente eso hemos hecho, el 1 Hz es de un GPS pero utilizo los pulsos del reloj LSE por que los reloj interno tiene mucho error.

Si fuera por el retraso de las interrupciones no existiria una deriva tan grande entre el mismo experimento una y otra vez.
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw