Frequenzanzeige für einen 12-Band KW-Empfänger

mit PIC16F648, PIC12F629 und LCD-Display

zurück zu Projekte , PIC-Prozessoren , Elektronik , Homepage


Frequenzanzeige für den 12-Band-KW-Empfänger R-250
Die meinsten modernen Empfänger besitzen PLL-Tuner, die sich in festen Schritten abstimmen lassen. Eine Digitalanzeige zeigt einen Zahlenwert an, der der abzustimmenden Frequenz entspricht.
Wenn man keinen PLL-Tuner hat, hilft eine digitale Frequenzanzeige, die auf einen Zählfrequenzmesser aufbaut.

Die folgende Schaltung dient als Frequenzanzeige für einen klassischen Doppelsuper R-250, der (inclusive der Modernisierungen R-250M und R-250M2) von 1948 bis 1981 produziert wurde. Man hatte also 3 Jahrzehnte gebraucht, um mit Halbleitertechnik etwas annähernd ebenbürtiges zu bauen. Der R-250 besitzt einen ersten Überlagerungsoszillator (LO1) mit 12 wählbaren Quarzfrequenzen (als Bandauswahl) und einen abstimmbaren zweiten Überlagerungsoszillator (LO2). Zur Frequenzanzeige dient eine Spiegelskala, die eigentlich recht genau ist, dafür aber auch präzise eingestellt werden müsste. Eine digitale Frequenzanzeige kann hier auf einfachem Wege die Spiegelskala ergänzen.
R-250 Foto


  • Produktionszeitraum: ca. 1941 .. 1981
  • Frequenzbereich: 1,5 ..25,5 MHz (in 12 Bändern mit je 2 MHz Breite)
  • 1. ZF: 1,5 - 3,5 MHz
  • 2. ZF: 215 kHz
  • ZF-Bandbreite: 1 .. 14 kHz
  • Audiobandbreite: 0,3 .. 8 kHz
  • Gewicht: 80.. 90 kg
  • Ablesegenauigkeit der Spiegelskala: 1..2 kHz
Anklicken zum Vergrößern



Schaltung
Ein PIC12F629 misst die Frequenz des 1. Mischeroszillators (LO1) und bestimmt daraus die Bandnummer. Diese wird als 4-Bit-Code an einen PIC16F648  übermittelt. Da hier nur eine von 12 festen Quarzfrequenzen bestimmt wird, ist keine hohe Präzision der Messung erforderlich.

Der PIC16F648 misst die Frequenz des abstimmbaren zweiten Mischeroszillator (LO2) des Empfängers.
Aus der bekannten Frequenz des 1. LO (Quarz), der gemessenen Frequenz des 2. LO (1,5 ... 3,5 MHz) und der bekannten Mittelfrequenz des zweiten ZF-Filters (215 kHz) wird die Empfangsfrequenz berechnet und am LCD angezeigt.

Die Frequenzanzeige hat einen Testmode, der eingenommen wird, wenn am Pin GP3 des PIC12F629 Vss angelegt wird. Dann arbeitet die Schaltung als einfacher Frequenzzähler mit einem festen Messbereich. Es werden dann Frequenzen bis zu 20 MHz mit einer Auflösung von 16 Hz am LO2-Eingang gemessen. Der LO1-Eingang wird dabei ignoriert.

Die Schaltung sieht eigentlich den Einsatz eines einzeiligen Displays (1x16) vor. Soll ein zweizeiliges Diplay (2x16) verwendet werden (oft billiger zu bekommen), dann ist das Pin RA5 des PIC16F648 mit Vss zu verbinden.

Das zu messende Signal (LO2, LO1) liegt nur mit 100..350 mV (p-p) vor, es ist also noch je ein Eingangsverstärker nötig (nicht in der Grafik enthalten). Die Widerstände R4, R5 und die 4 Dioden dienen nur dem Schutz der Eingänge vor Überspannung und können je nach Aufbau der Vorverstärker entfallen.
Stromlaufplan - anklicken zum vergrößern



Theorie der Frequenzmessung für den PIC16F648 
Ein Frequenzzähler zählt die während einer festen Zeit eintreffenden Impulse, und zeigt diese an. Treffen z.B. innerhalb einer Sekunde genau 100 Impulse ein, so beträgt die Eingangsfrequenz 100 Hz und der Messfehler 1 Hz.
Zählt man nur 1/2 Sekunde, so muss man das Zählergebnis noch mit 2 multiplizieren. Die Messgenauigkeit verringert sich auf 2 Hz.

Zum Zählen bietet sich der Timer0 an. Dieser kann direkt oder über einen einstellbaren Vorteiler mit dem Eingangspin RA4 verbunden werden. Die feste Messdauer wird durch eine Programmschleife realisiert. Für eine Messzeit von 1/2 Sekunde benötigt man eine Warteschleife mit 1.250.000 Takten auf einem 10 MHz PIC.

Der Timer0 darf höchstens mit 1/4 der PIC-Frequenz getaktet werden - bei einer PIC-Frequenz von 10 MHz sind also nur 2,5 MHz zulässig. Der 2. LO des R-250 liefert aber bis zu 3,5 MHz. Deshalb muss der interne Vorteiler des Timer0 auf ein Teilverhältnis von 2:1 eingestellt werden. Damit sind am Pin RA4 theoretisch Frequenzen von bis zu 5 MHz (2 x 2,5 MHz) zulässig. Die Auflösung der Frequenzmessung verschlechtert sich dadurch um den Faktor 2.

Der Frequenzzähler zählt also Frequenzen bis zu 5 MHz mit einer Auflösung von 4 Hz.

24-Bit-Zähler
Die Erweiterung des 8 Bit breiten Timer0 auf einen 24-Bit-Software-Timer ist im Projekt '50-MHz-Frequenzzähler ' beschrieben..

Berechnung der Frequenz des 2.LO aus dem Zählwert
Um die Eingangsfrequenz der Schaltung zu erhalten, muss man den Zählwert mit dem Vorteilerverhältnis und dem Reziprokwert der Messzeit multiplizieren.
Der Vorteiler hat ein Teilverhältnis von 2:1. Die Messzeit beträgt 1/2 Sekunde, der Reziprokwert der Messzeit ist also 2. Der Zählwert muss also mit 4 multiplziert werden. Dies lässt sich durch wiederholte Multiplikation mit 2 erreichen, und diese Multiplikation ist lediglich eine Verschiebung der Bits im Zählergebnis um jeweils eine Stelle nach links.
Deshalb ist die Frequenzberechnung mit ein paar 'RLF' Befehlen "zu erschlagen".

Addition der zweiten Zwischenfrequenz und der Frequenz des 1.LO
Die gemessene Frequenz ist nicht die Empfangsfrequenz des Empfängers, sondern die Frequenz seine zweiten Mischeroszillators. Diese liegt je nach Band einen festen Wert neben der Empfangsfrequenz. Um die wirkliche Frequenz zu erhalten, muss also dieser Wert addiert werden.
Dieser Offset ist für jedes der 12 Frequenzbänder anders. Je nach Bandnummer (an RA0..RA3) wird deshalb ein anderer Offset auf den gemessenen Frequenzwert aufaddiert. Dabei kann die Zahl länger als 24 Bit werden, hier verwende ich 32 Bit.

Umrechnung der Frequenz in eine Dezimalzahl
Leider ist das Rechenergebnis eine Binärzahl, mit der wir im täglichen Leben kaum umgehen können. Deshalb steht nun noch die Umwandlung in eine Dezimalzahl an. Das würde man normalerweise durch wiederholte Division durch 10 erledigen, aber eine vollwertige 32-Bit-Divisionsroutine wäre ein zu großer Aufwand. Ich zerlege die Zahl durch Subtraktion und Division in ihre Zehnerpotenzen.

Ausgabe der Zahl
Das fertige Ergebnis kann man nun am LCD anzeigen.

Band
RA3..0
Frequenzbereich
1. LO-Quarz
2. ZF
Offset
Auflösung
Test
0x0
0 .. 20 MHz
-
-
0
16 Hz
1
0x1
1,5 .. 3,5 MHz
kein 215 kHz
-215 kHz
4 Hz
2
0x2
3,5 .. 5,5 MHz 2 MHz 215 kHz 1,785 MHz 4 Hz
3
0x3
5,5 .. 7,5 MHz 4 MHz 215 kHz 3,785 MHz 4 Hz
4
0x4
7,5 .. 9,5 MHz 6 MHz 215 kHz 5,785 MHz 4 Hz
5
0x5
9,5 .. 11,5 MHz 8 MHz 215 kHz 7,785 MHz 4 Hz
6
0x6
11,5 .. 13,5 MHz 10 MHz 215 kHz 9,785 MHz 4 Hz
7
0x7
13,5 .. 15,5 MHz 12 MHz
215 kHz 11,785 MHz
4 Hz
8
0x8
15,5 .. 17,5 MHz 14 MHz 215 kHz 13,785 MHz 4 Hz
9
0x9
17,5 .. 19,5 MHz 16 MHz 215 kHz 15,785 MHz 4 Hz
10
0xA
19,5 .. 21,5 MHz 18 MHz 215 kHz 17,785 MHz 4 Hz
11
0xB
21,5 .. 23,5 MHz 20 MHz 215 kHz 19,785 MHz 4 Hz
12
0xC
23,5 .. 25,5 MHz 22 MHz 215 kHz 21,785 MHz 4 Hz


Theorie der Frequenzmessung für den PIC12F629
Der 16F629 muss ermitteln welche der 12 möglichen Quarzfrequenzen (0, 2, 4, 6, ... 22 MHz) gerade aktiv ist. Dazu ist keine genaue Messung nötig. Als PIC-Takt genügt der interne 4 MHz Oszillator.

Das Messverfahren entspricht grundsätzlich dem Messverfahren des PIC16F648. Es wird am Pin GP2 mit einem 256:1-Vorteiler über einen Zeitraum von 1280 us gezählt. Dadurch wird die Frequenz des Quarzes mit einer Auflösung von 200 kHz bestimmt. Daraus wird die Bandnummer ermittelt und an den Pins GP0,1,4,5 als 4-Bit-Binärzahl ausgegeben:

Zählwert
0..4
5..14
15..24
25..34
35..44
45..54
55..64
65..74
75..84
85..94
95..104
105..114
Bandnummer
1
2
3
4
5
6
7
8
9
10
11
12




Beschreibung der gewählten Lösung für den PIC16F648
Verwendet wird ein PIC16F648, ein 10 MHz-Quarz und ein LCD-Display am PortB. (Stromlaufplan ) Die Verwendung eines Quarzes anstelle eines Keramikresonators ist zwingend notwendig, da die Resonatoren einen Frequenzfehler von ca. 0,5% aufweisen. Bei einem so ungenauen Frequenznormal wäre alles über 8-Bit Selbstbetrug. Ein Quarz erreicht ohne besondere Maßnahmen dagegen eine Genauigkeit von 0,001% unter termisch stabilen Bedingungen sogar 0,00005%.
Beschreibung der gewählten Lösung für den PIC12F629
Verwendet wird ein PIC12F629, der mit dem internen 4MHz-betrieben wird.


Gedanken zur Genauigkeit
Die Genauigkeit der Anzeige wird durch den Frequenzfehler des PIC-Taktgeneratorquarzes und des Quarzes im 1. LO begrenzt. Dieren Fehler addieren sich etwa auf 0,002% auf, wenn die Quarze auf die Sollfrequenz gezogen werden. Das sind bei 25 MHz etwa 500 Hz Fehler. Die letzten beiden Stellen der 9-stelligen Anzeige sind also eigentlich nur Augenwischerei. Bei Quarzen ohne jede Frequenzkorrektur ist der Fehler 10 mal so groß (5 kHz).
Die Genauigkeit der Anzeige hängt natürlich auch von der Genauigkeit der zweiten ZF des Empfängers ab. Deren genauer Wert hängt vom verwendeten ZF-Filter ab, und ist Fertigungstoleranzen unterworfen. Wer seine Filterfrequenz genau kennt, kann das im Programm berücksichtigen.

Natürlich driftet die ZF-Filter-Frequenz auch je nach Temperatur ein wenig.

Letztendlich sollte es aber genügen, wenn die Anzeigetoleranz deutlich kleiner als die Bandbreite der ZF-Filter ist. Im Doppelsuper kann man die Bandbreite der 2. ZF natürlich sehr schmal auslegen, einige hundert Hertz sollten es aber dennoch sein, ansonsten macht es keinen Sinn, Funksignale zu modulieren.Beim R-250 kann sie auf bis zu 1 kHz verringert werden.

Die Fehler in der Auflösung oder Rundungsfehler in der Berechnung sind dagegen vernachlässigbar (< 10 Hz).



Test und Kalibrierung
Funktionstest

Schritt 1:
Der PIC12F629 wird zunächst nicht eingesetzt. RA0..RA3 des PIC16F648 werden mit Vss verbunden, um in den Testmode der Frequenzanzeige zu gelangen. In diesem Mode wird die an RA4 anliegende Frequenz direkt angezeigt. Um die Funktionstüchtigkeit des fertig aufgebauten Frequenzzählers zu prüfen, trennt man den PIC-Frequenzeingang RA4 von seiner normalen Signalquelle (LO2) und verbindet ihn mit dem Taktausgang des PIC OSC2 (Pin 15 des PIC16F648). Nun muss der Frequenzzähler genau '10 000 000 Hz' anzeigen. Damit ist die Funktionsfähigkeit des Frequenzzählers erwiesen. RA4 wird von OSC2 getrennt und mit Vss verbunden.


Schritt 2:
RA0..RA3 des PIC16F648 werden von Vss getrennt. Der PIC12F629 wird eingesetzt. RA4 des PIC16F648 und GP2 des PIC12F629 werden mit Vss verbunden. Nach dem Einschalten zeigt das Display "a94 752 296 Hz".
GP2 des PIC12F629 wird von Vss getrennt und mit dem Taktausgang des PIC16F648 OSC2 (Pin 15 des PIC16F648) verbunden. Nach dem Einschalten zeigt das Display nun "9 785 000 Hz".
GP2 und RA4 werden von OSC2 und Vss getrennt, und mit den Vorverstärkerausgängen verbunden
Fertig.

Kalibrierung
Ohne Kalibrierung erreicht der Zähler eine Genauigkeit von ca 0,01% (1 kHz bei 10 MHz). Die Frequenzabweichungen werden durch eine Abweichung der Quarzfrequenz von den gewünschten 10 MHz verursacht. Die meisten Quarze schwingen etwa 1 kHz zu schnell (meiner Erfahrung nach, aber Ausnahmen wird es immer geben) und müssen mit einem Trimmkondensator abgeglichen werden. Ohne Abgleich wäre der angezeigte Frequenzwert um etwa 0,01% zu klein. Als Trimmkondensator dient C1, oder es wird ein 30pF-Keramik-Trimmkondensator (nicht im Stromlaufplan enthalten) parallel zum Quarz angeschlossen, und auf ca. 20 pF eingestellt.

Das Pin GP3 des PIC12F629 wird  von Vdd getrennt und mit Vss verbunden, um in den Testmode zu gelangen. Der LO2-Eingang des Frequenzzählers wird nun im Testmode an eine Referenzfrequenzquelle (wenn man den eine findet) von maximal 19 MHz angeschlossen und durch Verstellen des Trimm-Kondensators die angezeigte Frequenz der Referenzfrequenz angeglichen. Der zulässige Anzeigefehler ist 100 Hz (bei einer Eingangsfrequenz von 10 MHz). Danach sollte der Messfehler im gesamten Frequenzbereich auf 0,001% reduziert sein (100 Hz bei 10 MHz). Höhere Genauigkeiten lassen sich nur noch mit einem Thermostat erreichen, der den Quarz auf einer konstanten Temperatur hält, nötig ist das aber nicht.

Abschließend wird das Pin GP3 des PIC12F629 wieder von Vss getrennt und mit Vdd verbunden.



Programmlisting

zurück zu Projekte , PIC-Prozessoren , Elektronik , Homepage

erstellt: 09.02.2010
letzte Änderung: 24.02.2010