Algoritmo de control GPSDO

Actualmente estoy construyendo mi propio oscilador disciplinado GPS. Tengo un OCXO que se usa como fuente de reloj para un microcontrolador y uno de sus contadores, y la señal 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 EFC del OCXO aumenta o disminuye según corresponda. Ahora tengo mi GPSDO funcionando durante varios días y parece ser muy estable en comparación con un GPSDO comercial de Trimble, pero tiene el problema de que tarda al menos un día completo en bloquearse 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 ocurre el flanco ascendente de la señal 1PPS, podría calcular el valor que debería tener el temporizador la próxima vez que ocurra el flanco ascendente y así sucesivamente. Al restar el valor real del temporizador del deseado, obtengo algo así como un error de fase que luego podría usar para dirigir el OCXO. 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, en algún momento, conducirá a una diferencia de fase mayor que 1 conteo.

Otro problema que tengo con ambos enfoques es: ¿cómo determino cuándo el GPSDO está realmente bloqueado?

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

Respuestas (1)

Su deseo de utilizar una solución de software sugiere que no se agregue ningún 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 de analógico a digital es del tipo de aproximación sucesiva con una 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 capacitor de muestreo interno. Podría ser lo suficientemente rápido para muestrear el pulso de 1 pps 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. El A-to-D se configuró para muestrear una señal de onda cuadrada de entrada del generador de funciones. La frecuencia del generador de funciones se fijó cerca de la frecuencia de muestreo del convertidor A-to-D, un período de 409,6 microsegundos.
El generador de funciones proporciona una onda cuadrada de pico a pico de cinco voltios con una compensación de CC de +2,5 V, terminada con una resistencia de 75 ohmios en el extremo del procesador. La amplitud se establece ligeramente por debajo de 5v, de modo que el voltaje "alto" produce un resultado ligeramente por debajo del conteo máximo de 1023, y el voltaje "bajo" produce un resultado ligeramente por encima del conteo cero: la salida UART permitió recolectar muestras A-to- D por una computadora.accesorio de prueba para medir el tiempo de subida

Aquí está la salida submuestreada que muestra la onda cuadrada del generador de funciones. De interés es el tiempo de subida y bajada de la onda cuadrada. El tiempo de subida se convierte en una subida similar a una rampa, que abarca unas 4,5 muestras. Con una resolución de A a D de una parte en mil, la resolución de tiempo de aproximadamente un nanosegundo es posible con esta técnica de muestreo. para la OCXCO. Esta es una solución chapucera ya que el muestreador interno A-to-D no está especificado para este servicio. Pero es una forma de mejorar la resolución de tiempo sin hardware adicional.
onda cuadrada del generador de funciones muestreadas

esto es interesante. En realidad, construyó una especie de interpolador analógico, ya que se usan en algunos contadores de frecuencia. Sin embargo, me pregunto si el control preciso de mi OCXO es realmente imposible con solo 100 ns de resolución. ¿No podría promediar 100 segundos y, por lo tanto, aumentar mi resolución en un factor de 100?
@T.Plusss Sí, la resolución se puede obtener durante períodos de tiempo más largos (como 100 s). Estamos tratando de acortar el tiempo de establecimiento del bucle. Obtener una mejor resolución de tiempo (1 ns frente a 100 ns) en el período de pulso GPS de 1 segundo debería ayudar.