Anwendungen von
AVR-Einchip-Prozessoren AT90S, ATtiny, ATmega und ATxmega LC-Oszillator für DCF77-Superhet-Empfänger
4 DCF77-Superhet-Empfänger mit Quarzfilter
4.1 Oszillatoren für den DCF77-Superhet-Empfänger
4.1.3 LC-VCO-Oszillator mit ATtiny25-Regelung
Die Mischfrequenz für den DCF-Superhet mit TCA440 und einem engen
32,768kHz-Quarzfilter sollte sehr genau 77,5+32,768 = 110,268 kHz
einhalten und nur wenige Hz von der Sollfrequenz abweichen. Um das mit
einem LC-Oszillator zu erreichen, muss dessen Frequenz laufend gemessen
und so justiert werden, dass sie innerhalb einer engen Bandbreite von
+/-5Hz um die Sollfrequenz liegt. Das geht mit einem quarzgetakteten
ATtiny25 hervorragend.
Alle Schaltbilder gibt es wie immer
hier, die umfangreichen
Berechnungen zu diesem Oszillator sind wegen der umfangreichen Simulationen
der RC-Filter in
diesem Libre-Office-Dokument
verfügbar.
4.1.3.1 Auslegung des LC-VCO-Oszillators
Der Eigenbau von LC-Oszillatoren ist auf den ersten Blick eine einfache
Sache: ein geeignetes L und ein geeignetes C zum Schwingen bringen, schon
ist der LC-Oszillator fertig. Das geht mit nur einem einzigen FET und
erzeugt einen recht schönen Sinus.
So sieht so ein einfacher LC-Oszillator aus. Er funktioniert wie folgt.
Abhängig vom Spannungsteiler aus den beiden Kondensatoren (Gate -
Source und Source - GND) produziert die Schaltung einen schönen
Sinus am Drain. Am Source-Anschluss sieht der aber schon ziemlich
verhunzt aus, und wenn man das C-Verhältnis am Gate und Drain
etwas ändert, auch der am Drain-Anschluss: die Schaltung geht an
diversen Stellen in die Sättigung, der Sinus verformt sich
unansehnlich. Das liegt an der hohen Aussteuerung am Gate, das die
Kapazität der Varicap-Dioden stark verändert.
Und mit der Regelspannung an der Kapazitätsdiode lässt sich
der Oszillator auch nicht gut einstellen. Bei sehr hohen Regelspannungen
geht es noch, darunter aber alles andere als wie berechnet. Trotz der
beiden gegenläufigen Varicap-Dioden wird die Kapazität nicht
wie sie sein soll.
Fazit: Ungeeignet für einen ordentlichen geregelten Betrieb.
Damit die Frequenzregelung mit der Kapazitätsdiode richtig
funktioniert, muss die Spannung am LC-Schwingkreis möglichst
niedrig gehalten und eng begrenzt werden. das geht mit zwei
Germanium- oder Schottky-Dioden, so dass die Aussteuerung unter
+/- 0,2V bleibt. Da der FET in dieser Schaltung keine
Verstärkung hat, muss eine zusätzliche invertierende
Verstärkungsschaltung nachgeschaltet werden, damit der
LC-Oszillator schwingt.
Invertierend deswegen, weil damit das Signal an den LC-Kreis
rückgekoppelt werden kann und damit der Oszillator erst
schwingt.
4.1.3.2 Frequenzmessung und -regelung
Um laufend die Frequenz zu überwachen und, wenn nötig,
zu regulieren, wird hier ein ATtiny25 verwendet. Der ist mit
einem 8-MHz-Quarzoszillator getaktet, weil der interne
RC-Taktgenerator viel zu ungenau wäre, um damit die Frequenz
mit der nötigen Genauigkeit zu messen.
Der Timer/Counter 0 im ATtiny25 erzeugt das Gate-Timing: die Anzahl
Impulse wird über eine halbe Sekunde lang gezählt. Die
halbe Sekunde wird mit TC0 durch Teilen des Takts durch 256, durch
Teilen mittels CTC-Betriebs durch 125 und durch Teilen in einem
Register durch 125 erzeugt:
Gate = 256 * 125 * 125 / 8.000.000 = 0,5 Sekunden
Da jeder Sinusdurchgang bei der gewählten Messmethode (siehe
unten) zwei Zählvorgänge auslöst, ergibt sich beim
Zählen der Impulse mittels eines 24-Bit-Zählers direkt
die gemessene Frequenz in Hz.
Ist diese niedriger als die zulässige unterste Bandbreite
(<110,263 Hz), wird der PWM-Wert in OCR1B um Eins
erhöht. Die Spannung am RC-Filterausgang wird entsprechend
um 1/256-stel von 5V = 19,5 mV erhöht. Entsprechend
sinkt die Kapazität der Kapazitätsdiode um ca.
0,02 pF und die Frequenz erhöht sich um 2,5 Hz.
Umgekehrt wird der PWM-Wert erniedrigt, wenn die entsprechende
gemessene Frequenz über der eingestellten Bandbreite liegt.
Das wäre der Fall, wenn sie höher wäre als
110,273 Hz. Auf diese Weise bewegt sich die Oszillatorfrequenz
immer innerhalb der eingestellten Bandbreite von +/- 5 Hz.
Um Justierung und Korrektheit der eingestellten Frequenz zu
verifizieren, sind in der Schaltung noch zwei Leuchtdioden
(oder zweifarbige LED rot/gelb) eingebaut. Die gelbe Diode
zeigt zu niedrige Frequenz an, die rote zu hohe. Liegt die
Frequenz im Sollbereich der Toleranz, geht die LED aus. Die
beiden Leuchtdioden und die Vorwiderstände können
auch entfallen, wenn die Schaltung korrekt funktioniert.
Dies ist der schematische Aufbau des frequenzgeregelten Oszillators.
4.1.3.3 Programmierung des ATtiny25
Das Programm für den ATtiny25 ist in Assembler geschrieben.
Den Quellcode gibt es hier
zum Download und hier zur
Anzeige im Browser.
Es besteht aus den folgenden funktionellen Teilen:
Dem Einstellen der Hardware:
dem Anlegen des Stapels für die Interrupt-Bearbeitung,
dem Start des LED-Anzeige-Portpins,
dem Start des Timers TC1 als asynchrone PWM (mit
100µs-Wartezeit zur PLL-Synchronisation),
dem Start des Timers TC0 als Gatezeit-Geber für die
Frequenzmessung, mit Interrupt Enable,
dem Start des Analogvergleichers zur Messung der Frequenz,
mit Interrupt Enable, und
dem Einschalten der Interrupt-Flagge im Statusregister.
Den beiden Interrupt-Routinen
für die Frequenzmessung mittels Analogvergleicher: ein
8-Bit-Register zählt die Interrupts, beim Überlauf
wird ein 16-Bit-Zähler erhöl;ht,
für die Gatezeit der Frequenzmessung:: ein Teilerregister,
das zu Beginn auf 125 steht, wird erniedrigt, erreicht es Null,
dann wird
der Teiler neu gestartet,
der Zählerstand in den drei Zählerregistern in
drei andere Register kopiert, und
die drei Zählregister werden auf Null gesetzt.
Dem Frequenzvergleich mit dem Sollwert-Bereich
Vergleich der drei Zählerwerte (24-Bit) mit der
Sollbereichs-Untergrenze: falls niedriger wird der PWM-Wert
erhöht und die gelbe LED eingeschaltet,
Vergleich der drei Zählerwerte mit der
Sollbereichs-Obergrenze: falls größer oder gleich
wird der PWM-Wert erniedrigt und die rote LED eingeschaltet,
ist beides nicht der Fall wird die LED ausgeschaltet.
Bei beiden Interrupt-Service-Routinen ist durch Überprüfung
ihrer Dauer in Prozessortakten sichergestellt, dass sie ab 4 MHz
Taktfrequenz aufwärts keinen Analogvergleicher-Interrupt verpassen.
Dies gilt auch dann, wenn direkt nach dem Analogvergleicher-Int ein
TC0-Compare-Int noch hinzukommt.
Das gesamte Programm hat 137 Worte und passt bequem in das
Flash-Memory des ATtiny25.
Nicht vergessen: Mit dem Programmieren des Flashspeichers muss noch
die Taktfuse des ATtiny25 auf den externen Quarzoszillator umgestellt
werden, da der ATtiny25 sonst nur mit 1 MHz arbeiten würde.
4.1.3.4 Anschaltung des LC-Oszillators an den TCA440
Der Ausgang des LC-Oszillators am Kollektor des BC547 wird über
den 1nF-Kondensator an den Pin 4 des TCA440 eingekoppelt. Dessen
Pin 5 wird über einen Kondensator mit 1nF oder 10nF
HF-mäßig auf GND gelegt, da die Einkopplung bei dieser
Schaltung nur asymmetrisch erfolgt und der Emitterwiderstand des
Eingangstransistors an Pin 4 das Signal symmetriert.