Binäre DCF77 Uhr mit exponentiellem Filter und Blinkenlighty

[Nachtrag zum Pollin-DCF-Modul]
Also mein Pollin-Modul funktioniert auch noch, ich konnte es inzwischen testen. Das Modul verhält sich jedoch insbesondere bei Störungen des DCF-Empfangs komplett anders als das Conrad-Modul. Mein Problem mit der Inbetriebnahme gestern abend hängt offenbar damit zusammen: Das Pollin-Modul liefert bei sehr starken Empfangsstörungen überhaupt kein Signal mehr am Ausgang! Da ich gestern abend einen zeitweise gestörten Empfang hatte, konnte ich es daher nicht im Betrieb nehmen, keine Ahnung ob zwischen Frankfurt und S-H gestern abend ein Gewitter das DCF-Signal beeinträchtigt hat.

Jedenfalls scheint das Pollin-Modul bereits einen eigenen Signal-Filter eingebaut zu haben, denn durch schwache Empfangsstörungen läßt es sich (im Gegensatz zum Conrad-Modul) überhaupt nicht aus dem Tritt bringen.

Meine Störungssimulation:
Eine eingeschaltete Energiesparlampe, die ich mehr oder weniger nah an die Empfangsschaltung stelle.

Keine Störungen:
Pollin-Modul: keine Störungen
Conrad-Modul: keine Störungen

Schwache Störungen:
Pollin-Modul: keine Störungen
Conrad-Modul: schwache Störungen

Mittelstarke Störungen:
Pollin-Modul: keine Störungen
Conrad-Modul: mittelstarke Störungen

Extrem starke Störungen:
Pollin-Modul: keine Signal am Ausgang mehr vorhanden
Conrad-Modul: extrem starke Störungen

In einem ganz kleinen Bereich zwischen "mittelstarke Störungen" und "extrem starke Störungen" liefert das Pollin-Modul noch kurzfristig ein wirres Gezappel am Signalausgang, mit dem aber auch Dein Filter nichts mehr anfangen kann. Dann ist das Pollin-Modul tot, kein auswertbares DCF-Signal, dann bleibt der Ausgang auf LOW.

Also ist mein Fazit:

Das Pollin DCF-Modul hat einen eigenen Störfilter eingebaut, der Störungen in gewissem Maße herausfiltert und für ein einwandfreies Signal sorgt. Werden die Störungen aber zu groß, geht der Ausgang am Pollin-Modul auf "Wahnsinns-Gezappel" (nur in einem kleinen Bereich) oder "ständig LOW" (Normalfall) und gibt gar kein Signal mehr aus. Eine Filterung mit Deinem Filter bringt überhaupt nichts, auch nicht in dem kleinen "Wahnsinns-Gezappel" Bereich, das ist dann bereits vollständig Datenmüll.

Das Conrad DCF-Modul liefert Empfangsstörungen mit einem ziemlichen Gezappel am Signalausgang weiter. Dieses Gezappel am Signalausgang des Conrad-Moduls läßt sich mit Deinem Filter sehr gut auf ein einwandfreies DCF-Signal filtern. Und das auch noch in einem Bereich an Störungen, in dem das Pollin-Modul schon nichts mehr liefert.

Also: Dein Filter bringt beim Pollin-Modul angewendet gar nichts. Aber "Dein Filter plus Conrad-Modul" liefert super-gute Ergebnisse, und auch noch bei einem so hohen Störpegel ein einwandfreies Signal, bei dem das Pollin-Modul schon längst aus dem Empfang ausgestiegen ist. Also Dein Filter ist besser als der im Pollin-Modul eingebaute Filter, und liefert mit dem Conrad-Modul hier bei mir die besten Empfangsergebnisse in stark gestörter Umgebung.

Also auch ich habe sehnsüchtig auf den Filter gewartet, da auch mich Empfangsprobleme plagen.

Sobald es meine Zeit zuläßt werde ich den Filter zusammen mit meinem Reichelt Modul testen.

Hallo,
also ich hab auch noch ein Pollin Modul welches ich jetzt mal angeschlossen habe.
Kann aber noch nichts mit der Ausgabe anfangen
was bedeutet denn beispielsweise das:
Cycle, Pulse: 977, 411 X
Cycle, Pulse: 560, 390 X
Cycle, Pulse: 538, 966 X
Cycle, Pulse: 1659, 1207 X
Cycle, Pulse: 1357, 1927 X
Cycle, Pulse: 2075, 410 X m
Cycle, Pulse: 560, 350 X
Cycle, Pulse: 497, 430 X
Cycle, Pulse: 580, 351 X
Cycle, Pulse: 499, 2840 X
Cycle, Pulse: 3416, 5157 X m

maverick1509:
Kann aber noch nichts mit der Ausgabe anfangen
was bedeutet denn beispielsweise das:
Cycle, Pulse: 977, 411 X
Cycle, Pulse: 560, 390 X
Cycle, Pulse: 538, 966 X
Cycle, Pulse: 1659, 1207 X
Cycle, Pulse: 1357, 1927 X
Cycle, Pulse: 2075, 410 X m
Cycle, Pulse: 560, 350 X
Cycle, Pulse: 497, 430 X
Cycle, Pulse: 580, 351 X
Cycle, Pulse: 499, 2840 X
Cycle, Pulse: 3416, 5157 X m

Das bedeutet, dass es mit DCF-Empfang Essig ist.

Das DCF-Funkprotololl besteht pro Minute aus 59 Sekundenimpulsen mit einer Zyklendauer von einer Sekunde (Cycle 1000 ms) und darin enthaltenen Bit-Pulsen von 100 oder 200 ms Dauer.

Bei einem perfekten Empfang mit einem perfekten Modul in einer perfekten Welt sähe der Empfang bei 59 Sekunden in der Minute so aus:
Cycle, Pulse: 1000, 100 .
Cycle, Pulse: 1000, 200 X
Cycle, Pulse: 1000, 100 .
Cycle, Pulse: 1000, 100 .

Also immer Zyklendauer 1000 ms und Impulse von 100 oder 200 ms. Punkt steht für 0-Bit und X für 1-Bit.

In der Praxis siehst Du das natürlich NIE!
Aber solange die Zyklendauer "in der Nähe von 1000" ist und die Impulse immer schwischen 50 und 250ms liegen, ist der Empfang wohl OK.

Und der sechzigste Impuls ist der Minutenimpuls, der ist doppelt so lang, weil kein Bit-Impuls gesendet wird.

Was Du da oben zeigst, sieht nach einem sehr gestörten Empfang aus.

DCF-Empfang wird übrigens durch alle möglichen elektrischen Geräte gestört, als da wären Computer, Monitor, Steckernetzgeräte, Energiesparlampen etc.

Also wenn Dein Arduino-Board nur mit dem kurzen USB-Kabel am Computer angeschlossen ist, das mit dem Board mitgeliefert wurde, wirst Du damit nicht aus dem Störnebel von PC und Monitor rauskommen. Probier mal mit einer 3m USB-Verlängerung und lege das DCF-Modul beim Testen mindestens 2m weg von PC, Monitor und anderen elektrischen Gerätschaften.

Hallo,
Also bei mir sieht es mit Filter genauso aus Cycle und Puls irgend ein wirrwarr.
Aber ohne Filter, also Sketch aus Beispieldatei, läuft ohne probleme.
DCF Modul ist von ELV.
gruß bello12

jurs:
Und der sechzigste Impuls ist der Minutenimpuls, der ist doppelt so lang, weil kein Bit-Impuls gesendet wird.

Soviel ich weiß fehlt der Impuls für die 59.Sekunde und der erste Impuls nacher (Minutenimpuls) ist immer 0,1Sekunde lang.
http://www.ptb.de/cms/fileadmin/internet/fachabteilungen/abteilung_4/4.4_zeit_und_frequenz/4.42/dcf77.pdf Seite 8.
Grüße Uwe

bello12:
Also bei mir sieht es mit Filter genauso aus Cycle und Puls irgend ein wirrwarr.
Aber ohne Filter, also Sketch aus Beispieldatei, läuft ohne probleme.

Ich hab's ja kommen sehen, als ich mir das alles durchgelesen habe: Alles wunderbar kommentiert mit dem Filter, aber es sind keine ausführlichen Hinweise zur Schaltung dabei. Und wer nicht versteht, wie es läuft, hat eine mehr als 50%-Chance, es falsch zu machen.

Steht aber alles im Quelltext:

const uint8_t dcf77_sample_pin = 19; // A5
const uint8_t dcf77_analog_sample_pin = 5;

Der "Sample Pin" ist derjenige, auf dem die Samples von der DCF-Uhr eingelesen werden.
Das DCF-Modul gehört bei diesem Sketch an den Analog A5 Pin.

const uint8_t filtered_dcf77_pin = 2;
Der "Filtered Pin" ist in dem Fall ein "Hilfs-Pin", der unbeschaltet bleibt!

Tatsächlich wird dieser Pin im Sketch sogar als OUTPUT deklariert:

pinMode(filtered_dcf77_pin, OUTPUT);

An Pin2 wird bei dem Filter-Sketch nichts angeschlossen, sondern an dem Pin wird das gefilterte Signal AUSGEGEBEN, so dass die DCF-Library von dort das gefilterte Signal bekommen kann, SO ALS OB dort ein DCF-Modul angeschlossen wäre!

Das hat Udo so gemacht, weil ihr dann eine unveränderte DCF-Library verwenden könnt und er das Filter nicht in eine veränderte Library einbauen musste, sondern damit er das Filter in den Sketch packen konnte.

Also achtet bitte mal drauf, was ihr wo angeschlossen habt!

Wer wirre Eingangswerte bekommt, der holt sich die Eingangswerte wahrscheinlich vom offenen und unbeschalteten A5 Eingang ab. Und damit kann kein Filter was anfangen.

@jurs: erst mal besten Dank für Deine detailierte Analyse.

Was das Polling Modul vs. Conrad Modul angeht. Vermutlich (ich kann es nicht überprüfen) hat das Pollin Modul einen Tiefpassfilter am Ausgang. Beliebt sind 20Hz Tiefpassfilter. Und wenn da nicht viel sehr viel Mühe reinging, dann sind die Grenzfrequenz und die Filtersteilheit eher Pi mal Daumen bestimmt. Das reicht bei gutem Empfang ja auch und man muß keinen Mikrocontroller für die digitale Filterung spendieren.

Das Conrad Modul hingegen hat laut Datenblatt 300Hz Bandbreite. Deshalb muß es zappeliger sein. Als Konsequenz davon hat man dann aber überhaupt die Möglichkeit die Filterung selber zu erledigen und den Filter dann optimal zu rechnen. Da ich nur das Conrad Modul hier habe dachte ich, die anderen billigen Module verzichten (aus Kostengründen) auch auf den Tiefpass. Dem ist aber offensichtlich nicht so. --> Meine Konstruktion funktioniert zwangsläufig besser mit dem scheinbar schlechteren Modul von Conrad.

So hab das Modul einfach mal über Nacht dran gelassen (mit 1,5m Kabel neben dem Rechner ans Fenster gestellt).
Heute Morgen zeigt es mir die korrekte Zeit und das Datum an.
Zumindest funktioniert das Pollin Modul.

Cycle, Pulse: 998, 92 .
Cycle, Pulse: 1000, 90 .
Cycle, Pulse: 997, 90 .

DCF sync good
5.12.2012 07:38:00
5.12.2012 07:38:01

Gruß
Bernward

Hi, ist eigentlich keine Schreibfaulheit, versprochen! Ich bin über Hackaday.com auf Deinen Thread gekommen, und den Artikel gab es erst heute.
Auf jeden Fall ein nettes Projekt, das mich sehr interessiert, weil bei mir von drei DCF77-Uhren zwei einfach nicht funktionieren. Und es ist etwas frustrierend, dass sie keinerlei Auskunft darüber geben, wieso nicht. Eine Empfangsanzeige (db) wäre für den Zweck nicht schlecht. Vielleicht kann man mit Deiner Lösung die Signalqualität in der jeweiligen Ecke ermitteln, wo die nicht funktionierenden Uhren stehen und eine bessere Position / Ausrichtung finden.

Hallo zusammen,
ich verfolge das hier und finde es vielversprechend.

Ich hatte da vor langer zeit mal eine Idee, die so wie ich meine sicher sehr interessant wäre für viele.
Oft hört man das Bastler eine Uhr machen wollen und Probleme mit der Zeit haben.
"Brauch ich eine RTC"
"Wo bekomme ich die Zeit her" (Netz, DCF77, GPS)
Meine Idee war ein Shield mit einem kleinen Mikrocontroller und einer RTC und einem Anschluss und Platz für ein DCF77 Modul.
Der Mikrocontroller wertet das DCF77-Signal aus (mit diesem Filter vielleicht :sunglasses: ) und schreibt diese Zeit in die RTC.
Über I2C oder so kann dann der Arduino einfach die Zeit abfragen mit vielleicht noch ein paar Bits in denen steht
woher denn jetzt die Zeit kommt (also war der Sync erfolgreich?)

Fände ich zumindest Praktisch.
Leider bin ich noch nicht weit genug um so was um zu setzen.
Vielleicht versuche ich das doch nochmal an zu gehen

Was ich nicht ganz verstehe, warum haben die Module (Pollin, Conrad....) so eine große Ferritantenne
und einen relativ schlechten Empfang.
Jeder Funkwecker von Aldi, Lidl oder wie auch immer für 10€ kann das besser, und mit viel geringerer Baugröße.
Warum?

Wie versprochen mein Update zum Nutzen in Verbindung mit dem Reichelt DCF77 Modul.

Der praktische Nutzen ist hier eher gering, da auch dieses Modul offensichtlich eine sehr starke Vorfilterung macht.
Spikes auf dem Signal habe ich praktisch gar nicht, allerdings ist die Bandbreite der gültigen Pulsbreiten extrem groß.

Laut Datenblatt
0: 100 +30 -60 ms
1: 200 +30 -60 ms

Dies zu ergründen hat mir dieser Versuch auf jeden Fall schon mal geholfen.
Jetzt muß ich wohl eine Anpassung der DCF77 Lib für das Reichelt-Modul machen, damit diese Pulse auch korrekt verarbeitet werden.

Des weiteren ist der direkte Anschluß am Analogpin suboptimal, da der Eingangswiderstand beim Sampling offenbar für das Modul zu klein ist und der Spannungshub somit recht klein ist. (Der Analogeingang liest Werte um 800 und 1000 für Low und High.)

Zum Schluß noch herzlichen Dank für diese gute Arbeit, die mich zumindest in der Theorie deutlich weitergebracht hat, und mir sicherlich an anderer Stelle noch helfen kann.

@maverick: das Conrad Modul hat keinen schlechten Empfang. Es hat eine große Bandrbreite und nimmt deshalb Störungen stärker auf. Das ist normal. Die von Dir genannten Wecker haben keinen besseren Empfang als das Conrad Modul, wie kommst Du zu der Annahme, daß dem so wäre? Was sie haben ist ein Tiefpassfilter und eine sehr simple "Fehlererkennung". Ich bekomme mit dem Conrad Modul und dem Prototyp jedenfalls bessere Ergebnisse als mit den genannten Weckern.

@klik: beim Blinkenlighty hängt auf dem Pin noch eine LED, deshalb ist der Analogeingang in meinem Fall die Beste Lösung. Wenn er bei Dir unbelastet ist, dann ist digitales Auswerten auf jeden Fall besser.

[quote author=Udo Klein link=topic=135153.msg1020382#msg1020382 date=1354664834]
Was das Polling Modul vs. Conrad Modul angeht. Vermutlich (ich kann es nicht überprüfen) hat das Pollin Modul einen Tiefpassfilter am Ausgang. Beliebt sind 20Hz Tiefpassfilter. Und wenn da nicht viel sehr viel Mühe reinging, dann sind die Grenzfrequenz und die Filtersteilheit eher Pi mal Daumen bestimmt. Das reicht bei gutem Empfang ja auch und man muß keinen Mikrocontroller für die digitale Filterung spendieren.[/quote]

Ich tüftele mal an einem DCF-Modul-Vergleichsprogramm, mit dem man zwei DCF-Module an zwei verschiedenen Pins gleichzeitig betreiben kann und die Software wertet die Unterschiede der beiden Module aus. Ich muß mal schauen, wie das am besten ausgewertet und dargestellt werden kann.

Bei ersten Versuchen in diese Richtung sieht es jedenfalls danach aus, als wenn ich es nicht aufrecht erhalten kann, dass das Pollin-Modul bei nur mäßigen Störungen gar kein Gezappel am Ausgang liefert. Es hat bei mäßigen Störungen nur weniger Gezappel am Ausgang als das Conrad-Modul. Was aber bestehen bleibt: Beim Conrad-Modul zappelt es um so mehr am Ausgang, je mehr Störungen auftreten, und das Pollin-Modul stellt sich einfach tot und läßt den Ausgang auf Ground, wenn die Störungen zu groß werden.

Das DCF-Modul-Vergleichsprogramm kann ich dann sicher auch leicht um Deinen Filter erweitern, dann kann man statt zwei DCF-Module einfach das ungefilterte und das gefilterte Signal direkt miteinander vergleichen. Mal schauen, da fällt mir bestimmt noch was ein.

[quote author=Udo Klein link=topic=135153.msg1020382#msg1020382 date=1354664834]
Das Conrad Modul hingegen hat laut Datenblatt "300Hz Bandbreite". Deshalb muß es zappeliger sein. [/quote]

Ich glaube, da liegt ein Irrtum vor. Die Angabe von "300Hz Bandbreite" bei so einem Modul bezieht sich mit Sicherheit nicht auf den Ausgang, sondern auf die Bandbreite des Eingangs. Im Datenblatt des Conrad-Moduls konnte ich dazu gar nichts finden, im Datenblatt des Pollin-Moduls wird es völlig klar:

  • Empfangsfrequenz KHz typisch 77,5
  • Frequenztoleranz (Antenne) Hz Minimal -300 Maximal +300
    Das ist einfach die Frequenzabstimmung des Eingangskreises aus Ferritantenne und Kondensator.
    Empfangsbereich des Moduls von 77,2 bis 77,8 KHz Empfangsfrequenz (77,5 KHz +/-300 Hz)

Hmmm, bei Gelegenheit schaue ich mal per FFT nach wie hoch die Bandbreite denn jetzt wirklich ist. Ich hatte jedenfalls irgendwo in einem Datenblatt dazu was von 300Hz Bandbreite gelesen. Ich finde das nur nicht mehr. Die Wahrheit zeigt am Ende aber sowieso nur eine Messung.

Klar, daß ein digitaler Ausgang keine "Bandbreite" hat. Die Frage ist aber wie denn das Signal intern aufbereitet wird. Beim C Modul vermutlich nur per Trigger und bei den Pollins per RC + Trigger. So zumindest meine Vermutung. Wenn die Vermutung stimmt, dann muß das C Modul zappeliger sein.

Sag bescheid wenn Du vor mir was rauskriegst.

So ich habe hier mal eine erste Version meines DCF-Modul-Testprogramms am Laufen.
Direkter Vergleich Pollin vs. Conrad DCF-Modul.

Die Auswertung erfolgt "traditionell", also zu kurze (<50 ms) Impulse werden verworfen, Impulse von 50...150 ms als 0-Bit und Impulse von 150...250 ms als 1-Bit interpretiert.

Anbei die Datenausgabe, normalerweise je Modul eine Zeile pro Sekunde.
Anbei 61 Sekunden Auswertung, von einem Minuten-Sync zum nächsten Minuten-Sync.

Erklärung der sechs Spalten wie folgt:

  1. Spalte: P/C
    Impuls vom Pollin oder Conrad DCF-Modul

  2. Spalte: 0/1
    Impuls wurde als 0-Bit oder 1-Bit decodiert

  3. Spalte: Millisekunden des gültigen Impulses
    Traditionelle Auswertung, 50...150 ms bei 0-Bit, 150...250 ms bei 1-Bit

  4. Spalte: Anzahl der zu kurzen Impulse zwischen zwei gültigen Impulsen
    Kurze Impulse unter 50 ms werden verworfen, die Zahl der verworfenen Impulse aufaddiert
    und als Summe hier angezeigt, wenn der nächste gültige Impuls als Zeile ausgegeben wird

  5. Spalte: millis()-Timer von Arduino beim Beenden des Impulses, nur die letzten 5 Stellen angezeigt
    Die beiden ersten Ziffern der fünfstelligen Zahl kann man als Sekundenwerte interpretieren

  6. Spalte: SYNC
    Falls länger als 1500 ms kein gültiger Impuls empfangen wurde, wird beim Anzeigen
    des nächsten gültigen Impulses SYNC angezeigt. Normalerweise sollte das nur beim
    Minutenimpuls alle 60 Sekunden passieren. Wenn es "Zwischendurch" passiert, dann
    ist aufgrund von Empfangsstörungen ein Impuls bei der Auswertung verlorgengegangen.
    (In diesem Fall nicht, Störlevel gering)

Also
P/C 0/1 xxx yy millis() SYNC
mit xxx= Dauer des gültigen Impulses
yy= Anzahl der verworfenen zu kurzen Impulse vor diesem gültigen Impuls
millis()= die letzten fünf Stellen des millis()-Timers
SYNC= Falls 1500ms lang vorher kein gültiger Impuls empfangen wurde

P 0 108   0  79416 SYNC
C 0 150   5  79464 SYNC
P 1 212   0  80522 
C 1 213   1  80544 
P 0 107   0  81417 
C 0 118   2  81438 
P 0 103   0  82415 
C 0 130   2  82458 
P 1 209   0  83517 
C 1 241   1  83558 
P 0 110   0  84416 
C 0 142   1  84457 
P 0 116   0  85426 
C 0 114   1  85438 
P 1 203   0  86514 
C 1 207   2  86535 
P 1 204   0  87517 
C 1 236   7  87560 
P 0 111   0  88418 
C 0 120   2  88440 
P 0 103   0  89415 
C 0 114   5  89443 
P 1 209   0  90516 
C 1 205   2  90529 
P 0 101   0  91413 
C 0  83  10  91424 
P 0 102   0  92412 
C 0 116   1  92437 
P 0 107   0  93415 
C 0 112   2  93433 
P 0 108   0  94417 
C 0 120   1  94435 
P 0 115   0  95421 
C 0 126   5  95448 
P 0 107   0  96418 
C 0 125   1  96455 
P 1 212   0  97521 
C 1 241   2  97568 
P 0 105   0  98413 
C 0 149   2  98469 
P 1 215   0  99520 
C 1 249   1  99555 
P 0 112   0    419 
C 0 131   5    458 
P 0 103   0   1409 
C 0 143   2   1454 
P 1 206   0   2515 
C 1 221   4   2537 
P 0 108   0   3419 
C 0 112   2   3440 
P 1 211   0   4519 
C 1 215   2   4532 
P 0 107   0   5412 
C 0 108   6   5425 
P 1 210   0   6521 
C 1 230   1   6569 
P 1 210   0   7515 
C 1 243   1   7555 
P 1 208   0   8517 
C 1 213   3   8535 
P 0 113   0   9420 
C 0 114   2   9429 
P 0 111   0  10419 
C 0 134   0  10448 
P 1 206   0  11514 
C 1 219   3  11543 
P 1 207   0  12518 
C 1 225   3  12546 
P 0 112   0  13419 
C 0 115   3  13444 
P 1 206   0  14514 
C 1 198   3  14527 
P 1 216   0  15523 
C 1 227   3  15546 
P 0 104   0  16415 
C 0 138   1  16459 
P 1 207   0  17514 
C 1 215   0  17534 
P 0 103   0  18412 
C 0  93   0  18421 
P 0 103   0  19412 
C 0 104   3  19438 
P 0 107   0  20417 
C 0 102   3  20439 
P 1 206   0  21517 
C 1 218   2  21544 
P 1 204   0  22513 
C 1 233   4  22555 
P 0 106   0  23414 
C 0 123   2  23448 
P 0 116   0  24419 
C 0 121   2  24430 
P 1 213   0  25517 
C 1 244   0  25557 
P 0 109   0  26415 
C 0 116   3  26436 
P 0 109   0  27415 
C 0 150   1  27466 
P 1 207   0  28514 
C 1 239   6  28552 
P 0 108   0  29417 
C 0 142   1  29472 
P 1 205   0  30516 
C 1 227   1  30540 
P 0 101   0  31412 
C 0 136   9  31458 
P 0 109   0  32414 
C 0 123   2  32444 
P 1 210   0  33516 
C 1 216   4  33534 
P 0 107   0  34413 
C 0 129   2  34452 
P 0 106   0  35414 
C 0 112   1  35431 
P 0 107   0  36412 
C 0 134   7  36451 
P 0 109   0  37419 
C 0 121   3  37443 
P 0 110   0  39418 SYNC
C 0 129   2  39461 SYNC

Drei Dinge kann man an der Auswertung sehr schön sehen:

  1. Das Conrad-Modul hinkt immer etwas hinterher!

Wenn das Pollin-Modul seinen Impuls bereits als "fertig eingelesen" anzeigt, braucht das Conrad-Modul immer noch ca. 10 bis 50 ms extra, bevor der Pegel denselben Status annimmt.

  1. Die Conrad-Impulse sind im Schnitt länger als die Impulse des Pollin-Moduls!

  2. Bei geringen Störpegeln wie zum Zeitpunkt dieser Auswertung liefert das Pollin-Modul noch ein völlig fehlerfreies Ausgangssignal. Die vierte Spalte mit der Anzahl der verworfenen zu kurzen Impulse zwischen zwei ausgewerteten Impulsen ist beim Pollin-Modul hier immer bei 0, während das Conrad-Modul da meist eine einstellige Zahl von Fehlimpulsen als Störzappler am Ausgang stehen hat.

Bei Gelegenheit werde ich das Programm nochmal um Deinen Filter erweitern und etwas allgemeiner halten, so dass man nicht nur zwei verschiedene Module gegeneinander testen kann, sondern auch beim selben Modul den ungefilterten gegen den gefilterten Ausgang darstellen kann.

Merkwürdig. Wenn das C Modul ungefiltert wäre sollte es vor dem Pollin Modul anschlagen. Kannst Du die Modulanschlüsse mal vertauschen und schauen ob das C Modul immer noch hintendran ist?

Anbei mal ein Datenauszug einer Minute, wo ich mitten in der Minute die Anschlüsse Pin2 und Pin3 der beiden Module am Arduino-Board vertauscht habe.

A 0 107   0  18886 SYNC
B 0 124   3  18916 SYNC
A 0 112   0  19890 
B 0 128   4  19916 
A 0 117   0  20893 
B 0 131   5  20920 
A 1 208   0  21986 
B 1 212   2  22001 
A 0 107   0  22883 
B 0 112   0  22907 
A 0 103   0  23883 
B 0 134   1  23913 
A 1 205   0  24986 
B 1 222   2  25031 
A 0 103   0  25884 
B 0 113   2  25909 
A 1 204   0  26983 
B 1 197   3  26990 
A 0 108   0  27888 
A 0 100   0  28881 
B 0 118  24  28908 SYNC
A 0 112   0  29887 
B 0 117   3  29917 
A 1 212   0  30988 
B 1 204   1  30991 
A 0 102   0  31883 
B 0 118   8  31910 
A 1 208   0  32985 
A 0 105   0  33887 
A 0 104   0  34884 
B 0 123  19  34913 SYNC
A 0 113   0  35887 
B 1 229   1  36007 
A 1 202   0  36986 
B 1 212   4  37010 
A 0 105   0  37883 
B 0 114   2  37903 
A 1 202   0  38984 
B 1 234   1  39028 
A 1 210   0  39987 
B 1 218   2  40007 
A 0 101   0  40882 
B 0  94   5  40898 
A 0 115   0  41895 
B 0 126   1  41931 
A 0 111   0  42888 
B 0 101   2  42896 
A 1 210   0  43991 
B 1 241   1  44029 
A 0 110   0  44887 
B 0 130   2  44938 
A 0 108   0  45884 
B 0 144   2  45933 
A 0 112   0  46888 
B 0 128   4  46910 
A 1 207   0  47989 
A 1 205   0  48984 
A 1 207   0  49985 
A 0 100   0  50880 
B 0  77   3  52853 SYNC
B 1 205   1  53983 
B 0 110   0  54888 
B 1 211   0  55988 
B 1 201   0  56982 
A 1 209   0  57004 SYNC
B 0 106   0  57883 
A 0 121   0  57908 
B 0 106   0  58883 
A 0 107   0  58895 
B 0 103   0  59885 
A 0  97   0  59897 
B 0 107   0  60884 
A 0 122   0  60911 
B 0 108   0  61885 
A 0 125   0  61919 
B 1 203   0  62984 
A 1 204   0  62995 
B 0 109   0  63883 
A 0 144   0  63931 
B 1 209   0  64986 
A 1 205   0  64996 
B 0 102   0  65883 
A 0 109   0  65896 
B 0 103   0  66880 
A 0 124   0  66913 
B 1 209   0  67988 
A 1 207   1  68006 
B 0 111   0  68886 
A 0 113   0  68897 
B 1 202   0  69984 
A 1 193   0  69992 
B 0 107   0  70886 
A 0  94   0  70895 
B 0 112   0  71890 
A 0 120   0  71914 
B 1 208   0  72983 
A 0  93   0  73671 SYNC
B 0 105   0  73882 
A 1 158   1  73932 
B 0 102   0  74881 
A 0 104   6  74905 
B 0 107   0  75883 
A 0 117   2  75908 
B 1 202   0  76984 
A 1 210   0  77008 
B 0 111   0  78889 SYNC
A 0 134   0  78919 SYNC

18xxx ... 46xxx => A=Pollin, B=Conrad
47xxx ... 57xxx => 10 Sekunden für das händische Umstecken der Arduino-Anschlüsse
58xxx ... 78xxx => A=Conrad, B=Pollin

Das ist schon so: Die Conrad-Impulse dauern im Schnitt länger und sie sind später zuende als die Pollin-Pulse. Das kann natürlich auch an der Beschaltung liegen.

Das Pollin-Modul betreibe ich nur an 3.3V vom Uno-Board, da es laut Spezifikation nur bis max 3.5 V betrieben werden soll. Das Conrad-Modul hängt an 5 V mit einem 10K PullUp-Widerstand.
Pegel des Pollin-Moduls also 3.3 V und Pegel des Conrad-Moduls 5 V am Arduino-Eingang.

Jedenfalls bei dieser Beschaltung produziert das Conrad-Modul bei leichten Empfangsstörungen schon kurze Störimpulse am Ausgang, bei einem Störpegel, bei dem das Pollin-Modul noch völlig fehlerfreie Impulse am Ausgang liefert. In Sekunde 28xxx, 34xxx und 73xxx hat das Conrad-Modul sogar je einen Empfangsfehler (die Empfangsfehler während ich die Module umgesteckt habe außen vor).

Trotz des bei leichten Empfangsstörungen besseren Ausgangssignals scheint das Pollin-Modul keinen Filter eingebaut zu haben, der extra Zeit benötigt, sondern im Gegenteil: Beim Durchgang durch das Conrad-Modul scheint das Signal eher ein paar mehr Millisekunden extra zu benötigen als beim Durchgang durch das Pollin-Modul.

Ich bohre mein Testprogramm nochmal ein bisschen weiter auf, es fehlt noch

  • Erkennung gedrehter Bits (wenn beide Module verschiedene Bits in derselben Sekunde auswerten)
  • Möglichkeit zum Testen mit Deinem Filter gegen ein ungefiltertes Signal

Noch ein beobachteter Unterschied zwischen Pollin- und Conrad-Modul: Unterschiedliche Zeit bis zur Impuls-Synchronisation nach einer Störung. Wenn ich mal durch Einschalten einer Energiesparlampe in 60 cm Entfernung von den Antennen eine plötzlich auftretende, starke Empfangsstörung simuliere, dann verhalten sich die Module wie folgt:

  • Pollin: Der Impuls kommt noch einige Sekunden lang normal, danach gar nichts mehr
  • Conrad: Impulse am Ausgang werden sofort zappelig, wenn die starke Störung kommt

Beim Abschalten der starken Störung beobachte ich folgendes Verhalten:

  • Pollin: Es dauert nach dem Entfernen der Störung ca. 15 Sekunden, bis wieder Impulse kommen
  • Conrad: Sofort nach dem Entfernen der Störung wieder normale Impulsausgabe

Es sieht für mich so aus, als wenn das Conrad-Modul am Ausgang genau das anzeigt, was gerade empfangen wird. Das Ausgangssignal wird nur vom gerade aktuellen Eingangssignal beeinflußt.

Und das Pollin-Modul scheint einen Speicher zu haben, mit Hilfe dessen das Timing vergangener Impulse mit dazu herangezogen wird, um den aktuellen Impuls zu bewerten und auf den Ausgang zu geben. D.h. die Flankenanstiege vor 1, 2, 3, 4, 5 etc. Sekunden führen jeweils eine Sekunde später auch unmittelbar zum Flankenanstieg am Ausgang, wenn ein Flankenanstieg empfangen wird. Und das Modul muß dann quasi anhand des Signals nur noch entscheiden, ob die Flanke nach 100 oder 200 ms wieder runtergeht. Der Start des Signals wird dagegen nicht nur direkt vom aktuellen Empfang gesteuert, sondern auch vom Empfang 1, 2, 3, 4, 5 Sekunden davor, rein über eine Fortschreibung des Timings, wann der Impuls in den Sekunden davor anfing.

@jurs: Könntest Du evtl. Dein Testprogramm zur Vergfügung stellen. Es wäre sicher für einige interessant, wie Du den Vergleich / die Auswertung umgesetzt hast.
Mario (ist einer der Interessierten :slight_smile: )