Digitale DCF77 klok met LCD en gong

Altijd de juiste tijd en datum met DCF77

Dit project maakt gebruik van een PIC16F628(A) en de kant en klare DCF77 ontvanger van Conrad (Bestelnr. 64 11 38)

Optioneel kan daar nog een elektronische gong bij worden gebouwd.
Klik voor informatie over DCF77 op onderstaande link:

De werking van het DCF77 tijd signaal

Op PORTB.0 (pin 6) wordt de uitgang van de DCF77 module aangesloten.
De pull-up weerstand die volgens het bij de module meegeleverde schemaatje geplaatst zou moeten worden is niet nodig omdat de inwendige pull-up van PORTB.0 ingeschakeld is.

Op PORTA.1 (pin 18) is er elke seconde een puls van 0,5 seconde.
Dit signaal hoeft nergens voor te worden gebruikt, maar misschien wil je er een LED op aansluiten, zodat deze elke seconde blinkt, of een buzzer (piezo zoemer), zodat de klok ook nog eens tikt als een analoge klok.

De zomertijd wordt kenbaar gemaakt op PORTA.0 (pin 17) en is hoog gedurende de zomertijd.
Voor de LCD's 2x20 en 2x24 is het mogelijk een W dan wel een Z af te beelden voor winter/zomertijd.

PORTA.6 (pin 15) moet worden verbonden aan +5V voor 24 uurs notatie en als voor 12 uurs notatie (AM/PM) wordt gekozen moet deze pin met GND worden verbonden.

Gebruik een HD44780 (of compatible) voor het LC-Display.
Er zijn .HEX bestanden voor meerdere LCD formaten te downloaden.




Bij het inschakelen van de spanning wacht de PIC tot het een signaal krijgt van de DCF77 ontvanger.


Als het zoeken langer dan 45 seconden duurt volgt de melding "Geen signaal".
De PIC blijft echter zoeken totdat er weer een behoorlijk tijdssignaal ontvangen wordt.


Is er een signaal gevonden dan wordt naar het begin van een minuut gezocht, dit duurt maximaal 1 minuut.
De tijdsbalk geeft de verstreken tijd aan.
Is de hele tijdsbalk vol, dan is de startseconde niet gevonden en volgt weer de melding "Geen signaal".


Nadat de startseconde is gevonden worden de bits gevuld met de tijd en datum.
Dit duurt precies één minuut.
Als de hele tijdsbalk vol is, zijn alle bits voorzien van de actuele tijd en datum.


Vanaf dan kan de dag, tijd en datum worden afgelezen.


Als PORTA.6 (pin 15) met GND wordt verbonden dan staat de klok in 12 uurs (AM/PM) notatie.
De W staat voor Wintertijd (Z voor Zomertijd).
Er is zowel een .HEX bestand met W / Z aanduiding als een .HEX bestand zonder deze aanduiding te downloaden.


Mocht de ontvangst slecht zijn of de zender uitvallen, volgt ook weer de melding "Geen signaal".
De PIC blijft echter proberen om de actuele tijd weer terug te vinden als de ontvangst weer goed is.


De basis
Om alleen de tijd en datum van een LCD af te lezen zonder poespas kan de schakeling volgens schema 1 worden gebouwd.
Met P1 is het contrast van de LCD in te stellen.


Schema 1

Let er op dat de DCF77 module (ontvanger) niet dicht bij een draaiende computer in de buurt staat want dat stoort op de ontvangst, dus ook een afstand van minimaal 1 meter van de PIC houden.
Ook een lichtdimmer in huis kan flink op de DCF77 ontvangst storen.

Een afgeschermde kabel is niet per se nodig, maar zorg er wel voor dat er aan de zijde van de DCF77 module een serieweerstand van 100Ω en daarna een (tantaal) condensator van 4µ7 over de voeding wordt geplaatst (zie schema's).
Neem als het mogelijk is een 4-aderig kabel, er zijn er voor DCF77 maar drie nodig maar in een ander project wordt er gebruik gemaakt van de vierde ader om de buitentemperatuur te meten met een DS1820 sensor.

Er zijn twee uitgangen op de DCF77 module, de ene is direct, de andere geïnverteerd, gebruik de aansluiting naast de +.
De 4e ader (blauw) wordt inmiddels gebruikt voor een DS1820 temperatuursensor (meting buitentemperatuur).
 

Programma
DCF77 is vrij simpel.
Elke seconde (behalve seconde 59) komt er een pulsje binnen.
Voor een 0 duurt die puls 0,1 seconde en voor een 1 duurt het 0,2 seconden.

Om het begin van een nieuwe minuut te detecteren wordt er de 59e seconde niets uitgezonden.
Het programma meet tussen de pulsjes door en als blijkt dat er één langer dan 1 seconde over doet (geen puls uitgezonden dus), dan is de aankomende puls de allereerste bit van een nieuwe bitserie.
Vanaf dan worden alle bitjes opnieuw ingevuld voor een nieuwe minuut.
Steeds als op de 59e seconde geen signaalverandering wordt ondergaan (DCF77 protocol), zorgt het programma er zelf voor dat de 59 op het secondegedeelte van het LCD verschijnt (zie DCF77 info).

Let op, alles wordt in BCD uitgezonden.

De uren hebben een nulonderdrukking, dat betekent dat bijv. 8 uur 's morgens niet als 08:00:00 maar als 8:00:00 wordt weergegeven.

Het programma maakt gebruik van de drie uitgezonden DCF77 pariteitbits (zie DCF77 pariteit info).


Gong
Een aardigheidje is een gong die elk half- en heel uur klinkt.
Hiervoor is gebruik gemaakt van geluidsgenerator IC SAE800 van Siemens.
Dit IC is de opvolger van de oude SAB0600.
Voor degene die nog een SAB0600, SAB0601 of SAB0602 thuis heeft liggen, is er een speciaal schema en PIC programma (alleen met 2x16 LCD).

Schema en programma met een SAB0600, SAB0601 of SAB0602

Op de hele uren klinkt een 3-tonige gong en op de halve uren een 2-tonige gong.
Om de gong te laten klinken wordt de SAE800 verbonden met PORTA.2 (pin 1) en PORTA.3 (pin 2) van de PIC.
Beide poorten geven elk heel uur een kort pulsje en PORTA.3 ook op de halve uren.
Natuurlijk kunnen deze pulsen ook voor wat anders dan een gong worden gebruikt.
Als het donker is, wordt het volume van de gong automatisch zachter gezet, voor de nachtrust van met name huisdieren.
Hóe zacht de gong klinkt is afhankelijk van R3.
Als de LDR in de kamer (bij de klok) zelf wordt geplaatst zal de gong 's avonds pas zachter gaan als de mensen naar bed gaan (de schemerlampen worden uitgezet).

Als niet van deze automatische volumeregeling gebruik wordt gemaakt dan moet PORTA.7 met +5V worden verbonden en kunnen LDR, P4 en R2 vervallen, R3 moet 18k worden en PORTA.4 (pin 3) open worden gelaten (zie schema 2).


Schema 2


Afregelen
Door PORTB.1 (pin 7) met GND te verbinden voordat er spanning op de schakeling wordt gezet, kom je in testmode 1 en kan het LDR met P4 ingesteld worden, hoe donker het moet zijn voordat de gong zachter gaat klinken.

Testmode 1

Wacht tot het schemerig wordt en draai dan net zo lang aan P4 totdat de LED, aangesloten op PORTA.1 (in normale mode de zomertijd aanduiding) uit gaat.

Door PORTB.1 (pin 7) met GND te verbinden nadat er spanning op de schakeling is gezet, kom je in testmode 2 en zal de gong elke minuut een 3-tonig signaal geven, zodat met P2 de toonhoogte en met P3 het volume afgeregeld kunnen worden.
Door de LDR af te dekken (donker te maken, vinger er op leggen) kan tevens worden getest of de gong zachter gaat klinken.

Na afregeling moet PORTB.1 (pin 7) gewoon open worden gelaten (interne pull-up).

Wie niets wil afregelen en de aanbevolen waarden wil overnemen kan de potmeters vervangen door gewone weerstanden:
- vervang P2 door een weerstand van 12k
- vervang P3 door een weerstand van 18k
- vervang P4 door een weerstand van 1M (dan moet het tamelijk donker zijn)
Dit zijn natuurlijk richtwaarden die afhankelijk zijn van de gebruikte componenten en luidspreker.
Een luidspreker uit bijvoorbeeld een oude transistorradio voldoet zolang deze een impedantie heeft van 8 tot 16Ω.

Controleren
Om te controleren of de klok op de seconde gelijk loopt kan er elk heel uur geluisterd worden naar het tijdssein van het nieuws van Radio 1.
Veel andere zenders nemen het niet zo nauw met de 'pips' en zit het tijdssein vaak in een jingle gemixt die handmatig wordt gestart, onnauwkeurig dus.
Let er wel op dat Radio 1 "uit de lucht" wordt ontvangen en niet via satelliet, anders lijkt het of de eigengebouwde DCF77 klok vóór loopt, maar in werkelijkheid is Radio 1 dan te lang onderweg, dus te laat.

Een andere mogelijkheid is het te vergelijken met een ander DCF77 uurwerk met secondewijzer.
Of gebruik de klok van de website van PTB, zie onderaan een link, een snelle internet verbinding is dan wel nodig, anders loopt de klok van PTB achter en/of onregelmatig.


Downloads
.HEX bestanden om in een PIC16F628(A) te programmeren.
Gebruik een LC-Display met een HD44780 chip (of compatible).
Download het .HEX bestand dat bij je LCD formaat hoort.

Download DCF16NLA voor LCD 1x16: 24 sep '09 12:00
Download DCF16NLB voor LCD 1x16: 24 sep  12:00:00
Download DCF16NLE voor LCD 1x16: 24 sep '09 12:00 < Voor display 1x16 dat inwendig een 2x8 is
Download DCF16NLF voor LCD 1x16: 24 sep  12:00:00 < Voor display 1x16 dat inwendig een 2x8 is
Download DCF16NLC voor LCD 2x16: Donderdag  12:00
24 september '09
Download DCF16NLD voor LCD 2x16: Do      12:00:00
24 september '09
 
Download DCF20NLA voor LCD 1x20: Do 24 sep '09  12:00
Download DCF20NLB voor LCD 1x20: 24 sep '09  12:00:00
Download DCF20NLC voor LCD 2x20: Donderdag   12:00:00
24 september 2009
Download DCF20NLD voor LCD 2x20: Donderdag   12:00:00
24 september 2009  W
W / Z = winter/zomertijd
 
Download DCF24NLA voor LCD 1x24: 24 september 2009  12:00
Download DCF24NLB voor LCD 1x24: Do 24 sep 2009  12:00:00
Download DCF24NLC voor LCD 2x24: Donderdag       12:00:00
24 september 2009
Download DCF24NLD voor LCD 2x24: Donderdag       12:00:00
24 september 2009    *W*
W / Z = winter/zomertijd

Download DCF16NLD_V-2.bas, de broncode voor PIC Basic
Download schema als PDF bestand
De werking van het DCF77 tijd signaal
www.ptb.de Controleer de DCF77 klok op de seconde nauwkeurig (Duitstalig)   *zie tekst
Datasheet SAE800.pdf
Datasheet HD44780.pdf LCD (Liquid Crystal Display)
Bestel geprogrammeerde PIC