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

mit PIC16F628 und LCD-Display
zurück zu Projekte , PIC-Prozessoren , Elektronik , Homepage

Redesign
Die Urversion des Projektes stammt aus dem Jahre 2005, und war eigentlich nur als Prototyp gedacht. Knapp 10 Jahre Später habe ich das Gerät einem Redesign unterzogen, und diverse kleinere Änderungen aufgenommen. Wer sich für die Urversion interessieren sollte, der findet dessen Homepage hier.


 
Ein universeller 7-stelliger Frequenzzähler von 1 Hz bis 1 GHz
Für den Elektronikbastler ist ein Frequenzmesser ein wichtiges Messgerät. Hier wird eine einfache und preiswerte Lösung vorgeschlagen.

Technische Daten
Schaltungsbeschreibung
Mechanischer Aufbau
Bedienung
Mechanischer Aufbau
Messprinzip
Steckverbinder/Anschlüsse
Aufbau, Inbetriebnahme
Funktionstest
Kalibrierung
Ergebnis



Ansicht
                des Frequenzmessers


Technische Daten
Grundmerkmale
Frequenzbereich
Normalmode: 5 Hz bis 1 GHz
Präzisionsmode: 1 Hz bis 1 GHz
Auflösung 24 Bit
Messgenauigkeit
(durch Quarz bedingt)
(f > 4 MHz)
unkalibriert 0,005% = 50 ppm
normal 0,001% = 10 ppm
maximal 0,0002% = 2 ppm
mit TCXO (Präzisionstaktquelle) 0,00002%
Messgenauigkeit
(f < 4MHz)
6,4 kHz ... 4 MHz
1 ... 2 Hz (je nach Mode)
1 Hz ... 6,4 kHz
0,05 us (Periodenlänge)
Anzeigefehler
6,4 kHz ... 4 MHz <0,032% (320 ppm)
(2/f + 0,001%)
64 Hz ... 6,4 kHz 0.001 Hz + 10 ppm
(1 kHz: 11 ppm)
(4 kHz: 14 ppm)
f < 64 Hz 0.000 001 Hz + 10 ppm
(6 Hz: 10 ppm)
Anzeige max.10 Stellen auf LCD
Genauigkeit max. 7 Stellen

 
Messeingänge
Amp 2,5 Hz .. 50 MHz 70 mVpp < U < ±12 V
(>-10dBm)

0,6 Hz .. 2,5 Hz 150 mVpp < U < ±12 V
TTL 1 Hz .. 50 MHz TTL <= U < ±44 V
25 kOhm pull-up
64:1/40:1 30 MHz .. 1 GHz 10mV < U < ±9 V
(>-10dBm)

 
Auflösung (Anzeigefehler)
Messbereich normal
Präz.-Mode 2s
Präz.-Mode 4s
1 Hz  ...  64 Hz 0.000 001 Hz 0.000 001 Hz 0.000 001 Hz
64 Hz ... 6 kHz
0.001 Hz 0.001 Hz
0.001 Hz
8 kHz ...4 MHz 2 Hz 1 Hz
1 Hz
4 MHz ...  8 MHz 4 Hz 1 Hz 1 Hz
8 MHz ... 16 MHz 8 Hz 2 Hz 1 Hz
16 MHz ... 32 MHz 16 Hz 4 Hz
2 Hz
32 MHz ... 50 MHz 32 Hz 8 Hz
4 Hz
50 MHz ... 250 MHz 128 Hz 64 Hz
32 Hz
250 MHz ... 500 MHz 256 Hz 64 Hz
32 Hz
500 MHz ... 1 GHz 0.5 kHz 128 Hz
64 Hz
>1 GHz
1 kHz 256 Hz
128 Hz
anklicken zum Vergrößern

- HEX-File und ASM-File
- Stromlaufplan
- Bestückungsplan
- Abbildung der Platine
- Platine als Eagle-File
- Layout als GIF-File (600 dpi) (optimiert zum selber ätzen)
- Stückliste


Schaltungsbeschreibung

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 wurde. Während die anderen Frequenzzähler eigentlich nur Experimente waren, wollte ich nun ein fertiges, praxistaugliches Gerät für meinen Bastelkeller fertigen.
Da der Messfehler der Frequenzzählung unterhalb von 6,4 kHz recht groß wird, schalte ich dann in eine Periodenmessung um, die bei niedrigen Frequenzen deutlich kleinere Messfehler hat. 

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 Tastendruck (ca. 1/2 Sekunde lang) wird zum nächsten Eingang umgeschaltet. Der jeweils aktive Eingang wird durch eine LED markiert.

Eingang 1: Amp
Das ist ein universeller Eingang für Frequenzen von 2,5 Hz bis 50 MHz  mit Amplituden ab 70 mVpp. Niedrigere Frequenzen werden nur bei höherer Amplitude korrekt gemessen. Für 1 Hz sind etwa 100 mVpp nötig, für 0,6 Hz sind es dann 150 mVpp. Das Signal wird zunächst mit FETs verstärkt und dann einem schnellen Komparator zugeführt. Dessen Schaltschwelle kann mit einem Potentiometer passend eingestellt werden. Den korrekten Pegel des Schaltschwelle kann man mit Hilfe zweier LEDs überwachen (siehe Signalanzeige).
Bis 50MHz arbeitet der Eingang sicher. Man kann ihn zwar auch bis ca. 70 MHz verwenden, aber dann wird die Einstellung der Schaltschwelle schwierig und der LT1016 kommt auch an seine Grenzen.

Eingang 2: TTL
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 Eingang hat Schmitt-Trigger-Eigenschaften . Der High-Pegel muss +4V überschreiten und der Low-Pegel +1V unterschreiten. Der Eingangspegel sollte 44 V nicht überschreiten. Das weicht zwar von der TTL-Spezifikation etwas ab, sollte aber in der Praxis keine Probleme bereiten. Der Eingang hat einen internen pull-up-Widerstand von ca. 25 kOhm, um ein Schwingen bei offenem Eingang zu verhindern. Die Signalquelle sollte also einen Ausgangswiderstand von deutlich weniger als 5 kOhm haben, um einen sauberen low-Pegel (< 1 V) erzeugen zu können.
Der Frequenzbereich geht von ca. 0,7 Hz bis 50 MHz, ist aber in der Software im Normalbetrieb auf 5 Hz Minimalfrequenz limitiert. Für tiefere Frequenzen muss man den Präzisionsmode aktivieren.
Neben der BNC-Buchse gibt es noch eine 3-polige Buchsenleiste, die man alternativ verwenden kann. Da hier auch 5 VDC-Betriebsspannung mitgeliefert wird, kann man z.B. zusätzliche Messfühler für diesen Anschluss entwickeln. Denkbar wären z.B. Vorteilertastköpfe.

Eingang 3: 64:1 oder 40:1
Dieser Eingang hat den HF-Vorteiler mit U664, der auch im 1-GHz-Zähler verwendet wird. Es eignet sich die SIL-Version des U664 oder der U813BS SI für 1,15 Euro (Dezember 2015). Beide Chips lassen sich in der Schaltung ohne weitere Anpassungenn verwenden. Seine Eingangsempfindlichkeit ist etwa 10 mV. Der Eingangspegel sollte 9V nicht überschreiten.
Es fällt auf, dass der U664B /U813 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.
Anstelle eines 64:1-Vorteilers kann auch ein 40:1-Vorteiler (z.B. MC12080) verwendet werden. In diesem Falle ist das Pin 4 (MCLR) des PIC16F628 mit Masse (Vcc) zu verbinden und R6 zu entfernen. Der Mikrocontroller berücksichtigt dann das andere Vorteilerverhältnis automatisch in seinen Berechnungen. Natürlich muss man für so einen nicht-pinkompatiblen Chip das Platinenlayout anpassen.
Die erreichbare höchste Frequenz hängt vom Aufbau der Teilerstufe und vor allem von der Dimensionierung des Pegelwandlers um Q2 ab. Ca. 700 MHz sind eigentlich problemlos erreichbar. Darüber hinaus wird die Luft aber dünner. Mit einem BF324 als Q2 und 220 Ohm für R12 erreiche ich 1GHz mit einer Empfindlichkeit von -6dBm.
(Nimmt man kleinere Werte für R12, dann sinkt ab 600 MHz der obere Pegel des Signals zu sehr ab. Nimmt man einen Transistor mit schlechterer Grenzfrequenz, dann ist der untere Pegel des Signals zu hoch für den folgenden PIC16F628.)

Signalanzeige
Der Schmitt-Trigger-IC IC3 treibt die beiden LEDS DZ1-1 und DZ1-2. Die Pegel an den beiden LEDs sind genau entgegengesetzt, so dass immer nur eine der beiden LEDs leuchtet. Bei Eingangsfrequenzen von mehr als 10 Hz scheinen dann beide LEDs zu leuchten.
Dadurch lässt sich leicht erkennen, ob ein Eingangssignal am Zähler anliegt (beide LEDs leuchten oder flackern) oder nicht (nur eine LED leuchtet). Das vereinfacht auch die Einstellung der Schwelle des Vorverstärkers (Amp) mit Hilfe des Potentiometers. Bei Linksanschlag des Potis leuchtet eine LED und bei Rechtsanschlag die andere. Durch Verdrehen sucht man den Punkt, wo beide LEDs in etwa gleich hell zu leuchten scheinen.

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 zweizeiligen 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 bereitstellt.

Präzisionstaktquelle (optional)
Der Takt für den PIC bestimmt die Genauigkeit der Frequenzmessung. Im einfachsten Fall stammt dieser aus dem 20MHz-Quarz Q1 mit den Kondensatoren C10, C20 und C15. Mit dem Trimmer C10 lässt sich die Quarzfrequenz etwas korrigieren. Allerdings ist weder die Genauigkeit noch die Stabilität eines Quarzes gut genug, um der Auflösung dieses Frequenzzählers gerecht zu werden. Deshalb gibt es eine Zusatzplatine mit einem TCXO und einem Eingang für eine externe 10-MHz Referenzfrequenz. Wer diese benutzen will, lässt dafür Q1, C10, C20, C15 weg, und verbindet die Präzisionstaktquellemit dem Stecker SV4 (Pinbelegung beachten).

Stromversorgung
Ich verwende ein einfaches Steckernetzteil, das AC oder DC im Bereich von 9..12 V liefert. Die Schaltung nimmt etwa 140 mA auf. Die vom 7805-Spannunngsregeler abzuführende Wärme steigt mit dem Pegel der Eingangsspannung an. Eine unnötig hohe Speisespannung sollte deshalb vermieden werden. Deshalb wird die externe Betriebsspannung von 9V..12V AC gleichgerichtet und gesiebt. Danach folgt eine zweistufige Spannungsregelung mit 7805.
Es ist prinzipiell möglich, anstelle von 9 ... 12 V AC auch 9 ... 12V DC einzuspeisen.
Großverbraucher ist der U664, der etwa 50 mA aufnimmt. Dann folgt das Relais , das etwa 10 mA benötigt. PIC, Display (ohne Beleuchtung) und LEDs kommen noch einmal zusammen auf 10 mA. Falls das Display beleuchtet ist, fallen dafür noch einmal etwa 70 mA an. Das addiert sich zu etwa 140 mA auf der 5V-Leitung. Der 7805 muss also etwa 1 W in Wärme umwandeln. Das erfordert einen Aufsteckkühlkörper.

Falls die optionale Präzisionstaktquelle (Frequenzvervielfacher) eingesetzt wird, müssen auch dessen 60mA auf der 5V-Leitung mit berücksichtigt werden.


Mechanischer Aufbau

Die Platine trägt alle Bauteile mit Ausnahme;
- des Displays,
- des Potentiometers zur Schwellwerteinstellung,
- des Tasters zur Eingangswahl und
- der drei LEDs die den aktiven Eingang anzeigen.

Ich wollte mein altes Gehäuse wieder nutzen, deshalb lagen die Positionen der BNC-Buchsen auf der Platine fest. Normalerweise werden die Elemente der Frontplatte auf einer Trägerplatte montiert, die hinter der eigentlichen Frontplatte liegt. Um aber alles möglichst einfach zu halten, benutze ich die Frontplatte als Trägerplatte. Die BNC-Buchsen werden also auf der Frontplatte verschraubt. Damit ist auch die Platine im Gehäuse ausreichend befestigt.
Für die beiden LEDs der Signalanzeige habe ich an passenden Stellen zwei 3 mm Löcher in die Frontplatte gebohrt. Löcher für die drei LEDs der Kanalauswahlanzeige befinden sich direkt über den drei BNC-Buchsen in der Frontplatte. Die LEDs werden dort in Fassungen gesetzt und per Draht mit den Kontakten LST9 ... LST14 verbunden. Das Display bleibt aus der vorigen Geräteversion erhalten. Es ist an der Frontplatte hinter einem passenden Ausschnitt mit Heißkleber befestigt und wird per Flachbandkabel mit der Platine verbunden.
Rechts vom Display befinden sich der Taster zur Kanalauswahl und das Potentiometer für den Verstärkerschwellwert. Beide sind mit der Frontplatte verschraubt und per Draht mit der Platine verbunden.

Da die Platine nicht bis zur Gehäuserückwand reicht, benutze ich die Buchse X1 nicht. Stattdessen ist eine Buchse für das Kabel des Steckernetzteils in der Rückwand verschraubt, und mit den Pins von JP1 verbunden.

topview
Wird zusätzlich die Präzisionstaktquelle verbaut, dann wird für deren BNC-Buchse ein Loch in die Gehäuserückwand gebohrt, und die Platine dort mit der Überwurfmutter der BNC-Buchse festgeschraubt. Die Platine der Präzisionstaktquelle liegt neben der Hauptplatine. Sie wird mit dem Steckverbinder SV4 verbunden. Dabei ist auf die Pinbelegung zu achten - es ist keine 1:1 Verbindung. Nun wird zwischen LSP1 (Anode) und LSP2 (Kathode) eine LED angeschlossen (die sich an der Frontplatte befinden sollte. Diese leuchtet dann solange der TCXO der Präzisionstaktquelle verwendet wird. Bei Einspeisung einer externen Referenzfrequenz verlischt sie.


Bedienung

Die Umschaltung zwischen den Eingängen erfolgt durch kurzes (<1s) Drücken des Tasters. 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:

Das Gerät merkt sich den gewählten Eingang auch über das Abschalten der Betriebsspannung hinaus.

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.

Frequenzen über 6,3 kHz werden mit der Frequenzzählmethode gemessen, Frequenzen darunter mit der Periodenlängenmessung.

Der Messwert wird etwa alle 500 ms aktualisiert.

Die LEDs DZ1-1 und DZ1-2 zeigen den normalen und den inversen Pegel des Messeingangs an. Bei Eingangsfrequenzen von mindestens mehreren 10 Hz sollten scheinbar beide LEDs leuchten solange ein Messignal anliegt. Bei einem Messsignal niedrigerer Frequenz blinken beide LEDs abwechselnd. Bei Benutzung des Amp-Eingangs ist das Potentiometer so einzustellen, dass beide LEDs leuchten oder blinken. Dann stimmt die Schaltschwelle am Komparator des Vorverstärkers.

Präzisionsmode-2s:
Wird der Taster länger als 1 Sekunden gedrückt, dann wird nicht der Eingang umgeschaltet, sondern der Präzisionsmode-2s eingeschaltet. Das erkennt man am zweifachen Flackern der Eingangs-LED.
Im Präzisionsmode-2s ist die Messgenauigkeit der Frequenzzählmethode (>6,3 kHz) vier mal höher als im Standardmode. Allerdings wird dadurch der Messwert auch nur etwa alle 2 Sekunden aktualisiert. Die Genauigkeit der Periodenlängenmessung erhöht sich im Präzisionsmode nicht, aber es können dann auch extrem niedrige Frequenzen bis hinab zu 0,6 Hz gemessen werden. (Im Normalmode nur hinab bis 4,8 Hz.)
Um den aktiven Präzisionsmode-2s zu kennzeichnen, wird dem Messwert im Display ein '*' vorangestellt.

Präzisionsmode-4s:
Wird der Taster länger als 2 Sekunden gedrückt, dann wird in einen Präzisionsmode-4s mit noch einmal verdoppelter Frequenzzählgenauigkeit geschaltet. Das erkennt man dann am vierfachen Flackern der Eingangs-LED. Allerdings wird dadurch der Messwert auch nur etwa alle 4 Sekunden aktualisiert. Die Periodenlängenmessung entspricht der vom Präzisionsmode-2s.
Um den aktiven Präzisionsmode-4s zu kennzeichnen, wird dem Messwert im Display ein '#' vorangestellt.

Nach dem Einschalten des Gerätes ist der Präzisionsmode stets deaktiviert. Wird bei aktivem Präzisionsmode der Eingang gewechselt (Tasterdruck), dann wird der Präzisionsmode abgeschaltet.


Messprinzip

Für die meisten Frequenzen eignet sich das Prinzip des Frequenzzählers am besten. Da die Messauflösung (im Normalmode) aber nur 2 Hz beträgt, ist bei niedrigen Frequenzen der Fehler der Messung recht hoch. Ab 200 Hz liegt der Fehler unter 1%. Ab 4 MHz liegt der Anzeigefehler bei unter 0,00005%. Die Messgenauigkeit wird dann von der Quarzgenauigkeit begrenzt.
Um auch bei niedrigen Frequenzen eine bessere Auflösung zu erreichen, wird unterhalb von 6,4 kHz eine Periodenlängenmessung durchgeführt. Deren Messfehler liegt bei 6,3 kHz bei 315 ppm (0,0315 %) und sinkt mit der Frequenz drastisch.
 

Theorie der Zähl-Frequenzmessung
Die Grundlagen der Zähl-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 Zähl-Frequenzmesser liegt er ab 100 kHz unter 20 ppm (0,002 %).
Bei nur 10 kHz liegt der Fahler bei 200 ppm (0,02%), was oft noch ausreichend ist.
Für Frequenzen unter 200 Hz läge der Fehler im %-Bereich, das wäre nicht akzeptabel.

Fehler der
        Zählfrequenzmessung
 

Alternative für tiefe Frequenzen: Periodenlängenmessung
Ein Frequenzmesser nach obigem Prinzip, arbeitet nur bei hohen Frequenzen genau. Für Frequenzen unterhalb von 6,4 kHz bietet sich alternativ die Periodenlängenmessung an. Dafür wird aber ein CCP-Kanal benötigt. Der PIC16F628 hat 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 5 MHz (1/4 des PIC-Taktes) 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 nur 16-bittig ist, würde er schon nach ca. 13 ms überlaufen, und die niedrigste messbare Frequenz wäre 305 Hz. Werden aber die Timer1-Überläufe in einem 9-Bit-Register mitgezählt, dann hat man einen 25-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,2 µs Genauigkeit gemessen. Folglich wird eine Periode mit 0,05 µs Genauigkeit gemessen.
Für eine Eingangsfrequenz von 2 Hz ergibt sich die illusorische Genauigkeit von 0,1 ppm. Der Quarzfehler ist also hier das Limit (>10 ppm). Der prinzipielle Messfehler ist aber proportional zur Frequenz. Mit steigender Frequenz sinkt die Genauigkeit:
 
Fehler der Periodenmessung
Frequenz
Auflösungsfehler der Periodenlängenmessung (0,05µs)
Auflösungsfehler der Zähl-Frequenzmessung (2Hz)
100 Hz
5 ppm
20 000 ppm
1kHz 
50 ppm
2 000 ppm
6,4 kHz
315 ppm
312 ppm
10 kHz
500 ppm
200 ppm
100 kHz
5000 ppm
20 ppm

Bis ca. 6,3 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 man wie folgt vor

Das lässt sich zu folgender Formel zusammenfassen:    Frequenz = 20 000 000 / Messwert  [Hz]
Da der dezimale Zahlenwert 20 000 000 als Binärzahl 25 Bit lang ist (0x01 31 2D 00) wird eine 32-Bit Division benötigt- und zwar eine mit einem Gleitkommaergebnis.

Ich verwende eine primitive Ganzzahldivision (mit Rest) um zunächst den ganzzahligen Frequenzwert zu erhalten. Den Rest der Division multipliziere ich mit 1000 und dividiere ihn dann noch einmal durch den Messwert. Damit erhalte ich drei Nachkommastellen.
Liegt die Eingangsfrequenz unter 64 Hz, dann wird auch der Rest der zweiten Division mit 1000 multipliziert und das Multiplikationsergebnis noch mal durch den Messwert dividiert. Das ergibt zusätzliche 3 Nachkommastellen, so dass die Frequenz dann mit zwei Vorkommastellen und 6 Nachkommastellen angezeigt wird. Das übertrifft in jedem Fall die Messgenauigkeit.



Steckverbinder / Anschlüsse

Der obige Stromlaufplan stellt nur die Platine dar, einige Bedienelemente müssen dort noch angeschlossen werden
Die folgenden Lötstützpunkte hat die Platine:
Die folgenden Steckverbinder hat die Platine:
Pinbelegung für den Displayanschluss SV1:

Signal
Vss
Vdd
Vo
RS
R/W
E
D4
D5
D6
D7
Pin an SV1
1
2
3
4
5
6
7
8
9
10
Pin am Display
1
2
3
4
5
6
11
12
13
14



Aufbau, Inbetriebnahme

Den PIC16F628 mit dem HEX-File programmieren.

Das Platinenlayout ist einseitig, und hat das Format 75 mm x 100 mm. Es ist eine Drahtbrücke nötig, die auf der Bestückungsseite anzubringen ist. 

Die Stromversorgungseingangsbuchse X1 ist nicht nötig, es können natürlich Drähte direkt an JP1 angelötet werden.

Für den Kondensator C15 ist ein hochwertiger, temperaturstabiler Typ zu verwenden. Bei mir hat sich ein Glimmer-Kondensator (Reichelt: CY 22-2 33P) bewährt.

Als Relais müssen 5V-Typen mit mindestens 500 Ohm Spulenwiderstand und mit interner Diode verwendet werden.  (Reichelt "SIL 7271-DHR 5V") Relais mit niedrigerem Innenwiderstand sind nicht geeignet.

Die an LSP9 ... LSP14 anzuschließenden Frontplatten-LEDs sind low-current-Typen. Diese sind oberhalb der Messbuchsen zu montieren. 

An LSP8 & LSP7 ist ein Drucktaster anzubringen.

Vorsicht: Der 10-Pin-Display-Anschluss auf der Platine kann nicht 1:1 mit dem Display verbunden werden. Die Pins 7,8,9,10 sind mit den Display-Pins 11,12,13,14 zu verbinden. Am Display bleiben die Pins 7,8,9,10 frei.

Platine anfertigen und bestücken mit Ausnahme folgender Teile:
- Schaltkreis PIC16F628 (IC1)
- Display noch nicht anschließen
- Widerstand R12 220 Ohm
- Transistor Q2
- Anstelle des 20 MHz-Quarzes wird vorübergehend ein 10 MHz-Quarz eingelötet.

Für den PIC16F628 ist eine IC-Fassung einzulöten.

Den Stromversorgungseingang X1 (oder JP1) mit AC oder DC mit einer Spannung von 9 .. 12 V verbinden. Die Spannung am out-Pin des 7805 muss nun 5V betragen. Abweichungen sollten kleiner als 5% sein. Die Betriebsspannung entfernen.

Das LCD-Display mit einem Kabel 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 PIC16F628 in die IC-Fassung stecken. Die Frontplatten-LEDs und LSP9 ... LSP14 und den Taster an LSP7&LSP8 anschließen. 

Die Betriebsspannung wieder anlegen.
Die LED 1 leuchtet auf.
Das LCD zeigt kurz "HALLO".
Danach zeigt es "0 Hz / Amp. +  2 Hz", wobei hier der Schrägstrich den Beginn der 2. Displayzeile symbolisiert.
Im 2-Hz-Rhythmus wechselt das "+" in der 2. Zeile mit einem "-", das sieht dann aus wie ein "+" mit etwas blassem vertikalen Strich, da das träge LCD-Display nicht mit 2 Hz schalten kann.

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

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

Den Transistor 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.


++HINWEIS++
Für diesen Funktionstest muss der 20 MHz-Quarz vorübergehend gegen einen 10 MHz Quarz ausgetauscht werden. Nach Abschluss des Funktionstests muss dann vor der Kalibrierung wieder der 20 MHz Quarz eingelötet werden.

Die Betriebsspannung wieder anlegen. LED 1 leuchtet auf.
Den Eingang Amp  mit dem Taktausgang des PIC OSC2 (Pin 15) verbinden.
Das LCD zeigt "20 000 000 Hz / Amp. +  16 Hz". Im 2-Hz-Rhythmus 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,5 s lang).
Den Eingang  TTL mit dem Taktausgang des PIC OSC2 (Pin 15) verbinden.
Das LCD zeigt "20 000 000 Hz / TTL +  16 Hz". Im 2-Hz-Rhythmus 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,5 s lang).
Pin 1 des Relais K2 (oder Pin 3 des PIC) mit dem Taktausgang des PIC OSC2 (Pin 15) verbinden.
Das LCD zeigt "1 280 000 000 Hz /64:1 +  1024 Hz". Im 2-Hz-Rhythmus wechselt das "+" in der 2. Zeile mit einem "-".
Das Relais-Pin (bzw. Pin 3 des PIC) vom Pin 15 des PIC trennen.
Die Betriebsspannung entfernen.

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

Den 10 MHz-Quarz entfernen und an seiner Stelle den 20 MHz-Quarz einlöten. Soll die Präzisionstaktquelle verwendet werden, dann werden der Quarz sowie C10, C209, C15 entfernt, und die Präzisionstaktquelle an SV4 angeschlossen.

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

Wird die Präzisionstaktquelle verwendet, dann ist keine weitere Kalibrierung erforderlich. Der Fehler des TCXO liegt typischerweise bei höchstens 2 Hz, was 0,00002% entspricht. Damit ist der Messfehler kleiner als die Auflösung des Gerätes. Bei Einspeisung einer externen 10-MHz-Referenzfrequenz, bestimmt deren Genauigkeit die Genauigkeit des Frequenzzählers.


Wer aber einen Quarz benutzt kann hier weiterlesen:

Ohne Kalibrierung erreicht der Zähler mit einem Quarz eine Genauigkeit von ca 0,005%. Die Frequenzabweichungen werden durch eine Abweichung der Quarzfrequenz von den gewünschten 20 MHz verursacht (ohne spezielle Maßnahmen ca. 50 ppm). Sinnvoll wäre der Einsatz eines TCXO (temperature compensated crystal oscillator) oder TCVXCO (temperature compensated voltage controlled crystal oscillator) anstelle eines einfachen Quarzes. Diese sind aber in den typischen Bastlerläden (noch) nicht erhältlich. Deshalb werden sich viele mit einem Quarz begnügen.
Der Quarz muss mit dem Trimmkondensatoren C10 und C20 abgeglichen ("gezogen") werden. Dabei dient C20 der Grobeinstellung und C10 dann der Feineinstellung. Ohne Abgleich wäre der angezeigte Frequenzwert etwa 0,005% ungenau. Wichtig ist auch, dass für C15 ein Typ mit geringer Temperaturabhängigkeit gewählt wird. Keramische Typen (auch wenn es einige geeignete Varianten gibt) sollte man meiden, und eher einen Glimmerkondensator oder einen Folienkondensator verwenden.

Ich stelle hier vier 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 in den Präzisionsmode4s geschaltet. Durch Verstellen des Trimm-Kondensators wird 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 50 MHz liegen, und man sollte den Eingang Amp bzw. Eingang TTL benutzen.

Der zulässige Anzeigefehler ist je nach Messbereich 1 Hz (bei f < 16 MHz) bis 4 Hz (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 1 Hz-Methode
Das ist eigentlich eine Version der Variante 1. Einige GPS-Module besitzen einen hochgenauen 1-Hz-Ausgang. Man verbindet diesen mit dem TTL-Eingang des Frequenzmessers, und misst die Frequenz. Es ist der Präzisionsmode2s zu aktivieren. Der Frequenzmesser verwendet die Pulslängenmethode und zeigt das Messergebnis mit 6 Nachkommastellen an. Die Anzeige wird etwa alle 4 Sekunden aktualisiert.
Durch Verstellen des Trimm-Kondensators wird die angezeigte Frequenz der Referenzfrequenz soweit angeglichen, bis nur noch die vorletzte Stelle abweicht (0,999 9xx Hz ... 1,000 0xx Hz).

Variante 3: 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 des analogen Fernsehens (gibt es leider kaum noch) oder dem Zeitzeichen im analogen Radio) 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 das 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.
(Wer nur noch digitalen Empfang hat, der kann auch auf eine Funkuhr zurückgreifen. Dann sollte der Abgleich aber mindestens über zwei Wochen erfolgen, da Funkuhren sich oft nur ein mal in 24 Stunden mit dem Zeitsender abgleichen.)
Ein Gangfehler von 1 Sekunde am Tag entspricht einem Frequenzfehler von 12 ppm (0,0012%). Eine höhere Genauigkeit ist ohne Thermostat nicht sicher zu erreichen.
Als ich meinen so kalibrierten Frequenzmesser mit einer hochgenauen 10-MHz-Referenzfrequenz vergleichen konnte, stellte ich einen Messfehler von nur 25 Hz fest. Das entspricht <3 ppm.

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

Variante 4: die DCF77-Methode
Für diese Methode benötigt man ein DCF77-Empfangsmodul aus einem Funkwecker. Sein Ausgangssignal wird auf TTL-Pegel verstärkt und mit der TTL-Eingangsbuchse des Frequenzmessers verbunden. Die positiven Pulse vom Ausgang des DCF-Moduls müssen auch am Ausgang des Verstärkers positive Pulse sein! Die nebenstehende Schaltung zeigt eine solche Taktquelle. Die linke LED dient nur als Z-Diode für die Betriebsspannung des DCF-Moduls (ca. 1,8 V). Die rechte LED sollte im Betrieb im Sekundenrythmus aufblitzen.
Die Antenne muss horizontal liegen, und zeigt mit ihrer Breitseite in Richtung Frankfurt/Main.

Der Frequenzmesser wird bei gedrückter Taste eingeschaltet, er geht in den Uhrenmode. (siehe Variante 3). Nun drückt man die Taste noch einmal so lange, bis die LED des TTL-Eingangs aufleuchtet (ca. 5 Sekunden lang). Die Uhr bleibt stehen und in der zweiten Displayzeile erscheint "DCF77 wait". In der hinteren Hälfte der ersten Zeile erscheint 'P' mit einer darauf folgenden Nummer, die sekündlich inkrementiert wird. Nach ca. 1 Minute erscheint anstelle der Uhrzeit 'Wait 8min'.

Vorab:
Aufgrund des Jitters im DCF-Modul-Ausgangssignals ist die Genauigkeit dieser Methode beschränkt, aber sie ist immer noch ausreichend genau und dabei deutlich schneller als die Uhrenmethode. Man sollte während der Kalibrierung auf ein gutes DCF77-Signal achten. Zur Einschätzung der Signalqualität kann man den Pulszähler (hintere Hälfte der ersten LCD-Zeile) heranziehen. Im Idealfall verhält er sich wie die Sekundenanzeige einer Funkuhr und zählt von 0 bis 58. Eine 59 wird nicht angezeigt, sondern in diesem Moment der Messfehler berechnet. Danach geht es wieder mit 0 los. Bei schlechtem DCF77-Signal zählt der Pulszähler deutlich mehr als 58 Pulse. Der Frequenzmesser überwacht das auch, und zeigt hinter dem Fehlerwert am Ende der zweiten Displayzeile ein "#" an, wenn das Signal brauchbar ist.
Das DCF-Modul reagiert sehr schlecht auf Leitungen direkt an der Antenne oder in ihrer unmittelbaren Umgebung. Signalführende Leitungen (wie z.B. Netzkabel) dürfen sich auf keinem Fall in der unmittelbaren Nähe der Feritantenne befinden.

Die Einstellung erfolgt in 2 Stufen.

1. Stufe: Grobeinstellung
Der Frequenzmesser zählt die Pulse des DCF-Moduls. Eine laufende Pulsnummer wird im hinteren Teil der ersten Zeile angezeigt.
Der Frequenzmesser wertet nun das DCF77- Signal aus, und vergleicht es mit dem internen Takt des Frequenzmessers. Nach etwa 2 Minuten sollte in der zweiten Zeile des Displays ein Zahlenwert angezeigt werden, der dann alle 60 Sekunden aktualisiert wird. Diese Zahl gibt den momentanen Fehler des Gerätes zuzüglich des DCF-77-Jitters mit einer Auflösung von 0,026 ppm an. Durch vorsichtiges Verstellen des Trimmkondensators in kleinsten Schritten sollte dieser Wert auf weniger als ±1000 (= 25 ppm) eingestellt werden. Eine genauere Einstellung ist aufgrund des Jitters im DCF77-Signal nicht möglich. Durch den Jitter schwankt der Wert von Minute zu Minute durchaus um mehrere Hundert, gelegentlich sogar um 1000. Nach jeder Korrektur muss dann 2 Minuten gewartet werden, bis der angezeigte Fehler wieder aktuell ist. Das Vorzeichen des Fehlers (Am Anfang der zweiten Zeile) hilft bei der Festlegung der Korrekturrichtung am Trimmkondensator. Ist das erledigt, dann geht man zur 2. Stufe über.
Sollte der Messwert um mehrere Tausend schwanken, dann ist der Empfang schlecht, und die Kalibrierung kann nicht durchgeführt werden.

DCF-Empfänger
2. Stufe: Feineinstellung
Der Frequenzmesser mittelt den Fehler über 8 Minuten, um eine deutlich genauere Einstellung des Trimmkondensators zu erreichen. Im vorderen Teil der ersten Zeile zeigt er an, wie viele Minuten noch zu warten sind, bis das nächste 8-Minuten-Ergebnis angezeigt wird. Danach erfolgt an dieser Stelle die Anzeige des Fehlers mit einer Auflösung von 0,1 ppm. Man ignoriert nun also die Anzeige in der zweiten Displayzeile, und versucht durch kleinste Korrekturen des Trimmkondensators die alle 9 Minuten aktualisierte Zahl im Vorderteil der ersten Zeile zu minimieren. Nach jeder Änderung am Trimmkondensator  muss man 8 Minuten warten. Ein Wert um ±10,0 ppm ist erreichbar.
Der ppm-Wert ist immer nur für eine Minute im Display zu sehen (danach wird er mit "Wait 8min" überschrieben.) Der Trimmkondensator sollte während dieser Minute verstellt werden. Erst danach beginnt wieder ein 8-Minuten-Messzyklus.
Mit meiner Hardware beträgt der Fehler dieser Methode in der Praxis etwa ±1 ppm. Mit anderen DCF-Modulen mag das Ergebnis abweichen. Man sollte abschließend das ppm-Ergebnis über mehrere Messzyklen beobachten, um das beurteilen zu können.

Grenzen
Da der Quarz thermisch nicht stabilisiert ist, ändert sich seine Frequenz mit der Umgebungstemperatur. Schon die minimale Erwärmung in meinem geschlossenen Gehäuse (durch den Spannungsregler 7805) führt zu einer Messwertänderung von 1ppm. (10 Hz bei 10 MHz) Das harmonisiert recht gut mit dem Normalmode des Gerätes. Verwendet man aber den Präzisionsmode, dann muss man sich der Tatsache bewusst sein, dass der angezeigte Messfehler wahrscheinlich durch den Quarz korrumpiert wird.
Mein Gerät benötigt an seinem festen Standplatz etwa 2 Stunden Aufwärmzeit, um bei 10 MHz mit einen Fehler von 1 Hz (0,1 ppm) zu arbeiten. Dann führt aber schon der Wechsel des Standortes innerhalb des Raumes zu einem Fehler von bis zu 1 ppm, da sich dabei die Temperatur im Gehäuse wieder ändern kann. Einen Fehler von weniger als 2 ppm halte ich deshalb nicht für sicher beherrschbar.

Externe Referenzfrequenz
In vielen Laboren und inzwischen auch in so manchem Bastlerkeller gibt es eine hochstabile Referenzfrequenz, die per BNC-Kabel an bedürftige Messgeräte weitergegeben werden kann. Dabei handelt es sich in der Regel um 10 MHz. Um so eine Referenzfrequenz in diesen Frequenzmesser einzuspeisen, gibt es eine spezielle Adapterplatine. Sie wird mit einem möglichst kurzen Kabel mit SV4 verbunden.



Ergebnis
 
Der Frequenzmesser ist aufgebaut und funktioniert zufriedenstellend.

Das nebenstehende Foto zeigt den Frequenzmesser (oberes Gerät) angeschlossen an meinen 20-MHz-DDS-Frequenzgenerator. Dessen Ausgangssignal ist 10 MHz bei 1V p-p. Am Frequenzmesser benutze ich den Amp-Eingang.

Der AMP-Eingang funktioniert bis zu einer Frequenz von 80 MHz mit einem Mindesteingangspegel von -15 dBm.

Der 64:1-Eingang funktioniert von 60 MHz bis zu 1,16 GHz. Die Empfindlichkeit schwankt im Bereich von 200MHz bis 800 MHz zwischen -10 dBm und -13 dBm. Bei 1,1GHz sind es -4dBm und bei 100MHz ebenfalls -4dBm. Der U664B allein funktioniert bis etwa 1500MHz. Ein Problem im Bereich von 200 MHz bis 256 MHz wurde mit der Firmware-Version 2.4 beseitigt.

Mit der Präzisionstaktquelle ist der Messfehler bei 10MHz kleiner als 2 Hz und damit kleiner als die Anzeigeauflösung des Gerätes. Ein Warmlaufen des Gerätes ist nicht nötig.

Mit einem normalen Quarz ist der Fehler auch bei guter Kalibrierung mindestens 10 Mal so groß, und vor allem ändert er sich, mit der Erwärmung des Gerätes im Betrieb. Für die meisten Fälle ist das aber immer noch gut genug.

Frequenzmesser
                beim Messen eines 10-MHz-Sinus mit 1 V p-p



Verbesserungen

Irgend etwas gibt es immer zu verbessern.

Am meisten habe ich in letzter Zeit am 64:1-Eingang verändert:
- D5 getauscht gegen Pin-Doppel-Diode BAR6404. Das verbesserte etwas die Empfindlichkeit.
- L1 kann durch eine Brücke ersetzt werden - muss aber nicht.
- T1 getauscht durch BF324 , verbesserte die Maximalfrequenz deutlich.


Einbau der optionale Präzisionstaktquelle (Frequenzvervielfacher) bringt bessere Genauigkeit und man kann einen externen 10MHz-Referenmztakt anschließen.
Der Spannungsregler IC4 (7805) braucht dann einen größeren Kühlkörper, um die zusätzlichen 60mA zu verkraften.


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

Autor: sprut
erstellt: 12.12.2015
letzte Änderung: 29.05.2022