MSF reception question

cpedw

Senior Member
I'm hoping to develop an MSF-based clock. Using a receiver from Canada, https://universal-solder.ca/product/wwvb-msf-jjy60-atomic-clock-receiver-module-60khz/ and a modified version of Hippy's code from post 36 here https://picaxeforum.co.uk/threads/decoding-uks-npl-msf-time-signal.11334/ I spent much of today trying to repeat yesterday evening's satisfactory reception.

After hours of receiving assorted bits but never achieving a complete reading, suddenly at 17.15, the setup started receiving faultlessly and it's still going strong 90 minutes later.

Is this a feature of the radio signal? I am located near Oban, about 230km northwest from Anthorn.

I was planning to integrate a DS3231 backup timekeeper into the final project and it seems it will be needed.

Should I expect good reception only from dusk to dawn? Any tips to improve the signal? I've experimented with position of the aerial but without much change.

Derek
 

hippy

Technical Support
Staff member
Wireless does seem to be a fickle mistress.

My own MSF experiences in the UK, using my own code and commercial clocks, is that things working can vary from day to day. If I move clocks slightly they may stop syncing. If I lent towards my PC when debugging my MSF receiver signal would stop being usable..

The indoor GPS tests I did had my house jump a couple of hundred metres every night as the sun went down which I guess was actually a satellite coming into or going out of view or some change in atmpospherics.

If you've got a decent signal it should just keep working. If the digital is clean and correct then it should work all the time. It could perhaps be some other issue, using a wrong bit, including something in a parity check which shouldn't be included, missing something out.

Is there any way to tell exactly what time it starts working and stops working ? That may give a clue if it is a code issue.
 

PhilHornby

Senior Member
Wireless does seem to be a fickle mistress.

My own MSF experiences in the UK, using my own code and commercial clocks, is that things working can vary from day to day.
I've had very similar (commercial) experiences of these contraptions. They'd only been implemented to paper over the cracks (PC clocks running slow, because interrupts were being missed) ...and they just made things worse. (I'm pretty certain they were actually receiving a time signal from somewhere in Germany, rather than Rugby - which was the UK source at the time. That can't have helped matters!)

If I had need for an accurate time signal, I think I'd get it from absolutely anywhere, but the MSF signal. My favourite method, is to use an ESP8266-01. Modify the firmware to get the time via NTP (from your ISP) and output it via the Serial Port. Very cheap, very reliable.
 
Last edited:

Pongo

Senior Member
Built a GPS + 20x2 clock a while ago. The (residential) indoor reception of current tech GPS modules is pretty amazing :)
 

newplumber

Senior Member
Built a GPS + 20x2 clock a while ago. The (residential) indoor reception of current tech GPS modules is pretty amazing :)
And where is the plans of ur clock??:D
i just got some gps neo-6m and have it showing utc time
so i was hoping (y)you know :unsure:...maybe help out a "ungifted" friend like me with little clock cheat sheet :cool:
I'm kinda joking about ur plans but would love to do the same a real time GPS clock
BTW...everytime I used my NEO-6M (start up...power off/on) it was within 1 second of telling time so why would I need a RTC? like ds3231 and NEO-6m ?
why not just make it simple with a single NEO-6M and picaxe for perfect time?
 
Last edited:

AllyCat

Senior Member
Hi.
Should I expect good reception only from dusk to dawn? Any tips to improve the signal? I've experimented with position of the aerial but without much change.

My (Casio "Wave ceptor") wristwatch only bothers to look for the time signal (hourly) between 1.00 am and 5.00 am, I believe for the lowest potential radio interference and best reflection of the (low) radio frequency from the ionosphere (i.e. non line-of-sight reception). It works well, even ignoring the User Manual's recommendation to "place the watch near a window overnight". It uses the German transmitter (60+ kHz), as do most commercial "radio controlled" clocks, even in UK. Did I dream that the original "Rugby" time signal (16 kHz) moved to Wales (and 60 kHz) ?

Commercial "Long wave" receivers (e.g. 60 kHz up to a few MHz) generally use a "ferrite rod" antenna and these are directional (figure of eight). Their maximum sensitivity is actually "broadside" with a null "end-on".

@hippy: GPS reception is generally "line of sight" so you were probably receiving the signals reflected from an external building and in through one or more windows. Thus the path length (hence the GPS position) can suddenly jump, depending which of the 24 satellites (typical constellation) are being received. Of course the time determined by the GPS should be almost perfect, because the time-of-flight will vary by only a fraction of a microsecond. GPS is probably the most commonly-used "time signal" nowadays..

Cheers, Alan.
 

hippy

Technical Support
Staff member
And where is the plans of ur clock??:D
Untested with a real GPS but this should allow a PICAXE-X2 to extract the time code from a $GPGGA message ...

Code:
#Picaxe 28X2
#Terminal 9600

Symbol reserveW0 = w0 ; b1:b0
Symbol hour      = b2
Symbol mins      = b3
Symbol secs      = b4

PowerOnReset:
  HSerSetup B9600_8, %001

ConfigureGps:

  ; Configure GPS to send $GPGGA here

MainLoop:
  Do
    Gosub GetTime
    Gosub ShowTime
  Loop

#Macro Want(ch)
  Do : Loop While ptr = hSerPtr
  If @ptrInc <> ch Then GetTime
#EndMacro

#Macro WantDigit
  Do : Loop While ptr = hSerPtr
  b0 = @ptrInc
  If b0 = ","             Then GotTime
  If b0 < "0" Or b0 > "9" Then GetTime
  hour = hour // 10 * 100 + mins / 10
  mins = mins // 10 * 100 + secs / 10
  secs = secs // 10 * 10  + b0   - "0"
#EndMacro
  
; Extract $GPGGA,hhmmss,...

GetTime:
  Want("$")
  Want("G")
  Want("P")
  Want("G")
  Want("G")
  Want("A")
  Want(",")
  hour = 0
  mins = 0
  secs = 0
  WantDigit ; h
  WantDigit ; h
  WantDigit ; m
  WantDigit ; m
  WantDigit ; s
  WantDigit ; s
  Want(",")
GotTime:
  Return

ShowTime:
  BinToAscii hour, b1, b1, b0 : SerTXd( b1, b0, ":"    )
  BinToAscii mins, b1, b1, b0 : SerTXd( b1, b0, ":"    )
  BinToAscii secs, b1, b1, b0 : SerTXd( b1, b0, CR, LF )
  Return
 
Last edited:

Pongo

Senior Member
I also use a neo-6m gps module with a 20x2 and i2c display. I use the $GPRMC message. UTC is easy, local time with auto DST is more of a challenge. My clock also outputs a full local date/time string via RS-232 so I have a lot of (untidy) code that most people won't want (and the DST will only work for the U.S. thru 2036 - I'm old, that will do me!). I could not persuade the neo-6m module to store anything in its eeprom.
 

Attachments

newplumber

Senior Member
hippy said:
The indoor GPS tests I did had my house jump a couple of hundred metres every night as the sun went down which I guess was actually a satellite coming into or going out of view or some change in atmpospherics.
Same with my tests if I compare it to google earth gps...it seems to be a few miles off
(we dont have buildings or trees to reflect signal so it has to be the wind!!!:D we always have extra of that! )
but the clock part is right on
maybe they figure everyone is lost anyway in North Dakota :)
and thanks for the code snip I'll check it out

@inglewoodpete thats quite the demonstration code and yes of course i will check it out
I like the little "BEN" idea and thanks

@Pongo Hey that looks cool ...must of put some time into it.....I'm just excited I now can have a clock which in theory should never be off
and the reason why I need the GPS clock idea is my outdoor smart light that Marks help code is going off time and I think its because
when power is lost to it and when the ds3231 uses its small battery it must lose accuracy too.
So when I take my smart light down to "Up grade" it... from a smart light to "GPS smarter light"... I wont take any pictures of the box inside because
my fabricators (my hands) seem to struggle at keeping wires neat.
thats funny tho that you make it work till 2036....I should make and sell smart lights with 1 yr expiration dates on them :)
but sadly :cry::rolleyes::censored::oops: you need to be smart....maybe I have a chance someday!!!:LOL:
 

inglewoodpete

Senior Member
I included checksum confirmation in my X2 code due to the occasional data corruption and consequently wrong time indication. The errors may have come from my cheap GPS module: I just don't know the source of the error. It usually locked onto 6 or more satellite signals.
 

newplumber

Senior Member
@ Hippy
I tried your code and tried different setfreqs along with terminal baud rates ...but could not get nothing to show on the terminal
here is a code that works fine with my 20X2
Code:
'TEST CODE FOR GPS NEO-6M
#Picaxe 20X2
#Terminal 19200
setfreq M16

symbol baud_in = T9600_16
symbol Serial_In = B.6  '  to Tx on GPS NEO-6 unit
'===================================================================
main:
  do  
    gosub read_gps_time
    gosub display_gps_time
  loop
read_gps_time:
  serin Serial_In, baud_in, ( "GGA," ),b0,b1,b2,b3,b4,b5
return
display_gps_time:
    sertxd("UTC is ",b0,"bo",#b1,":",b2,b3,":",b4,b5,cr,lf )

   b1 = b1 - 48
lookup b1,(6,7,8,9,0,1,2,"A","B",3,04,05,06,07,08,09,00,01,02,"A","B",03,04,05),b1'
'24h to 12 0,1,2,3,4,5,6, 7,  8 ,9,10,11,12,13,14,15,16,17,18,19, 20, 21,22,23

  If b1 = 2 or b1 = 1 or b1 = 0 then
    b0 = 1 : else : b0 = " " : endif

  If b1 = "A" then : b1 = 1
   elseif b1 = "B" then : b1 = 2 : endif

    sertxd("MST is ",b0,#b1,":",b2,b3,":",b4,b5,cr,lf )
return
of course my code for changing the UTC to MST (mountain standard time) is artistic and probably way wrong
but it shows the right time


@inglewoodpete okay I guess I don't know how to check how many satilites my gps has locked on
but I am testing your code but with a 20X2 and shouldn't be to hard to change i think


here is a photo of my gps i bought from ebay
 

Attachments

Last edited:

newplumber

Senior Member
I included checksum confirmation in my X2 code due to the occasional data corruption and consequently wrong time indication. The errors may have come from my cheap GPS module: I just don't know the source of the error. It usually locked onto 6 or more satellite signals.
When I run your code I get this on the terminal
Code:
0.78*[$0B]
   Checksum Rec'd=11, Calc'd=33 **Bad pkt**
0.78*[$0B]
   Checksum Rec'd=11, Calc'd=33 **Bad pkt**
Local time is 8:251:10 AM
0.78*[$0B]
   Checksum Rec'd=11, Calc'd=33 **Bad pkt**
0.78*[$0B]
   Checksum Rec'd=0, Calc'd=33 **Bad pkt**
0.78*[$0B]
   Checksum Rec'd=11, Calc'd=33 **Bad pkt**
0.78*[$0B]
   Checksum Rec'd=11, Calc'd=33 **Bad pkt**
0.78*[$0B]
   Checksum Rec'd=11, Calc'd=33 **Bad pkt**
0.78*[$0B]
   Checksum Rec'd=11, Calc'd=33 **Bad pkt**
0.78*[$0B]
   Checksum Rec'd=11, Calc'd=33 **Bad pkt**
Local time is 8:251:20 AM
0.78*[$0B]
   Checksum Rec'd=11, Calc'd=33 **Bad pkt**
0.78*[$0B]
   Checksum Rec'd=11, Calc'd=33 **Bad pkt**
08
$GPGSV
$GPGSV,4847,W,0.20,343.40,220918,,,A*[$78]
   Checksum Rec'd=120, Calc'd=65 **Bad pkt**
I'm in learning mode of whats going on
 

Pongo

Senior Member
thats funny tho that you make it work till 2036....
I started in late 2016 and figured 20 years was enough, DST code failed when it first ran in 2017 and I had to start over :rolleyes:

FWIW

Code:
'PICAXE-20X2
'NEO-6M GPS Module TX Data connected to hserin
'should work with any GPS sending NMEA messages
#picaxe 20x2
#Terminal 38400
'US DST starts second Sunday in March and ends first Sunday in November at 2:00 a.m. local time.
'UTC is ahead of local, so start in UTC is 10:00 AM (no DST) and end is 9:00 AM (DST)

setfreq m32

Symbol LED = C.5
Symbol ptro  = B22 'used for scratchpad pointer
Symbol ptrn  = B23 'used for scratchpad pointer
Symbol ptrp  = B24 'used for scratchpad pointer
Symbol spd   = B25 'var for data from scratchpad
Symbol spd2  = B29 'var for data from scratchpad

Symbol hhu = B26 'hour
Symbol mm = B27 'minute
Symbol ss = B28 'second
Symbol ddu = B30 'day
Symbol mou = B31 'month
Symbol yyu = B32 'year
Symbol tz = B33 'time zone offset
Symbol tadj = B34 'tz offset with or without DST
Symbol hhl = B35 'Local Hour
Symbol ddl = B36 'Local Day
Symbol mol = B37
Symbol yyl = B38 'Local Year
Symbol dstd = B39 'DST Start Day in March
Symbol dstdn = B40 'DST End Day in November
Symbol pme = B41 'prior month end date
Symbol D1 = B42 'code for display digit 1 (leftmost)
Symbol D2 = B43 'code for display digit 2
Symbol D3 = B44 'code for display digit 3
Symbol D4 = B45 'code for display digit 4
Symbol DX = B46 'used in number to code convert

Symbol mdh = W26 'DST Start Day/Hour
Symbol lmdh = W27 'Local Day/Hour
Symbol ww1 = W25 'Temp word variable
Symbol ww2 = W24 'Temp word variable
'Time Zone and DST adjustments are designed for locations West of Greenwich (negative adjustment)
'Pacific Time Zone offset (will be subtracted from UTC)
tz = 8

'Table for number of days in months, starts with last day of December which is rollback date for January.
table 1,(31,31,28,31,30,31,30,31,31,30,31,30)

'Table of US DST start dates (March) from 2016 onwards
table 16, (13,12,11,10,8,14,13,12,10,9,8,14,12,11,9,10,14,13,12,11,10)
'Display setup
Hi2cSETUP  i2cmaster,%11100000, i2cfast_32, i2cbyte
PAUSE 10 ; wait 1 ms for the display chip to initialise
Hi2cOUT ($21) ; start clock
Hi2cOUT ($E2) 'set bright
Hi2cOUT ($A0) ; set all rows on
Hi2cOUT ($80) ; turn off the display
'PAUSE
Hi2cOUT ($81) ; turn on the display
'address increments by 2 for each digit
Hi2cOUT (0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
gosub disptest

'US DST starts at 2AM second Sunday in March (so date will always be >7) and ends 2AM first Sunday in November
'November day is always (March day minus 7) so we only need to store March.

'2016    March 13    November 6
'2017    March 12    November 5
'2018    March 11    November 4
'2019    March 10    November 3
'2020    March 8    November 1
'2021    March 14    November 7
'2022    March 13    November 6
'2023    March 12    November 5
'2024    March 10    November 3
'2025    March 9    November 2
'2026    March 8    November 1
'2027    March 14    November 7
'2028    March 12    November 5
'2029    March 11    November 4
'2030    March 9    November 2
'2031    March 10    November 3
'2032    March 14    November 7
'2033    March 13    November 6
'2034    March 12    November 5
'2035    March 11    November 4
'2036    March 10    November 2

Top:
    hsersetup b19200_32, %00 ' set the serial baud rate
Again:
    ptr = 0
'wait for data $GPRMC message from gps and go to whoops if it doesn't arrive before timeout
    hserin [10000,whoops],0,63,("R")
'check for "MC" (77 67) in scratchpad     
    get 0,spd
    get 1,spd2
    if spd <> 77 OR spd2 <> 67 then Again
    Hi2cOUT (0x04,0x00)
'scan for delimiters and store positions in scratchpad starting @ 100   
    ptrn = 100
    for ptr = 0 to 62
        if @ptr = "," and ptrn < 127 then
            put ptrn,ptr
            ptrn = ptrn + 1
        endif
    next
'get the time/date from scratchpad
get 100,ptrp
gosub getdata
hhu = spd
gosub getdata
mm = spd
gosub getdata
ss = spd
get 108,ptrp
gosub getdata
ddu = spd
gosub getdata
mou = spd
gosub getdata
yyu = spd   
goto dststuff

getdata:
'gets time/date data and converts ASCII to numeric
    ptrp = ptrp + 1
    ptrn = ptrp + 1
    get ptrp, spd
    get ptrn, spd2
    spd = spd - 48
    spd2 = spd2 - 48
    spd = spd * 10 + spd2   
    ptrp = ptrp+1
    return
dststuff:
spd = 0
spd2 = 0
if mou <= 2 OR mou > 11 then 'Dec - Feb always 100% no dst
tadj = tz
goto timefix
endif

if mou > 3 and mou < 11 then 'Apr to Oct always 100% dst
tadj = tz-1
goto timefix
endif
'get the dstdate
yyu=18
readtable yyu,dstd
'March
if mou = 3 and ddu < dstd then 'no dst
tadj = tz
goto timefix
endif   
if mou = 3 and ddu > dstd then 'dst
tadj = tz-1
goto timefix
endif       
if mou = 3 and ddu = dstd and hhu < 10 then 'no dst
tadj = tz
goto timefix
endif   
if mou = 3 and ddu = dstd and hhu >= 10 then 'dst
tadj = tz-1
goto timefix
endif   
'November
dstd = dstd - 7 'dst date in Nov
if mou = 11 and ddu < dstd then 'dst
tadj = tz-1
goto timefix
endif   
if mou = 11 and ddu > dstd then 'no dst
tadj = tz
goto timefix
endif       
if mou = 11 and ddu = dstd and hhu < 9 then 'dst
tadj = tz-1
goto timefix
endif   
if mou = 11 and ddu = dstd and hhu >= 9 then 'no dst
tadj = tz
goto timefix
endif   

timefix: 'adjusts UTC to local standard or daylight time

pause 2000
yyl = yyu 'may change later
mol = mou 'may change later
ddl = ddu 'may change later
'not first day of month   
if ddu <> 1 then
'sertxd ("1 ")
if tadj <= hhu then 'simple case, zone adjustment can be deducted from hour.
'sertxd ("2 ")
hhl = hhu - tadj
else 'but if tadj is > hhu then the zone adjustment will roll back past midnight and we must change the date.
hhl = hhu - tadj + 24
    ddl = ddu - 1
endif

endif
'first day of month
if ddu = 1 then
if tadj <= hhu then 'simple case, zone adjustment can be deducted from hour
hhl = hhu - tadj
ss = 3
else 'but if tadj is > hhu then the zone adjustment will roll back past midnight and we must change the date.
readtable mou,ddl 'get prior month end date into local day
hhl = hhu - tadj + 24
mol = mou - 1   
if mou = 1 then 'Jan has to rollback to December, and year to prior
mol = 12
yyl = yyu - 1
else
if mou = 3 then 'March
spd = yyu%4
if spd <> 0 then 'not a leap year
ddl = 28
endif
if spd = 0 then 'a leap year
ddl = 29
endif
endif   

endif

endif
endif

goto itsdone

itsdone:
DX = hhl/10
gosub getcode
D1 = D4
if D1 = 63 then
    D1 = 0
    endif
DX = hhl//10
gosub getcode
D2 = D4
DX = mm/10
gosub getcode
D3 = D4
DX = mm//10
gosub getcode
Hi2cOUT (0x00,D1, 0x00, D2, 0x00, 0x02, 0x00, D3, 0x00, D4)
Pause 100

Hi2cOUT (0x04,0x02)
If ss < 10 then
sertxd ("UTC ",#hhu,":",#mm,":0",#ss," ",#mou,"-",#ddu,"-",#yyu," PAC ",#hhl,":",#mm,":0",#ss," ",#mol,"-",#ddl,"-",#yyl,CR,LF)   
else
sertxd ("UTC ",#hhu,":",#mm,":",#ss," ",#mou,"-",#ddu,"-",#yyu," PAC ",#hhl,":",#mm,":",#ss," ",#mol,"-",#ddl,"-",#yyl,CR,LF)
endif
goto Again

disptest:  'exercises display while GPS is warming up
For spd2 = 1 to 5
D1 = 1
For spd = 1 to 8
Hi2cOUT (0x00,D1, 0x00, D1, 0x00, 0x00, 0x00, D1, 0x00, D1)
D1 = D1 * 2
pause 300
Hi2cOUT (0x04,0x02) 'flash the colon
pause 300
Hi2cOUT (0x04,0x00)
next
next
Hi2cOUT (0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00) 'blank disp
return

whoops:
    Hi2cOUT (0x00,113, 0x00, 119, 0x00, 0x00, 0x00, 48, 0x00, 56)
    SerTxd ("GPS Data Fail")
     SerTxD (CR, LF)
    Pause 100
    GoTo Again
    
ledflash:
    High LED
        Pause 200
        Low LED
        Pause 200
        Return
getcode:
lookup DX,(63,6,91,79,102,109,125,7,127,111,128,0,2),D4
return
 

inglewoodpete

Senior Member
Apologies to Derek: we seem to have hijacked your thread.
of course my code for changing the UTC to MST (mountain standard time) is artistic and probably way wrong but it shows the right time

@inglewoodpete okay I guess I don't know how to check how many satilites my gps has locked on
but I am testing your code but with a 20X2 and shouldn't be to hard to change i think
The satellite count is in bytes 46 and 47 of the sample GPGGA data packet that I posted:
Code:
'Byte         1         2         3         4         5         6         7         8
'No#:1234567890123456789012345678901234567890123456789012345678901234567890123456789012
'    $GPGGA,235317.000,4003.9039,N,10512.5793,W,1,08,1.6,1577.9,M,-20.7,M,,0000*5Fcl     (cl = <cr><lf>)
You may find that you have to the count comma "," characters to consistently locate the satellite count value.
 
Last edited:

cpedw

Senior Member
I'm content for wideranging discussion to flow from my initial post.

A major attraction for me of MSF is the auto Summer Time adjustment. [Caution possible political content] Now the EU is talking about dispensing with Daylight Saving, that becomes less significant but with Brexit, who knows?

My receiver ran flawlessly for 24 hours after my first post but I think something like the approach of Allycat's watch will be more reliable.

The NPL transmitter is at Anthorn in the Lake District. It is 60kHz ± 2 parts in 10^12 according to the datasheet.

Derek
 

hippy

Technical Support
Staff member
@ Hippy
I tried your code and tried different setfreqs along with terminal baud rates ...but could not get nothing to show on the terminal
' $GPGGA,235317.000,4003.9039,N,10512.5793,W,1,08,1.6,1577.9,M,-20.7,M,,0000*5Fcl (cl = <cr><lf>)
The NMEA datasheet I looked at showed "GPGGA,hhmmss," not "GPGGA,hhmmss.sss," so I guess it could be hitting the "." and then ignoring the packet.

This might work -

Code:
#Picaxe 28X2
#Terminal 9600

Symbol reserveW0 = w0 ; b1:b0
Symbol hour      = b2
Symbol mins      = b3
Symbol secs      = b4

PowerOnReset:
  HSerSetup B9600_8, %001

ConfigureGps:

  ; Configure GPS to send $GPGGA here

MainLoop:
  Do
    Gosub GetTime
    Gosub ShowTime
  Loop

#Macro Want(ch)
  Do : Loop While ptr = hSerPtr
  If @ptrInc <> ch Then GetTime
#EndMacro

#Macro WantDigit
  Do : Loop While ptr = hSerPtr
  b0 = @ptrInc
  If b0 = "." Or b0 = "," Then GotTime
  If b0 < "0" Or b0 > "9" Then GetTime
  hour = hour // 10 * 100 + mins / 10
  mins = mins // 10 * 100 + secs / 10
  secs = secs // 10 * 10  + b0   - "0"
#EndMacro
  
; Extract $GPGGA,hhmmss,...

GetTime:
  Want("$")
  Want("G")
  Want("P")
  Want("G")
  Want("G")
  Want("A")
  Want(",")
  hour = 0
  mins = 0
  secs = 0
  WantDigit ; h
  WantDigit ; h
  WantDigit ; m
  WantDigit ; m
  WantDigit ; s
  WantDigit ; s
GotTime:
  Return

ShowTime:
  BinToAscii hour, b1, b1, b0 : SerTxd( b1, b0, ":"    )
  BinToAscii mins, b1, b1, b0 : SerTxd( b1, b0, ":"    )
  BinToAscii secs, b1, b1, b0 : SerTxd( b1, b0, CR, LF )
  Return
 

tmfkam

Senior Member
My (German) Braun watch will set itself using either the UK or German time signal (MSF or DCF). It defaults to the strongest signal and/or the last used signal, early mornings only.

My (German) Junghans watch uses only the German DCF signal, early mornings only.

My German) LIDL clock uses an unknown time signal, hourly.

My (German) Eurochron clock uses the UK MSF signal, hourly.

Reception of all is reliable. so long as they are not moved from their 'working' positions. The watches in particular need not to be worn on the wrist for reception from either transmitter but given that their aerials must be rather compromised to fit in a tiny case that isn't really any surprise. That they work at all is amazing really.

The Braun watch can indicate what transmitter was last used by moving the second hand to the 3 o'clock (UK), 9 o'clock (German) or 6 o'clock (no reception). The Junghans watch counts the days since reception was made (0 indicates success today, 1=yesterday etc.). The Eurochron clock will sometimes show the correct hour or minute with the other being off by a massive amount, at the next time check, the hands whizz around to the correct time.

Given I have a low powered Medium Wave transmitter running 24/7 to provide my valve radios a signal, it's amazing any of them work at all.
 

hippy

Technical Support
Staff member
My (German) Braun watch will set itself using either the UK or German time signal (MSF or DCF). It defaults to the strongest signal and/or the last used signal, early mornings only.
It seems quite a few clocks in the UK use the German DCF signal rather than UK MSF.

Simple ' subtract an hour from German local time to get UK time' algorithms only work because there is an EU-wide standard for daylight saving . It is going to get interesting if the UK ever moves from that standard as has been proposed.
 
Last edited:

newplumber

Senior Member
I'm content for wideranging discussion to flow from my initial post.
well thats good i didn't mean to add my 2 cents but GPS clocks are the new cool for me

pongo said:
I started in late 2016 and figured 20 years was enough, DST code failed when it first ran in 2017 and I had to start over :rolleyes:
well thats not always fun "starting over" ...but thanks for posting the code

@hippy okay yes it shows perfectly and thanks

inglewoodpete said:
The satellite count is in bytes 46 and 47 of the sample GPGGA data packet that I posted:
okay thanks i will have to look into that....I'll be out of town(working) for a while so hopefully when i get back I'll check to see a number of satellites i'm picking up
 
Top