Forum: Mikrocontroller und Digitale Elektronik DCF77 library


von Ryan P. (ryanpolster)


Lesenswert?

Grüß euch :)
Hat jemand vielleicht eine funktionierende DCF77 library bei der Hand 
die er mir zukommen lassen könnte und würde :)

Möchte die Zeit dann auf einem LCD anzeigen lassen.
Danke schon mal im Vorraus. :)

von mon (Gast)


Lesenswert?


von Ryan P. (ryanpolster)


Lesenswert?

Ich möchte keinen Wecker, eine "World Clock" oder einen Heliostat.

Einfach nur eine ganz normale Anzeige der Uhrzeit auf einem LCD in 
folgendem Format:

Uhrzeit: hh:mm
Datum: dd.mm.yyyy

Dafür eine Library, welche mir die Minuten, Stunden, etc.. in Variablen 
speichert.

Es wäre ja möglich, sogar sehr wahrscheinlich, dass jemand vor mir auf 
diese Idee gekommen ist. ^^

Würde mir echt viel helfen, weil ich langsam unter Zeitdruck stehe :S

von Karl H. (kbuchegg)


Lesenswert?

Ryan Polster schrieb:
> Ich möchte keinen Wecker, eine "World Clock" oder einen Heliostat.
>

Und was hindert dich jetzt daran, dir die Projekte durchzusehen und in 
jeweiligen Projekt den DCF Teil auszubauen?

Der ist normalerweise sowieso nur in einer FUnktion enthalten, die zb 
von einem Timer INterrupt regelmässig aufgerufen wird. D.h. was du 
brauchst ist die ISR (bzw. die Funktionalität in der ISR) und die Timer 
INitialisierung.

Timer haben aber die unangenehme Eigenschaft, dass sie in jedem Projekt 
anders vergeben bzw. benutzt werden. D.h. für den Teil mit dem Timer 
wirst du dich nach deinem bereits vorhandenem Code richten müssen und 
überlegen zu welchem Timer du die DCF Funktionalität dazupacken kannst.

Und der Rest ist der Code in der ISR, der die Zeitanalyse des Signals 
macht und die Bits da rauspfriemelt. Wahrlich nichts aufregendes. Wenn 
du um 16 Uhr angefangen hättest, wärst du schon längst fertig.


> Würde mir echt viel helfen, weil ich langsam unter Zeitdruck stehe :S

Dann hau rein.
Immerhin ist das DEINE Matura, die dir eigentlich bescheinigt, dass du 
einen Beruf erlernt hast, dir in 3 Jahren das Recht gibt den Titel 
'Ing.' zu führen und dir Zugang zur Hochschule verschafft.

: Bearbeitet durch User
von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

es gibt hier irgendwo DCF77-Decodier-Routinen von mir, die stammen aus 
meiner Anfangszeit mit uC, die würd ich eher nicht nehmen :-(

Dagegen gibt es hier irgendwo (mags jetzt nicht raussuchen) einnen Code 
vom Peter Danegger, der ist genial (wie alles vom Peter)

von Gerald B. (gerald_b)


Lesenswert?

Guckst du hier: 
http://blog.blinkenlight.net/experiments/dcf77/dcf77-library/
runterscrollen, Examples und Download

Gruß Gerald

von mon (Gast)


Lesenswert?

Ryan Polster schrieb:
> Ich möchte keinen Wecker, eine "World Clock" oder einen Heliostat.
>
> Einfach nur eine ganz normale Anzeige der Uhrzeit auf einem LCD in
> folgendem Format:
>
> Uhrzeit: hh:mm
> Datum: dd.mm.yyyy
>
> Dafür eine Library, welche mir die Minuten, Stunden, etc.. in Variablen
> speichert.
>
> Es wäre ja möglich, sogar sehr wahrscheinlich, dass jemand vor mir auf
> diese Idee gekommen ist. ^^
>

Entschuldigung, daß ich mit DCF77-Projekten helfen wollte. Ich konnte 
doch nicht ahnen, daß der Herr alles fix und fertig auf dem 
Silbertablett präsentiert haben möchte. Darf es auch ein programmierter 
Controller sein? Oder vielleicht noch eine Platine dazu? Ach, und löten 
sollte man sie auch noch. Sag bitte, welche Farbe das LCD haben soll, 
damit ich auch das richtige Display kaufe. Vielleicht noch ein Gehäuse 
gefällig?
[sarkasmus aus]

> [..] weil ich langsam unter Zeitdruck stehe :S
Keinen Finger selber krumm machen, aber die Leute, die helfen sollen, 
noch antreiben. Da kommt mir langsam die Galle hoch.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Gerald B. schrieb:

> http://blog.blinkenlight.net/experiments/dcf77/dcf77-library/

Keine Ahnung was das Teil alles kann, aber 2700++ lines of code für 
DCF77-Empfang ist schon heftig...

Mein (schlecher) Code kommt mit 180 zeilen aus, und Peters (den ich 
gefunden habe: Beitrag "DCF77 Uhr in C mit ATtiny26" ) mit nochmal 
dramatisch kleiner...

von Max H. (hartl192)


Lesenswert?

Wie wär's damit: http://pic-projekte.de/wordpress/?p=572#more-572
Auf der Seite ganz Oben ist auch noch ein Link zu einem Projekt, wo 
unter anderem die Uhrzeit und Datum auf einem LCD ausgegeben wird:
http://pic-projekte.de/wordpress/?p=19

: Bearbeitet durch User
von Mike (Gast)


Lesenswert?

Langsam wird die Frage aktuell, für welchen Prozessor es denn sein darf.

Obwohl - wenn alles fertig im Gehäuse sitzt, kommt es darauf eigentlich 
nicht an ;-)

Michael Reinelt schrieb:
> Gerald B. schrieb:
>
>> http://blog.blinkenlight.net/experiments/dcf77/dcf77-library/
>
> Keine Ahnung was das Teil alles kann, aber 2700++ lines of code für
> DCF77-Empfang ist schon heftig...

Was hindert dich daran, dich mal ein bisschen in die verwendete 
Signalauswertung einzulesen, bevor du über die Codelänge herziehst. Lies 
dir z.B. einfach mal die Sache mit dem Korrelator zur Phasendetektion 
durch. Vielleicht begreifst du dann eher, woher die Codelänge kommt.

von Ryan P. (ryanpolster)


Lesenswert?

Ich danke für die schnellen Antworten. :)
Ich werde mich mit dem ganzen Code außereinandersetzen und melde mich 
falls ich Fragen habe.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Mike schrieb:
> Was hindert dich daran, dich mal ein bisschen in die verwendete
> Signalauswertung einzulesen, bevor du über die Codelänge herziehst. Lies
> dir z.B. einfach mal die Sache mit dem Korrelator zur Phasendetektion
> durch. Vielleicht begreifst du dann eher, woher die Codelänge kommt.

Hey, ich bin nicht "darüber hergezogen". ich habe lediglich festgestellt 
dass der Code im Vergleich zu anderen DCF77-Implementierungen doch 
ziemlich umfangreich ist, und wollte wissen warum. Du hast das mit der 
Phasendetektion eh beantwortet.

Nur interessehalber: was braucht das Teil am Ram und Flash?

von Ryan P. (ryanpolster)


Lesenswert?

Hallo Leute :)

Ich verwende jetzt die DCF-Library 
http://pic-projekte.de/wordpress/?p=572#more-572 von Nicolas Meyertöns.
Habe alle Schritte die in der Erklärung aufgelistet sind gemacht, nur 
kommen bei mir trotzdem nur irgendwelche Zeichen raus.

Wenn ich das richtig verstanden habe soll ich einen Timer machen der 
alle 1ms tickt und den Zustand des DCF-Pins abfragt. (F_CPU = 1000000)
1
void Timer_Initialize(void)
2
{
3
  TCCR1B = (1<<WGM12);          // enter CTC-mode
4
  TCCR1B |= (1<<CS10);          // set prescaler to 1
5
  //OCR1A = 31250;              // compare value = 31250 (counts to "create" a second)
6
  OCR1A = 1000;              // compare value = 1000 (counts to "create" a millisecond)
7
  TIMSK = (1<<OCIE1A);          // enable compare interrupt
8
}
9
10
ISR(TIMER1_COMPA_vect)
11
{
12
  checkDCF = true;
13
}

und in die while-Schleife der main Funktion kommt die Funktion 
dcf_check()

Letztendlich greife ich dann über die time-Struktur darauf zu, sprich:
time.Min oder time.Year

ich habe mir dazu einen Funktion geschaffen welche mit Variablen auf den 
LCD druckt.
1
void lcd_putvar(uint8_t variable)
2
{
3
  uint8_t var_lenght;
4
  if(variable == time.Year)  var_lenght=4;
5
  else            var_lenght=2;
6
  
7
  char c[var_lenght];
8
  itoa(variable,c,10);
9
  uint8_t i;
10
  
11
  for(i=0;i<var_lenght;i++)
12
  {
13
    lcd_putc(c[i]);
14
  }
15
  
16
}

Ausgabe sieht dann so aus:
lcd_putvar(time.Min);

Ich bitte um Hilfe.

von Ryan P. (ryanpolster)


Lesenswert?

So die Library ist richtig konfiguriert.

Jetzt muss es an der Hardware liegen. Muss ich hier noch irgendetwas 
vorschalten oder so bevor ich in den Mikrocontroller gehe?

Hier ein Link zum Datenblatt des Empfängers:
http://www.neuhold-elektronik.at/datenblatt/N0955.pdf

von Gerald B. (gerald_b)


Lesenswert?

PON statisch auf Masse legen bringt nix! Du brauchst eine fallende 
Flanke. Controller arbeitet ebenfalls mit 3,3V oder kommt mit dem 
Eingangspegel klar, oder es hängt ein Levelshifter dazwischen?
Eventuell muß das empfangene Signal invertiert werden?
Ist das Empfangsmodul weit weg von allen Störquellen, wie 
Schaltnetzteilen etc.? Ist die 3,3V Ub sauber? Wenn die zu stark 
rauscht, empfängst du nichts.

von Ryan P. (ryanpolster)


Lesenswert?

ok dann lege ich PON auf den µC und per Software liefere ich die 
fallende Flanke.

Bei mir bekommt er im Moment 3,1V durch einen Spannungsteiler mit 3k3 & 
2k2 von 5,18V. Die Eingangsspannung kommt von einem Netzteil - einfach 
abgeschnitten und Krokos draufgelötet.

Habs auf dem Schreibtisch und auf dem Fensterbrett im Erdgeschoss 
getestet - beides erfolglos.

Ob die Spannung rauscht weiß ich leider nicht.
Weißt du welche Zusatzbeschaltung nötig ist damit ein "schönes" Signal 
zum µC kommt?

von Ryan P. (ryanpolster)


Lesenswert?

Ich habe den PON-Pin des DCF-Empfängers auf PC6 des µC geschlossen und 
folgendes im Programm hinzugefügt:

im Header:
#define DCF77_PON PC6

im Hauptprogramm:
PORTC |= (1<<DCF77_PON);
PORTC &= ~(1<<DCF77_PON);

damit gebe ich ihm doch eine fallende Flanke - oder?

Ich habe diese Schaltung in einem Forum gefunden von jemandem mit einem 
ähnlichen Problem wie meinem:
http://www.mikrocontroller.net/attachment/90257/Reichelt-DCF77.GIF

Kann ich die verwenden?
Und was sind Elkos und Kerkos? Kerkos sind höchstwahrscheinlich 
Keramik-Kondensatoren aber ich weiß nicht was ein Elko ist.
Welcher Transistor ist das?
Letztendlich würde mich noch interessieren was die zwei Kondensatoren 
voneinander unterscheidet?

Wenn sich jemand findet der mir diese Fragen beantworten kann wäre ich 
sehr dankbar :)

von Ryan P. (ryanpolster)


Lesenswert?

ok, die Dinge waren schnell gegoogelt. Punkt an euch ^^

Hab die Schaltung jetzt aufgebaut, geht aber noch nicht.

von Ryan P. (ryanpolster)


Lesenswert?

Seine fallende Flanke bekommt er.
Das Signal ist sauber.
Library funktioniert angeblich.

Woran kann es noch liegen?
Ich brauche dringend eure Hilfe.

von Ryan P. (ryanpolster)


Lesenswert?

Jetzt habe ich eine Low-Current LED mit DATA verbunden und die Kathode 
gegen Masse. Die blinkt im Sekundentakt. Also habe ich offensichtlich 
Empfang. Es muss also an der Library oder an meiner (DCF)DATA-->(µC)PC7 
Schaltung liegen.

Ich habe folgende Schaltung verwendet:
http://www.mikrocontroller.net/attachment/90257/Reichelt-DCF77.GIF

oder wäre eine von diesen besser geeignet?
http://www.mikrocontroller.net/mc-project/Pages/Projekte/Funkuhr/dcf77.GIF

http://www.google.at/imgres?imgurl=http%3A%2F%2Fwww.mikrocontroller.net%2Fattachment%2F113620%2FPollin_DCF.png&imgrefurl=http%3A%2F%2Fwww.mikrocontroller.net%2Ftopic%2F97295&h=560&w=843&tbnid=iYGN3uBbNrrTvM%3A&zoom=1&docid=LLcgKa9R-P1aMM&ei=8mlWU9usN4XJ4ATA7oGgAQ&tbm=isch&ved=0CHgQMygaMBo&iact=rc&uact=3&dur=1005&page=2&start=15&ndsp=21

letztendlich noch eine Frage: kennt jemand eine funktionierende 
DCF-Library?

Ich danke schonmal im Vorraus :)

von holger (Gast)


Lesenswert?

>Jetzt habe ich eine Low-Current LED mit DATA verbunden und die Kathode
>gegen Masse. Die blinkt im Sekundentakt. Also habe ich offensichtlich
>Empfang.

Sehr schön. Die machst du besser gleich wieder ab weil
dein Modul nur 5uA liefern kann.

von Ryan P. (ryanpolster)


Angehängte Dateien:

Lesenswert?

Ich hatte sie ohnehin nur zum Testen des Empfangs.
Ich werde evtl. eine LED an einen anderen Portpin hängen und das Signal 
dorthin übertragen, falls ich den Empfang "sehen" möchte.

Kann jemand der mehr Erfahrung hat als ich mal durch die oben 
eingebundene Library sehen und diese auf Richtigkeit prüfen?
Ich finde den Fehler leider nicht, aber ich weiß dass er in der Lib 
steckt.

: Bearbeitet durch User
von Ryan P. (ryanpolster)


Lesenswert?

Hallo erstmal an alle :)

Ich habe jetzt Ulrich Radigs Lib auf meinem mega16. Mein Problem ist 
nun, dass mein LCD nichts mehr anzeigt sobald ich auf INT0 etwas anlege, 
in diesem Fall der DCF-Datenpin. Weiß jemand woran das liegen kann?

Falls sich jemand meinem Problem widmet kann ich gerne die hierfür 
erforderlichen Dateien anhängen.

need help :/

von Ryan P. (ryanpolster)


Lesenswert?

auch wenn ich jetzt das DCF-Modul ablöte, wird nichts mehr angezeigt :/

von Karl H. (kbuchegg)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.