Electronics > Projects, Designs, and Technical Stuff

Yet another DIY GPSDO - yes, another one

<< < (159/161) > >>

nealix:
OK, I found the page in the UBLOX manual that I had missed, page 43, section 3.2, makes the field length in bytes perfectly clear;
https://content.u-blox.com/sites/default/files/u-blox-M9-SPG-4.04_InterfaceDescription_UBX-21022436.pdf

Neal

MIS42N:
I don't know if it is of interest to this group, but I use a different algorithm to a PLL and it works quite well. The caveat is that the voltage change/frequency change ratio of the OCXO be known. My GPSDO runs a calibration to determine this and writes it to flash memory.

The circuitry receives the 1pps from the GPS module, times it to the nearest 25ns. If the OCXO and GPS are in sync, the difference is called 0. If there is a difference, it is measured in 25ns intervals so a difference of one cycle would be -4 or +4 depending on if the OCXO is fast or slow.

The algorithm accumulates the values in an accumulator array of 16 bit values, the array is 2 x n - n depends on the longest useful accumulation interval, the interval is 3*2^n-1 seconds. The idea is to accumulate information over 3 consecutive time intervals, then try to fit the curve at^2+b^t+c (t=time) to the curve to find out the current deviation of the OCXO. This is done over different time scales, each being 3*2^n seconds.
The shortest time is 3 seconds. The algorithm to fill the array at each scale is:
For the first received difference at the scale, fill in accumulator 1
For the second received difference, fill in accumulator 2, add accumulators 1 and 2 together and hand to the next scale
For the third received difference, do the curve calculation, determine an estimated error at the time, test it against a limit.
If the limit is exceeded, apply a correction to the control voltage. If the limit is not exceeded, make the third difference the new first difference in accumulator 1
The received difference at 2^0 is just the 25ns difference from the circuitry. For higher values of n it is an accumulation over a time period e.g. n=8 uses three intervals of 256 seconds.
In practice it is useful to nominate a maximum n, and if that interval is reached do a correction.
This algorithm has proven unbreakable. It will start disciplining after about 2 minutes of warm up of the OCXO and keeps lock from then on. After 15 minutes with an OSC5A2B02 the OCXO becomes relatively stable and the output is +-1 or 2 parts per billion of 10MHz.

nealix:
Does anyone know of a "completed" DIY GPSDO project that;

1.  uses parts or modules that are still available
2.  uses a PLL rather than an FLL
3.  will share schematics and code?

While waiting for Andrew to return this summer, I thought I would study and educate myself more on the PLL
option, and how it is wired, what low pass filter is used, which frequency is used in the PLL phase detector (not 1 PPS after
reading posts from @ThinkFat), and what the software does since the MCU inserts itself in the PLL loop.
Unfortunately, the more I googled down the rabit-hole, the more that I found unfinished projects, or projects
from someone who had done it but does not wish to share the code or the schematics, etc etc.
I know that LARS uses a PLL and it is a working/finished project, but his PLL is unique in that the two
frequencies compared for phase are not the same.   Several other projects try to compare 1HZ and 1PPS,
but the better ones program the GPS module to put out 10Khz or even 100Khz and compare that with
the same divided down output of the OCXO.

If anyone knows of a PLL based GPSDO project that meets the 3 criteria listed above, then that should keep
me busy studying and learning until Andrew returns later on.

Cheers,

Neal

Johnny B Good:
@nealix

Since you've had no response so far, I'll point you to a reply I made to bob near the beginning of this topic thread (page 5 reply #123) which may answer all your stated conditions (except for the 'code' since none is used)  :)

nealix:
Thanks John:

I reviewed that and it helps.
I guess an honest question for you and the rest of the forum is this:   For casual home use, for test equipment and radio use, I certainly don't need more accuracy than +/- 0.001 Hertz, and Andrew's simple FLL GPS already does that just fine.
I can go build the Jame's Miller PLL GPSDO with junk box parts right now, and I might be wrong in thinking that it would also do approx +/- 0.001 Hertz accuracy, or does it's PLL do much better?
I am having trouble understanding the interest in Lar's GPSDO, since it looks like it has taken each builder weeks or months of labor screwing around and adjusting to get it stable and locking and where they want?
Or is that just for fun since they are time nuts searching for supreme accuracy beyond basic need? Certainly by comparison, Andrew's STM32 FLL and James PLL design just simply power up and work, no fuss.
Lar's design appears, to the newbie reader, like an untame race car with a loose steering wheel, sensitive to where you are, what parts you build it with, and many other variables.   That reduces the value
proposition, unless it is simply about education and game?

A.   No disrespect for Lar's, it is a cleaver and amazing project, but a lot of work and adjusting.
B.   Sorry for this off-topic post in Andrew's thread, but I am trying to understand the need, and value, for going much further on this project (such as PLL) if it already works so well with the FLL.

I guess I don't know how to determine if there is a real need to go beyond the simple FLL design, for  non-commercial simple at-home use?   It seems like I already have more accuracy than I really need?

Opinions, comments, thoughts, reprimands? :-)

Cheers,

Neal