1-GHz-Frequenzzähler

mit 16F84 und LCD-Display

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


Hinweis:
Der schwer zu beschaffende 64:1-Vorteilerchip U664 wurde von Steffen im Onlineshop der Zeitschrift Funkamateur (www.funkamateur.de) für unter 7 Euro gesichtet.
(20.02.2007)
Reichelt führt den pinkompatiblen U813BS SI für 1,15 Euro (März 2012).



Ein einfacher 8-stelliger Frequenzzähler bis 1 GHz
Für den Elektronikbastler ist ein Frequenzmesser ein wichtiges Messgerät. Hier wird eine einfache und preiswerte Lösung vorgeschlagen.
 
- Frequenzbereich 50 MHz bis 1 GHz
- Auflösung 24 Bit
- Genauigkeit unkalibriert 0,005%
normal 0,001%
maximal 0,0002% 
- Anzeige 10 Stellen auf LCD
  • Messbereiche: 
    •   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
    Stromlaufplan - anklicken zum vergrößern


    Schaltung
    Die Schaltung ist eine Weiterentwicklung des 50 MHz-Frequenzzählers, der um einen HF-Vorteiler ergänzt wurde.
    Die Software wurde angepasst.

    Der HF-Vorteiler basiert auf den 1-GHz-Teiler U664B in SIP-Ausführung. Dieser Chip ist zwar ein Auslaufmodell, kostet aber weniger als 3 Euro. Er enthält einen 1GHz Teiler mit empfindlichem Eingang und einem Teilerverhältnis von 64:1. Die Schaltung geht auf Miroslav Sinko zurück, die Transistorstufe musste ich ändern.
    Alternativ kann man z.B den U664B im DIL-Gehäuse, den U893, den MB501 von Fujitsu, den MC12052A von Motorola oder den SAB6456 von Philips (sind natürlich alle nicht Pin-kompatibel) verwenden. Die Beschaffung des Vorteiler-ICs ist der schwierigste Punkt beim Aufbau dieses Zählers. Diese schnellen ECL-Vorteiler sterben aus, da ihre Funktion zumnehmend in moderne PLL-Schaltkreise integriert wird. Man sollte sich hier also nicht auf einen Typ versteifen, sondern nehmen was man bekommen kann.

    Vorteiler-Details
    Es gelang mir nicht, das originale Datenblatt für den U664B zu finden. Es gab aber übereinstimmende Hinweise an mehreren Ecken des Web, und schließlich mailte mir jemand die technischen Daten zu:

    Bei 1,2 GHz benötigt der Chip 20 mV. Offizell geht darüber nichts mehr, aber Bastler berichten von problemlosen Messungen bei 1,25 GHz.

    Die hohe Eingangsempfindlichkeit macht den Eingang empfindlich für Einstrahlungen. Ein offener Eingang ohne Eingangsspannungsteiler (R7, R9, R10) fing im Laboraufbau immer den 10 MHz PIC-Takt ein. Der Eingangsspannungsteiler soll auch eine Übersteuerung der U664B-Eingangs verhindern.

    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 U664B liefert seinen Ausgangstakt mit ECL-Pegel, also mit Vdd und Vdd-0,8V. Um diesen Pegel auf den PIC-Eingang anzupassen habe ich eine Transitorstufe verwendet. (Die originale von Miroslav Sinko war nicht verwendbar). Bei einer Eingangsfrequenz von 1,3 GHz gibt der U664B eine Frequenz von 20 MHz aus. Der PIC-Eingang hat eine Eingangskapazität von 50 pF. Bei 20 MHz entspricht das einer 'Impedanz' von 160 Ohm. Die Pegelanpassstufe muss also ausreichend niederohmig sein, Um den 5V-Pegel im PIC auf mindestens 3V zu halten. Daraus errechnet sich für R5 ein Wert von max. 260 Ohm. Ich habe 220 Ohm gewählt.
    Damit der Transistor im durchgeschalteten Zustand noch den nötigen High-Pegel von 4V erreicht, muss R4 sehr niederohmig ausfallen Die verwendeten 49 Ohm sind schon ein Maximalwert. C3 verbessert die Flankensteilheit. Als Ttransistor eignet sich ein schneller pnp-Schalttransistoren für wenigstens 150 mA Kollektorstrom.(z.B. BC328).



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

    Der 1-GHz-Zähler verwendet einen externen 64:1 Vorteiler mit dem Telefunken-Chip U664B. Dieses zusätzliche Teilerverhältnis muss natürlich in der Software berücksichtigt werden.

    Um Messwerte im GHz-Bereich anzuzeigen, ist eine 10-stellige Ausgabe des Messergebnisses nötig



    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% (unkalibriert 0,005%) unter termisch stabilen Bedingungen sogar 0,00005%.
    Da die Zähler-Hard-/Software mit einer Genauigkeit vion 0,0002% und besser (ab 128 MHz) arbeitet, beschränkt meistens die Genauigkeit der Quarzfrequenz die Messgenauigkeit. Soll die mögliche Genauigkeit von 0,0002% erreicht werden, so ist der Quarz mit einem Zieh-Kondensator genau auf 10,0000 MHz abzustimmen und termisch stabil zu betreiben - z.B. in einem Termostat.

    Die zu messende Frequenz wird im U664B durch 64 geteilt und dann an RA4 angelegt.

    Vor der eigentlichen Frequenzmessung macht das Programm eine Grobmessung der Frequenz an RA4. Mit einem internen Timer0-Vorteiler von 256:1, einer Messzeit von 256 Mikrosekunden und einer Genauigkeit von 8 Bit. Damit wird die Eingangsfrequenz an RA4 in Megaherz bestimmt. Dem Ergebnis entsprechend wird der Vorteiler des Timer0 im PIC eingestellt. Mit steigendem Vorteilerwert verringert sich die Auflösung der Messung.
     
    Frequenz am U664B
    Frequenz am RA4
    zu nutzender Vorteiler
    Mess-Auflösung
    > 2,048 GHz
    > 32 MHz
    32:1
    4,096 kHz
    1,024 GHz ...2,048 GHz
    > 16 MHz
    16:1
    2,048 kHz
    512 MHz ... 1,024 GHz
    > 8 MHz
    8:1
    1,024 kHz
    256 MHz ... 512 MHz
    > 4 MHz
    4:1
    512 Hz
    < 256 MHz
    < 4 MHz
    2:1
    256 Hz

    Mit diesem Vorteiler wird dann eine 24-Bit genaue Zählung über 1/2 Sekunde durchgeführt.
    (Selbstverständlich wird der Timer0-Vorteiler 32:1 in der Praxis mit einem U664B nie erreicht werden.)

    Das 24-Bit Zählergebnis wird zunächst mit 2 (1/2 Sekunde Messzeit) und anschließend mit dem Vorteilerwert  und abschließend mit 64 (externer Vorteiler) multipliziert.

    Die so erhaltene 32-Bit Frequenz wird in eine 10-stellige Dezimalzahl gewandelt

    Die Dezimalzahl wird an das LCD ausgegeben.

    Anschließend erfolgt ein neuer Messzyklus.

    Die obere und die untere Grenzfrequenz des Frequenzzählers ergeben sich aus dem Limits des Vorteilers. Erfahrungsgemäß erreicht der U664B eine maximale Eingangsfrequenz von 1,3 GHz. Durch Nutzung schnellerer Vorteiler ließe sich ohne weitere Änderung die obere Grenzfrequenz bis auf 4,29 GHz erhöhen. Für höhere Frequenzen müsste die Software modifiziert werden.

    Die untere Grenzfrequenz hängt von der Eingangsbeschaltung des U664B und von diesem Chip selbst ab. Unterhalb von 50 MHz arbeitet der U664B nicht stabil, der Hersteller fordert mindestens 70 MHz. Da die Auflösung des Messergebnisses in diesem Fall 256 Hz beträgt, ergibt sich eine Messgenauigkeit von 0,0005% des Messwerts. Ab 128 MHz bis zur oberen Grenzfrequenz besträgt die Auflösung zwischen 0,0002% und 0,0001% des Messwertes.



    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 muss der Frequenzzähler exakt das 64fache der Sollfrequenz des Quarzes '640 000 000 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 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). Die meisten 10 MHz Quarze schwingen etwa 500 Hz zu schnell (meiner Erfahrung nach, Ausnahmen wird es auch geben), und müssen mit einem Trimmkondensator abgeglichen ('gezogen') werden. Ohne Abgleich wäre der angezeigte Frequenzwert etwa 0,005% zu klein.
    Als Trimmkondensator wird ein 30pF-Keramik-Trimmkondensator zwischen OSC1 und Masse angeschlossen, und auf ca. 20 pF eingestellt (20 pF 'bremsen' den 10-MHz-Quarz um etwa 600 Hz). Der Frequenzzähler wird nun an eine Referenzfrequenzquelle (wenn man denn eine findet) angeschlossen und durch Verstellen des Trimm-Kondensators die angezeigte Frequenz der Referenzfrequenz angeglichen. Der zulässige Anzeigefehler ist je nach Messbereich 2,5 kHz (bei f < 256 MHz) bis 13 kHz (bei f > 1 GHz).

    Danach sollte der Messfehler im gesamten Frequenzbereich auf 0,001% reduziert sein. Höhere Genauigkeiten lassen sich nur noch mit einem Termostat erreichen, der den Quarz auf einer konstanten Temperatur hält.
    Normale Quarze, Quarzoszillatoren, PLL-Tuner von Super-Empfängern u.ä. eignen sich nicht als Lieferant für eine Referenzfrequenz, da sie zu ungenau sind!

    Wer (wie die Meisten) keine präzise Referenzfrequenz zur Verfügung  hat, kann wie hier beschrieben vorgehen. Dazu wird der Frequenzzähler komplett aufgebaut, und von OSC1 nach Masse ein 30-pF-Trimmkondensator angeschlossen. Danach wird die Software aus dem Lernbeispiel LCD-UHR in den PIC gebrannt. Genau zur vollen Stunde (nach der Fernseh-Uhr) wird die Null-Taste an der Uhr gedrückt (also RB1 kurz mit Masse verbunden). 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. Nun wird die Frequenzmesser-Software in den PIC gebrannt: fertig.


    Mögliche Verbesserungen
    Eine Vereinigung mit dem 50-MHz-Frequenzzähler mit Vorverstärker und TTL-Eingangsstufe würde die Schaltung zu einem universellen Frequenzmesser von 4 Hz bis 1 GHz aufwerten. Die Umschaltung zwischen den verschiedenen Eingängen (TTL / 50MHZ / 1GHz) könnte über einen Multiplexer oder einen einfachen Drehschalter erfolgen.

    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 sich das Programm an andere Displays anpassen lässt. Der naheliegende Gedanke, ein 1x16-Display zu verwenden  birgt eine Falle, die aber umgangen werden kann. Die 1x16-Displays sind eigentlich 2x8-Displays, deren beide Zeilen hintereinander angeordnet sind. Deshalb ist ein solches Display als 2-zeilig zu initialisieren. Nach der Ausgabe des 8.Zeichens ist  ein Befehl einzufügen, der das Display veranlasst auf die 2. Zeile überzugehen.

    ;8 Zeichen fertig
    ;ACHTUNG
    ;die folgenden 2 Zeilen nur bei einem 1-Zeiligen Display 1x16
        movlw    B'11000000'      ; Sprung zur virtuellen 2. Zeile bei 1x16
        call     OutLcdControl    ; Sprung zur virtuellen 2. Zeile bei 1x16

    Wird dies nicht beachtet, dann werden nur die ersten 8 Zeichen im Display dargestellt.

    Ein Beispiel für die Nutzung eines 1x16-Displays findet sich in der Frequenzanzeige für UKW-Empfänger .


    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.

    Z.Z. ist der Vorteiler als Steckplatine ausgelegt, die auf meine PIC-Testplatinen gesteckt werden kann.
     
     

    Einige Nachbauten sind mit anderen Vorteilern und modifizierter Software in der Lage, Frequenzen bis zu 2,5 GHz zu messen.

    Foto des Vorteilers



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





    Version für andere Vorteiler und Eingangsfrequenzen von mehr als 4,2 GHz:
    Die Standardversion verwendet intern eine 32-Bit-Arithmetik. Das begrenzt den Frequenzbereich auf maximal 4.294.967.296 Hz. Das ist normalerweise mehr als ausreichend, da Vorteiler für höhere Frequenzen kaum zu bekommen sind. Auf Wunsch eines Bastlers, der im Bereich um 6GHz arbeiten will, habe ich die Arithmetik auf 40 Bit erweitert, so dass der Zähler jetzt intern bis zu 1 THz berechnen kann. Die BCD-Wandlung und Ausgabe erfolgt aber wie bisher nur 10-stellig (die Displays sind nun mal in ihrer Größe begrenzt). Damit erweitert sich der praktisch nutzbare Frequenzbereich auf bis zu 9.999.999.999Hz. Damit der PIC diese Frequenzen noch verarbeiten kann, ist ein Vorteiler mit höherem Teilerverhältnis nötig. Diese Files sind für einen 256:1-Vorteiler ausgelegt, sie lassen sich aber leicht auf 128:1 oder 512:1 ändern.


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

    Autor: sprut
    erstellt: 12.06.2002
    letzte Änderung: 12.05.2007