Arduino met DCF77 ontvanger

Als onderdeel van Retromaand ben ik al jaren bezig met De Klok. Er wordt op het internet al een tijdje gewerkt met de Arduino en een externe (Conrad) DCF77 ontvanger, maar er valt nog behoorlijk wat te verbeteren. Ik heb sinds een tijdje zowel een Arduino als een DCF77-ontvanger gereedliggen voor het betere experimenteerwerk. Let the games begin!

De DCF77-ontvanger geeft iedere seconde een puls die informatie bevat: een lange puls is een ‘één’, een korte puls een ‘nul’. Op de volle minuut is er geen puls. In de pulsen zit het uur, de minuten, seconden, zomer- en wintertijd en nog meer. In totaal zijn er 59 informatiepulsen en iedere minuut wordt de informatie herhaald.

Het is mijn plan om gebruik te maken van de Arduino interrupt mogelijkheden. Met behulp van dat interrupt wil ik dan gaan bijhouden, bij welke puls we zijn en of de puls een één is of een nul.

De DCF77 module heeft een open collector uitgang, zie het als een elektronische schakelaar. Da’s leuk als je een lampje in het ritme van seconden wilt schakelen, maar niet handig voor de Arduino die echte énen en nullen wil. Ik gebruik een 27k weerstand als pullup (die had ik toevallig liggen, 10k was misschien beter geweest). Mini breadboardje, enkele draadbruggen en off I go. Ik heb de signaaluitgang van de module aangesloten op Arduino pin 2, één van de twee interrupt ingangen.

Op de voorgrond zie je het 4 x 20 serieel display, dan links de Arduino met erop een breadboard-uitbreiding en in het midden bovenin het kleine printplaatje van de DCF77 ontvangermodule, herkenbaar aan de blauwe printkroonsteen. De zwarte ferrietantenne met rode windingen eromheen hangt er op de achtergrond los bij. Op het breadboardje zie je verder nog een 74hct00, een quad 2-input nand gate, die ik als inverter gebruik voor het serieel LCD. En verder steekt er nog een LM35 van een vorig experiment uit, die de temperatuuraanduiding op het display mogelijk maakt.

dscf8654

De source vindt je hier.

3 Comments

Frank Mathysjanuari 18th, 2009 at 12:01

Hi,

mooi projectje, waar heb je de Arduino sketch staan op je website, ik ga ook aan zoiets beginnen, vandaar.

Mvgr,

Frank

rudijanuari 18th, 2009 at 16:32

Hoi Frank,

ik heb de link naar de source in het artikel toegevoegd, gelijk onder de foto. Ik hoop dat je er wat aan hebt. Succes!

Groet,

Rudi

Johanoktober 8th, 2009 at 17:55

Ik heb deze code ook met succes op mijn Arduino gezet en aangepast voor een parallele LCD.

Maar zoals in de code ook staat, een sensor uitlezen terwijl er de hele tijd interrupts binnenkomen werkt niet goed.
Is er ook een manier om DCF alleen te gebruiken om 1x in het etmaal te syncen en dan de klok via een RTC of millis te laten lopen?
Ik wil nl. een digitale temp/rel vochtigheid sensor uitlezen en een relais aansturen. DCF is handig maar op continu syncen op dat signaal houdt de Arduino gewoon teveel bezig…