Frequenzzähler mit PIC
und Minimal-Hardware

von Wolfgang "Wolf" Büscher, DL4YHF
Letzte Aktualisierung: 2006-06-03.

Das Herz der Schaltung ist ein preiswerter Mikrocontroller vom Typ PIC16F628 im 18-poligen DIL-Gehäuse. Mit der passenden Firmware und 4 oder 5 Sieben-Segment-LED-Anzeigen wird daraus ein universeller Frequenzzähler mit den folgenden Eigenschaften:

Die aktuelle Firmware kann von DL4YHF's Homepage runtergeladen werden (..google is your friend..), ebenso der Assembler-Quelltext falls jemand eigene Funktionen hinzufügen will. Im vom QRPProjekt erhältlichen Bausatz ist ein fertig programmierter PIC enthalten.

Funktionsbeschreibung

Nach dem Einschalten zeigt der Zähler als Lampentest kurz "8.8.8.8.8." an (d.h. alle Anzeigesegmente an). Danach wird die Frequenz angezeigt. Es gilt:

Der Messbereich wird automatisch so umgeschaltet, daß die maximale Auflösung, aber die minimale Torzeit erzielt wird :

Frequenzbereich Anzeige Torzeit Dezimalpunkt
0 ... 9.999 kHz X.XXX 1 Sekunde blinkt
10 ... 99.99 kHz XX.XX(X) 1/2 Sekunde blinkt
100 ... 999.9 kHz XXX.X(X) 1/4 Sekunde blinkt
1 ... 9.999 MHz X.XXX(X) 1/4 Sekunde dauernd an
10 ... 50.00 MHz XX.XX(X) 1/4 Sekunde dauernd an

In Vorbereitung: Bei Anschluss eines 10:1-Vorteilers (z.B. MC12080) kann der Dezimalpunkt durch einen Schaltungstrick um eine Stelle nach rechts verschoben werden, wodurch die Anzeige dann wieder "passt".

Programmiermodus

Im 'Programmiermodus' kann die Frequenzablage (Offset) und der Stromsparmodus eingestellt werden. Dazu muss ein nach Masse schaltender Kontakt an Pin 4 des Mikroprozessors angeschlossen werden. Zur Not tut's aber auch ein kleiner Schraubendreher, mit dem vorsichtig Pin 4 und Pin 5 miteinander verbunden werden (als Ersatz für den Taster) um den Programmiermodus zu aktivieren.

Programming mode flow chartDas Diagramm links zeigt den prinzipiellen Ablauf zur Programmierung. Ein "kurzer" Tastendruck (< 1s) schaltet zur nächsten Funktion um (die dann im Display angezeigt wird), ein "langer" Tastendruck wählt die grade im Display anzeigte Funktion an. Um den Programmiermodus zu starten, muss der Kontakt so lange geschlossen werden, bis die Meldung "PROG" angezeigt wird. Anschliessend bewegt man sich mit kurzen Tastendrücken durch das Menü, dessen Funktionen hier -ohne Anspruch auf Vollständigkeit- aufgeführt sind:

Addieren oder Subtrahieren von Frequenzen

Wird der Zähler als Frequenzanzeige in einem Überlagerungsempfänger verwendet, dann soll für die Anzeige normalerweise eine Zwischenfrequenz addiert oder subtrahiert werden (je nachdem ob "hoch" oder "runter" gemischt wird).

Dazu kann im Programmiermodus (s.O.) eine der im QRP-Bereich "üblichen" Frequenzen als Ablage ausgewählt werden, oder -falls die passende Frequenz nicht in der Auswahltabelle steht- durch Messung am BFO eingegeben werden. Später, im "Normalbetrieb", wird der Zähler natürlich am VFO statt am BFO angeschlossen !

Das folgende Beispiel beschreibt die Programmierung der ZF-Ablage für Miss Mosquita (QRP-Transceiver mit 4-MHz-ZF, Oszillator im Sendemischer bei ca. 3.999 MHz ) :

  1. Zähler einschalten

  2. (Programmier-)Taster drücken bzw Kontakt schliessen, bis "PROG" angezeigt wird

  3. Taster loslassen

  4. Taster wiederholt kurz drücken, bis die Anzeige "TABLE" erscheint

  5. Taster drücken, bis "TABLE" blinkt, dann loslassen. Wir befinden uns nun in einem Untermenü, in dem alle vorprogrammierten Frequenzablagen angezeigt werden.

  6. Taster wiederholt kurz drücken, bis die Anzeige "3.999" erscheint

  7. Taster drücken, bis "3.999" blinkt, dann loslassen

  8. Nun sollte "Add" im Display stehen (falls nicht -wegen Kontaktprellen- Taster so oft drücken, bis wieder "Add" in der Anzeige steht)

  9. Taster drücken, bis "Add" blinkt, dann loslassen

Fertig. Der Prozessor hat nun 3.999 MHz als Ablage für das aktuelle Band dauerhaft ins EEPROM übernommen, und weiss dass dieser Wert zur VFO-Frequenz addiert werden soll.

Etwas trickreicher wird die Berechnung der Offset-Frequenz für Amateurfunkbänder ab 10 MHz: Dort will man normalerweise nicht zwei Megahertz-Stellen angezeigt haben, in denen sich eh nichts ändert. Stattdessem kann hier ein negativer Offset verwendet werden, um in der Anzeige nur die Ein-Megahertz-Stelle zu sehen - und wieder auf 100 Hz Auflösung zu kommen. Beispiel für einen 30-Meter-Transceiver mit VCXO: Empfangsfrequenz = Oszillatorfrequenz - Zwischenfrequenz = 14.314 MHz - 4.194 MHz = 10.120 MHz. Sollen die MHz-Stelle nicht angezeigt werden, wird der Offset auf -14.194 MHz (statt -4.194 MHz) gesetzt. 10.120 MHz werden dann als 120.0(0) kHz anzeigt, d.h. selbst mit einer vierziffrigen Anzeige werden noch 100 Hz Auflösung erreicht.

.-.-. ...-.-