Frequenzanzeige für einen UKW-Empfänger

mit 16F84 und LCD-Display

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


Frequenzanzeige für einen UKW-Empfänger
Die meinsten modernen UKW-Empfänger besitzen PLL-Tuner, die sich in festen Schritten abstimmen lassen. Eine Digitalanzeige zeigt einen Zahlenwert an, der der anzustimmenden Frequenz entspricht.
Wenn man keinen PLL-Tuner hat (z.B. wenn einem das von der PLL vorgegebene Frequenzraster nicht genügt) benötigt eine digitale Frequenzanzeige, die auf einen Zählfrequenzmesser aufbaut.
- Frequenzbereich 0 MHz bis 145 MHz
- Auflösung 24 Bit
- Genauigkeit norm. 0,001%
max. 0,0001% 
- Anzeige 9 Stellen auf LCD
ZF 10,7 MHz
Stromlaufplan - anklicken zum vergrößern


Schaltung
Kernstück der Schaltung ist der preiswerte PIC16F84 und ein einzeiliges LCD-Display. Da die Frequenzen des UKW-Bandes mit ca. 100 MHz für den PIC16F84 doch etwas zu hoch sind, wird dem PIC ein schneller 2:1-Frequenzteiler vorgeschaltet. Der Vorteiler läßt sich gerade noch mit schneller TTL-Technik realisieren. Ein mit 5,5V betriebener 74F74 sollte die Frequenz noch verarbeiten können. (Vorausgesetzt, man bekommt noch  Schaltkreise der 74F-Reihe.)
Die zu messende Frequenz wird am Mischer-Oszillator (local oscillator) des Empfängers abgegriffen.


Theorie der Frequenzmessung
Ein Frequenzzähler zählt die wärend 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 Meßfehler 1 Hz.
Zählt man nur 1/2 Sekunde, so muß man das Zählergebnis noch mit 2 multiplizieren. Die Meßgenauigkeit 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. Da der PIC16F84 aber nur einen Timer hat, muß die feste Meßdauer durch eine Programmschleife realisiert werden. Für eine Meßzeit 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. Deshalb muß der interne Vorteiler des Timer0 auf ein Teilverhältnis von 32:1 eingestellt werden. Damit sind am Pin RA4 theoretisch Frequenzen von bis zu 80 MHz (32 x 2,5 MHz) zulässig. Die Auflösung der Frequenzmessung verschlechtert sich dadurch um den Faktor 32. Ein Blick in das Datenblatt des 16F84 ergibt, dass unter diesen Bedingungen die Frequenz an RA4 maximal 72,7 MHz betragen darf, um die Funktion des Timer0 zu gewärleisten.
Ein zusätzlicher externer 2:1-Frequenzteiler erweitert den Eingangsfrequenzbereich der Schaltung schließlich auf maximal 145 MHz, verschlechtert die Frequenzauflösung aber noch einmal um den Faktor 2.

Der Frequenzzähler zählt also Frequenzen bis zu 145 MHz mit einer Auflösung von 128 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 aus dem Zählwert
Um die Eingangsfrequenz der Schaltung zu erhalten, muß man den Zählwert mit dem Vorteilerverhältnis und dem Reziprokwert der Meßzeit multiplizieren.
Beide Vorteiler zusammen (intern + extern) haben ein Teilverhältnis von 64:1. Die Meßzeit beträgt 1/2 Sekunde, der Reziprokwert der Meßzeit ist also 2. Der Zählwert muß also mit 128 multiplziert werden. Dies läßt 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 ist. Dabei kann die Zahl länger als 24 Bit werde, wir gehen deshalb auf 32-Bit über.

Subtraktion der Zwischenfrequenz.
Die gemessene Frequenz ist nicht die Empfangsfrequenz des Empfängers, sondern die Frequenz seine Mischeroszillators. Diese liegt um den Wert der ZF über (oder in einigen empfängern unter) der Empfangsfrequenz. Um die wirkliche Frequenz zu erhalten, muß also der ZF-Wert subtrhiert werden. Die ZF beträgt 10,7 MHz.

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 mit LCD anzeigen.



Beschreibung der gewählten Lösung
Verwendet wird ein PIC16F84-10, 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 Frequenzfahler 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%.

Gedanken zur Genauigkeit
Eine neunstellige Anzeige der Frequenz ist eigentlich Augenwischerei. Durch die Auflösung von nur 128 Hz sind die letzten beiden Stellen der Anzeige ohne jeden Aussagewert. Besser wäre es, sie auf '00' zu setzen. Im Interesse einer möglichst guten Genauigkeit der drittletzten Stelle, sollte man die Frequenz auf ganze 100 Hz runden. Das erfolgt am einfachsten, indem man zur errechneten Frequenz den Wert 50 addiert, und dann die beiden letzten Stellen mit '00' überschreibt.

Die Genauigkeit der Anzeige hängt natürlich von der Genauigkeit der ZF des Empfängers ab. Die 10,7 MHz sind ein Sollwert. Der wirkliche 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. In einem Einfachsuper dürfte dieser Wert wenigstens 50 kHz betragen, womit sich jede weitere Diskusion um 'wenige hundert Herz' erübrigt. 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.

Ein vernachlässigbarer Fehler entsteht durch meine Subtraktion der ZF. Da 1/128-tel der ZF kein ganzzahliger Wert ist (83593,75), ich aber nur mit ganzzahligen Werten rechne (83594), ist meine Frequenzanzeige mit einem konstanten Fehler von -32 Hz behaftet. Das ist wohl wirklich egal.



Test und Kalibrierung
Funktionstest
Um die Funktionstüchtigkeit des fertig aufgebauten Frequenzzählers zu prüfen, trennt man den PIC-Frequenzeingang RA4 vom Vorteiler und verbindet ihn mit dem Taktausgang des PIC OSC2. Nun muß der Frequenzzähler etwa  '9 299 968 Hz' anzeigen. Damit ist die Funktionsfähigkeit des Frequenzzählers (ohne Vorteiler) erwiesen. RA4 wird von OSC2 getrennt und wieder mit dem Vorteiler verbunden. Zum Test des Vorteilers benötigt man eine Frequenz von 20 MHz (z.B. Quarzoszillator), die zur Messung mit dem Eingang des Vorteilers verbunden wird. Die gemessene Frequenz wird um 10,7 MHz vermindert angezeigt (9 300 000 Hz). Die angezeigte Frequenz kann dabei um 0,02% vom Sollwert abweichen, solange der Frequenzzähler nicht kalibriert ist.

Kalibrierung
Ohne Kalibrierung erreicht der Zähler eine Genauigkeit von ca 0,01% (10 kHz bei 100 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 etwa 0,01% zu klein. Als Trimmkondensator wird ein 30pF-Keramik-Trimmkondensator (nicht im Stromlaufplan enthalten) parallel zum Quarz angeschlossen, und auf ca. 20 pF eingestellt. Der Frequenzzähler wird nun an eine Referenzfrequenzquelle (wenn man den eine findet) angeschlossen und durch Verstellen des Trimm-Kondensators die angezeigte Frequenz der Referenzfrequenz angeglichen. Der zulässige Anzeigefehler ist 1 kHz (bei einer Eingangsfrequenz von 100 MHz). Danach sollte der Meßfehler im gesamten Frequenzbereich auf 0,001% reduziert sein (1 kHz bei 100 MHz). Höhere Genauigkeiten lassen sich nur noch mit einem Termostat erreichen, der den Quarz auf einer konstanten Temperatur hält.



Programmlisting Beim Brennen des PIC bitte darauf achten, daß der Taktgenerator des PIC auf 'HS' eingestellt wird!


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

erstellt: 16.04.2002
letzte Änderung: 12.01.2004