Goedenavond, -dag of -morgen,
Zo'n goedkoop kwartsklokje met een 1,5V batterijtje, kun je daar een DCF-module aan vastknopen? Heb hier zo'n DCF-module met een ferrietantenne en vier aansluitpunten. Ben benieuwd of daar een trucje voor is bedacht.

Niet echt. De output van zo'n module geeft de gedemoduleerde pulsen (100 of 200 ms) van het dcf signaal. Die pulsen moeten dan gedecodeerd worden naar tijd, daar wordt meestal een microcontroller voor gebruikt.
Er zijn wel kant en klare uurwerkjes met ingebouwde dcf ontvanger te koop.

Dat kan, het uurwerk eruit halen en een DCF uurwerk er in zetten.

Nee, je kunt een bestaand uurwerk niet zomaar 'upgraden' naar DCF door er een dcf ontvanger aan te hangen.

[Bericht gewijzigd door Sine op (46%)]

"Zo'n" kwartsklokje zal waarschijnlijk op een 32768 Hz kristalletje lopen?
En "zo'n" DCF module is te weinig info om iets te kunnen zeggen. Maar ga er maar van uit dat er elektronica tussen die 2 moet komen. Direct aansluiten gaat 'm echt niet worden.

Een gewoon uurwerk heeft geen mogelijkheid om te 'zien' hoe laat het op de klok is...
Dus kan hij ook onmogelijk de klok gelijkzetten met de DCF tijd.

Is ook niet lonend om te maken: een complete DCF klok kost nog geen 6 euro...
https://www.lidl.nl/p/auriol-draadloze-badkamerklok/p100378630002#sear…

Ja Arco heeft wel een punt, niet moeilijker maken dan het is. Voor de prijs van zo een klokje met DCF ontvangst gaan we niet zitten zeuren... Ik had dat ook nog over van een oude klokradio, maar in de praktijk kan je daar weinig mee als je klok niet geschikt is, ik heb het toen maar weg gegooid. Ze verkopen die ontvangers zelfs bij Ali voor een appel en een ei, compleet met klokje erbij.

En synchroniseren met de secondenpuls van DCF gaat ook niet, want DCF zend de 59 ste seconde niet uit.

Ik zal niet linken, maar de "klok pulsgever" op mijn blog doet precies dit, en heeft opties voor de 1 seconde puls, 12 uur uurwerken en lokale tijd die TS vermoedelijk nodig heeft.
Ik heb het niet geprobeerd, maar het moet met een serieweerstandje aan te sluiten zijn op de bestaande electromechanica van een gewoon kwarts klokje.
De microcontroller houd bij waar de wijzers zijn en slaat de positie op als de spanning wegvalt. Op de Sterrewacht lopen er een handvol al een paar jaar zonder problemen, met diverse tijdsoorten .

Gelijkzetten duurt wel lang, reken bij een 1s puls op 12 uur met de algoritmes zoals die nu zijn ingericht voor grotere uurwerken.

Op zaterdag 14 februari 2026 06:10:18 schreef mel:
En synchroniseren met de secondenpuls van DCF gaat ook niet, want DCF zend de 59 ste seconde niet uit.

Dat is het ergste niet. Je moet zowiezo accepteren dat er seconde pulsen ontbreken (niet ontvangen worden). Een DCF klok zal een PLL hebben die afregelt dat zeg de ms teller tussen 998 en 002 staat iedere keer als er een puls binnenkomt. Als dat eenmaal met wat goede ontvangst is ingeregeld, dan blijft dat prima lopen ook al ontbreekt zeg 99% van de pulsen.

Op zaterdag 14 februari 2026 08:30:09 schreef Aart:
...Ik heb het niet geprobeerd, maar het moet met een serieweerstandje aan te sluiten zijn op de bestaande electromechanica van een gewoon kwarts klokje.

Ik weet niet of dat zo eenvoudig gaat.
Ik heb bij de Action een tijd terug zo'n kwartsklok voor twee euro gekocht. De motor (electromagneet) wordt aangestuurd vanuit een H-brug. Beide zijden van de H-brug zijn bijna altijd laag. Afwisselend wordt 20 mS per seconde de ene zijde hoog gestuurd en 20 mS per seconde wordt de andere zijde van de H-brug hoog gestuurd. Zie:


           ---                    ---
           | |                    | |
Rechts ----- ---------------------- ---------------

                       ---                    ---
                       | |                    | |
Links ------------------ ---------------------- ---

Sec         1           2          3           4

Hoe je deze klok met een weerstandje wil synchroniseren zie ik niet.
Ik keek vandaag in de Action en daar hadden ze nog genoeg klokken van het type wat ik had nog steeds voor €1,99 liggen. De goedkoopste bij de kringloop was toch al gauw €5,-
Voor mijn experiment, wat volgens mij toch onhaalbaar is, heb ik mijn klok helemaal gesloopt. De pulsgever/H-brug doet het nog.

Je zou een 32768Hz-oscillator kunnen maken die je PLL't aan de 1 Hz-puls uit de DCF-module. Die oscillator zou dan het klokje voeden in plaats van zijn eigen kristaloscillator.

Dat is de enige wijze die ik zie, maar dan hoef je de 32768Hz oscillator ook niet te bouwen. Dan bouw je 'gewoon' een 1Hz oscillator die je synchroniseert (PLL ) met de secondepuls van de DCF-ontvanger.

Het probleem is dat 'gewone' uurwerkjes niet weten in welke stand de wijzers staan (dat hoeven ze ook niet te weten)
Gelijkzetten via DCF is dan niet te doen...

Het kan wel, maar dan moet je het gewone klokje ombouwen zodat ze de stand van de wijzers doorgeven aan de besturingselectronica met DCF-ontvanger, of je moet zeker weten dat de wijzers geen seconde mist. Dan start je het hele systeem op bijvoorbeeld om 12 uur in de middag met de klok op 12 uur en je telt de aanstuurpulsen van de motor en die vergelijk je met het aantal verstreken secondes volgens de DCF-klok. Loopt het uit de maat, dan onderdruk je 'gewoon' een aantal aanstuurpulsen of je voegt er een paar extra toe.
(Een andere DCF-wijzerklok kopen lijkt me eenvoudiger)

Een DCF-kwarts uurwerkje weet ook de stand van de wijzers niet, het zou enkel de stand van de assen kunnen kennen maar de wijzers zitten daar "los" op. De positie moet na het plaatsen van de wijzers dus ook eenmalig gereset worden, gewoonlijk met alle wijzers op 12 uur.

Noodzakelijk zijn sensoren niet, als een gewoon uurwerk tikken "mist" is het kapot. Bijhouden en bij wegvallen van de voeding wegschrijven naar b.v. flash is voldoende en werkt in mijn praktijk goed.
Maar allicht doen de DCF kwarts uurwerkjes het anders en slaan ze alleen de wijzer offset op omdat ze betrouwbaar moeten werken op een langzaam leeg lopende batterij en daardoor wel tikken zullen missen. Dan is een sensor een logische oplossing. Ik wordt wel nieuwsgierig en zal er eens één demonteren.

Overigens hebben DCF kwarts uurwerkjes zoals ik ze ken aparte motoren voor seconden en minuten om snel op tijd te kunnen komen, zoals ook te zien aan de beweging van de wijzers.

[edit]
@ Ohm phi, dat is precies het soort bipolaire puls die uit mijn DCF klok puls gevers komt.

Die zijn bedoeld voor Duitse en Zwitserse nevenuurwerken en voor hogere spanningen gemaakt, 12 V of 24 V is standaard. Men zou echter dezelfde firmware kunnen draaien in een Arduino zonder H-brug (ik gebruik een opamp) er achter, en de genoemde weerstand in serie om bij 5V naar een gepaste stroom te gaan.
Lastigheid is wel dat het een 'Duino met kristal moet zijn, geen resonator. Bijvoorbeeld een Mega.

Allen bedankt voor de reacties. DCF-klokken van de Lidl doen het idd prima. In het verleden al eens drie Action-klokjes aan elkaar geknoopt als een ZAB123-display. Drie secondewijzers in sync, mooier dan een drievoudige urenwijzer. Upgrade van een kwartsuurwerkje is dus niet appeltje-eitje.
'k Zoek nog even naar de hint van Art.

Intussen was ik zelf ook nieuwsgierig hoe goed dit gaat dus ik heb een klokje gedemonteerd, een nieuwe configuratie gemaakt en het geheel opgebouwd zoals gesuggereerd. Klokje meet 345 Ω, ik koos 680Ω om naar 5V (5 mA) te gaan.

Het werkt, het kristal is goed genoeg voor de DCF library, maar niet helemaal goed - als de USB er uit wordt getrokken is er ondanks 1000 µF extra op de 5V schijnbaar niet genoeg tijd om de wijzer positie op te slaan in flash. Allicht morgen wat beter naar die Mega kijken, ik ken ze niet zo goed.
Het loopt op zich keurig, ik koos 40 ms puls breedte en 200 ms als kortste pauze bij het gelijkzetten.

En dan is de volgende uitdaging zomer en wintertijd automatisch in de zelfbouw integreren.
Een van de voordelen van zo'n DCF klok.

Op zaterdag 14 februari 2026 22:20:32 schreef revado:
En dan is de volgende uitdaging zomer en wintertijd automatisch in de zelfbouw integreren.
Een van de voordelen van zo'n DCF klok.

Kun je ook simpel in software berekenen of het WT of ZT is... ;)

Waarom zou je het moeten uitrekenen als het al in het DCF-signaal zit?
Bij de overgang van zomertijd naar wintertijd zet je de klok 23 uur + nog een beetje vooruit en bij overgang van wintertijd naar zomertijd zet je de klok 1 uur + nog een beetje vooruit.

[Bericht gewijzigd door ohm pi op (57%)]

O, dit begint steeds leuker te worden..! Dank je wel Aart, voor het vervolg. Ik ben benieuwd wat er nog komt.
Groet, Dirk

Wat er vermoedelijk mis gaat is dat ik het wegvallen van de voedingsspanning detecteer met de adc, maar als de te detecteren spanning direct de µC voeding en daarmee op die 'Duino's de default analoge referentie is dan werkt dat natuurlijk niet :+
Bij het ontwikkelen ging ik vrij snel naar eigen hardware, ik heb het niet eerder getest op Arduino's.

De tijd is vandaag beperkt. Maar overstappen op de interne referentie in combinatie met een spanningsdeler lost het allicht op. Omdat ik eerst dacht aan een reset probleem stapte ik intussen wel naar een Micro (32U4).

De firmware kent naast siderische tijd en UTC locale tijd met zomertijd/wintertijd (feitelijk tijd zoals DCF deze uitzend) of enkel zomertijd. De laatste heeft een historische reden, 100 jaar geleden was het bezwaarlijk dat uurwerk twee maal per jaar te verzetten.
Deze zijn allemaal in gebruik en intussen behoorlijk getest.

Op zaterdag 14 februari 2026 22:34:28 schreef ohm pi:
Waarom zou je het moeten uitrekenen als het al in het DCF-signaal zit?

DCF ontvangst wil wel eens een of meerdere dagen gestoord raken, als dat tijdens de omschakeling gebeurt gaat dat even mis.
(dan is het prettig als de klok ook autonoom kan werken en zelfstandig voor ZT/WT kiest, was bij ons een vereiste)...
Daarbij is het een kleine moeite om die paar regels code extra in te bakken...

Het lijkt hier met de interne referentie goed te werken op een Arduino Pro Micro.
Onderstaande een ZIP met daarin de aangepaste en geconfigureerde code.

Pin-out staat in de file: kwarts_12h_seconds_LT.h
Behalve aansluiten van uurwerk, ontvanger en indicatie-led zijn er een 1000 µF elco over de 5V en een spanningsdeler 15kΩ boven 10 kΩ op A0 naar de +5V nodig.

Als de wijzers van de klok met de hand versteld kunnen worden is opstarten eenvoudig: Zet de klok op 0:00:00 en laad de firmware. Maak eventueel eerst de EEPROM nog leeg met het voorbeeld. De rood/groende led laat 1:1 de DCF ontvangst zien. Bij rood is nog geen tijd bekend, bij groen wel. Als het 12:00 is en de led is groen dan gaat de klok lopen. Als de spanning wegvalt wordt de wijzer positie opgeslagen, als hij weer terug komt gaat de klok vanzelf weer gelijk lopen. Het trekt hier 50 mA bij 5V, niet veel maar ook niet geschikt voor batterijen.
De DCF moet bestaan uit korte pulsen, is het signaal geïnverteerd dan de overeenkomstige instelling in de .h file aanpassen.

Verdere documentatie als aangegeven op mijn blog. Ik kan er helaas geen support op geven. Er zitten heel veel complicaties en configuraties in de code die TS niet nodig heeft, maar dit project aanpassen is eenvoudiger als iets nieuws schrijven. De functie welke Arco noemt zit er niet in.
Als ik het opnieuw moest schrijven zou ik het anders doen, maar alle tijdsoorten, uurwerken en overgangen testen kost in de praktijk weer een jaar.

TS bedankt voor de inspiratie dat kwarts uurwerkjes inwendig niets anders zijn dan nevenuurwerken met een seconde impuls. Daar heb ik wat aan en zal ik gebruiken in een volgend project voor de Sterrewacht :)

DST (EU/USA) en weekday code in MikroBasic...


module RTCC

Const MonthVal       As Byte[12] = (0,3,3,6,1,4,6,2,5,0,3,5) 'For weekday calc
Const DST_NONE       = 0  'No DST
      DST_EU         = 1  'European DST
      DST_USA        = 2  'American DST

Const DstParm As Byte[16] = (31, 5,31, 2, 3,10, 2, 3,       'EU settings
                             14, 2, 7, 2, 3,11, 2, 2)       'USA settings

Dim RtccFlags        As Word 
      fDst           As sBit At RtccFlags.0
      fDstChanged    As sBit At RtccFlags.1
      DstState       As Word
      OldDstState    As Word
      TimeZone       As Word

Dim   TS          As TimeStruct
      OldTS       As TimeStruct

'==============================================================================
Sub Procedure SetWeekDay()
'==============================================================================
  TS.wd = ((TS.yy-2000)+ (((TS.yy-2000)div 4) Mod 7) + MonthVal[TS.mo-1] + 6 + TS.md) mod 7
End Sub

'==============================================================================
Sub Function Is_DST(Dim pZone As Word) As Word              'Tests if it's DST
'==============================================================================
  Dim lBegin, lEnd, lZone As Word     DSTState = 0
  '--------------------------------------------------------------------------
  If pZone Then
    lZone = (pZone - 1) << 3
    Result = fDst
    lBegin = (((5*TS.yy) div 4)-(TS.yy div 100)+(TS.yy div 400)) Mod 7
    lEnd   = DstParm[lZone+2] - (lBegin+DstParm[lZone+3]) Mod 7
    lBegin = DstParm[lZone+0] - (lBegin+DstParm[lZone+1]) Mod 7
    '------------------------------------------------------------------------
    If (TS.mo <= DstParm[lZone+4]) Or (TS.mo >= DstParm[lZone+5]) Then
      If ((TS.mo = DstParm[lZone+4]) And (TS.md < lBegin)) Or
         ((TS.mo = DstParm[lZone+5]) And (TS.md > lEnd)) Or
         ((TS.mo = DstParm[lZone+4]) And (TS.md = lBegin) And 
          (TS.hh < DstParm[lZone+6])) Or
         ((TS.mo = DstParm[lZone+5]) And (TS.md = lEnd) And 
          (TS.hh >= DstParm[lZone+7])) Then
        DSTState = 1
      End If
    End If
    If (TS.mo >= DstParm[lZone+4]) Or (TS.Mo <= DstParm[lZone+5]) Then
      If ((TS.mo = DstParm[lZone+4]) And (TS.md > lBegin)) Or
         ((TS.mo = DstParm[lZone+5]) And (TS.md < lEnd)) Or
         ((TS.mo = DstParm[lZone+4]) And (TS.md = lBegin) And 
          (TS.hh >= DstParm[lZone+6])) Or
         ((TS.mo = DstParm[lZone+5]) And (TS.md = lEnd) And 
          (TS.hh < DstParm[lZone+7]-1)) Then
        DSTState = 2
      End If
    End If
    If DSTState = 0 Then
      If (TS.mo >= DstParm[lZone+4]) And (TS.mo <= DstParm[lZone+5]) Then DSTState = 2 Else DSTState = 1 End If
    End If
    If DstState = 2 Then fDst = 1 End If
    If DstState = 1 Then fDst = 0 End If

    If OldDSTState <>  DSTState Then
      fDstChanged = 1
      OldDSTState = DSTState
    Else
      fDstChanged = 0
    End If
  End If
End Sub