[time-nuts] WWVB PM Time Questions

Poul-Henning Kamp phk at phk.freebsd.dk
Thu Jul 30 07:28:55 UTC 2020


--------
rcbuck at atcelectronics.com writes:
> Paul,
> "The new de-psk-r I built has no raw wwvb outputs." What do you mean by
> raw?
>
> I have been thinking about how the phase shift could be detected in
> software instead of hardware. Could something like this maybe work:

Back when I played with VLF, I did this on DCF77/Rugby etc.

In my case I used a 12 bit 1MSPS ADC, and (exponentially) averaged
the RF signal into per-station circular buffer, this is very cheap
and fast to do in an interrupt handler.

In your main code you can demodulate that buffer to DC by multiplying
and summing with precomputed sin&cos tables.

That gives you baseband I & Q from which you can trivially calculate
phase and amplitude.

You can make the buffer as short or long as you want, I did the
trivial thing and made it a full second long:

	http://phk.freebsd.dk/loran-c/CW/

The trick to that is that you can recover many stations from the
same circular buffer, by using different sin&cos tables.  All the
above plots came out of the same single 1sec buffer snapshot.

This obviously works for any buffer length which is a full number
of carrier cycles for all the stations you are interested in, in
principle you can recover all stations on N*kHz, N << 500 from from
a single 1000 sample buffer at 1MSPS.

The advantage of using a 1second buffer was that I could extract
what the stations thought was top of the second from their modulation.

(I actually calculated my position based on DCF77, Rugby, HBG,
France Inter and the strange 200/3 kHz station in Moscow, the result
I got was about half a kilometer wrong.)

To recover the per-second modulation you simply need to shorten the
buffer so it resolves the modulation, which probably means no longer
than 1/20 second for WWVB, but 1/100, if you have the S/N for it,
is much easier in terms of signal analysis code.

An alternative strategy, which I used for DCF77 phase recovery, is
to detect the duration of the AM pulse and pick one of two 1-second
long buffers based on that.

And you don't need much CPU power at all, I did Loran-C time/freq
on a Analog Devices Aduc7206:

	http://phk.freebsd.dk/AducLoran/

And that included a graphical display, (watch the animation.gif :-)

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.




More information about the Time-nuts_lists.febo.com mailing list