precisión del tiempo GPS (SIM808 o similar) - proceso entre las oraciones NMEA y la respuesta de comando AT

2

En un SIM808 o similar, puede obtener la información del GPS con este comando AT:

AT+CGNSINF
+CGNSINF:1,1,20150327014838.000,31.221783,121.354528,114.600,0.28,0.0,1,,1.9,22,1.0,,8,4,,,42,,

la hora UTC está en el tercer campo de datos como: aaaaMMddhhmmss.sss

Sin embargo, en el manual, la función de AT+CGNSSEQ se describe de la siguiente manera: Defina la última oración NMEA que se analizó.

Mi pregunta es en general:

  • ¿Qué tan preciso es este momento cuando lo recibo de la interfaz serial del chip?

Subpreguntas:

  • ¿Debo suponer que el tiempo entre la respuesta del comando AT y el último mensaje NMEA recibido por la unidad GPS es variable?
  • ¿Puedo compensar las demoras en los sistemas y cómo?

Retrasos que espero:

  • ¿La diferencia entre la entrada de NMEA y el comando AT?

  • Tiempo para procesar la oración NMEA

  • Tiempo para leer el comando AT y preparar la respuesta

  • Tiempo de comunicación serial

pregunta Sebastian

2 respuestas

1

El mensaje que informa del tiempo emitido por un receptor GPS generalmente sale unos cientos de milisegundos después de el tiempo real indicado dentro del mensaje. Ese tiempo informado es en realidad el comienzo del ciclo de medición actual, y si el receptor tiene una salida de 1PPS, correspondería al borde de ataque de ese pulso.

A menos que tenga especial cuidado, el sondeo que realiza con sus comandos AT se ejecuta de forma asíncrona con respecto a la hora del GPS y las horas en que el receptor emite los mensajes. Por lo tanto, siempre tendrá una incertidumbre que es igual a su período de sondeo agregado a cualquier otro retraso de comunicación en el sistema.

Por lo tanto, si realiza un sondeo una vez por segundo, la hora que finalmente vea en el mensaje será "obsoleta" entre aproximadamente 0,1 segundo y 1,1 segundo. Puede reducir el límite superior mediante el sondeo con mayor frecuencia y prestando atención cuando el valor de tiempo cambia de un resultado al siguiente.

    
respondido por el Dave Tweed
2

El SIM808 tiene una salida de 1 pps en la almohadilla 37, por lo que para una mayor precisión, puedes capturar esto en una interrupción y usarlo para disciplinar el sentido interno del tiempo de tu MCU.

Según la sugerencia de Dave de que la información de tiempo de serie es "obsoleta", parece que es posible que desee hacer algo como tomar ese valor, podar la fracción, agregar 1 segundo y almacenarla en caché para que la próxima interrupción sepa < em> que se está marcando el segundo.

O si puede configurar un temporizador de hardware MCU para restablecer en la entrada externa de la señal PPS y contar de otra manera, puede hacer una consulta y reemplazar los segundos fraccionarios en el resultado con una conversión a segundos fraccionarios del cuenta actual del temporizador.

En cualquier caso, es probable que desee tener cuidado si realiza una de estas consultas cerca del final de un segundo, donde podría ser ambiguo si la respuesta que recibe informa de los segundos enteros anteriores o de los nuevos. El ahorro del sentido interno del tiempo desde el momento en que se emite la consulta podría funcionar. Si la respuesta que calcula es "anterior" al tiempo que solicitó, probablemente deba agregar un segundo para corregirlo.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas