03 October, 2015

Just good enough 10 MHz GPS reference

Some time ago I noticed that the Ublox Neo-7M GPS has a 10 MHz output which is locked to the GPS system's accuracy. Most people kept saying how useless it was due to excessive jitter unless it was cleaned up with a phase locked loop of some sort.

At about the same time I installed the external reference input for my Elecraft K3. The K3EXREF enables the K3's frequency to be locked to an external 10 MHz reference. What struck me was how its function is described:


This got me wondering if the Neo-7M would be just good enough as a reference and that all the averaging internally to the K3 would take care of the jitter.

I ordered one from Ebay for USD 12-13 together with an USB interface (USD 1.5) and hooked it up. (Actually the NEO-7M already has a built-in USB interface, but my board doesn't support it). The result is shown above as assembled in a clear top tin. In my wooden house I can receive GPS indoors, so I have no need for an external antenna

The K3 accepts the input and I see the star in REF*CAL blinking. Just after turn-on of the K3 my 49.38 MHz reference frequency ends in ...682 and after 10-15 minutes it has fallen and stabilized to ...648, i.e. 34 Hz down in frequency. This is just 8 Hz off the reference value I determined manually was the right one when my K3 was new in 2009 (49.379.640).

All this taken together indicates to me that the K3 finds this 10 MHz acceptable for locking. The measurement to the nearest Hz, implies a measurement time of the order of 1 second and that seems to be enough to smooth out the jitter from the Neo-7M.

In order to get this to work I had to do some modifications to the GPS unit. First I had to get access to the timepulse on the chip's pin 3. My connection is inspired by that of G4ZFQ and consists of a small wire from the left-hand side of the 1k resistor to the upper left hole. From there another grey wire goes below the chip and to the 5-pin header which is soldered to the Vcc, Rx, Tx, Gnd pins. The 5th pin is cut off and is just attached to the other pins through the plastic hardware.

The second modification was required in order to get it to run from the somewhat noisy USB 5 Volt supply. That took some decoupling between the Vcc and Gnd pins (220 uF and 0.1 uF in parallel), visible to the right in the image above, using good engineering practice to keep the wires as short as possible.

The timepulse is a 3.3 Vp-p output which cannot drive anything below 400-500 ohms impedance. Therefore I added a 74HCT04 driver that I have assembled on a little homemade SMD to DIL adapter PCB (easy to find on Ebay). It serves as a driver to feed the 10 MHz to the 50 ohm input of the K3EXREF.

The HCT04 IC has 6 inverters. One of them takes the input signal from the Timepulse output of the GPS IC and buffers it to drive the 5 other inverters in parallel. This is shown in the schematics at the end of this blog post.

The 5Vp-p output from the buffers is fed via 56 ohms to a connector that goes to the K3EXREF input. This is in accordance with the K3EXREF manual which says: "The 10 MHz source should have a signal level between +4 dBm and +16 dBm, nominal. For square wave sources, 2VDC to 3.3VDC peak is optimum. If the source is a 5V logic level, use a 50-ohm resistor in series with the input."

In order to set up the GPS I have used the u-center program (Menu: View, Configuration View, TP5 (Timepulse 5)) from Ublox and set it up with the parameters shown to the right. It blinks at 4 Hz before the signal is acquired and then switches to 10 MHz. This can be observed on the green LED connected to the Timepulse output also as it switches from blinking to a half-lit status. 

The Neo-7M can store these parameters, but annoyingly it seems to forget them after half a day or so. Apparently the supercap on the module does not hold its voltage well enough, so then I have to enter the parameters again and press the Send at the bottom left.

The Ublox Neo-7 GPS is a lousy frequency reference in most respects, except that it is accurate in keeping exactly 10 million periods per second. My experience is that the K3 has enough internal averaging to deal with that. This is despite the fact that the 10 MHz output frequency is actually one of the worst when it comes to phase noise as it doesn't divide evenly down from the internal 48 MHz (6, 8, 12, ... MHz are much better) as measured by RA3APW (access his site with Chrome and use the translate feature).

I have only tried this on the Elecraft K3, but I wonder how many of the other transceivers out there may find the 10 MHz output from the Ublox Neo-7M acceptable?



See also