Pfad:
Home =>
AVR-Übersicht =>
Anwendungen =>
DCF77-Empfänger => Störsignale
This page in english:
 |
Anwendungen von
AVR-Einchip-Prozessoren AT90S, ATtiny, ATmega und ATxmega
DCF77-Empfangsstörungen
|
 |
9 Empfangsstörungen bei DCF77
Es gibt ganz viele Möglichkeiten, weshalb der Empfang von DCF77 gestört
sein kann:
- Selbst erzeugte Störsignale: der Mikrocontroller in der Nähe der
Empfangsantenne erzeugt Rechtecke, die selbst oder deren Oberwellen im Bereich
der Empfangsfrequenz liegen.
- 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:
- vom AM-Gleichrichter mit einem ATtiny25, der mit einer PWM die Stärke des
Empfangssignals an die Controller-Platine überträgt, oder
- vom DCF77-Controller, der mit zwei PWM-Kanälen die Frequenz- und die
Verstärkungseinstellung vornimmt.
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
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:
- Ferritantenne 20 cm lang, mit CuLa-Draht vollständig bewickelt,
- Drehko mit 500+365 pF, parallel geschaltet,
- Geradeaus-Verstärker mit drei Transistoren,
- HF-Rechteck-Ausgang für Frequenzzähler,
- Messbereich: Standard ca. 60 bis 210 kHz, mit zuschaltbaren
Festkondensatoren bis ca. 32 kHz.
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