Fre­quenz­zäh­ler, Teil 2

Nach­dem ich die letz­ten Wochen damit ver­dad­delt habe, mei­nen neu­en Note­book soweit her­zu­rich­ten, daß er wie­der mit allen benö­tig­ten Pro­gram­men rund läuft, kom­me ich nun end­lich dazu, das PC-Inter­face zum Fre­quenz­zäh­ler zu beschreiben.

Wie bereits im ersten Teil beschrie­ben, benutzt der Fre­quenz­zäh­ler wie­der ein RS485-Inter­face zur Kom­mu­ni­ka­ti­on mit dem PC. Das ist ein sehr stör­si­che­res Inter­face, wenn man län­ge­re Strecken bis über 1 km zuver­läs­sig über­win­den muß. Daher habe ich es für die Kom­mu­ni­ka­ti­on mit dem Anten­nen­um­schal­ter und dem Anten­nen­tu­ner ver­wen­det, die immer­hin 20 m vom Shack ent­fernt und höhe­ren HF-Lei­stun­gen aus­ge­setzt sind. Das ist mit USB nicht mehr ohne wei­te­res zu machen. In die­sem Fall ist RS485 aber eher sub­op­ti­mal, weil der Zäh­ler sowie­so nahe am PC betrie­ben wird und weil immer einen USB-RS485-Umset­zer benö­tigt wird. Daher pla­ne ich jetzt schon ein Rede­sign, das dann direkt einen FTDI USB-RS232-Umwand­ler beinhal­ten wird. Die ent­spre­chen­den Modu­le sind ja für ein bis zwei Euro zu kau­fen und auch in dem USB-RS485-Umset­zer ver­baut. An der Soft­ware wird sich daher nichts ändern.

Die PC-Bedie­ner­ober­flä­che

Die Bedie­n­er­soft­ware ist wie auch die für den Anten­nen­um­schal­ter und Tuner wie­der für einen Win­dows-PC geschrie­ben. Der Fre­quenz­zäh­ler mel­det sich über den USB-RS485-Umset­zer als COM-Schnitt­stel­le an. Als Inter­face-Pro­to­koll ist auch hier wie­der der Mod­Bus implementiert.

Der nach­fol­gen­de Screen­shot zeigt die Benut­zer­ober­flä­che des Frequenzzählers:

UI Frequenzzähler
Benut­zer­ober­flä­che des Frequenzzählers

Das Haupt­fen­ster oben zeigt die gemes­se­ne Fre­quenz in Hz, die ande­ren Fen­ster und Steu­er­ele­men­te die­nen der Kon­fi­gu­ra­ti­on, die nach­fol­gend kurz beschrie­ben wer­den soll. Es wird übri­gens die euro­päi­sche Zah­len­no­ta­ti­on ange­wen­det, nach der ein Kom­ma als Dezi­mal­trenn­zei­chen und ein Punkt als Tau­sen­der­trenn­zei­chen ver­wen­det wird.

Fref

Fref ist die tat­säch­li­che Refe­renz­fre­quenz in Hertz. Sie kann manu­ell in die­sem Fen­ster ein­ge­ge­ben wer­den. Wenn der TCXO ver­wen­det wird, wird die Refe­renz­fre­quenz aus der aktu­ell gemes­se­nen Tem­pe­ra­tur und einer hin­ter­leg­ten Tem­pe­ra­tur­kur­ve errechnet.

Fref Pre­ci­si­on

Hier wird die Genau­ig­keit der Refe­renz­fre­quenz in ppb (parts per bil­li­on = 10-9) ange­ge­ben. Dar­aus wird nach der Mes­sung die Prä­zi­si­on des Meß­er­geb­nis­ses berech­net. Die Genau­ig­keit der übli­chen Quar­ze und Quarz­os­zil­la­to­ren liegt in der Grö­ßen­ord­nung von 10.000 ppb (= 10 ppm) und die Genau­ig­keit eines GPSDO ist bes­ser als 1 ppb.

Timer Rel­oad und Gate Time

Hier wird Anzahl der Tak­te zur Bestim­mung der Tor­zeit oder direkt die Tor­zeit in Mil­li­se­kun­den ein­ge­tra­gen. Bei Ände­rung eines die­ser Fel­der wird auto­ma­tisch der ande­re Wert aus Fref und der Betriebs­art (nor­mal oder revers) errechnet.

Coun­ter Temperature

Hier wird die momen­ta­ne Tem­pe­ra­tur des Fre­quenz­zäh­lers ange­zeigt. Der ver­wen­de­te Sen­sor hat ein Genau­ig­keit von 0.5 K und eine Auf­lö­sung von 116 K. Er ist aber im jet­zi­gen Modul so weit vom ein­ge­bau­ten Quarz­os­zil­la­tor ent­fernt, daß die Mes­sung der Oszil­la­tor­tem­pe­ra­tur ziem­lich unge­nau ist.

Reso­lu­ti­on und Precision

In die­sen Fel­dern wird nach der Mes­sung die momen­ta­ne Fre­quenz­auf­lö­sung und die maxi­ma­le Meß­ab­wei­chung von der tat­säch­li­chen Fre­quenz, also die Genau­ig­keit der Meß­er­geb­nis­ses, ange­zeigt. Die Fre­quenz­auf­lö­sung hängt von den Ein­stel­lun­gen (z.B. der Tor­zeit) ab, wäh­rend in die Prä­zi­si­on auch noch die Genau­ig­keit der Refe­renz­fre­quenz ein­geht. Die Prä­zi­si­on ist eine Kom­bi­na­ti­on aus dem in „Fref Pre­ci­si­on“ eige­ge­be­nen Wert und der Fre­quenz­auf­lö­sung. Daher ist die Prä­zi­si­on immer schlech­ter als jeder ein­zel­ne die­ser Werte.

fref und fcheck Radiobuttons

Mit den fref- und fcheck-Aus­wahl­knöp­fen wird die Refe­renz­fre­quenz und die zu mes­sen­de Fre­quenz aus­ge­wählt. clk0 ist der Oszil­la­tor des CPU-Moduls, clk1 und clk2 sind die SMA-Buch­sen mit nach­fol­gen­dem Vor­ver­stär­ker und clk3 ist die Fre­quenz des ein­ge­bau­ten 100 MHz Quarz­os­zil­la­tors. Ein exter­ner Refe­renz­os­zil­la­tor, z.B. ein GPSDO, wird an clk1 oder clk2 ange­schlos­sen, an den ver­blei­ben­den Ein­gang kommt die zu mes­sen­de Frequenz.

Pres­ca­ler

Mit dem Pres­ca­ler wird der Ein­gangs­tei­ler aus­ge­wählt, der den mit fcheck aus­ge­wähl­ten Takt durch 1, 2, 4 oder 8 teilt. Damit muß sicher­ge­stellt wer­den, daß fcheck klei­ner als fref/2 ist.

TCXO

Wird hier ein Haken gesetzt, dann ver­wen­det der Fre­quenz­zäh­ler den Oszil­la­tor des CPU-Moduls an clk0 oder den ein­ge­bau­ten Quarz­os­zil­la­tor an clk3 als Refe­renz und errech­net sei­ne Fre­quenz anhand der momen­ta­nen Tem­pe­ra­tur. Des­sen Fre­quenz­gang über der Tem­pe­ra­tur muß vor­her aus­ge­mes­sen wor­den sein, wie in dem Bei­trag zur Meß­da­ten­ana­ly­se mit Libre­Of­fice beschrie­ben wurde.

Revers

Wird hier ein Haken gesetzt, arbei­tet der Fre­quenz­zäh­ler im Revers­be­trieb. Statt fref bestimmt dann fcheck die Tor­zeit und der Zäh­ler zählt die Anzahl der fref-Tak­te wäh­rend die­ser Zeit.

Con­ti­nuous

Ein Haken in die­sem Feld führt dazu, daß der Zäh­ler kon­ti­nu­ier­lich zählt, statt nach einer Mes­sung aufzuhören.

Open Log

Mit die­ser Schalt­flä­che kann eine Log­da­tei geöff­net wer­den, in der im CSV-For­mat die Meß­wer­te abge­legt wer­den. Falls die Datei noch nicht exi­stiert, wird sie neu ange­legt, anson­sten fortgeschrieben.

Trig­ger Measurement

Mit die­ser Schalt­flä­che wird die Mes­sung gestar­tet und im Fal­le der kon­ti­nu­ier­li­chen Mes­sung auch wie­der gestoppt.

Remo­te Device

Hier wird ein optio­na­les, am RS485-Bus ange­schlos­se­nes Device adres­siert, des­sen Betriebs­tem­pe­ra­tur hier ange­zeigt und gelog­ged wird. Zu Test­zwecken kann hier auch die Device-ID des Fre­quenz­zäh­lers ange­ge­ben wer­den. Damit wird auch in die­sem Feld noch­mal die­sel­be Tem­pe­ra­tur ange­zeigt, wie unter Coun­ter Temperature.

Bei­spiel­mes­sung

In der ersten Mes­sung wird die Fre­quenz des ein­ge­bau­ten 100 MHz Quarz­os­zil­la­tors mit einem GPSDO als Refe­renz gemessen.

XO via GPSDO
Fre­quenz des ein­ge­bau­ten Quarz­os­zil­la­tors mit GPSDO gemessen.

Der Quarz­os­zil­la­tor ist an clk3 ange­schlos­sen, der GPSDO an clk1. Es wur­de eine Tor­zeit von 1 Sekun­de gewählt und der Vor­tei­ler teilt durch 4, damit die zu mes­sen­de Fre­quenz nied­ri­ger als die hal­be Refe­renz­fre­quenz ist. Dar­aus ergibt sich eine Auf­lö­sung von 4.0 Hertz. Für höhe­re Auf­lö­sun­gen muß die Tor­zeit ver­län­gert wer­den. Wegen der hohen Genau­ig­keit des GPSDO von bes­ser als 1 ppm, wird die Prä­zi­si­on des Meß­er­geb­nis­ses von der Auf­lö­sung dominiert.

Die näch­ste Mes­sung mißt die Fre­quenz des Oszil­la­tors auf dem CPU-Board (clk0), die nomi­nal 8 MHz beträgt.

CPU via GPSDO
Fre­quenz des CPU Tak­tes mit GPSDO gemessen.

Da die Refe­renz­fre­quenz weit­aus höher ist, als die zu mes­sen­de Fre­quenz, kann der Vor­tei­ler auf 1 blei­ben. Auch hier ist die Auf­lö­sung wie­der ein Hertz, weil die Tor­zeit auf eine Sekun­de ein­ge­stellt wurde.

Stellt man eine Tor­zeit von 40 Sekun­den ein, dann ver­bes­sert sich die Auf­lö­sung auf 25 mHz und die Genau­ig­keit auf 33 mHz, wie der nach­fol­gen­de Screen­shot zeigt:

CPU via GPSDO
Fre­quenz des CPU Tak­tes mit GPSDO gemes­sen. Tor­zeit 40 Sekunden.

Lei­der muß man dabei auch 40 Sekun­den auf das Ergeb­nis war­ten. Man igno­rie­re hier den Timer Rel­oad Wert. Der wird lei­der als vor­zei­chen­be­haf­te­te 32-bit Zahl dargestellt.

Damit man bei nied­ri­gen zu mes­sen­den Fre­quen­zen auch bei kur­zer Meß­dau­er auf ein gut auf­ge­lö­stes Ergeb­nis kommt, benutzt man den Revers­be­trieb. Dabei wird die Dau­er der Refe­renz­pe­ri­ode mit dem hohen Refe­renz­takt aus­ge­mes­sen. Bei 100 MHz Refe­renz­fre­quenz erreicht man also eine Auf­lö­sung von 10 ns.

Das hier gezeig­te Meß­er­geb­nis wur­de im Revers­be­trieb bei einer Sekun­de Meß­dau­er erzielt. Es erreicht eine Genau­ig­keit von 88 mHz.

CPU via GPSDO
Fre­quenz des CPU Tak­tes mit GPSDO gemes­sen. Revers­be­trieb, Tor­zeit 1 Sekunde.

Durch Ver­län­gern der Meß­dau­er läßt sich auch im Revers­be­trieb die Genau­ig­keit wei­ter stei­gern. Bei 10 Sekun­den Meß­dau­er erreicht man eine Genau­ig­keit von 16 mHz.

CPU via GPSDO
Fre­quenz des CPU Tak­tes mit GPSDO gemes­sen. Revers­be­trieb, Tor­zeit 10 Sekunden.

Ver­wen­det man statt dem hoch­prä­zi­sen GPSDO den auf dem Fre­quenz­zäh­ler ver­bau­ten 100 MHz Oszil­la­tor als Refe­renz, dann ist die Genau­ig­keit sehr viel geringer.

GPSDO via XO
Fre­quenz des GPSDO mit ein­ge­bau­tem XO gemessen.

Hier ist der GPSDO auf den Meß­ein­gang geschal­tet, der für Ama­teur­zwecke exakt 100 MHz Aus­gangs­fre­quenz hat. Die Mes­sung weicht also um 676 Hz von der tat­säch­li­chen Fre­quenz ab und liegt damit inner­halb der durch die 10 ppm ange­ge­be­nen Feh­ler­gren­zen, die eine Abwei­chung bis 1004 Hz erlau­ben würden.

Wie oben schon beschrie­ben, kann der ein­ge­bau­te Oszil­la­tor per Soft­ware tem­pe­ra­tur­kom­pen­siert wer­den, indem man einen Haken bei TCXO setzt. Dadurch sinkt die Meß­ab­wei­chung auf etwa 1 Hz, wie der nach­fol­gen­de Screen­shot zeigt.

GPSDO via TCXO
Fre­quenz des GPSDO mit ein­ge­bau­tem TCXO gemessen.

Für schnel­le Mes­sun­gen kann man so also auf den GPSDO ver­zich­ten und den­noch sehr genau messen.

Anhang

Nach­fol­gend wer­den die mathe­ma­ti­schen For­meln zum Berech­nen der gemes­se­nen Fre­quenz und der jewei­li­gen Auf­lö­sung doku­men­tiert. Hier noch­mal als Refe­renz das Block­dia­gramm des Frequenzzählers:

Blockdiagramm des Frequenzzählers
Block­dia­gramm des Frequenzzählers

In den unten doku­men­tier­ten For­meln wer­den fol­gen­de Bezeich­ner verwendet:

cntr: Counter-Register, 32 bit
prsc: selprsc[1:0], 2 bit
fref: f_ref, Referenzfrequenz
rld: Timer reload value, 32 bit
gt: gate time (Torzeit) [s]
Δ(f): Frequenzauflösung [Hz]

Nor­mal­be­trieb

      rld
gt = ────
     fref


       gt ⋅ fcheck
cntr = ───────────
          prsc


         cntr ⋅ prsc ⋅ fref      cntr ⋅ prsc
fcheck = ────────────────── = ───────────
                 rld                 gt


       prsc ⋅ fref     prsc
Δ(f) = ─────────── = ────
           rel          gt

Revers­be­trieb

     prsc ⋅ rld
gt = ──────────
       fcheck


cntr = gt ⋅ fref


         rld ⋅ prsc ⋅ fref      rld ⋅ prsc
fcheck = ───────────────── = ──────────
               cntr                gt




            ⎛ rld ⋅ prsc ⋅ fref   ⎞
Δ(f) = abs    ─────────────────
            ⎝  cntr ⋅ (cntr + 1)  ⎠

Schreibe einen Kommentar