throbscottle
Well-Known Member
I'm trying to find the best way to cheaply build a gps disciplined oscillator to use as a calibration-free reference. This is so I can calibrate an old second hand frequency counter I haven't got yet... And also Other Stuff. Apart from which it's just interesting anyway.
So far I have (on the slow boat from China):
10MHz VCOCXO
NEO7 GPS module.
I'm seeing a small number of methods to implement this on the 'net, based on either the GPS's 1pps output and a micro-controller, or using a different module with a 10KHz output and locking with a PLL, and a couple using u-Blox modules on their own with the 1pps output programmed to a frequency, which is accurate but not stable.
So I've been thinking what to do?
The NEO7 has a programmable output so it can output a frequency rather than 1pps. Needs a battery to not forget its setting if not powered for a couple of hours though.
Timepulse suffers from jitter, if programmed to a frequency it is much better when an integer fraction of 48MHz, eg 8MHz
So I believe I can use a PLL to improve the jitter, or one of these: https://ww1.microchip.com/downloads/en/DeviceDoc/JitterBlocker.pdf though I'm not sure it's appropriate in this case (if I can even obtain one!)
How hard is it to phase lock a 10MHz signal with an 8MHz one? Divide the 10MHz signal by 5 and the 8MHz signal by 4, is my first guess. PLL generates the control voltage for the oscillator. I don't know if programming the module to 8MHz and dividing externally by 4 is any better than just programming it to 2MHz. Still an integer fraction of 48.
I've also seen one where the 1pps is divided by 16. Confusing...
I was thinking also, instead of this, I could use a "fastest finger first" system. So the 1pps signal is used, and the 10MHz oscillator is also divided down to 1pps, and the difference in time between them is used to give the oscillator a gentle nudge in the right direction. It would need additional syncing so the pulses start off in the right place. Very slowly done, so the effect of GPS 1pps wander doesn't have the oscillator all over the place. Don't know how I'd do this but it's an attractive idea. Some kind of integration of the time between the two pulses?
The other way to do it is with a micro, AFAICT, it would need to measure the interval between each 1pps pulse and generate an output equal to the average pulse timing. This led me to thinking it wouldn't be a very stable average because the micro's own clock isn't truly stable, and THEN I thought, hang on, I've got a 10MHz OCXO on board, use that for the micro's clock instead, and I THINK that as it's frequency is adjusted this will affect the average in a negative feedback kind of way so it won't go racing off to the upper or lower limit. But I was driving when I did that thought experiment so that may be completely wrong.
With a micro on the board it is also possible for other things to be done. Haven't thought much about this, mainly just getting info from the GPS, status info, fluff and stuff.
Time for bed, said Zebedee...
So far I have (on the slow boat from China):
10MHz VCOCXO
NEO7 GPS module.
I'm seeing a small number of methods to implement this on the 'net, based on either the GPS's 1pps output and a micro-controller, or using a different module with a 10KHz output and locking with a PLL, and a couple using u-Blox modules on their own with the 1pps output programmed to a frequency, which is accurate but not stable.
So I've been thinking what to do?
The NEO7 has a programmable output so it can output a frequency rather than 1pps. Needs a battery to not forget its setting if not powered for a couple of hours though.
Timepulse suffers from jitter, if programmed to a frequency it is much better when an integer fraction of 48MHz, eg 8MHz
So I believe I can use a PLL to improve the jitter, or one of these: https://ww1.microchip.com/downloads/en/DeviceDoc/JitterBlocker.pdf though I'm not sure it's appropriate in this case (if I can even obtain one!)
How hard is it to phase lock a 10MHz signal with an 8MHz one? Divide the 10MHz signal by 5 and the 8MHz signal by 4, is my first guess. PLL generates the control voltage for the oscillator. I don't know if programming the module to 8MHz and dividing externally by 4 is any better than just programming it to 2MHz. Still an integer fraction of 48.
I've also seen one where the 1pps is divided by 16. Confusing...
I was thinking also, instead of this, I could use a "fastest finger first" system. So the 1pps signal is used, and the 10MHz oscillator is also divided down to 1pps, and the difference in time between them is used to give the oscillator a gentle nudge in the right direction. It would need additional syncing so the pulses start off in the right place. Very slowly done, so the effect of GPS 1pps wander doesn't have the oscillator all over the place. Don't know how I'd do this but it's an attractive idea. Some kind of integration of the time between the two pulses?
The other way to do it is with a micro, AFAICT, it would need to measure the interval between each 1pps pulse and generate an output equal to the average pulse timing. This led me to thinking it wouldn't be a very stable average because the micro's own clock isn't truly stable, and THEN I thought, hang on, I've got a 10MHz OCXO on board, use that for the micro's clock instead, and I THINK that as it's frequency is adjusted this will affect the average in a negative feedback kind of way so it won't go racing off to the upper or lower limit. But I was driving when I did that thought experiment so that may be completely wrong.
With a micro on the board it is also possible for other things to be done. Haven't thought much about this, mainly just getting info from the GPS, status info, fluff and stuff.
Time for bed, said Zebedee...