Discussion:
[time-nuts] WWVB data to play with
John Ackermann N8UR
2018-12-05 19:40:51 UTC
Permalink
While everyone's been talking :-) , I recorded some WWVB IQ data for
folks to play with. You can download it from
http://febo.com/pages/wwvb/

The receiver ran at 48 ksps and was centered on 80 kHz (to allow a 20
kHz IF to move away from 0 Hz crud). The data was taken in early
afternoon in Dayton, Ohio. WWVB was easily visible in an FFT.

I used a Red Pitaya driven through a 500 kHz low pass filter by a
Clifton Labs voltage probe antenna with 1 meter vertical whip. The Red
Pitaya, was loaded with firmware that emulates an HPSDR radio. I used
Gnuradio with the "HermesNB" source block that Tom McDermott, N5EG, wrote.

There's a ten minute IQ recording that includes the top of the hour at
http://www.febo.com/pages/wwvb. The file is in Gnuradio binary format,
which is complex data stored with real and imaginary parts interleaved
in successive 32 bit floats

I'm going to continue putzing around and will likely upload additional
samples. If anyone would like some specific chunk of spectrum, just let
me know. And if you do anything interesting with the data, please share
it with the list!

John
----

_______________________________________________
time-nuts mailing list -- time-***@lists.febo.com
To unsubscribe, go to http://lists.febo.com/mailman/listinfo/time-nuts_lists.febo.com
and follow the instructions there.
Poul-Henning Kamp
2018-12-05 21:36:50 UTC
Permalink
--------
Post by John Ackermann N8UR
While everyone's been talking :-) , I recorded some WWVB IQ data for
folks to play with. You can download it from
http://febo.com/pages/wwvb/
The receiver ran at 48 ksps and was centered on 80 kHz (to allow a 20
kHz IF to move away from 0 Hz crud). The data was taken in early
afternoon in Dayton, Ohio. WWVB was easily visible in an FFT.
Here is a bit of python3 code to show how simple this is
and to get people started:

import struct
from math import sin, cos, atan2, hypot

PI = 3.14159265

# Sample rate
SR = 48.00009351e3

# Target frequency = (80) -20kHz
TF = -20e3

fi = open(
"n8ur_rx_center=0.08MHz_rate=48ksps_start=2018.12.05.13.57.54.bin",
"rb")

fi.read(512)

fo1 = open("out.txt", "w")

n = 1
r = 0
o = 0.0
do = 2. * PI * (TF / SR)
ali = 0.0
alq = 0.0
while True:
a = fi.read(8)
if not a:
break
i,q = struct.unpack("ff", a)
ss = sin(o)
cc = cos(o)
o += do
li = ss * i - cc * q
lq = ss * q + cc * i
ali += (li - ali) / n
alq += (lq - alq) / n
if n < 12000:
n += 1
r += 1
if r % 480 == 0:
fo1.write("%e %e %e\n" %
(r / SR, hypot(ali, alq), atan2(ali,alq)))

The output file ("out.txt") has three columns:

time in seconds

amplitude

phase

The "r % 480" gives an output line every 10 msec

The "if n < 12000" is the averaging factor of an exponential average.
A proper low-pass filter will give much sharper amplitude.

Johns sample-rate appears to be almost 1000PPM fast and
drifting, it it is trivial to adjust the "do" to keep either
the ali or alq haunting zero.

Enjoy...

Poul-Henning
--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
***@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.

_______________________________________________
time-nuts mailing list -- time-***@lists.febo.com
To unsubscribe, go to http://lists.febo.com/mailman/listinfo/time-nuts_lists.febo.com
and follow the instructions there.
John Ackermann N8UR
2018-12-05 22:13:17 UTC
Permalink
Post by Poul-Henning Kamp
Johns sample-rate appears to be almost 1000PPM fast and
drifting, it it is trivial to adjust the "do" to keep either
the ali or alq haunting zero.
Yes, I should have mentioned that the Red Pitaya does not have a
reasonable way to run with external clock, and the internal (TC?)XO is
obviously nothing to write home about.

If we want stable/accurate data, I can switch to a Hermes board locked
to GPSDO or Cs.

John

_______________________________________________
time-nuts mailing list -- time-***@lists.febo.com
To unsubscribe, go to http://lists.febo.com/mailman/listinfo/time-nuts_lists.febo.com
and follow the instructions there.
jimlux
2018-12-05 22:47:17 UTC
Permalink
Post by John Ackermann N8UR
Post by Poul-Henning Kamp
Johns sample-rate appears to be almost 1000PPM fast and
drifting, it it is trivial to adjust the "do" to keep either
the ali or alq haunting zero.
Yes, I should have mentioned that the Red Pitaya does not have a
reasonable way to run with external clock, and the internal (TC?)XO is
obviously nothing to write home about.
If we want stable/accurate data, I can switch to a Hermes board locked
to GPSDO or Cs.
I think the crummy oscillator is what I was looking for - the goal was
do to an experiment: can we write code that runs on a Pi or Arduino that
can sample and recover the data from the phase coded signal.




_______________________________________________
time-nuts mailing list -- time-***@lists.febo.com
To unsubscribe, go to http://lists.febo.com/mailman/listinfo/time-nuts_lists.febo.com
and follow the instructions there.

Loading...