400 Hz ... 1-GHz-Frequenzzähler

mit 16F84 und LCD-Display

in Entwicklung


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


Ein universeller 7-stelliger Frequenzzähler von 400 Hz bis 1 GHz
Für den Elektronikbastler ist ein Frequenzmesser ein wichtiges Messgerät. Hier wird eine einfache und preiswerte Lösung vorgeschlagen.
 
Grundmerkmale
Frequenzbereich 400 Hz bis 1 GHz
Auflösung 24 Bit
Genauigkeit
(f > 4MHz)
unkalibriert 0,005%
normal 0,001%
maximal 0,0002% 
Anzeige 10 Stellen auf LCD

 
 
Messeingänge
10 kHz .. 50 MHz U>30mV
4 Hz .. 50 MHz U>=TTL
30 MHz .. 1,3 GHz U>10mV

 
 
Messbereiche
4 Hz  ...  4 MHz Auflösung    4 Hz
4 MHz ...  8 MHz Auflösung    8 Hz
8 MHz ... 16 MHz Auflösung 16 Hz
16 MHz ... 32 MHz Auflösung 32 Hz
32 MHz ... 50 MHz Auflösung 64 Hz
50 MHz ... 250 MHz Auflösung 0,25 kHz
250 MHz ... 500 MHz Auflösung 0,5 kHz
500 MHz ... 1 GHz Auflösung 1 kHz
1 GHz ... 1,3 GHz Auflösung 2 kHz


Schaltung
Die Schaltung ist eine Kombination des 50 MHz-Frequenzzählers und des 1-GHz-Frequenzzählers, der um einen zusätzlichen Eingang mit einem Vorverstärker ergänzt wurdeder um einen HF-Vorteiler ergänzt wurde. Während die anderen Frequenzzähler eigentlich nur Experimente waren, wollte ich nun ein fertiges, praxistaugliches Gerät für meinen Bastelkeller fertigen.

Das Gerät hat drei Frequenzeingänge für jeweils unterschiedliche Anwendungen. Es wird jeweils 1 Eingang durch Reed-Relais zum PIC zugeschaltet. Die Auswahl erfolgt durch einen Taster. Nach einem Tasterderuch (1/2 Sekunde lang) wird zum nächsten Eingang umgeschaltet. Der jeweils aktive Eingang wird durch eine LED markiert.

Eingang 1:
Das ist ein universeller Eingang für Frequenzen von 10 kHz bis 50 MHz  mit Amplituden ab 30 mV p-p. Niedrigere Frequenzen werden nur bei höherer Amplitude korrekt gemessen. Für 1 kHz sind etwa 200 mV p-p nötig.
Das Signal wird mit einem Video-OPV verstärkt, und dann dem PIC zugeführt. Der Verstärkungsfaktor des OPV ist mit R2 fest auf 100 eingestellt, bricht oberhalb von 100MHz aber stark ein. Unterhalb von 10kHz steigen und fallen Flanken von sinusförmigen Eingangssignalen so langsam, dass Rauschen zusätzliche Zählpulse für den PIC verursachen kann.

Eingang 2:
Das ist ein Eingang für TTL-Impulse. Es können aber auch größere Eingangspegel angelegt werden. Ein Vorwiderstand und Schutzdioden leiten zu hohe und negative Spannungen ab.
Der Frequenzbereich geht von 4 Hz bis 50 MHz. Da die Messauflösung aber nur 4 Hz beträgt, ist bei niedrigen Frequenzen der Fehler der Messung recht hoch. Ab 400Hz liegt der Fehler unter 1%. Ab 4MHz liegt der Anzeigefehler bei unter 0,0005%. Die Messgenauigkeit wird dann von der Quarzgenauigkeit begrenzt.

Eingang 3:
Dieser Eingang hat den HF-Vorteiler mit U664, der auch im 1-GHz-Zähler verwendet wird. Seine Eingangsempfindlichkeit ist etwa 10 mV.
Es fällt auf, dass der U664B bei zu geringer Eingangsfrequenz auf ein kleineres Teilungsverhältnis 'umschaltet'. Bei 10 MHz teilte er nur im Verhältnis 4:1, bei 20 MHz  im Verhältnis 8:1. Bei 50 MHz funktionierte er dagegen korrekt (64:1). Um Fehlmessungen zu vermeiden, sollte sichergestellt sein, dass man eine ausreichend hohe Eingangsfrequenz (wenigstens 30 MHz) hat.
Der Aufbau eines 1-GHz-Vorteilers auf einer einseitigen Platine zusammen mit allen möglichen anderen Baugruppen lässt einem HF-Spezialisten natürlich alle Haare zu Berge steigen. Ein wirklich stabiler Betrieb ist so nicht zu erreichen. Ohne Eingangssignal lässt der U664 seiner Phantasie freien Lauf und schwingt fröhlich vor sich hin. Die Empfindlichkeit der Eingangs wird sehr frequenzabhängig sein, und unter den Möglichkeiten des U664 bleiben.
Vielleicht baue ich später mal einen separate HF-taugliche Vorteiler Box mit zweiseitig kaschiertem Leiterplattenmaterial und SMD-Bausteinen.



Theorie der Frequenzmessung
Die Grundlagen der Frequenzmessung mit dieser Schaltung wurden bereits im Zusammenhang mit dem 50-MHz-Frequenzzähler und dem 1-GHz-Frequenzzähler erläutert.

Prinzipbedingt steigt die Messgenauigkeit mit der Frequenz. Bei einem kalibrierten Frequenzmesser liegt er ab 1 MHz unter 20 ppm (0,002 %).
Bei nur 10 kHz liegt der Fahler bei 400 ppm (0,04%), was oft noch ausreichend ist.
Für Frequenzen unter 400 Hz liegt der Fehler im %-Bereich, das ist nicht akzeptabel.

Alternative für tiefe Frequenzen: Periodenlängenmessung
Ein Frequenzmesser mit dem 16F84 nach obrigem Prinzip, arbeitet nur bei hohen Frequenzen genau. Für Frequenzen unterhalb von 10 kHz bietet sich alternativ die Periodenlängenmessung an. Dafür wird aber ein CCP-Kanal benötigt, den der 16F84 nicht besitzt. Der weitestgehend kompatible 16F628 hat aber den nötigen CCP-Kanal, und eignet sich deshalb für die Periodenlängenmessung.

Es wird die Dauer einer Schwingung der unbekannten Eingangsfrequenz gemessen. Dazu betreibt man das CCP-Module im Capture-Mode und lässt man den Timer1 einen Takt von 2,5 MHz zählen. Wird am Eingang ein low-high-Übergang festgestellt, wird der Timer1 auf 0 gesetzt. Das Capture-Module ist so eingestellt, dass es bei jedem 4. low-high-Übergang den Stand des Timers1 in das Capture-Register kopiert. Damit steht im Capture-Register die Anzahl der Timer1-Takte, die der Länge von 4 Perioden der unbekannten Eingangsfrequenz entsprechen.

Da der Timer1 16-bittig ist, würde er schon nach 26ms überlaufen, und die niedrigste messbare Frequenz wäre 10 Hz. Werden aber die Timer1-Überläufe in einem 8-Bit-Register mitgezählt, hat man einen 24-Bit Zähler, der erst nach 6,7 Sekunden überläuft. Damit lassen sich Frequenzen bis hinab zu 0,6 Hz messen. Die Gesamtlänge der 4 Perioden wird mit 0,4µs Genauigkeit gemessen. Folglich wird eine Periode mit 0,1µs Genauigkeit gemessen.
Für eine Eingangsfrequenz von 1 Hz ergibt sich die illusorische Genauigheit von 0,1ppm. Der Quarzfehler ist also hier das Limit (>10 ppm). Der prinzipielle Messfehler ist aber proportional zur Frequenz. Mit steigender Frequenz sinkt die Genauigkeit:

100 Hz    10 ppm
1kHz    100 ppm
10 kHz    1000 ppm
100 kHz    10000 ppm

Bis 6 kHz ist die Periodenlängenmessung der Frequenzzählmethode also überlegen, darüber kehrt sich das Blatt um.

Um aus dem Messergebnis die Frequenz zu errechnen, geht mann wie folgt vor

Das lässt sich zu folgender Formel zusammenfassen:    Frequenz = 10 000 000 / Messwert
Da der dezimale Zahlenwert 10 000 000 als Binärzahl 24 bit lang ist (0x989680) wird eine 24-Bit Division benötigt- und zwar eine mit einem Gleitkommaergebnis.



Beschreibung der gewählten Lösung
Die nötigen Beschreibungen der Frequenzmessungen befindet sich in den Beschreibungen für den 50-MHz-Frequenzzähler und den 1-GHz-Frequenzzähler .

Die Umschaltung zwischen den Eingängen erfolgt durch das Drücken eines Tasters. Da der Taster nur 2 mal pro Sekunde abgefragt wird, muss er etwa eine halbe Sekunde gedrückt werden. Die Umschaltung erkennt man am Umschalten der LEDs (die den jeweils aktiven Eingang markieren) wie auch am LCD. Am Anfang der 2. LCD-Zeile wird der jeweils aktive Eingang angezeigt:

Nach dem Einschalten der Betriebsspannung ist immer der erste Eingang aktiv.

In der rechten Hälfte der 2. LCD-Zeile wird die Anzeigegenauigkeit angegeben. Da die Anzeige bis zu 10 Stellen lang sein kann, die eigentliche Messung aber maximal 7 Stellen genau ist, dient dieser Wert der Abschätzung der Genauigkeit der angezeigten Messwerte.
 



Aufbau

Den PIC16F84 mit dem HEX-File programmieren.

Platine anfertigen und bestücken mit Außnahme folgender Teile:
- Schaltkreis PIC16F84 (IC1)
- Schaltkreis U664
- Schaltkreis NE592 (IC2)
- Transistor BC328 (Q2)
- Widerstand R12 220 Ohm

Für den PIC16F84 und den NE592 sind IC-Fassungen einzulöten.

Den Stromversorgungseingang X1 mit AC oder DC mit einer Spannung von 16 .. 20 V verbinden. Die Spannung am out-Pin des 7805 muss nun 5V betragen, und die  am out-Pin des 7812 sollte bei 12V liegen. Abweichungen sollten kleiner als 5% sein. Die Betriebsspannung entfernen.

Das LCD-Display anstecken. Die Betriebsspannung wieder anlegen. Den Kontrastregler R9 (10k) so einstellen, das im Display deutlich dunkle Vierecke zu erkennen sind. Die Betriebsspannung entfernen.

Nun den U664 einlöten und den PIC16F84 sowie den NE592 in die IC-Fassungen stecken. Die LEDs und den Taster anschließen.
Die Betriebsspannung wieder anlegen.
Die LED 1 leuchtet auf.
Das LCD zeigt kurz "HALLO".
Danach zeigt es "0 Hz / Apm. +  4 Hz", wobei der Schrägstrich den Beginn der 2. Displayzeile symbolisiert.
Im 2-Hz-Rythmus wechselt das "+" in der 2. Zeile mit einem "-".

Den Taster drücken bis LED 1 verlischt und LED 2 aufleuchtet (ca. 0,5s lang).
Das LCD zeigt "0 Hz / TTL +  4 Hz". Im 2-Hz-Rythmus wechselt das "+" in der 2. Zeile mit einem "-".

Den Taster drücken bis LED 2 verlischt und LED 3 aufleuchtet (ca. 0,5s lang).
Das LCD zeigt "0 Hz / 64:1 +  256 Hz". Im 2-Hz-Rythmus wechselt das "+" in der 2. Zeile mit einem "-".
Die Betriebsspannung entfernen.

Den Transitor BC328 (Q2) und den Widerstand R12 220 Ohm noch nicht einlöten.
 



Funktiontest

Um die Funktionstüchtigkeit des fertig aufgebauten Frequenzzählers zu prüfen, lässt man ihn seine eigene Quarzfrequenz messen.

Die Betriebsspannung wieder anlegen. LED 1 leuchtet auf.
Den Eingang 1 mit dem Taktausgang des PIC OSC2 (Pin 15) verbinden.
Das LCD zeigt "10 000 000 Hz / Amp. +  16 Hz". Im 2-Hz-Rythmus wechselt das "+" in der 2. Zeile mit einem "-".
Den Eingang 1 vom Pin 15 des PIC trennen.

Den Taster drücken bis LED 1 verlischt und LED 2 aufleuchtet (ca. 0,5s lang).
Den Eingang 2 mit dem Taktausgang des PIC OSC2 (Pin 15) verbinden.
Das LCD zeigt "10 000 000 Hz / TTL +  16 Hz". Im 2-Hz-Rythmus wechselt das "+" in der 2. Zeile mit einem "-".
Den Eingang 2 vom Pin 15 des PIC trennen.

Den Taster drücken bis LED 2 verlischt und LED 3 aufleuchtet (ca. 0,5s lang).
Pin 1 oder 14 des Relais K3 (oder Pin 3 des PIC) mit dem Taktausgang des PIC OSC2 (Pin 15) verbinden.
Das LCD zeigt "640 000 000 Hz /64:1 +  1024 Hz". Im 2-Hz-Rythmus wechselt das "+" in der 2. Zeile mit einem "-".
Das Relaispin (bzw Pin 3 des PIC) vom Pin 15 des PIC trennen.
Die Betriebsspannung entfernen.

Den Transitor BC328 (Q2) und den Widerstand R12 220 Ohm einlöten.

Damit ist die Funktionsfähigkeit des Frequenzzählers (ohne 64:1-Vorteiler) erwiesen. Zum Test des Vorteilers benötigt man eine Frequenz von mindestens 50 MHz (z.B. Quarzoszillator), die zur Messung mit dem Eingang des Vorteilers verbunden wird. Die angezeigte Frequenz kann dabei um 0,005% von der wirklichen Eingangsfrequenz abweichen, solange der Frequenzzähler nicht kalibriert ist.



Kalibrierung

Ohne Kalibrierung erreicht der Zähler eine Genauigkeit von ca 0,005%. Die Frequenzabweichungen werden durch eine Abweichung der Quarzfrequenz von den gewünschten 10 MHz verursacht (ohne spezielle Maßnahmen ca. 50ppm). Der Quarz muss mit dem Trimmkondensator C10 abgeglichen ('gezogen') werden. Ohne Abgleich wäre der angezeigte Frequenzwert etwa 0,005% ungenau.
Ich stelle hier zwei mögliche Kalibrierverfahren vor:
 

Variante 1: mit Referenzfrequenzquelle
Wer das Glück hat, auf eine Referenzfrequenzquelle (z.B. kalibrierter Oszillator) mit einer Frequenz zwischen  2 MHz und 50 MHz zugreifen zu können, kann diese Methode benutzen.
Der Frequenzzähler wird an die Referenzfrequenzquelle angeschlossen und durch Verstellen des Trimm-Kondensators die angezeigte Frequenz der Referenzfrequenz angeglichen. Die Referenzfrequenz sollte mindestens 2 MHz betragen, damit der Messfehler nicht durch die Anzeigeungenauigkeit kaschiert wird.  Andererseits sollte die Frequenz nicht über 50MHz liegen, und mann sollte den Eingang 1 bzw Eingang 2 benutzen.

Der zulässige Anzeigefehler ist je nach Messbereich 8 Hz (bei f < 8 MHz) bis 64 kHz (bei f > 32 MHz) und wird in der 2. LCD-Zeile angegeben.

Danach sollte der Messfehler im gesamten Frequenzbereich auf 0,001% (10 ppm) reduziert sein. Höhere Genauigkeiten lassen sich nur noch mit einem Termostat erreichen, der den Quarz auf einer konstanten Temperatur hält.
Normale Quarze oder Quarzoszillatoren ohne Kalibrierung eignen sich nicht als Lieferant für eine Referenzfrequenz, da sie zu ungenau sind!
 

Variante 2: die Uhrenmethode
Wer (wie die Meisten) keine präzise Referenzfrequenz zur Verfügung  hat, kann wie hier beschrieben vorgehen.  Die dazu nötige Uhrensoftware ist Bestandteil der Frequenzzählersoftware.
Der Frequenzzähler wird bei gedrückter Taste eingeschaltet. Im Display erscheint die Uhrzeit "00:00:00", und die angezeigte Zeit fängt an, im Sekundenrythmus zu laufen. Jeder weitere Druck auf die Taste setzt die Zeit auf "00:00:00" zurück.

Genau zur vollen Stunde (nach der Fernseh-Uhr) wird die Null-Taste gedrückt. Die Uhr startet mit "00:00:00". Nach 24-Stunden wird festgestellt, ob die Uhr mehr als 1 Sekunde vor oder nach geht. Ist dass der Fall, wird der Trimmkondensator verändert, und die Uhr zur vollen Stunde wieder auf "00:00:00" gesetzt. Eine vergrößerte Kapazität bremst eine zu schnell laufende Uhr, eine verkleinerte Kapazität beschleunigt eine zu langsame Uhr. Eine Veränderung des Trimmkondensators um 1 pF bewirkt eine Gangänderung von ca. 0,25 Sekunden pro Tag. Nach einigen Tagen sollte man eine Trimmerstellung gefunden haben, bei der die Uhr genau läuft.
Ein Gangfehler von 1 Sekunde am Tag entspricht einem Frequenzfehler von 12 ppm (0,0012%). Eine höhere Genauigkeit ist ohne Termostat nicht zu erreichen.

Nun wird die Frequenzmesser ausgeschaltet und wieder eingeschaltet, um die Frequenzmesssoftware zu starten.


Mögliche Verbesserungen
Anstelle des Großvaters PIC16F84 kann natürlich ein moderner und billigerer Typ wie z.B. der  PIC16F628 verwendet werden. Die dafür nötigen Änderungen in der Software sind minimal (Änderung der Initialisierung des Port A).
Wenn schon ein 16F628 verwendet wird, dann kann man auch sein CCP-Modul benutzen um niedrige Frequenzen mit einer Periodendauermessung genau zu bestimmen (vergleiche mit diesem Drehzahlmesser). Dafür müsste das R/W-Pin des Displays an RB1 angeschlossen werden, und RB3 (CCP-Eingang) mit RA4 verbunden werden. Die Harwareänderungen wären also minimal, die Software wäre natürlich etwas komplizierter.

Die Eingangsbeschaltung für den 64:1-Vorteiler ist noch nicht optimal.

Ein schnellerer Vorteiler ermöglicht ein Vordringen in das S-Band bis zu 4,29 GHz..
Ein MB506 von Fujitsu ermöglicht z.B. 2,4 GHz. Er erfordert aber leider eine Softwareänderung, da er ein 128:1 Teiler ist.



Hinweis zum LCD-Display
Das Programm wurde für ein 2-zeiliges DotMatrix-Display mit 16 Zeichen pro Zeile geschrieben. Alle Displays mit dem Hitachi-Controllerchip HD44780 funktionieren ähnlich, so dass die Nutzung eines größeren Displays (z.B. 2x20) problemlos möglich ist.
Das Display muss aber ein Typ für den normalen Temperaturbereich (nur von 0°C bis 50°C) sein, da der Frequenzmesser keine negative Kontrastspannung bereitstellen kann.


Entwicklungsstand
Die Software wurde angepasst und funktioniert.
Der Vorteiler ist erst bis 200 MHz erprobt.Änderungen an der Eingangsbeschaltung und dem Treibertransistor sind noch möglich.



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


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

Autor: sprut
erstellt: 12.12.2005
letzte Änderung: 12.12.2005