Fre­quenz­zäh­ler – Ver­si­on 2.0

Wie schon im vori­gen Bei­trag zu dem Fre­quenz­zäh­ler ange­deu­tet, habe ich eine neue Ver­si­on ent­wickelt, die eini­ge Nach­tei­le behebt. Nun ist ein USB-RS232-Kon­ver­ter inte­griert, die CPU ist direkt auf die Lei­ter­plat­te gelö­tet und der Quarz­os­zil­la­tor ist ther­misch eng mit dem Tem­pe­ra­tur­sen­sor gekop­pelt. Der Zäh­ler wird jetzt, so wie man das von einem moder­nen PC-Peri­phe­rie­ge­rät erwar­tet, direkt über das USB-Inter­face ver­sorgt. Ein sepa­ra­tes Netz­teil ist nicht mehr nötig. Die Strom­auf­nah­me liegt bei unter 100 mA. Die Funk­ti­ons­wei­se ist weit­ge­hend kom­pa­ti­bel zur alten Ver­si­on, aber das CPLD-Pin­out unter­schei­det sich aus Grün­den des ein­fa­che­ren Rou­tings. Mit einer Grö­ße von 75 mm x 100 mm passt der Zäh­ler nun in ein FISCHER Frame Gehäu­se aus Aluminium.

Hier zunächst mal die 3D-Ansich­ten von KiCad und der Schaltplan:

Hier sind nun auch noch die KiCad V6.0 Pro­jekt­da­tei­en, der Schalt­plan und das Layout.

Seit der KiCad Ver­si­on 6.0 soll­ten alle Daten in die­sen Datei­en ent­hal­ten sein, so daß sie sich direkt auf einem ande­ren PC öff­nen und wei­ter­be­ar­bei­ten las­sen sollten.

Beschrei­bung

Auf der obe­ren lin­ken Sei­te des Boards sieht man den USB-RS232-Kon­ver­ter. Es han­delt sich um ein klei­nes Board mit dem FT232R-Bau­stein von FTDI. Die­ses Board ist für zwei bis drei Euro über die bekann­ten Online-Händ­ler zu bezie­hen. Im Zeh­ner­pack direkt aus Chi­na auch noch preiswerter.

Links unter dem FTDI-Board sieht man den Quarz­os­zil­la­tor und den Tem­pe­ra­tur­sen­sor. Ein gefrä­stes PVC-Gehäu­se sorgt für eine gewis­se ther­mi­sche Abschir­mung, so daß die Tem­pe­ra­tur des Quarz­os­zil­la­tors ziem­lich genau gemes­sen wer­den kann. Die­ses Gehäu­se besteht aus zwei Tei­len, die oben in der 3D-Ansicht semi­trans­pa­rent dar­ge­stellt sind. Durch einen klei­nen Trick wird eine enge ther­mi­sche Kopp­lung des Oszil­la­tors zu dem Tem­pe­ra­tur­sen­sor sicher­ge­stellt. Der Tem­pe­ra­tur­sen­sor im SOIC8-Gehäu­se ist über einer recht­ecki­gen Aus­frä­sung in der Lei­ter­plat­te mon­tiert, in den der Quarz­os­zil­la­tor manu­ell von der ande­ren Sei­te mon­tiert und über vier Dräh­te ange­schlos­sen wird. Hier die 3D-Nahan­sicht von oben und unten ohne das PVC-Gehäuse:

Der Fre­quenz­zäh­ler wird mit 3.3 V betrie­ben, weil das CPLD nicht mehr ver­trägt. Die­se Ver­sor­gungs­span­nung wird mit einem klei­nen Line­ar­reg­ler aus den 5 V vom USB Bus erzeugt. Der Micro­chip-Pro­zes­sor (ehe­mals Atmel) ATMEGA644 kom­mu­ni­ziert über sei­nen UART und das FTDI-Board mit dem PC und über Port-Pins per Bit-Ban­ging mit der Logik im CPLD. Das CPLD-Inter­face ist selbst­ge­strickt und folgt kei­nem Stan­dard, zum Host wird wie­der das Mod­bus Pro­to­koll ver­wen­det. Die Logik im CPLD ent­spricht im wesent­li­chen dem der vor­he­ri­gen Ver­si­on, nur das Pin­out ist geän­dert und hier sind kei­ne LEDs und kein DIP-Schal­ter mehr ange­schlos­sen. Die CPU hat kei­nen eige­nen Quarz mehr, son­dern sie wird mit dem auf 10 MHz her­un­ter­ge­teil­ten Takt des 100 MHz Quarz­os­zil­la­tors betrieben.

Die Takt­ein­gän­ge clk1 und clk2 sind wie in der vori­gen Ver­si­on mit 50 Ω Wider­stän­den ter­mi­niert und über einen ein­stu­fi­gen AC-gekop­pel­ten Tran­si­stor­ver­stär­ker in Emit­ter­schal­tung an das CPLD ange­schlos­sen. Um auch nied­ri­ge Fre­quen­zen bis hin zu DC zu unter­stüt­zen, wur­de der clk3-Ein­gang vor­ge­se­hen. Er ist über einen 100 Ω Wider­stand direkt an das CPLD ange­schlos­sen, das zum Schutz noch zwei Schott­ky-Dioden gegen GND und VCC geschal­tet hat. Die etwas selt­sam anmu­ten­de Aus­füh­rung mit Dop­pel­di­oden ist der zum Design­zeit­punkt ein­zig in der Bastel­ki­ste ver­füg­ba­ren Vari­an­te BAS70-05W geschul­det. Inzwi­schen ist auch die BAV99W-Vari­an­te in hin­rei­chen­den Stück­zah­len ein­ge­la­gert, die dann bei einem even­tu­el­len Rede­sign ein­ge­setzt würde.

Obe­rer und unte­rer Rand der Pla­ti­ne sind beid­sei­tig vom Löt­stopp­lack befreit. Die Kup­fer­flä­chen sind jeweils an GND ange­schlos­sen und stel­len so einen Kon­takt zum Gehäu­se her. Das ist bei einem Alu­mi­ni­um­ge­häu­se natur­ge­mäß unzu­ver­läs­sig, daher sind die zwei Flach­stecker TP4 und TP5 vor­ge­se­hen, über die zusätz­lich ein Mas­se­ka­bel mit dem Gehäu­se ver­bun­den wer­den kann.

Hier noch ein paar Fotos des fer­ti­gen Gerätes:

Die SMA-Buch­sen an der Vor­der- und Rück­sei­te wer­den über kur­ze RG174-Koax-Kabel an die Lei­ter­plat­te ange­schlos­sen. Weil die Buch­se des USB-RS232-Kon­ver­ters etwa 1 mm von der Rück­wand ent­fernt ist, die außer­dem 2 mm dick ist, reich­te ein klei­ner Durch­bruch lei­der nicht aus. Daher muss­te er lei­der so groß gefräst wer­den, daß der gesam­te Stecker hin­ein­passt. Neben dem clk3-Ein­gang und der USB-Buch­se ist auf der Rück­sei­te auch noch eine Flü­gel­schrau­be zur Erdung des Gerä­tes ange­bracht. Das wird nor­ma­ler­wei­se nicht nötig sein, könn­te aber bei grö­ße­ren HF-Lei­stun­gen in der Umge­bung hilf­reich sein.

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­ner­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­cis­i­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­cis­i­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.

Pre­s­ca­ler

Mit dem Pre­s­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)  ⎠