Pfad: Home => AVR-Übersicht => Anwendungen => DCF77-Empfänger => Störsignale    LinkThis page in english: Flag EN
DCF77-Empfang Anwendungen von
AVR-Einchip-Prozessoren AT90S, ATtiny, ATmega und ATxmega
DCF77-Empfangsstörungen
Logo

9 Empfangsstörungen bei DCF77

Es gibt ganz viele Möglichkeiten, weshalb der Empfang von DCF77 gestört sein kann:
  1. Selbst erzeugte Störsignale: der Mikrocontroller in der Nähe der Empfangsantenne erzeugt Rechtecke, die selbst oder deren Oberwellen im Bereich der Empfangsfrequenz liegen.
  2. Fremde Geräte, wie Laptops, Netzteile oder Energiesparlampen erzeugen ein Störspektrum im Bereich von 77,5 kHz.

9.1 DCF77-Störungen durch PWMs mit ATtiny25/45/85

Beim Experimentieren mit DCF77-Empfängern, die PWM-Kanäle nutzen, ist mir ein Störsignal aufgefallen, das den gesamten Empfang beeinträchtigen kann. Es stammt von den eingesetzten PWM-Generatoren: Beide PWM-Generatoren arbeiteten urspünglich mit dem Timer/Counter 1 im ATtiny25/45/85 im synchronen Modus und erzeugten PWM-Frequenzen von 31,25 kHz. Da Rechtecke aus der Grundwelle und allen ungeradzahligen Harmonischen der Grundwelle bestehen (mit sinkender Amplitude), sind auch diese Oberwellen interessant. Ich habe das Störsignal ausgemessen und dabei mit diversen Einstellungen gespielt. Hier sind die Ergebnisse.

9.1.1 Synchron- und Asynchron-Modi beim ATtiny25

TC1 ist nicht wie bei den meisten anderen ATtiny ein 16-Bit- sondern ein 8-Bit-Zähler. Er kann, wie bei allen anderen Zählern, mit einem Vorteiler aus dem Prozessortakt angesteuert werden. Allerdings hat er einen viel weiteren Einstellbereich beim Vorteiler: vier Bits stehen dafür zur Verfügung. Damit können alle Zweier-Potenzen (1, 2, 4, 8, ..., 16.384) als Vorteiler gewählt und eingestellt werden. Schon das macht den TC1 zu einem viel mächtigeren Werkzeug als normale Zähler, die ja nur mit 1, 8, 64, 256 und 1.024 vorteilen können.

Die ATtiny25/45/85 haben aber neben dem synchronen noch einen weiteren Betriebsmodus: asynchron. Schaltet man diesen ein, dann wird ein eingebauter 64-MHz-Oszillator angeworfen, der dann den Vorteiler des TC1 taktet. Damit lassen sich PWM-Generatoren mit noch höl;heren Frequenzen takten. Wer es nicht ganz so hoch mag, wählt den Slow-Mode aus, der mit 32 MHz taktet. Oder man schaltet in den ATtiny15-Kompatibilitäts-Modus, der mit 25,6 MHz taktet.

Das ist verwirrend, weil es soooo viele Möglichkeiten gibt, die TC1-PWM zu takten. Ich habe daher im OpenOffice-Rechensheet hier alle diese Modi und Taktungen verfügbar gemacht, damit man damit spielen kann. Der Prozessortakt (System clock) kann dabei in allen Modi mit dem internen RC-Oszillator von 8 MHz und einem Clock-Vorteiler erzeugt werden. Ferner kann ein Keramikresonator oder ein Quarz als Taktgeber verwendet werden (was allerdings den Ausgang OC1B blockiert, der dann nicht mehr als PWM-Ausgang benutzt werden kann). Als weitere Möglichkeit kann ein externer Quarzoszillator verwendet werden, der den Ausgang OC1B als PWM-Generator erhält. In die Dropdown-Listen habe ich alle üblichen Resonatoren, Quarze und Quarzoszillatoren aufgenommen, die es auch zu kaufen gibt.

Im Sync-Modus kann der PWM-Takt aus dem Systemtakt mittels des Vorteilers erzeugt werden. Beim Async-Modus stehen zusätzlich die Hochgeschwindigkeits-Oszillatoren zur Verfügung. In beiden Fällen kann mit dem Vergleicher OCR1C die Auflösung des PWM-Generators festgelegt werden: es steht jeder Wert von 1 bis 256 zur Verfügung, so dass auch sehr krumme Auflösungen und PWM-Frequenzen eingestellt werden können. Dieser dritte Vergleicher stellt trotzdem sicher, dass beide PWM-Kanäle (OCR1A und OCR1B) als PWM verwendet werden können (das ist bei anderen ATtiny so nicht möglich, wenn keine Standardauflösung wie 256 verwendet wird).

Da die beiden oben genannten Anwendungsfälle beides 8-Bit-PWMs mit 256 Stufen sind, habe ich die weitere Betrachtung auf diesen Fall eingeschränkt.

9.1.2 Einstellen der Modi

Der ATtiny45 in der Versuchsschaltung Für die Experimente habe ich einen Testgenerator gebaut, der einen ATtiny45 mit jeweils zweistufigem RC-Netzwerk mit 10kΩ und 1µF an den OC1A- und OC1B-Ausgängen verwendet. Im Standardexperiment habe ich den ATtiny mit 8 Mhz getaktet (Clock source: Interner RC-Oszillator 8MHz, CLKPR auf 1). Die beiden PWM-Kanäle habe ich im Synchron-Modus mit einem Vorteiler von 1 und einer Auflösung von 256 betrieben. Als PWM-Wert habe ich die halbe Aussteuerung von 128 programmiert, die die höchste Welligkeit des RC-Filters produziert. Das ergibt eine PWM-Frequenz von 8 MHz / 256 = 31,25 kHz.

Die folgenden Unterkapitel zeigen, wie die Modi des ATtiny25/45/85 in Assembler eingestellt werden.

9.1.2.1 Einstellen des Sync-Modus

Im Sync-Modus des ATtiny25/45/85 kommt das Taktsignal des TC1 vom Systemtakt. Im Standardfall stammt der Systemtakt vom internen RC-Oszillator mit 8 MHz, der durch den Clock-Vorteiler durch 1, 2, 4 oder 8 oder jede weitere Zweierpotenz bis 128 geteilt wird. Der Clock-Vorteiler wird so eingestellt:

  ; Init clock prescaler
  ldi rmp,1<<CLKPCE ; Enable prescaler change
  out CLKPR,rmp
  ldi rmp,(cClkPsr-1) ; Load prescaler
  out CLKPR,rmp

Der Synchron-Modus wird folgendermaßen initiiert:

  ; Init sync mode
  ldi rmp,cTestPwmA ; PWM start A
  out OCR1A,rmp ; to channel A
  ldi rmp,cTestPwmB ; PWM start B
  out OCR1B,rmp ; to channel B
  ldi rmp,255 ; Set 8 bit PWM
  out OCR1C,rmp
  ldi rmp,(1<<PWM1B)|(1<<COM1B1) ; Positive PWM
  out GTCCR,rmp
  ldi rmp,(1<<PWM1A)|(1<<COM1A1)|(1<<CS10) ; Prescaler to 1
  out TCCR1,rmp
  ldi rmp,1<<OCIE1A ; Enable interrupts
  out TIMSK,rmp

Den Interrupt habe ich hinzu genommen, um die LED bei jedem Compare Match A mit einem Zähler abwärts zählen zu lassen und beim Erreichen von Null die gelbe LED zu torkeln (als Lebenszeichen der PWM). Die Taktung der LED erfolgt so, dass sie auch bei unterschiedlichen PWM-Frequenzen immer gleich erfolgt.

9.1.2.2 Einstellen des Async-Modus

Die Einstellung des Async-Modus ist ein wenig kniffliger. Zunächst ist der Oszillator mit dem Bit PLLE im PLL-Kontrollregister PLLSCR einzuschalten. Das Bit LSM gibt dabei an, ob der Oszillator mit 64 (LSM=0) oder mit 32 (LSM=1) MHz arbeiten soll.

Dann muss gewartet werden bis die PLL-Schaltung Lock erreicht. Das erkennt man daran, dass das Lock-Bit PLOCK gesetzt wird. Ist das Bit gesetzt, können die Modi der beiden PWM-Kanäle eingestellt werden.

Das ist die Init-Prozedur beim Async-Modus:

	ldi rmp,(1<<LSM)|(1<<PLLE) ; Switch PLL on, Low-Speed-Mode
	out PLLCSR,rmp
WtLock:	; wait until PLL is locked
  in rmp,PLLCSR ; Read lock bit
  sbrs rmp,PLOCK ; wait for lock bit set
  rjmp WtLock ; not yet set
  ldi rmp,(1<<LSM)|(1<<PCKE)|(1<<PLLE) ; switch PCK on
	out PLLCSR,rmp
	ldi rmp,(1<<PWM1B)|(1<<COM1B1) ; Enable Compare Match B PWM
	out GTCCR,rmp
	ldi rmp,(1<<PWM1A)|(1<<COM1A1)|cTc1Presc ; PWM1A-en, Prescaler,
  out TCCR1,rmp ; OC0A aktiv, clear on compare match, CTC bei OCR1C

Tc1Presc ist der Prescaler zwischen 1 und 15, in unserem Fall 1.

9.1.3 Software zum Einstellen der Modi

In diesem Assembler-Quelltext können alle Modi und Vorteilerwerte eingestellt werden. Durch Ändern der .include-Zeile können ATtiny25, 45 oder 85 vorgewählt werden, alle anderen Einstellungen sind im Abschnitt Configuration änderbar.

9.1.4 Messen der Störsignale der PWM

Zum Messen der Störsignale durch die PWM habe ich einen in den Achtziger Jahren gebauten VLF-Empfänger verwendet. Er ist folgendermaßen ausgestattet: Dieses Video zeigt die Anzeigen des Empfängers und des Frequenzzählers im Standardfall.

Wie zu erwarten, tritt die dritte Oberwelle des Grundsignals bei ca. 96 kHz mit der höchsten Amplitude auf. Ein unmoduliertes Trägersignal bei 129 kHz stammt nicht vom PWM-Generator. Die fünfte Oberwelle hat dann aber nicht mehr ausreichend Amplitude und wird vom Empfänger zwar schwach wahrgenommen und angezeigt, hat aber kein Störpotenzial mehr.

Noch ein Hinweis: so ein Laptop produziert ein ziemliches Störsignal (siehe Kapitel 9.3, das sich über das ganze hier interessante Spektrum legt und starkes Rauschen verursacht. Also den Laptop besser schlafen legen, bevor man dem Empfänger einschaltet.

9.2 Störungen durch eine Energiesparlampe

Die Energissparlampe auf meinem Basteltisch produziert im gesamten Frequenzbereich zwischen 40 und 220 kHz eine intensive Knatterstörung. DCF77 ist zwar noch wahrnehmbar, die Amplitudenabsenkung geht aber durch die Knatterstrahlung völlig verloren.

Fazit: So ein Strahler macht jedes Experiment mit DCF77 kaputt.

9.3 Störungen durch einen Laptop

Um die Störungen durch den Laptop zu identifizieren, habe ich meinen Empfänger neben den T430S gestellt. Dieser produziert im gesamten Bereich zwischen 40 und 200 kHz verstärktes Rauschen. Bei 70 kHz ist ein schwacher unmodulierter Träger feststellbar. Das DCF77-Signal ist einwandfrei zu identizieren, aber auf dem Signal liegt ein recht hoher Rauschanteil. Das dürfte bei schwächerer Empfangsfeldstärke den Empfang von DCF77 unmöglich machen.

Fazit: Besser den Laptop ausmachen oder in den Tiefschlaf versetzen. Oder die DCF77-Uhr in weiter Entfernung zum Laptop platzieren.

9.4 Störungen durch das Netzteil des Laptop

Das Netzteil meines Lenovo-Laptops ist ein Phänomen: es produziert von 40 bis 220 kHz durchgängig ein sehr starkes Störsignal. Bei 215 kHz ist ein Maximum der Feldstärke feststellbar. Das eigentlich recht starke DCF77-Signal verschwindet völlig hinter dem Rauschspektrum und ist selbst in Ansätzen nicht erkennbar. Die Reichweite der Störsignale ist relativ kurz, in 1 m Entfernung ist alles einwandfrei lesbar.

Fazit: Weit, weit, weg.

©2020 by http://www.avr-asm-tutorial.net