algoritmo de control GPSDO

2

Actualmente estoy construyendo mi propio oscilador disciplinado por GPS. Tengo un OCXO que se usa como fuente de reloj para un microcontrolador y uno de sus contadores, y la señal de 1PPS del módulo GPS está conectada a una de las entradas de captura del mismo contador.

Actualmente, tengo el siguiente algoritmo de control: En el flanco ascendente de la señal PPS, el valor del contador se bloquea y se compara con el valor anterior. Si la diferencia es algo más que 10000000, entonces el voltaje de EFC del OCXO aumenta o disminuye en consecuencia. Tengo mi GPSDO ahora funcionando por varios días, y parece ser estable como una roca en comparación con un GPSDO comercial de Trimble, pero tiene el problema de que toma al menos un día completo hasta que se bloquee correctamente. Así que trato de encontrar un algoritmo de control que se bloquee más rápido.

Estaba pensando si podría implementar algo como un PLL en el software.

Por ejemplo, Cada vez que se produce el flanco ascendente de la señal 1PPS, podría calcular el valor que el temporizador debería tener la próxima vez que se produzca el flanco ascendente, y así sucesivamente. Al restar el valor del temporizador real del deseado, obtengo algo así como un error de fase que luego podría usar para dirigir el OCXO. Yo esperaría que esto se bloquee más rápido que mi enfoque actual, y debería ser más preciso porque el tiempo de integración es básicamente infinito; incluso el error más pequeño conducirá, en algún momento, a una diferencia de fase superior a 1 conteo.

Otro problema que tengo con ambos enfoques es: ¿cómo puedo determinar cuándo está bloqueada la GPSDO?

¿Hay otros enfoques, probablemente mejores, para el control de un OCXO mediante un pulso de 1PPS?

    
pregunta T. Pluess

1 respuesta

1

Su deseo de utilizar una solución de software sugiere que no se agregue hardware. Esa es una especificación difícil. Entonces, ¿qué hardware se ofrece dentro de un microcontrolador común que podría volver a aplicarse para resolver un lapso de tiempo inferior a 100 nanosegundos?

Se probó un experimento con el microcontrolador 16F1455 de Microchip. Su convertidor analógico a digital es un tipo de aproximación sucesiva con resolución de diez bits. La ventana de muestreo de la hoja de datos no está bien definida, pero podría ser lo suficientemente corta como para cargar rápidamente el condensador de muestreo interno. Puede ser lo suficientemente rápido como para muestrear el pulso de 1pps de la salida del GPS y proporcionar una resolución de tiempo mejor que 100 ns.

El experimento registró 16F1455 con un oscilador de cristal fijo de 10 MHz. La A a D se configuró para muestrear una señal de onda cuadrada de entrada del generador de funciones. La frecuencia del generador de funciones se estableció cerca de la tasa de muestreo del convertidor A a D, un período de 409,6 microsegundos.
El generador de funciones proporciona una onda cuadrada de pico a pico de cinco voltios con + 2.5v DC offset, terminó con una resistencia de 75 ohmios en el extremo del procesador. La amplitud se establece ligeramente inferior a 5v, de modo que la tensión "alta" produce un resultado ligeramente inferior al conteo máximo de 1023, y la tensión "baja" produce un resultado ligeramente superior a la cuenta de cero: LasalidadeUARTde
permitióquelasmuestrasA-DserecolectaranenunaPC.
Aquíestálasalidasubmuestreadaquemuestralafuncióndeondacuadradadelgenerador.Deinteréseseltiempodesubidadeondacuadradayeltiempodecaída.Eltiempodesubidaseconvierteenunasubidaenformaderampa,queabarcaaproximadamente4,5muestras.ConunaresolucióndeAaDdeunaparteenmil,laresolucióndetiempodeaproximadamenteunnanosegundoesposibleconestatécnicademuestreo.:

La mejora de la resolución de tiempo de sus 100 ns a 1ns debería permitirle reducir el tiempo de establecimiento del bucle bloqueado en fase para el OCXCO. Esta es una solución kludge ya que la muestra interna A-D no está especificada para este servicio. Pero es una forma de mejorar la resolución de tiempos sin hardware adicional.

    
respondido por el glen_geek

Lea otras preguntas en las etiquetas