--------
In message <[email protected]>, John Ackermann N8UR
 writes:

>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
[email protected]         | 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 -- [email protected]
To unsubscribe, go to 
http://lists.febo.com/mailman/listinfo/time-nuts_lists.febo.com
and follow the instructions there.

Reply via email to