Funkuhr oder Funkwecker bauen / reparieren / erweitern

Funkuhr oder Funkwecker reparieren

Abgesehen von Trivialfehlern wie zerbrochenes Display, schwache Batterien oder korrodierte Batteriekontakte sind folgende Fehler gängig:
  1. Kein Empfang wegen störender Elektrogeräte (oft Fernseher)
  2. Kein Empfang bei Bewegung der Empfangsantenne
  3. Funkempfänger-Modul defekt
  4. Auswertesoftware fehlerhaft (ignoriert die ersten 15 Bit nicht)

Kein Empfang wegen störender Elektrogeräte

Symptom: Uhr läuft falsch; findet kein Signal

Erläuterung: Der Zeitzeichensender DCF77 sendet im Längstwellenbereich mit 77,5 kHz Trägerfrequenz. Diese Frequenz entspricht etwa der fünften Oberwelle der Zeilenfrequenz von Fernsehgeräten (78,125 kHz).

Lösung:

Kein Empfang bei Bewegung der Empfangsantenne

Symptom: Uhr läuft falsch; findet kein Signal

Erläuterung: Funktionsbedingt sind Funkempfänger in ihrer Amplitudenregelung sehr träge, um die Trägerabsenkung im Sekundentakt als solche zu detektieren. Wegen der Richtwirkung der Ferritantenne wirken Drehungen wie Trägerabsenkungen und bringen den Empfang durcheinander.

Lösung:

Funkempfänger-Modul defekt

Symptom: Uhr läuft falsch; findet kein Signal

Erläuterung: Funkempfänger-Module reagieren empfindlich gegen Überspannung, Falschpolung und Blitzschlag. Um eine Verwechslung mit 1. zu vermeiden, alle in Frage kommenden Störer aussschalten und eine gute Empfangsposition der Antenne (bspw. Dachboden) anstreben.

Lösung:

Auswertesoftware fehlerhaft

Symptom: Uhr läuft seit 2006 falsch; findet kein Signal

Erläuterung: Seit November 2006 strahlt der Zeitzeichensender Wetterinformationen in den ersten 15 Bit aus. Auch Monate vorher wird es Versuche gegeben haben. Vor dem Jahr 2006 wurden nur 0-Bits ausgesendet.
Wegen unfähiger Programmierer der Firmware kommt die Auswertesoftware in der Uhr durcheinander.

Lösung:

Signaleinspeisung von anderer Funkuhr oder PC

Zu lösende Probleme:

Für die Signalgenerierung am Parallelport habe ich mal schnell diese DOS-Software geschrieben. (Läuft nicht unter Windows NT/2k/XP!). Sie generiert ein High-aktives Funksignal an LPT1:INIT (SubD25 Pin 16). In Turbo Pascal 6 oder 7.

Signalfilter einbauen

Problem: Das Filter muss die ersten 15 Bits einer Minute auf 100 ms kürzen. Es sollte wenig, im Funkempfänger-Standby keinen Strom verbrauchen.

Lösung 1: Quasianalog mit 4093 und 9 Bauelementen Außenbeschaltung (davon 3 Einstellregler; Oszilloskop und Zeit zum Abgleich erforderlich)

Schaltplan mit Schmitt-Trigger-Schaltkreis (Signalformen angegeben; nicht aufgebaut!; Eagle-Quelle)

Lösung 2: Mit Mikrocontroller ATtiny12 (Programmiergerät oder PC mit Parallelport zum Programmieren sowie Taktversorgung erforderlich)

Schaltplan: Mikrocontroller-gesteuert: nur ein Schaltkreis, das ist alles; Eagle-Quelle

Firmware: FunkFilt.zip getestet, OK, Stromverbrauch Funkempfang 6 µA, Standby 0,1 µA
Zum Vergleich: Der Funkempfänger-Chip zieht etwa 100 µA, die eingebaute LED 500 µA. Ohne Funkempfang verbraucht die Uhr 12 µA.

Programmierung: Hat man kein Programmiergerät zur Hand tut's auch ein PC mit Parallelport.

Aufzubauen bspw. in einem Steckboard; der Quarzoszillator ist zum Setzen der Fuse-Bits erforderlich!

Einbau: Hier Funkwecker „Lexor“ der Firma NIKA USV GmbH, wurde offensichtlich von Aldi vertrieben

Foto   Foto
Sechs Drähte, eine IC-Fassung, ein billiger Mikrocontroller

Im rechten Bild links ist der LED-Anschluss zu sehen; diese LED blinkt im Takt der Empfangsdaten; Widerstandswert: 560 Ω. Der Widerstand rechts dient als Lötstützpunkt und Schutz gegen statische Entladungen; Wert unkritisch, hier 33 kΩ. Dieser wurde nach Ausbau der Basisleiterplatte und Auftrennung der Kehl-Lötbrücke zur Funkemfänger-Leiterplatte einseitig aufgelötet.)

Geräte-Fotos

Die Falschanzeige bei schlechtem Empfang legt eine komplette Zeittelegramm-Filterung im Mikrocontroller nahe.

Komplette Zeittelegramm-Filterung

Implementierung bei Bedarf! Ggf. bitte melden!

Eine LED zur Findung der optimalen Empfangsposition

Zugegeben, in Deutschland ist so etwas in der Regel nicht erforderlich. Bei schwierigen Empfangssituationen wäre aber ein direktes Feedback per LED, LCD oder sanftem Piepser ziemlich sinnvoll.

Problem

Alle Funkuhren empfangen das Funksignal beim Einlegen der Batterie max. ca. 5 Minuten lang, und dann nur noch alle ca. 12 Stunden, auch für jeweils max. 5 Minuten.
Grund: Empfang kostet mehr Strom als die parallel freilaufende Quarzuhr. Es wird also Energie gespart, und so wird Batteriebetrieb überhaupt möglich.

Funkuhren mit Zeiger zeigen den DCF77-Empfang überhaupt nicht an.

Funkuhren (meistens Funkwecker) mit LCD zeigen zwar den momentanen Funkempfang mit einer blinkenden Antenne auf dem LCD an, das Blinken sagt jedoch überhaupt nichts über die Empfangsqualität aus! Es ist schlicht unkorelliert. Blöd.

Lösung

Grundsätzlich sind in allen bisher gesehenen Funkuhren zwei Chips eingebaut, der Empfänger und der Controller. Zwischen denen ist das demodulierte Signal einfach abgreifbar. Eine Leuchtdiode daran angeschlossen, fertig. Oder? Das klappt nur bei Geräten (Funkweckern) mit 2 Batterien! Möglicherweise ist ein Schalttransistor erforderlich. Der zusätzliche Stromverbrauch durch die LED liegt in der gleichen Größenordnung wie für den Funkempfänger (der nur kurrzeitig läuft). Damit dürfte die Batterie nur unwesentlich kürzer halten.

Gesteuerter Aufwärtskonverter

Und so sieht's für Geräte mit 1 Batterie aus. Der kleine Transformator entsteht einfach aus einer vorhandenen Stabdrossel, auf der eine Koppelwicklung draufgewickelt wird. Es genügen einige wenige Windungen. Die Schaltung schwingt bei 1 MHz, weit weg von der DCF77-Empfangsfrequenz.
Schaltplan des Aufwärtswandlers. Der Wert von L1 ist unkritisch, es dürften auch 220 µH funktionieren
Wichtig: Die Drossel L1 muss möglichst weit weg von der Empfangsantenne und quer dazu angeordnet werden, um Eigenstörungen zu minimieren. Die Lage der Wicklungsanfänge ist wichtig zu beachten, sonst schwingt die Schaltung nicht; der Transistor frisst lückenlos Batteriestrom, und die LED leuchtet nicht.

Die Grundidee stammt vom Netzteil-Handbuch. Interessant ist hier vor allem, dass der ohnehin erforderliche Schalttransistor T1 zwei Funktionen erfüllt, nämlich das Ein- und Ausschalten und die Zerhackerfunktion zur Spannungserhöhung. R1 legt die Helligkeit der LED fest und muss ggf. ausprobiert werden.

Geradeaus-Funkempfänger per Mikrocontroller

Gelegentlich ist der Funkempfänger-Chip defekt oder schlecht (unselektiv), und ein Neubau des eigentlichen Empfängers ist überlegenswert. Voraussetzung ist eine vorhandene Antenne mit Schwingkreis (Kondensator), wie sie aus alten oder defekten Funkuhren anfallen. Kann man natürlich auch selber bauen und per Dipmeter abgleichen.

Die Antenne lieferte in Chemnitz eine am Oszilloskop sichtbare Spannung in Höhe von immerhin 200 µV (Spitze-Spitze).

Im Internet und in Fachzeitschriften kursieren Unmengen an Bauanleitungen, aber mich interessiert eine Lösung mit digitalem Filter in Software. Ein SDR sozusagen.

Wie für SDR typisch kann durch Änderung des Antennenschwingkreises sowie durch Änderung der Firmware der gesamte Zeitzeichenempfänger auf andere Sender angepasst werden, etwa auf den britischen oder russischen Zeitzeichendienst.

An der Antenne wird in jedem Fall ein Verstärker benötigt, der das Signal in eine für den A/D-Wandler verdauliche Höhe bringt. Vorteilhafterweise mit Verstärkungsregelung, aber eine Verstärkungs-Umschaltung per Mikrocontroller ist ebenso akzeptabel. Da sind mir folgende Bauanleitungen bekannt:

Überlegungen

Die Lösung ist natürlich so ähnlich wie im Windows-Programm Funkuhr.exe:dcf77.c:Demodulate() implementiert: Ein I/Q-Demodulator, der die AM demoduliert und dabei die Spiegelfrequenz auslöscht, die sich als in entgegengesetze Richtung umlaufender komplexer Zeiger manifestiert.

Der verwendete Mikrocontroller muss folgende Eigenschaften aufweisen:

Und wenn's geht folgende Features:

Leider gibt es keinen 8-Beiner mit den notwendigen Eigenschaften. Das Minimum bilden ATmega8 und ähnliche mit 28 Beinen.

Mit ATmega8, ATmega16U4

Es muss schon ein Mega sein für den MUL-Befehl. ATtiny geht nicht.

Der Schlüssel zur Lösung ist Unterabtastung!! Denn 77,5 kHz „korrekt“ mit bspw. 200 kHz abzutasten ist für einen 8-Bit-Controller vollkommen Overkill. Passendes Konfigurationsbeispiel:

Dummerweise ist beim ATmega8 die Eingangsbandbreite des A/D-Wandlers mit typisch 38,5 kHz angegeben, ohne Angabe der Steilheit des Abfalls: Stimmt nicht! Daher muss bei mehr als den üblichen 6 dB/Oktave die Abtastung vor dem Schaltkreis per Analogsignalschalter erfolgen, was einer Multiplikation gleich kommt. Diesen könnte man von einem Timer gesteuert auch gleich mit 16 MHz / 16 / 13 = 76923 Hz ansteuern und vermeidet so Spiegelfrequenzen vollständig. Die weitere Signalverarbeitung bliebe gleich.

Beim ATmega16U4 ist die Eingangsbandbreite gar mit nur 4 kHz angegeben, ein solcher Zerhacker ist da quasi Pflicht. Um Intermodulationen zu vermeiden sollte man bei der o.a. Zerhackerfrequenz von ≈ 76,9 kHz bleiben, so dass Zerhacker und A/D-Wandler synchron laufen. Von Vorteil ist die einstellbare Verstärkung (×10 oder ×200) zur groben Amplitudenregelung.

Mit MSP430F552x

Diesen 16-Bit-Controller kann man als kostenloses Muster bei Texas Instruments ordern, allerdings liefert das Unternehmen nur an Firmenkunden. Sein 12-bit-A/D-Wandler kann mit 200 kSa/s abtasten, und das Rechenwerk mit Hardware-MULADD kommt auch mit diesem Datenstrom klar.

Ein externer Operationsverstärker wird trotzdem benötigt, und evtl. auch Maßnahmen zur Amplitudeneinstellung (geschaltete Widerstände) da kein umschaltbarer Eingangsverstärker vorliegt. Den kann man sich auch gleich als Muster ordern lassen.

Die 2 Bits mehr an Auslösung könnten die Umschaltung unnötig werden lassen.

Die Demodulation des Phasenrauschens zur Erreichung einer höheren Präzision (besser als 1 ms) ist mit diesem Controller eine sportliche Herausforderung.
Schon erledigt! Mit dsPIC33.

Das bastelunfreundliche SMD-Gehäuse erschwert einen Versuchsaufbau, zumal nur wenige Pins benötigt werden. Der DIL-Adapter wie für jenes Projekt hilft da enorm.

Mit STM32M4 (handlicher vielleicht AT91SAM7S64 / ATSAM3U1C / AT32UC3B)

Das Discovery-Board wird ja geradezu hinterhergeworfen. Die Kennwerte des Mikrocontrollers lassen keine Performance-Wünsche offen; für eine popelige Uhr absoluter Overkill, aber preislich perfekt. Ein externer OPV ggf. mit Verstärkungsumschaltung wird trotzdem benötigt.

Die Demodulation des Phasenrauschens sollte mit diesem Controller kein Problem darstellen.

Mit 8-bit-PIC

Das Vorhaben scheint an der Performance zu scheitern, oder weiß es jemand besser?

Voruntersuchungen

Beim ATmega48 wurde der Eingangsfrequenzgang des A/D-Wandlers mit folgendem Versuchsaufbau ermittelt:

Und das ist das angenehm überraschende Ergebnis:

Excel-Diagramm des Frequenzgangs; Abszisse in kHz, Ordinate in Digitalwert (max. 255); als Vektorgrafik

Wie man sieht ist der Knick bei > 200 kHz und nicht bei 38,5 kHz! Damit ist für 77,5 kHz kein vorgeschalteter Zerhacker notwendig. Auch danach ist der Amplitudenabfall noch moderat.

Die Ausreißer ergeben sich aus der Synchronität des Oszillators mit dem A/D-Wandlertakt. Vor allem 2n-Vielfache von 13 sind davon betroffen. Das spielt für die geplante Anwendung keine Rolle.

TODO: Frequenzgang bei ×10, ×200 eines ATmega16U4

Siehe auch

Lifetec LT7689

Dieses Uhrenradio mit DCF77-Empfänger enthält einen ziemlich gut funktionierenden und empfindlichen Empfangsteil dafür, mit immerhin 2 Quarzfiltern, ansonsten nur Standardbauteile. Das Signal lässt sich low-aktiv als Ungefähr-TTL-Pegel am Pin 14 des LM324P abgreifen. (Nicht Pin 7, da habe ich mich verzählt.) Von da geht es direkt zu einem Beinchen des Mikrocontrollers.

Dieses Gerät ist sattsam bekannt dafür, dass es den Flugfunk stört. Das Störpotenzial (also die Sendeleistung) ist erheblich! Man kann durchaus von einer Freiluft-Reichweite im Kilometerbereich ausgehen! Obwohl das Gerät ansonsten einwandfrei funktioniert. Auch strahlt es in TV-Kabelnetze ein und stört dort die Sonderkanäle für einige Digitalprogramme im gesamten Wohnblock. Auch bei sehr gut geschirmter Installation bekommen die Kabelkunden nur "Kein Signal" zu sehen.

Alle Orakel, die im Internet herumgeistern und den UKW-Oszillator verdächtigen, sind falsch, denn das Gerät stört (bei mir) auch bei ausgeschaltetm Radio, und der Empfängerschaltkreis ist dann tatsächlich spannungsfrei. Auch der lahme Mikrocontroller kommt als Störer bei 132 MHz (oder waren es 122 MHz?) nicht in Betracht. Nahezu alle Geräte sind früher oder später davon betroffen. Als Störoszillator kommt dafür nur ein Teil der Stromversorgung in Frage. Da ein konventioneller 50-Hz-Trafo verbaut wurde, muss einer der diskret mit Einzeltransistoren aufgebauten Längsregler die Störung verursachen.

Da sich offenbar niemand an die Fehlersuche herangemacht hat, mach ich's.

Schaltplan-Ausschnitt

Die Schierigkeit bestand darin, den relevanten Schaltplan auf der chaotischen Leiterplatte herauszulesen: Tatsächlich gehen Elkos gleich zweimal vom Emitter zum Kollektor. HF-Kenner sehen da sofort eine Oszillatorschaltung. In Basisschaltung, also ideal für den UKW-Bereich. Ein Serienfehler. Aber warum eigentlich?

Letzteres funktioniert aber nur bei idealen Kondensatoren! Da gerade große Kondensatoren (hier C33) eine Wicklungsinduktivität haben, bildet sich so ein hübscher Schwingkreis auf der Kollektorseite mit der Eigenresonanzfrequenz des Elkos. Je nach Zusammenspiel von C33 und C32 geht der Sendebetrieb los.

C75 kommt (bei mir) nicht in Betracht, da diese Regelstufe nur bei Radiobetrieb läuft. Bei anderen Leuten, die feststellen, dass das Gerät nur bei eingeschaltetem Radio stört (egal ob LW, MW oder UKW), ist es jener Kondensator.

Platinenausschnitt (ohne Elko-Umbauten)

Die Lösung ist einfach: Die Elkos C32 und C75 auslöten. Wer keine Bauteile auf seinem Tisch herumkullern sehen will, baut diese zwischen Emitter und Masse wieder ein. Da gehören sie eigentlich hin.