Touch­stone Datei­en mit Lib­re Office auswerten

Touch­stone Datei­en, übli­cher­wei­se mit der Endung .s1p oder .s2p sind les­ba­re Text­da­tei­en, die Netz­werk-Para­me­ter ent­hal­ten. Die­se Datei­en sind zu einem Stan­dard gewor­den. Sie kön­nen von vie­len Pro­gram­men der HF-Meß- und Simu­la­ti­ons­tech­nik gele­sen und geschrie­ben wer­den. Mit­un­ter ist es prak­tisch, sie auch mit einem Spreadsheet­pro­gramm zu bear­bei­ten. Hier soll an einem ein­fa­chen Bei­spiel, den mit einem VNWA gemes­se­nen s11 Para­me­tern, die prin­zi­pi­el­le Vor­ge­hens­wei­se beschrie­ben werden.

Ein rea­les Beispiel

Hier ist das Ergeb­nis der s11-Mes­sung einer kern­lo­sen Zylin­der­spu­le. Die VNWA Betriebs­soft­ware zeigt fol­gen­des an:

s11-Messung an einer kernlosen Zylinderspule
s11-Mes­sung an einer kern­lo­sen Zylinderspule

Die Meß­er­geb­nis­se kön­nen als Touch­stone-Datei expor­tiert werden: 

Hier wur­de als For­mat Real und Ima­gi­när­teil gewählt. Ande­re For­ma­te (Magnitu­de und Win­kel bzw. dB und Pha­se) sind auch wähl­bar und kön­nen genau­so gut wei­ter­ver­ar­bei­tet wer­den. Die ersten Zei­len sehen fol­gen­der­ma­ßen aus:

! ListType=Lin
# MHz S RI R 50
  5.0000000   0.0273505   0.9908113
  5.0237559   0.0325082   0.9905086

Die erste Zei­le star­tet mit einem „!“ und ist ein belie­bi­ger Kom­men­tar. Das „#“ in der zwei­ten Zei­le kenn­zeich­net die Opti­ons-Zei­le. In die­sem Fall besagt sie, daß Fre­quen­zen (erste Spal­te) in MHz ange­ge­ben sind. Das „S“ bedeu­tet, daß s‑Parameter fol­gen und zwar im For­mat RI, also Real­teil (zwei­te Spal­te) und Ima­gi­när­teil (drit­te Spal­te). R kenn­zeich­net den Refe­renz­wi­der­stand in Ohm, in die­sem und den mei­sten ande­ren Fäl­len 50 Ohm. Dann fol­gen belie­big vie­le Zei­len mit s‑Parametern im beschrie­be­nen For­mat. Ande­re For­ma­te sol­len hier nicht bespro­chen wer­den. Sie kön­nen der oben genann­ten Spe­zi­fi­ka­ti­on ent­nom­men werden.

Bevor man die­se Datei nun mit einem Spreadsheet-Pro­gramm, wie z.B. Libre­Of­fice, wei­ter­ver­ar­bei­ten kann, muß man sie in ein import­fä­hi­ges For­mat umwan­deln. Das geht am ein­fach­sten, indem man sie mit einem belie­bi­gen Text-Edi­tor in ein CSV-For­mat umwan­delt. CSV erwar­tet im ein­fach­sten Fall eine Beschrei­bung der nach­fol­gen­den Spal­ten in der ersten Zei­le, gefolgt von den Daten. Spal­ten­ele­men­te wer­den am besten durch „;“ getrennt, ande­re Trenn­zei­chen sind aber auch mög­lich. Dann müs­sen noch auf den mei­sten euro­päi­schen PCs die Dezi­mal­trenn­zei­chen von Punkt auf Kom­ma geän­dert wer­den. Die impor­tier­ba­re CSV-Datei sieht dann so aus:

MHz; Real; Imag;
  5,0000000;   0,0273505;   0,9908113;
  5,0237559;   0,0325082;   0,9905086;

In Libre­Of­fice impor­tiert sieht das dann fol­gen­der­ma­ßen aus:

s1p-File in LibreOffice importiert
s1p-File in Libre­Of­fice importiert

Damit kann man arbei­ten! Da Libre­Of­fice mit eini­gen ein­ge­bau­ten Funk­tio­nen auch kom­ple­xe Zah­len bear­bei­ten kann, ist es hilf­reich, die s11-Para­me­ter zunächst in eine kom­ple­xe Zahl umzu­wan­deln. Das geht mit der Funk­ti­on Komplexe(real;imag;„j“) in Spal­te D, wie hier für die erste Zei­le gezeigt:

=KOMPLEXE(B2;C2;"j")

„real“ ist der Real­teil und „imag“ der Ima­gi­när­teil der zu gene­rie­ren­den kom­ple­xen Zahl. Der drit­te Para­me­ter gibt an, wie die ima­gi­nä­re Ein­heit genannt wer­den soll. In der Elek­tro­tech­nik wird nor­ma­ler­wei­se ein „j“ gewählt.

Da alle wei­te­ren Berech­nun­gen auf der kom­ple­xen Impe­danz Z beru­hen, soll­te die­se als näch­stes berech­net wer­den. Das geht über fol­gen­de Formel:

          1 + s11
Z = Z0 * ---------
          1 - s11

In Lib­re Office wird die For­mel dann fol­gen­der­ma­ßen in Spal­te E codiert:

=IMPRODUKT(50;IMDIV(IMSUMME(1;D2);IMSUB(1;D2)))

Die Bezeich­nun­gen der Funk­tio­nen sind eigent­lich selbst­er­klä­rend: IMSUMME() und IMSUB() berech­nen die Sum­me bzw. die Dif­fe­renz zwei­er kom­ple­xer Zah­len, IMDIV() den Quo­ti­en­ten und IMPRODUKT() das Pro­dukt. Die Arbeit mit kom­ple­xen Zah­len wir damit zum Kin­der­spiel. Das Spreadsheet sieht nun fol­gen­der­ma­ßen aus:

s1p-File mit s11 und Z als komplexen Zahlen
s1p-File mit s11 und Z als kom­ple­xen Zahlen

Aus der Impe­danz und deren Kom­po­nen­ten X und R las­sen sich nun wie in die­sem Bei­trag zusam­men­ge­fasst wei­te­re Para­me­ter berech­nen, z.B. die Induk­ti­vi­tät L = X/ω und die Güte Q = X/R. Die dazu ver­wen­de­ten Libre­Of­fice-Funk­tio­nen sind:

Induktivität L [µH]: =IMAGINÄRTEIL(E2)/(2*PI()*A2)

Der Term „2∗PI()∗A2“ im Nen­ner ent­spricht dabei „2∗PI()∗f“, also ω. Da die Fre­quenz im MHz ange­ge­ben ist, wird die Induk­ti­vi­tät ohne wei­te­re Umrech­nung in µH ausgegeben.

Güte Q: =ABS(IMAGINÄRTEIL(E2)/IMREALTEIL(E2))

Damit die Güte auch im kapa­zi­ti­ven Bereich posi­tiv bleibt, wur­de hier noch die ABS() Funk­ti­on verwendet.

Die Berech­nung wei­te­rer Para­me­ter und die Wei­ter­ver­ar­bei­tung bei­spiels­wei­se zum Glät­ten der Kur­ven und zur gra­phi­schen Dar­stel­lung sei dem geneig­ten Leser über­las­sen. Hier ist das Lib­re Office File zum Experimentieren:

Spu­len­wickeln und ‑mes­sen in der Praxis

Über das Wickeln von Spu­len ist bereits viel nütz­li­ches geschrie­ben wor­den. Eini­ge Links auf hilf­rei­che Arti­kel und Werk­zeu­ge habe ich bereits bei der Beschrei­bung des Anten­nen­tu­n­ers ange­ge­ben. Die­se Werk­zeu­ge wer­den auch hier wie­der verwendet.

Begriffs­be­stim­mung

Frei­tra­gen­de zylin­dri­sche Spu­len wer­den oft als Luft­spu­len bezeich­net. Zu recht wei­ßen man­che dar­auf hin, daß das falsch sei, denn die Spu­le ist nicht aus Luft gewickelt, son­dern aus einem Lei­ter, mei­stens aus Kup­fer. Daher wird auch ger­ne der Begriff Luft­kern­spu­le als Gegen­satz zur Fer­rit­kern­spu­le ver­wen­det. Das hal­te ich, auch wenn es tech­nisch und gram­ma­ti­ka­lisch kor­rekt ist, für unglück­lich, dann die Luft im Kern der Spu­le hat kei­nen meß­ba­ren Ein­fluß auf ihre elek­tri­schen Eigen­schaf­ten. Ein Vaku­um wäre im Rah­men unse­rer Ama­teur­meß­mit­tel völ­lig iden­tisch. Ich bevor­zu­ge und ver­wen­de daher den Begriff kern­lo­se Spu­le.

Mei­ne Quel­le für Kupferdraht

Die nach­fol­gend exem­pla­risch beschrie­be­nen kern­lo­sen Spu­len sind aus blan­kem Kup­fer­draht gewickelt, der aus 3 x 1,5 mm² Man­tel­lei­tung gewon­nen wur­de (knapp 1,4 mm Durch­mes­ser). Rest­stücke die­ser Man­tel­lei­tung fal­len bei der Haus­in­stal­la­ti­on an. Selbst wenn man sol­che Kabel nicht hat, ist es wohl preis­wer­ter einen 25‑, 50- oder 100-m-Ring im Bau­markt zu kau­fen, als Kup­fer­lack­draht im Elek­tronik­han­del. Oxi­da­ti­on der blan­ken Spu­le läßt sich z.B. mit Löt­lack vor­beu­gen. Soll der Draht etwas dün­ner oder dicker sein, kann man auch Instal­la­ti­ons­lei­tun­gen mit 1 mm², 2,5 mm² oder noch grö­ße­rem Quer­schnitt bekom­men. Wem es auf das letz­te Quänt­chen Güte ankommt, der wird frei­lich zu ver­sil­ber­tem Kup­fer­draht (CuAg) greifen.

Zum Abman­teln der Kabel gibt es prak­ti­sche preis­wer­te Werk­zeu­ge im Bau­markt, soweit man sie nicht sowie­so im Werk­zeug­kof­fer hat. Als Bei­spiel die­ses Exem­plar, das knapp 40 Jah­re alt ist und mut­maß­lich dut­zen­de Stun­den im Ein­satz war:

Abisolierer aus dem Baumarkt
Abiso­lie­rer aus dem Baumarkt

Das Abman­teln einer ein­zel­nen Ader auf meh­re­re Meter ist nicht ganz so tri­vi­al. Eine Abiso­lier­zan­ge ist nur für weni­ge Zen­ti­me­ter geeig­net. Ich habe mir daher ein klei­nes Werk­zeug aus 8 mm dickem PVC gefräst. Es hat ein Loch mit 3 mm Durch­mes­ser, durch den eine Ader mit Iso­lie­rung passt und in einer pas­send gefrä­sten Nut ist die Klin­ge eines Cut­ters mit Heiß­kle­ber ein­ge­klebt. Die­se Klin­ge ist so justiert, daß sie die Iso­lie­rung des Drah­tes hin­rei­chend weit ein­schnei­det, so daß sie nach dem Durch­zie­hen fast von sel­ber abfällt. Hier zwei Fotos davon:

Abisolierer für einzelne Adern mit eingeklebter Cutterklinge
Abiso­lie­rer für ein­zel­ne Adern mit ein­ge­kleb­ter Cutterklinge

Abisolierer für einzelne Adern (mit isolierter Ader)
Abiso­lie­rer für ein­zel­ne Adern (mit iso­lier­ter Ader)

Fer­rit­kern oder kern­lo­se Spulen?

Es gibt doch so schö­ne und preis­wer­te Eisen­pul­ver- und Ferritring­ker­ne, die mit viel weni­ger Win­dun­gen und klei­ne­rer Bau­art die­sel­be Induk­ti­vi­tät errei­chen, wie eine kern­lo­se Zylin­der­spu­le. Da man mit einem kür­ze­ren Draht aus­kommt, soll­te auch die Güte bes­ser sein. War­um soll man da eine kern­lo­se Spu­le verwenden?

Alle Spu­len­ker­ne haben die prin­zi­pi­ell nach­tei­li­ge Eigen­schaft, bei zu gro­ßer magne­ti­scher Feld­stär­ke in die Sät­ti­gung zu gera­ten. Bei kern­lo­sen Spu­len steigt die magne­ti­sche Fluß­dich­te B pro­por­tio­nal mit der magne­ti­schen Feld­stär­ke H, die wie­der­um von der Strom­stär­ke in der Spu­le bestimmt wird. Bei Spu­len mit Ker­nen ist das nicht mehr der Fall, in der Sät­ti­gung steigt die Fluß­dich­te nur noch gering an (Weich­ma­gne­ti­sche Werk­stof­fe). Die Induk­ti­vi­tät der Spu­le wird daher bei hohen Lei­stun­gen nicht­li­ne­ar. Die bei gerin­ger Lei­stung mit einem VNWA gemes­se­nen Daten sind also nicht ohne wei­te­res auf den Betrieb mit höhe­rer Lei­stung über­trag­bar. Außer­dem gibt es wegen der Hyste­re­se­kur­ve Umma­gne­ti­sie­rungs­ver­lu­ste, die die Güte der Kern­spu­le nega­tiv beeinflussen.

Daher müs­sen Kern­spu­len für die Betriebs­lei­stung hin­rei­chend dimen­sio­niert sein. Aus eige­ner Erfah­rung kön­nen Ker­ne schon bei 100 Watt Sen­de­lei­stung sehr heiß wer­den. Wenn sie dann die Curie-Tem­pe­ra­tur über­schrei­ten, ver­lie­ren sie völ­lig ihre magne­ti­schen Eigen­schaf­ten. Zudem sind man­che Ker­ne elek­trisch lei­tend, was ins­be­son­de­re bei hohen HF-Span­nun­gen eine hin­rei­chen­de Iso­lie­rung der Wick­lung erfordert.

Aus die­sen Grün­den bevor­zu­ge ich, wenn mög­lich, kern­lo­se Spu­len, zumin­dest wenn Lei­stung im Spiel ist oder eine mög­lichst hohe Güte benö­tigt wird.

Spu­len­mes­sung mit dem VNWA

Hat man nun nach einer der vor­lie­gen­den Anlei­tun­gen eine schö­ne Spu­le gewickelt, dann muß sie auch qua­li­fi­ziert nach­ge­mes­sen wer­den. Man will im wesent­li­chen wis­sen, ob sie die ange­streb­te Induk­ti­vi­tät und Güte hat und natür­lich auch, bei wel­cher Fre­quenz sie ihre Par­al­lel­re­so­nanz auf­weist. Nur unter­halb die­ser Selbst­re­so­nanz­fre­quenz (SRF) ist sie als Induk­ti­vi­tät zu gebrauchen.

Ein­la­gi­ge kern­lo­se Zylinderspule

Zum Ein­stieg zei­ge ich mal den Bau und die Mes­sung einer ein­la­gi­gen kern­lo­sen Zylin­der­spu­le aus 1,4 mm Kup­fer­draht mit 9 Win­dun­gen, 30,5 mm Durch­mes­ser und 3 mm Win­dungs­ab­stand, also 27 mm Gesamtlänge.

kernlose Zylinderspule mit 9 Windungen
kern­lo­se Zylin­der­spu­le mit 9 Windungen

Die Spu­le wur­de zunächst auf einem Wickel­kör­per von etwa 28 mm Durch­mes­ser, einem lee­ren Mul­ti­vit­amin-Brau­se­ta­blet­ten-Röhr­chen, gewickelt. Nach dem Wickeln dehnt sie sich wegen der ver­blei­ben­den Span­nung auf gut 30 mm auf und kann dann leicht in einen vor­be­rei­te­ten gefrä­sten Hal­ter aus unbe­schich­te­tem GFK-Mate­ri­al ein­ge­schraubt wer­den. Er zwingt die Spu­le auf einen Durch­mes­ser von 30,5 mm und einen Win­dungs­ab­stand von 1,5 mm. Die zwei­te Rei­he von Boh­run­gen ist zum Ein­schrau­ben einer äuße­ren, etwas grö­ße­ren, Spu­le vor­ge­se­hen. Damit sind also zwei- oder mehr­la­gi­ge kern­lo­se Spu­len mög­lich, die spä­ter noch unter­sucht werden.

Nach dem Spreadsheet von HB9DFZ soll­te die­se Spu­le eine Induk­ti­vi­tät von 1,729 µH und bei 5 MHz eine Güte von 306,8 haben. Zu beach­ten ist, daß das Spreadsheet kei­ne para­si­tä­ren Kapa­zi­tä­ten, also auch kei­ne Selbst­re­so­nanz­fre­quenz berück­sich­tigt. Daher wächst die errech­ne­te Güte gren­zen­los mit der Fre­quenz. Das Spreadsheet ist daher zur Abschät­zung der Güte nur deut­lich unter­halb der SRF zu gebrauchen.

Der Meß­auf­bau sieht fol­gen­der­ma­ßen aus:

Der Testaufbau mit einem VNWA
Der Test­auf­bau mit einem VNWA

Die Spu­le wird nur an den Meß­aus­gang des VNWA ange­schlos­sen, es wer­den also nur die s11-Para­me­ter gemes­sen. Letzt­lich funk­tio­niert die Mes­sung genau­so, wie die LTSpi­ce-Simu­la­ti­on im vor­he­ri­gen Bei­trag: es wird eine defi­nier­te Meß­span­nung auf die Spu­le gege­ben und der dar­aus resul­tie­ren­de Strom gemes­sen. Span­nung und Strom wer­den jeweils in Betrag und Pha­se gemes­sen. Dar­aus wer­den dann wie bei LTSpi­ce alle unten dar­ge­stell­ten Para­me­ter errechnet.

Messung einer kernlosen Zylinderspule mit dem DG8SAQ VNWA
Mes­sung einer kern­lo­sen Zylin­der­spu­le mit dem DG8SAQ VNWA

Zur Ver­gleich­bar­keit mit den Simu­la­tio­nen sind auch hier wie­der der Schein­wi­der­stand |Z|, die Induk­ti­vi­tät L und die Güte QL dar­ge­stellt. Zur Ver­deut­li­chung sind fünf Mar­ker an unter­schied­li­chen Fre­quen­zen eingefügt.

Bei nied­ri­gen Fre­quen­zen wird eine Induk­ti­vi­tät von 1,75 µH gemes­sen, was erstaun­lich genau der vor­her­ge­sag­ten Induk­ti­vi­tät von 1,73 µH entspricht.

Die Selbst­re­so­nanz­fre­quenz der Spu­le liegt bei 98,4 MHz, am rech­ten Rand des Dia­gramms. Aus der SRF und der Induk­ti­vi­tät von 1,75 µH kann man nach der Thom­son­schen Schwin­gungs­glei­chung auf eine para­si­tä­re Kapa­zi­tät von etwa 1,5 pF schließen.

Die Güte bei 5 MHz liegt bei gemes­se­nen 375, was den vor­her­ge­sag­ten 307 auch recht nahe kommt. Güte­mes­sun­gen sind aller­dings noto­risch unge­nau und wer­den wei­ter unten noch etwas detail­lier­ter diskutiert.

Ein­la­gi­ge kern­lo­se Zylin­der­spu­le höhe­rer Induktivität

Mit­un­ter braucht man für die unte­ren Kurz­wel­len­bän­der Spu­len höhe­rer Induk­ti­vi­tät. Ab dem obe­ren ein­stel­li­gen µH-Bereich kön­nen sol­che Spu­len mecha­ni­sche Dimen­sio­nen anneh­men, die in den übli­chen Gehäu­sen kaum mehr hand­hab­bar sind. Das ändert aber nichts an ihrer Mach­bar­keit. Als Bei­spiel soll jetzt eine Spu­le von etwa 12 µH unter­sucht werden.

Durch Aus­pro­bie­ren prak­ti­ka­bler Wer­te erhält man mit dem Spreadsheet von HB9DFZ für eine Spu­le mit 80 mm Durch­mes­ser und einer Län­ge von 33,6 mm bei 12 Win­dun­gen eine Induk­ti­vi­tät von knapp 13 µH. Bei 10 MHz wird eine Güte von 930 prognostiziert.

Die Stei­gung von 2,8 mm wur­de übri­gens nach der Dau­men­re­gel aus­ge­wählt, wonach der Win­dungs­ab­stand für opti­ma­le Güte genau­so groß sein soll, wie der Draht­durch­mes­ser, näm­lich bei dem ver­wen­de­ten Draht jeweils 1,4 mm.

Wegen des gro­ßen Durch­mes­sers der Spu­le sind wei­te­re Abstands­hal­ter vor­ge­se­hen, die den kor­rek­ten Abstand der ein­zel­nen Win­dun­gen sicherstellen.

Einlagige kernlose Zylinderspule, 12 Windungen, 80 mm Durchmesser
Ein­la­gi­ge kern­lo­se Zylin­der­spu­le, 12 Win­dun­gen, 80 mm Durchmesser

Die nach­fol­gen­de Gra­fik zeigt die Meßergebnisse:

Meßergebnisse der einlagigen kernlosen Zylinderspule
Meß­er­geb­nis­se der ein­la­gi­gen kern­lo­sen Zylinderspule

Man beach­te, daß die ver­ti­ka­le Ska­lie­rung der Induk­ti­vi­tät und der Güte gegen­über der vori­gen Mes­sung geän­dert wur­de. Die Induk­ti­vi­tät ist mit 14,2 µH etwas höher als berech­net. Bei der Güte soll­te man sich nicht auf die Mar­ker ver­las­sen, die zufäl­lig auf einem Aus­rei­ßer der Meß­wer­te ste­hen kön­nen. „Mit dem Auge gemit­telt“ dürf­te die 10 MHz-Güte bei etwa 400 lie­gen. Eine schmal­ban­di­ge­re Mes­sung von 8 bis 12 MHz ergibt eine Güte von unge­fähr 500, also etwa halb soviel, wie vor­her­ge­sagt. Die Selbst­re­so­nanz­fre­quenz liegt bei unge­fähr 20 MHz.

Da eine Spu­le von 80 mm Durch­mes­ser nur schlecht hand­hab­bar ist, soll nun eine zwei­la­gi­ge kern­lo­se Spu­le ähn­li­cher Induk­ti­vi­tät unter­sucht werden.

Zwei­la­gi­ge kern­lo­se Zylinderspule

Kern­lo­se Zylin­der­spu­len las­sen sich mit einem gefrä­sten Wickel­kör­per auch leicht als zwei- oder mehr­la­gi­ge Spu­len fer­ti­gen. Das soll­te die Induk­ti­vi­tät bei nied­ri­gem Bau­vo­lu­men deut­lich erhö­hen. Gleich­zei­tig wird man aber erwar­ten, daß die Selbst­re­so­nanz­fre­quenz sinkt, weil die para­si­tä­re Kapa­zi­tät grö­ßer wird, als bei einer ein­la­gi­gen Spule.

Der nach­fol­gend unter­such­te Pro­to­typ der zwei­la­gi­gen Zylin­der­spu­le besteht aus zwei zunächst unab­hän­gi­gen Spu­len. Sie sind ein­zeln gewickelt, wur­den nach­ein­an­der in den Spu­len­trä­ger ein­ge­dreht (am besten fängt man mit der inne­ren Spu­le an) und dann die Dräh­te am einen Ende anein­an­der­ge­lö­tet, am ande­ren Ende wur­de eine Meß­buch­se angelötet.

Zu Beach­ten ist, daß der Wickel­sinn bei­der Spu­len gleich sein muß. Da die eine Spu­le nach oben und die ande­re nach unten steigt, muß die eine links­her­um und die ande­re rechts­her­um gewickelt wer­den. Zur Wah­rung der Form­sta­bi­li­tät und des Abstan­des bei­der Spu­len sind hier noch klei­ne Abstands­hal­ter ein­ge­klemmt. Beim Frä­sen die­ser Hal­ter ist zu beach­ten, daß die Win­dun­gen der bei­den Spu­len nicht par­al­lel ver­lau­fen, son­dern sich wegen der ent­ge­gen­ge­setz­ten Wickel­rich­tung bei 90° und 270° schnei­den. Die Ein­ker­bun­gen auf bei­den Sei­ten soll­ten sich also gegen­über lie­gen. Anders als hier gezeigt rei­chen zwei die­ser Hal­ter auch völ­lig aus.

Die inne­re Spu­le hat einen Durch­mes­ser von 28 mm, die äuße­re von 36 mm. Sowohl auf der inne­ren wie auch auf der äuße­ren Spu­le sind 13,5 Win­dun­gen auf­ge­bracht, was ins­ge­samt 27 Win­dun­gen ergibt. Die Stei­gung beträgt jeweils 2,8 mm, was zu knapp 38 mm Spu­len­län­ge führt (2,8 mm ∗ 13,5 Windungen).

Zur über­schlä­gi­gen Bestim­mung der Induk­ti­vi­tät neh­me ich einen mitt­le­ren Durch­mes­ser von 32 mm und kom­me mit dem oben schon genann­ten Spreadsheet von HB9DFZ auf 12,88 µH und bei 10 MHz auf eine Güte von 213.

Meß­er­geb­nis­se der zwei­la­gi­gen Spule

Meßergebnisse der zweilagigen kernlosen Zylinderspule
Meß­er­geb­nis­se der zwei­la­gi­gen kern­lo­sen Zylinderspule

Die gemes­se­ne Induk­ti­vi­tät liegt bei etwa 11,4 µH, also etwas unter­halb, aber den­noch recht nahe bei den oben errech­ne­ten 12,88 µH. Die vor­her­ge­sag­te Güte bei 10 MHz von 213 wird mit etwa 400 (wie­der „mit dem Auge gemit­telt“) deut­lich über­bo­ten. Es fällt auf, daß die Güte auch bei Fre­quen­zen über 10 MHz, anders als bei der ein­la­gi­gen Spu­le, rela­tiv hoch bleibt. Eine etwas breit­ban­di­ge­re Mes­sung zeigt, daß die Selbst­re­so­nanz­fre­quenz bei etwa 19 MHz liegt.

Ein kur­zer Ver­gleich mit der ein­la­gi­gen Spu­le zeigt also, daß SRF und Güte nur wenig gesun­ken sind. Nicht ver­ges­sen darf man aller­dings, daß die Induk­ti­vi­tät der ein­la­gi­gen Spu­le doch etwa 25% höher ist. Ein fai­rer Ver­gleich wirk­lich glei­cher Induk­ti­vi­tä­ten, wird daher noch deut­li­cher zugun­sten der ein­la­gi­gen Spu­le aus­fal­len (aber „Wel­ten“ lie­gen nicht dazwischen).

Ver­gleichs­mes­sung einer Ringkernspule

Zum Ver­gleich mit den ein- und zwei­la­gi­gen kern­lo­sen Spu­len soll eine Ring­kern­spu­le ähn­li­cher Induk­ti­vi­tät unter­sucht wer­den. Weil vor­han­den, fällt die Wahl auf einen FT114-61 Ring­kern. Der mini-Ring­kern­rech­ner errech­net für 12 Win­dun­gen eine Induk­ti­vi­tät von 11,4 µH.

Ringkernspule. 12 Windungen auf FT114-61
Ring­kern­spu­le. 12 Win­dun­gen auf FT114-61

Meß­er­geb­nis­se der Ringkernspule

Meßergebnisse der Ringkernspule
Meß­er­geb­nis­se der Ringkernspule

Die Induk­ti­vi­tät liegt mit 10,9 µH auch hier leicht unter der pro­gno­sti­zier­ten von 11,4 µH. Die Selbst­re­so­nanz­fre­quenz ist hier nicht gezeigt, sie liegt bei knapp 30 MHz. Bei nied­ri­gen Fre­quen­zen von 1 und 2 MHz ist die Güte sehr hoch, sie sinkt aber schon bei 5 MHz unter die der kern­lo­sen Spu­le und sie wird schon bei 10 und 14 MHz kaum mehr als ein fünf­tel der zwei­la­gi­gen kern­lo­sen Spu­le. Auch wenn man Güte­mes­sun­gen immer etwas kri­tisch betrach­ten soll­te, ist der Trend eindeutig.

Zusam­men­fas­sung der Meßergebnisse

Es wur­den exem­pla­risch drei Spu­len mit unge­fähr glei­cher Induk­ti­vi­tät mit einem VNWA von DG8SAQ durch­ge­mes­sen. Das nach­fol­gen­de Foto zeigt einen Grö­ßen­ver­gleich der Spulen.

Größenvergleich der hier gemessenen Spulen
Grö­ßen­ver­gleich der hier gemes­se­nen Spulen

Die größ­te Spu­le is eine ein­la­gi­ge kern­lo­se Spu­le mit 80 mm Durch­mes­ser und 34 mm Höhe. Bei 10 MHz hat sie die beste Güte die­ser Spu­len und ihre Selbst­re­so­nanz­fre­quenz liegt bei 20 MHz. Die zwei­la­gi­ge kern­lo­se Spu­le steht ihr in den elek­tri­schen Eigen­schaf­ten kaum nach, hat aber weni­ger als den hal­ben Durch­mes­ser, belegt damit also weni­ger als ein vier­tel der Flä­che und ist nur 4 mm höher.

Die Grö­ße der Ring­kern­spu­le ist unschlag­bar. Ihr Durch­mes­ser ist dem der zwei­la­gi­gen Zylin­der­spu­le ähn­lich (33 mm vs. 36 mm), aber die Höhe beträgt mit 10 mm nur ein gutes vier­tel der Zylin­der­spu­le. Dafür ist die Zylin­der­spu­le wesent­lich höher belast­bar. Ihre Güte von etwa 400 bedeu­tet, daß sie ein vier­hun­dert­stel der beauf­schlag­ten Lei­stung in Wär­me umwan­delt, also 1 Watt bei 400 Watt Lei­stung. Da sie „luft­ge­kühlt“ ist, wür­de ich ihr ohne wei­te­res 2,5 W Ver­lust zumu­ten, sie also mit 1 kW betrei­ben. In der Ring­kern­spu­le wird bei einer Güte von 80 bereits bei 80 W Bela­stung ein Watt ver­bra­ten. Da sie wegen der kom­pak­ten Bau­wei­se viel schlech­ter gekühlt wird, ist die­se Bela­stung schon bedenklich.

Quint­essenz, wenn’s passt: kern­lo­se Spu­len verwenden!

Güte­mes­sun­gen an Spulen

Güte­mes­sun­gen sind noto­risch unge­nau und rausch­be­haf­tet. Das liegt dar­an, daß Güte­mes­sun­gen an die Meß­gren­zen sto­ßen. Der Blind­wi­der­stand liegt in der Grö­ßen­ord­nung hun­der­te Ohm bis weni­ge kΩ, wäh­rend der Wirk­wider­stand in der Grö­ßen­ord­nung eini­ger 100 mΩ bis weni­gen Ohm liegt. Außer­dem kann die Spu­le Stö­run­gen aus der Umge­bung ein­fan­gen. Die oben gezeig­te Meß­kur­ve ver­wen­det schon einen Trick, um die Kur­ve zu glät­ten: die Kur­ve der Güte wird über die jeweils benach­bar­ten 40 Meß­punk­te geglät­tet (smoot­hing). Die unge­glät­te­te Kur­ve sieht so aus:

Messung einer kernlosen Zylinderspule mit dem DG8SAQ VNWA
Mes­sung einer kern­lo­sen Zylin­der­spu­le mit dem DG8SAQ VNWA, ohne Smoot­hing der Güte

Und das ist noch harm­los, denn man kann schon optisch nur mit dem Auge die Güte abschät­zen. Das ist nicht immer so. Die bei­den ande­ren Kur­ven in die­sem Bei­spiel sind übri­gens nicht geglättet.

Die­sel­be Spu­le ist hier noch­mal etwas schmal­ban­di­ger gemes­sen und neben der Güte wird auch noch ihr Blind­wi­der­stand und ihr Wirk­wider­stand dargestellt.

Güte, Wirk- und Blindwiderstand einer Spule
Güte, Wirk- und Blind­wi­der­stand einer Spule

Güte und Wirk­wider­stand sind über jeweils 40 Meß­wer­te geglät­tet, der Blind­wi­der­stand ist nicht geglät­tet. Die Güte wird aus Q=X/R berech­net und man sieht and den Meß­wer­ten deut­lich, daß der Wirk­wider­stand R für das Rau­schen und die nicht-Mono­to­nie der Güte ver­ant­wort­lich ist. Die Güte folgt spie­gel­bild­lich dem Wirk­wider­stand, die Kur­ve des Blind­wi­der­stands ist im Rah­men der Meß­ge­nau­ig­keit rausch­frei und monoton.

Trotz Glät­tung ver­blei­ben Unre­gel­mä­ßig­kei­ten (nicht-Mono­to­ni­en) in den Meß­kur­ven, die nicht mehr auf Rau­schen zurück­zu­füh­ren sind. Man sieht hier z.B. eine Erhö­hung des Wirk­wider­stan­des und ent­spre­chen­de Ver­min­de­rung der Güte zwi­schen etwa 15 und 30 MHz. Sie blei­ben bei Wie­der­ho­lun­gen der Mes­sung im wesent­li­chen gleich. Die Ursa­che ist unbe­kannt und gele­gent­lich wer­de ich da noch­mal wei­ter forschen.

Man kann die Meß­kur­ve noch wei­ter glät­ten und auch eine Aus­gleichs­kur­ve oder einen Spli­ne dafür berech­nen. Das soll­te natür­lich mit gro­ßer Vor­sicht gemacht wer­den, weil es zwar die Kur­ven ver­schö­nert, aber die wah­ren Ursa­chen verdeckt.

Ver­bes­se­rung von Gütemessungen

Zur Ver­bes­se­rung der Güte­mes­sun­gen schlägt Kurt, OZ7OU, zwei unter­schied­li­che Maß­nah­men vor. Zum einen hilft es, die Spu­le von äuße­ren Stö­run­gen abzu­schir­men und sie z.B. in einen lee­ren Farb­ei­mer zu mon­tie­ren. Zum ande­ren kann man die Güte auch bei Seri­en­re­so­nanz mes­sen, wo die Impe­dan­zen ein Mini­mum errei­chen, bei dem sie mit guter Auf­lö­sung meß­bar sind. Eine Seri­en­re­so­nanz erreicht man durch Ein­schlei­fen eines pas­sen­den Kon­den­sa­tors hoher Güte.

Die Güte Q eines Schwing­krei­ses im Reso­nanz­fall errech­net sich aus der Güte QC des Kon­den­sa­tors und der Güte QL der Spu­le nach fol­gen­der Formel:


Schwing­kreis­gü­te:

     QL * QC 
Q = ────────
     QL + QC

Wenn man einen Kon­den­sa­tor aus­wählt, des­sen Güte weit­aus höher als die der Spu­le ist, dann nähert sich die gemes­se­ne Güte Q der Güte der Spu­le QL an. Zumin­dest erhält man eine gute unte­re Abschät­zung: auch bei einem Kon­den­sa­tor gerin­ger Güte, ist die tat­säch­li­che Güte der Spu­le also immer noch bes­ser, als die damit gemes­se­ne Güte.

Der klei­ne Nach­teil die­ser Metho­de ist, daß man mit einem festen Kon­den­sa­tor immer nur die Güte bei einer ein­zi­gen Fre­quenz mes­sen kann. Kurt schlägt daher vor, einen Dreh­kon­den­sa­tor zu ver­wen­den, um die Güte leicht bei meh­re­ren unter­schied­li­chen Fre­quen­zen zu messen.

Da hier kei­ne hohen Anfor­de­run­gen an die Prä­zi­si­on der Güte­mes­sung gestellt wer­den sol­len, gebe ich mich für die hier gezeig­ten Spu­len mit der gemes­se­nen (und geglät­te­ten) Güte des VNWA zufrie­den. Sie lie­gen, wie ein­gangs gezeigt, nicht um Grö­ßen­ord­nun­gen dane­ben und soll­ten zumin­dest für ver­glei­chen­de Mes­sun­gen hin­rei­chend genau sein.

Wei­te­re geplan­te Ver­su­che: Sonderbauformen

Bei Gele­gen­heit wer­de ich noch eini­ge leicht zu fer­ti­gen­de Son­der­bau­for­men kern­lo­ser Spu­len untersuchen.

n‑eckige kern­lo­se Spulen

Spu­len müs­sen nicht zylin­der­för­mig sein, son­dern sie kön­nen auch einen n‑eckigen Quer­schnitt haben. Mit n gegen unend­lich wird dar­aus dann wie­der eine Zylin­der­spu­le. Da die Induk­ti­vi­tät bei sonst glei­chen Eigen­schaf­ten line­ar mit dem Quer­schnitt A wächst, hat eine qua­dra­tisch gewickel­te Spu­le gegen­über einer gleich­gro­ßen Zylin­der­spu­le eine knapp 30% höhe­re Induk­ti­vi­tät (Zylin­der­spu­le: AZ=π/4∗d²; Qua­drat­spu­le: AQ=d²; AQ/AZ=4/π=1,27). Die Län­ge L des Wickel­drah­tes steigt um den­sel­ben Pro­zent­satz (LZ=π∗d vs. LQ=4∗d; LQ/LZ=4/π=1,27), wodurch die Güte in erster Nähe­rung für glei­che Induk­ti­vi­tä­ten gleich­blei­ben soll­te. Kern­lo­se Spu­len mit qua­dra­ti­schem oder recht­ecki­gem Quer­schnitt könn­ten eine kom­pak­te­re Bau­wei­se der damit aus­ge­stat­te­ten Gerä­te erge­ben, weil sie den bei einer Zylin­der­spu­le unge­nutz­ten Raum mit­be­nut­zen. Das kann aber auch zu einem Null­sum­men­spiel wer­den, wenn grö­ße­re Abstän­de ein­ge­hal­ten wer­den müs­sen, um Kopp­lun­gen zu benach­bar­ten Bau­ele­men­ten zu verringern.

Ver­setz­te Wick­lun­gen n‑eckiger Spulen

Bei n‑eckigen Spu­len kann man auf einem geeig­ne­ten Wickel­kör­per ein­zel­ne Win­dun­gen gegen­ein­an­der ver­dre­hen. Das Prin­zip wird bei Kreuzwickel­spu­len schon lan­ge ange­wen­det. Das soll­te zu einer Ver­rin­ge­rung der para­si­tä­ren Kapa­zi­tät und einer ent­spre­chen­den Erhö­hung der Selbst­re­so­nanz­fre­quenz führen.

Koni­sche Spulen

Seit eini­ger Zeit wer­den für den UHF-Fre­quenz­be­reich koni­sche Spu­len ange­bo­ten, die zwar zylin­drisch sind, deren Durch­mes­ser sich aber über die Län­ge ändert. Das soll die Güte der Spu­le erhö­hen. Mal sehen, ob da was (meß­ba­res) dran ist.

Simu­lie­ren, Wickeln und Mes­sen von elek­tri­schen Spulen

Eine Spu­le zu bau­en ist ein­fach: ein paar Win­dun­gen Draht auf einen pas­sen­den Wickel­kern auf­wickeln, ein­lö­ten, fer­tig. Deut­lich schwie­ri­ger wird es, wenn die Spu­le bestimm­te mecha­ni­sche und elek­tri­sche Eigen­schaf­ten haben soll: Abmes­sun­gen, Induk­ti­vi­tät, Güte, Selbst­re­so­nanz­fre­quenz (SRF) oder mini­ma­le elek­tri­sche Belast­bar­keit für Sen­de­rend­stu­fen und zur Anten­nen­an­pas­sung. Die­se Bei­trags­rei­he zeigt Bei­spie­le zur Simu­la­ti­on idea­ler und rea­ler Spu­len mit LTSpi­ce, zum Wickeln sol­cher Spu­len und zur Mes­sung der Para­me­ter mit dem VNWA von DG8SAQ.

Wir star­ten mit einer kur­zen Wie­der­ho­lung der Grund­la­gen und der Simu­la­ti­on. Den übli­chen Kon­ven­tio­nen fol­gend wer­den hier kom­ple­xe Zah­len mit einem Unter­strich und die ima­gi­nä­re Ein­heit, wie in der Elek­tro­tech­nik üblich, mit j gekennzeichnet.

Grund­la­gen

Eine Spu­le hat die Induk­ti­vi­tät L, die von ihren mecha­ni­schen Abmes­sun­gen bestimmt wird. Wird sie von einem elek­tri­schen Strom durch­flos­sen, erzeugt sie ein Magnet­feld, das Ener­gie spei­chert. Jede Spu­le hat einen kom­ple­xen Wech­sel­strom­wi­der­stand, die Impe­danz Z:


Impe­danz:


Z = R + jω ∗ L


(1)

Der Real­teil der Impe­danz ist der Wirk­wider­stand R:


Wirk­wider­stand:


R = Re(Z)


(2)

Der Ima­gi­när­teil der Impe­danz ist der Blind­wi­der­stand X:


Blind­wi­der­stand:


X = Im(Z) = 2πf ∗ L = ω ∗ L


(3)

Der Schein­wi­der­stand Z (nicht kom­plex, daher ohne Unter­strich) ist die pytha­go­räi­sche Sum­me von Wirk- und Blindwiderstand:


Schein­wi­der­stand:


Z = |Z| = Mag(Z)


(4)

Die Spu­len­gü­te Q ist das Ver­hält­nis des Blind­wi­der­stan­des X zum Wirk­wider­stand R einer Spule:


Spu­len­gü­te:


Q = X / R


(5)

Re(), Im() und Mag() sind Funk­tio­nen, die LTSpi­ce für kom­ple­xe Zah­len unterstützt.

Der Wirk­wider­stand einer idea­len Spu­le ist R = 0 Ω und ihr Blind­wi­der­stand X steigt nach (3) pro­por­tio­nal mit der Fre­quenz f. Das schau­en wir uns nun ein­mal in einer LTSpi­ce-Simu­la­ti­on an.

Simu­la­ti­on einer (fast) idea­len Spule

Da die Simu­la­ti­on einer idea­len Spu­le L1 mit R = 0 Ω nach (5) zu einer unend­li­chen Güte führt, begin­nen wir mit der Simu­la­ti­on einer fast idea­len Spu­le. Sie soll eine Induk­ti­vi­tät von 10 µH, einen reel­len Wider­stand von R1 = 1 mΩ und kei­ne para­si­tä­re Par­al­lel­ka­pa­zi­tät haben (C1 = 0 pF):

fast ideale Spule
Ersatz­schalt­bild der fast idea­len Spule

Die unte­re Zei­le bedeu­tet, daß eine linea­re AC-Simu­la­ti­on von 1 Hz bis 5 MHz und 500 Punk­ten durch­ge­führt wird. Hier die gra­fi­schen Ergebnisse:

AC Simulation der fast idealen Spule
AC Simu­la­ti­on der fast idea­len Spule

Die Simu­la­ti­on zeigt oben den Schein­wi­der­stand Z (sie­he (4)), in der mitt­le­ren Gra­fik die Induk­ti­vi­tät der Spu­le (nach Glei­chung (3)) und unten ihre Güte (nach (5)). Alle drei Para­me­ter wer­den aus der kom­ple­xen Impe­danz Z errech­net, die der Quo­ti­ent der ange­leg­ten kom­ple­xen Span­nung und dem dar­aus resul­tie­ren­den kom­ple­xen Strom ist. LTSpi­ce errech­net die Impe­danz über die For­mel Z = V(V1)/-I(V1). Das nega­ti­ve Vor­zei­chen beim Strom ergibt sich aus der Stromrichtung.

Durch Vek­tor­ad­di­ti­on des Real- und Ima­gi­när­teils die­ser Impe­danz ergibt sich ein Sum­men­vek­tor, des­sen Län­ge der Schein­wi­der­stand Z = |Z| ist. LTSpi­ce errech­net die Län­ge eines Vek­tors mit der Funk­ti­on mag():

Z = |Z| = mag(V(v1)/-I(V1))

Die For­mel für den Blind­wi­der­stand der Spu­le (3) wird nach der Induk­ti­vi­tät auf­ge­löst also gilt L = X / ω:

L = 10∗∗6∗im(V(v1)/-I(v1))/w

Net­ter­wei­se kennt LTSpi­ce auch die Kreis­fre­quenz ω (= 2πf), die mit dem latei­ni­schen Buch­sta­ben „w“ in die For­mel ein­ge­ge­ben wird. Die­ser Aus­druck wird noch mit 106 mul­ti­pli­ziert, damit das Ergeb­nis in µH ange­zeigt wird. Die dar­ge­stell­te Ein­heit für die y‑Achse möge man hier igno­rie­ren, es soll­te tat­säch­lich µH sein, der Zah­len­wert ist kor­rekt. Die Induk­ti­vi­tät ist über die Fre­quenz kon­stant, so wie man es von einer idea­len Spu­le erwartet.

Im unte­ren Dia­gramm ist die Spu­len­gü­te Q dar­ge­stellt, die nach (5) errech­net wird:

im(V(v1)/-I(V1))/Re(V(v1)/-I(V1))

Da der Blind­wi­der­stand bei der idea­len Spu­le line­ar mit der Fre­quenz steigt und der Wirk­wider­stand kon­stant bleibt, steigt die Güte der Spu­le line­ar mit der Fre­quenz. Hier sieht man, war­um eine „fast“ idea­le Spu­le mit einem sehr gerin­gen Wirk­wider­stand grö­ßer als null gewählt wur­de: die Güte wür­de sonst unend­lich hoch (LTSpi­ce fängt den Feh­ler der Divi­si­on durch null ab, stellt aber kei­ne Kur­ve dar). Bei einer rea­len (nicht supra­lei­ten­den) Spu­le sind die hier errech­ne­ten Güten von eini­gen 100k natür­lich nicht erreich­bar. Rea­le Spu­len haben Güten zwi­schen 100 und 1000, mit Abwei­chun­gen nach oben und unten. Die Güte wird hier noch mit der Funk­ti­on abs() auf posi­ti­ve Wer­te umge­rech­net. Wie sich spä­ter zei­gen wird, wür­de sie sonst jen­seits der Selbst­re­so­nanz­fre­quenz nega­tiv, weil die Spu­le dann zu einem Kon­den­sa­tor mutiert.

Simu­la­ti­on rea­ler Spulen

Eine rea­le Spu­le ist lei­der nie­mals ide­al. Neben ihrer Induk­ti­vi­tät L hat sie eine signi­fi­kan­te par­al­le­le Kapa­zi­tät C und einen Wirk­wider­stand R grö­ßer null:

Einfaches Ersatzschaltbild einer realen Spule
Ein­fa­ches Ersatz­schalt­bild einer rea­len Spule

Den Wirk­wider­stand bil­det im wesent­li­chen der fre­quenz­ab­hän­gi­ge Wider­stand des Wickel­drah­tes. Er steigt wegen des Skin-Effekts und des Pro­xi­mi­ty-Effekts mit der Fre­quenz. Die Par­al­lel­ka­pa­zi­tät C kommt durch die Nähe der ein­zel­nen Win­dun­gen und der Anschluß­dräh­te zustan­de. R und C sind also kon­struk­ti­ons­ab­hän­gig und kön­nen daher in wei­ten Berei­chen vari­ie­ren. Nur um ein Gefühl zu bekom­men: bei den für Ama­teur­funk­zwecke im Kurz­wel­len­be­reich benö­tig­ten Spu­len von etwa 50 nH ~ 25 µH, die mit Kup­fer­draht von ein bis zwei Mil­li­me­ter Durch­mes­ser gewickelt wer­den, liegt R in der Grö­ßen­ord­nung von weni­gen Ohm und C in der Grö­ßen­ord­nung von weni­gen Pikofarad.

L und C bil­den einen Par­al­lel­schwing­kreis, der die Nutz­bar­keit der Spu­le schon deut­lich unter­halb sei­ner Selbst­re­so­nanz­fre­quenz ein­schränkt. Bei Fre­quen­zen ober­halb der SRF ist die Spu­le als sol­che völ­lig unbrauch­bar, denn sie ist kei­ne Spu­le mehr, son­dern sie wirkt wie ein Kon­den­sa­tor. Wegen der Par­al­lel­ka­pa­zi­tät C steigt der Blind­wi­der­stand der Spu­le schon unter­halb der SRF nicht mehr pro­por­tio­nal mit der Fre­quenz an, so wie es bei der idea­len Spu­le der Fall wäre. Der Kon­den­sa­tor bewirkt einen über­pro­por­tio­na­len Anstieg des Blind­wi­der­stan­des, der dann bei der Selbst­re­so­nanz­fre­quenz unend­lich groß wird.

R aus dem obi­gen Ersatz­schalt­bild bestimmt damit also umge­kehrt pro­por­tio­nal die Güte der Spu­le: je klei­ner R ist, umso höher ist die Güte. Da XL mit der Fre­quenz steigt, steigt also auch die Spu­len­gü­te mit der Fre­quenz. Das schau­en wir uns jetzt mal in der Simu­la­ti­on an.

Simu­la­ti­on einer fast rea­len Spule

Schau­en wir zunächst ein­mal, was pas­siert, wenn der Wirk­wider­stand auf etwas über­trie­be­ne 10 Ω erhöht wird und die Par­al­lel­ka­pa­zi­tät wei­ter­hin entfällt:

Ersatzschaltbild der fast realen Spule
Ersatz­schalt­bild der fast rea­len Spule

AC Simulation der fast realen Spule
AC Simu­la­ti­on der fast rea­len Spule

Der Schein­wi­der­stand kann nicht nied­ri­ger als der Wirk­wider­stand sein. Er ist daher auch bei nied­ri­gen Fre­quen­zen nicht nahe null, son­dern er star­tet bei den vor­ge­ge­be­nen 10 Ohm. Bei stei­gen­den Fre­quen­zen wird der Wirk­wider­stand gegen­über dem Blind­wi­der­stand immer weni­ger signi­fi­kant, so daß sich der Schein­wi­der­stand zu höhe­ren Fre­quen­zen hin nicht sicht­bar von der vori­gen fast idea­len Simu­la­ti­on unterscheidet.

Die Induk­ti­vi­tät bleibt auch hier kon­stant über der Fre­quenz. Auch die Güte bleibt line­ar fre­quenz­ab­hän­gig, fällt aber signi­fi­kant ab. Das ist natür­lich kein Wun­der, denn der Wirk­wider­stand steht im Nen­ner und geht umge­kehrt pro­por­tio­nal in die Güte ein.

Simu­la­ti­on einer rea­len Spule

Soweit war das zu erwar­ten. Jetzt schal­ten wir noch einen Kon­den­sa­tor von (rela­tiv rea­len) 10 pF par­al­lel und schau­en uns das Ergeb­nis an:

Ersatzschaltbild der realen Spule
Ersatz­schalt­bild der rea­len Spule

Zu Beach­ten ist, daß dies­mal die Simu­la­ti­on bis 12 MHz und damit nahe an die SRF der Spu­le von knapp 16 MHz geht.

AC Simulation der realen Spule
AC Simu­la­ti­on der rea­len Spule

Schein­wi­der­stand, errech­ne­te Induk­ti­vi­tät und Güte ändern sich nun signi­fi­kant und nicht mehr line­ar mit der Fre­quenz. Bei nied­ri­gen Fre­quen­zen bleibt die Induk­ti­vi­tät bei 10 µH und steigt dann mit der Fre­quenz stark an. Bei 12 MHz hat sie schon eine errech­ne­te Induk­ti­vi­tät von 23 µH. Die Güte der rea­len Spu­le steigt zunächst mit der Fre­quenz an, erreicht (hier bei etwa 9 MHz) ein Maxi­mum und fällt dann wie­der ab.

Bei die­sen Simu­la­ti­ons­er­geb­nis­sen stellt sich sofort die Fra­ge, ob die Simu­la­ti­on kor­rekt ist. Es sei hier vor­weg­ge­nom­men, daß die Mes­sun­gen an rea­len Spu­len mit dem VNWA die­sel­ben Ergeb­nis­se lie­fern, die Induk­ti­vi­tät der Spu­le steigt mit der Meß­fre­quenz an. Hat die Spu­le also bei 12 MHz tat­säch­lich mehr als die dop­pel­te Induk­ti­vi­tät als bei 6 MHz? Wel­cher Wert gilt denn nun?

Bau­en wir ein­fach mal einen Par­al­lel­schwing­kreis für 12 MHz. Aus der bekann­ten Thom­son­schen Schwin­gungs­glei­chung berech­nen wir die not­wen­di­ge Parallelkapazität.




Reso­nanz­fre­quenz:

           1     
f0 = ───────────────
               _____
     2 ⋅ π ⋅ ╲╱L ⋅ C


(6)

Für L = 10 µH errech­net man für 12 MHz eine Par­al­lel­ka­pa­zi­tät von 17,6 pF. Zu den bereits para­si­tär vor­han­de­nen 10 pF müs­sen wir also 7,6 pF für die Reso­nanz hin­zu­fü­gen. Rech­nen wir mit der simu­lier­ten bzw. gemes­se­nen Induk­ti­vi­tät von 23 µH bei 12 MHz, die schon die 10 pF ent­hält, dann kom­men wir eben­falls auf 7,6 pF. Für einen Par­al­lel­schwing­kreis sind also bei­de Induk­ti­vi­tä­ten kor­rekt und füh­ren zum sel­ben Ergeb­nis. Glei­ches gilt für den Serienresonanzkreis.

Zusam­men­ge­fasst: nimmt man zur Schwing­kreis­be­rech­nung die bei nied­ri­ger Fre­quenz gemes­se­ne Induk­ti­vi­tät, so muß man für den Kon­den­sa­tor immer noch die tat­säch­li­che para­si­tä­re Kapa­zi­tät berück­sich­ti­gen, also von der errech­ne­ten Kapa­zi­tät abzie­hen. Nimmt man die bei der Soll­fre­quenz gemes­se­ne Induk­ti­vi­tät für die Berech­nung, dann ist die para­si­tä­re Kapa­zi­tät bereits „ein­ge­preist“ und man berech­net nur noch die zusätz­lich benö­tig­te Kapazität.

Die Güte steigt zunächst recht line­ar mit der Fre­quenz an, so wie bei der idea­len Spu­le. Sie erreicht aber ein Maxi­mum und wird bei der SRF zu null, weil dann der Wirk­wider­stand sehr groß wird.

Simu­la­ti­on einer rea­len Spu­le bis ober­halb der Selbstresonanzfrequenz

Nach­fol­gend noch eine Simu­la­ti­on der rea­len Spu­le bis 20 MHz, also über die SRF hinaus.

Ersatzschaltbild der realen Spule bis über die Selbstresonanzfrequenz hinaus
Ersatz­schalt­bild der rea­len Spu­le bis über die Selbst­re­so­nanz­fre­quenz hinaus

AC Simulation der realen Spule bis über die Selbstresonanzfrequenz hinaus
AC Simu­la­ti­on der rea­len Spu­le bis über die Selbst­re­so­nanz­fre­quenz hinaus

Hier sieht man das Ver­hal­ten bei der Selbst­re­so­nanz­fre­quenz von knapp 16 MHz. Der Schein­wi­der­stand wird sehr hoch, so wie man das von einem Par­al­lel­schwing­kreis erwar­tet. Bei der SRF wer­den Induk­ti­vi­tät und Güte rech­ne­risch zu null, dar­über haben wir es mit einem Kon­den­sa­tor zu tun. Die Impe­danz wird nega­tiv und die Güte wird von der deut­lich höhe­ren Güte des Kon­den­sa­tors bestimmt.

Die­se Simu­la­ti­on erlaubt mit der nach C umge­form­ten Thom­son­schen Schwin­gungs­glei­chung (6) die Berech­nung der para­si­tä­ren Kapa­zi­tät: C = 1/(L∗ω2). Mit der bei nied­ri­gen Fre­quen­zen gemes­se­nen Induk­ti­vi­tät von 10 µH und der SRF bei 15,9 MHz ergibt sich dann die para­si­tä­re Kapa­zi­tät von 10 pF.

Soweit zur Spi­ce-Simu­la­ti­on elek­tri­scher Spu­len. Im näch­sten Teil die­ser Serie sol­len real gewickel­te Spu­len mit dem VNWA gemes­sen und bewer­tet werden.

Stay tun­ed…

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)  ⎠

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

Hier kommt nun der erste Teil der Beschrei­bung des Fre­quenz­zäh­lers. Hier soll die Hard­ware bespro­chen wer­den, inklu­si­ve der Logik im ver­wen­de­ten CPLD und der Soft­ware des Controllers.

Eine kur­ze Erwäh­nung fand der Zäh­ler schon vor ein paar Wochen in der Über­sicht der aktu­el­len Pro­jek­te. Dort fin­det sich auch der Schalt­plan und die 3D-Ansicht, bei­des hier noch­mal zum direk­ten Zugriff:

Die Hard­ware

Der Fre­quenz­zäh­ler basiert wie­der auf dem ATME­GA644-CPU-Board mit RS485-Schnitt­stel­le, das sich inzwi­schen in unter­schied­li­chen Pro­jek­ten bewährt hat. Die­ses CPU-Board kom­mu­ni­ziert über eine syn­chro­ne seri­el­le Schnitt­stel­le mit dem in einem EPM240T100 imple­men­tier­ten Fre­quenz­zäh­ler. Die benö­tig­te Geschwin­dig­keit ist unkri­tisch und daher wird die­se Kom­mu­ni­ka­ti­on auf dem CPU-Board über I/O‑Pins imple­men­tiert („bit-ban­ging“). Da der EPM240 mit 3,3 V betrie­ben wer­den muß und kei­ne 5‑V-tole­ran­ten I/O‑Pins hat, wird auch das CPU-Board mit 3,3 V betrie­ben. Das schränkt die Betriebs­fre­quenz auf maxi­mal 10 MHz ein. Wegen der gerin­gen Anfor­de­run­gen an die Geschwin­dig­keit, wur­de ein 8 MHz Quarz eingebaut.

Der Schalt­plan zeigt unten die Span­nungs­ver­sor­gung und die Kon­troll-LEDs, dar­über zwei gleich­ar­ti­ge Breit­band-Ver­stär­ker in klas­si­scher Emit­ter-Schal­tung für den Ein­gangs­takt. Sie sind ein­gangs­sei­tig mit 50 Ω abge­schlos­sen und heben den Pegel von etwa 6 dBm (8 mA Trei­ber­stär­ke) auf den für die CPLD-Takt­ein­gän­ge benö­tig­ten Hub von 3.3 V an. Wegen der Schmitt-Trig­ger-Ein­gän­ge darf es auch etwas weni­ger sein. Acht LEDs und vier DIP-Schal­ter kön­nen optio­nal zur Sta­tus­an­zei­ge und zur Kon­fi­gu­ra­ti­on ver­wen­det wer­den. Außer­dem ist ein 100 MHz Quarz­os­zil­la­tor ein­ge­baut sowie jeweils eine JTAG-Pro­gram­mier­schnitt­stel­le für das CPU-Board und das CPLD.

Funk­ti­ons­wei­se

Zur digi­ta­len Bestim­mung einer Fre­quenz gibt es prin­zi­pi­ell zwei Metho­den: man zählt die Anzahl der Tak­te wäh­rend eines mög­lichst genau bekann­ten Inter­valls oder man misst die Zeit­dau­er zwi­schen zwei oder meh­re­ren Tak­ten. Die erste Metho­de wird nach­fol­gend als Nor­mal­be­trieb bezeich­net, die zwei­te Metho­de als Revers­be­trieb. Bei­de Ver­fah­ren benö­ti­gen eine mög­lichst prä­zi­se Referenzfrequenz.

Prin­zi­pi­ell sind bei­de Betriebs­ar­ten gleich­wer­tig, sie unter­schei­den sich aber in der Dau­er der Mes­sung. Die Auf­lö­sung im Nor­mal­be­trieb ist umge­kehrt pro­por­tio­nal zum Mess­in­ter­vall. Um eine Auf­lö­sung von 1 Hz zu errei­chen, muß man eine Sekun­de lang mes­sen, bei 0,1 Hz Auf­lö­sung schon zehn Sekun­den. Den 32 kHz Takt einer Uhr kann man auf die­se Wei­se in einer Sekun­de also nur auf etwa 30 ppm genau mes­sen (2-15).

Im Revers­be­trieb teilt man den Takt der Uhr bei­spiels­wei­se durch 215 und bekommt so auch ein Inter­vall von einer Sekun­de. Zählt man in der Zeit die Tak­te einer 100 MHz Refe­renz, dann erreicht man auf eine Auf­lö­sung von 10 ns, was 0,01 ppm = 10 ppb entspricht.

Kurz zusam­men­ge­fasst: damit das Mess­in­ter­vall kurz gehal­ten wer­den kann, wählt man den Nor­mal­be­trieb am besten bei hohen Fre­quen­zen im Ver­gleich zur Refe­renz­fre­quenz, den Revers­be­trieb bei nied­ri­gen Frequenzen.

Das CPLD

Ein CPLD ist für die­se Art von Auf­ga­ben prä­de­sti­niert. Es besteht aus einer Anzahl Logik-Ele­men­te, in die­sem Fall 240 Blöcke, die weit­ge­hend frei ver­schal­tet wer­den kön­nen und über schnel­le Ver­bin­dun­gen zu den Pins ver­fü­gen. Anders als die mei­sten FPGAs, haben CPLDs nicht­flüch­ti­ge Spei­cher und müs­sen daher nicht bei jeden System­start neu kon­fi­gu­riert wer­den. Man benö­tigt aller­dings ein preis­wer­tes Werk­zeug, in die­sem (Intel/Al­te­ra-) Fall den soge­nann­ten USB-Bla­ster, um das CPLD in der Schal­tung zu pro­gram­mie­ren. Das kann man auch mehr­fach machen, aber die Anzahl der Pro­gram­mier­zy­klen ist auf etwa 100 beschränkt, wäh­rend der Flash-Spei­cher einer CPU nor­ma­ler­wei­se auch 10.000 bis 100.000-mal pro­gram­miert wer­den kann.

Die Logik wird in einer Pro­gram­mier­spra­che ähn­lich einer Soft­ware-Pro­gram­mier­spra­che ein­ge­ge­ben. Zwei Spra­chen haben sich eta­bliert, VHDL und Ver­i­log. Ver­i­log hat Ele­men­te der Pro­gram­mier­spra­che „C“ und ist für jeman­den, der die­se Spra­che kennt, rela­tiv leicht zu erler­nen. Der Unter­schied ist frei­lich, daß Soft­ware im wesent­li­chen sequen­zi­ell abge­ar­bei­tet wird, wäh­rend in Hard­ware vie­les gleich­zei­tig pas­siert. Wie auch bei der Soft­ware­pro­gram­mie­rung benö­tigt man Werk­zeu­ge, die den erstell­ten Quell­code in ein Binär­for­mat umwan­deln, das man in das CPLD laden kann. Die­se Werk­zeu­ge stellt der Her­stel­ler der Logik­bau­stei­ne, gege­be­nen­falls in einer abge­speck­ten Ver­si­on, kosten­los zur Ver­fü­gung. Im Fal­le Intels ist das die „Quartus“-Entwicklungsumgebung, die sogar eine ange­pass­te Ver­si­on des Men­tor Model­Sim Simu­la­tors ent­hält, der in der Voll­ver­si­on auch in der pro­fes­sio­nel­len Chip-Ent­wick­lung ver­wen­det wird.

Block­dia­gramm des Frequenzzählers

Genau wie beim Ent­wurf einer dis­kret auf­ge­bau­ten Schal­tung, soll­te man sich auch bei einem CPLD (oder FPGA) ein Block­dia­gramm erstel­len, das die Funk­ti­ons­blöcke dar­stellt. Die kön­nen dann bei Bedarf hier­ar­chisch wei­ter ver­fei­nert wer­den, was aber bei dem rela­tiv ein­fa­chen Zäh­ler hier nicht not­wen­dig ist.

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

Die­ses Dia­gramm zeigt nur die Logik des Zäh­lers, nicht das CPU-Inter­face. Zunächst gibt es die vier Takt­ein­gän­ge clk0 .. clk3, die über den Ein­gangs­mul­ti­ple­xer ver­teilt wer­den. clk1 und clk2 sind über die oben beschrie­be­nen Vor­ver­stär­ker mit den bei­den SMA-Buch­sen ver­bun­den und für den Refe­renz­takt und die zu mes­sen­de Fre­quenz vor­ge­se­hen. clk0 ist fest mit dem CPU-Takt ver­bun­den und clk3 wird von dem 100 MHz Quarz­os­zil­la­tor betrieben.

f_check ist die zu mes­sen­de Fre­quenz, die über einen optio­na­len Vor­tei­ler auf die Refe­renz­fre­quenz f_ref syn­chro­ni­siert wird. Daher muß die Refe­renz­fre­quenz min­de­stens dop­pelt so hoch sein, wie die ggf. her­un­ter­ge­teil­te zu mes­sen­de Fre­quenz. Der Ein­gangs­mul­ti­ple­xer bestimmt, wel­cher der vier Takt­ein­gän­ge auf f_check und f_ref geschal­tet wird. Es gibt hier kei­ne Ein­schrän­kun­gen, zu Test­zwecken kann auch der­sel­be Takt auf bei­de Signa­le geschal­tet werden.

Die Refe­renz­fre­quenz wird übli­cher­wei­se in der Grö­ßen­ord­nung von 50 bis 100 MHz lie­gen und wenn die zu mes­sen­de Fre­quenz mehr als halb so hoch ist, muß sie mit dem Pre­s­ca­ler her­un­ter­ge­teilt werden.

Der eigent­li­che Zäh­ler besteht aus einem 32-bit brei­ten Regi­ster, des­sen Inhalt von der CPU ein­ge­le­sen wer­den kann, sinn­vol­ler­wei­se nach­dem die Mes­sung been­det ist und der Wert sich nicht mehr ändert. Der eben­falls 32-bit brei­te pro­gram­mier­ba­re Tei­ler wird beim Start des Meß­zy­klus mit dem Wert des Timer-Rel­oad-Regi­sters gela­den und anschlie­ßend her­un­ter­ge­zählt. Er bestimmt damit die Tor­zeit, also wie lan­ge der Zäh­ler zäh­len soll. Der Meß­zy­klus wird been­det, sobald die­ser Timer null erreicht. Ein kom­plet­ter Meß­zy­klus besteht aus der Kon­fi­gu­ra­ti­on des Fre­quenz­zäh­lers (Wahl der Takt­ein­gän­ge, der Betriebs­art und Ein­stel­lung des Vor­tei­lers), Set­zen des Rel­oad-Regi­sters und Trig­gern der Mes­sung, womit gleich­zei­tig der Zäh­ler auf null gesetzt wird. Ein Sta­tus­flag zeigt an, wenn der Meß­zy­klus been­det ist und das Ergeb­nis aus­ge­le­sen wer­den kann.

Timer, Zäh­ler und Steu­er­lo­gik lie­gen in der Clock-Domä­ne des aus­ge­wähl­ten Refe­renz­si­gnals, wäh­rend die von der CPU geschrie­be­nen Kon­fi­gu­ra­ti­ons- und Sta­tus-Regi­ster in der Clock-Domä­ne des CPU-Boards lie­gen (clk0). Die Simu­la­ti­on ergibt eine maxi­ma­le Ein­gangs­fre­quenz von 120 MHz für die Takt­ein­gän­ge des Fre­quenz­zäh­lers und über 50 MHz für das CPU-Inter­face. Bei Betrieb mit 100 MHz ist man also auf der siche­ren Sei­te und die 32-bit Zäh­ler kön­nen dann über 80 Sekun­den zäh­len, ohne überzulaufen.

Im Nor­mal­be­trieb wird die Tor­zeit von der Refe­renz­fre­quenz bestimmt und die Anzahl der stei­gen­den Flan­ken von f_check wird in die­sem Inter­vall gezählt. Im Revers­be­trieb bestimmt f_check die Tor­zeit wäh­rend­des­sen die Anzahl von f_ref Flan­ken gezählt wird.

Ver­i­log Code

Hier ist nun der Ver­i­log-Code des Fre­quenz­zäh­lers und die not­wen­di­gen Pro­jekt­da­tei­en für die Quar­tus-Ent­wick­lungs­um­ge­bung. Gege­be­nen­falls müs­sen Datei­pfa­de ange­passt werden.

Das eigent­li­che Design steckt in der Datei Datei FreqCntr.v, die hin­rei­chend gut kom­men­tiert sein soll­te. Zu beach­ten ist, daß die ursprüng­lich geplan­te Para­me­tri­sie­rung über die Para­me­ter COUNTERW, TIMERW und IOREGW nicht kon­se­quent ver­folgt wur­de. Sie soll­ten auf ihren Default-Wer­ten bleiben.

FreqCntr_EPM240.v instan­zi­iert den Fre­quenz­zäh­ler für das EPM240 CPLD auf dem Fre­quenz­zäh­ler-Board. Die bei­den wei­te­ren Ver­i­log Datei­en FreqCntr_tb_Counter.v und FreqCntr_tb_Serial_IO.v ent­hal­ten die Model­Sim-Test­be­n­ches für den Zäh­ler und die seri­el­le CPU-Schnitt­stel­le. Die zuge­hö­ri­gen Skrip­te tb_Counter.do und tb_Serial_IO.do wer­den in Model­Sim aus­ge­führt und star­ten den jewei­li­gen Test.

Nach­trag: Quar­tus Prime V21.1

Nach­dem ich mir vor ein paar Wochen einen neu­en Note­book gelei­stet habe (der alte war tat­säch­lich mitt­ler­wei­le neun Jah­re alt), habe ich die jeweils neue­sten Ver­sio­nen der Ent­wick­lungs­um­ge­bun­gen instal­liert, für CPLDs und FPGAs von Intel (frü­her Alte­ra) also Quar­tus V21.1. Die­ses Paket beinhal­tet nicht mehr Model­sim, son­dern des­sen Nach­fol­ger Que­sta (bei­de von Men­tor). Die Bedie­ner­ober­flä­che ist prak­tisch gleich geblie­ben, aber es ist nun eine 64-bit Ver­si­on und die Simu­la­ti­ons­ge­schwin­dig­keit ist beein­druckend (was teil­wei­se auch am neu­en Note­book lie­gen könn­te). Lei­der benö­tigt die­se Ver­si­on eine zeit­lich auf ein Jahr befri­ste­te Lizenz, die aber kosten­los ist und danach auch ver­län­gert wer­den kann.

Fol­gen­des ist zu beach­ten: die alten mit Model­sim erstell­ten Pro­jek­te soll­ten durch neue mit Que­sta erstell­te Pro­jek­te ersetzt wer­den. Die alten Pro­jekt­da­tei­en ent­hal­ten Abhän­gig­kei­ten, die mit Que­sta nicht mehr funk­tio­nie­ren. Außer­dem muß das „vsim“-Kommando einen Para­me­ter für den Opti­mi­zer ent­hal­ten (voptargs=“+acc=prn“), damit die Namen der Ports (p), Regi­ster (r) und Net­ze (n) als Debug­in­for­ma­tio­nen erhal­ten blei­ben. Das voll­stän­di­ge vsim-Kom­man­do lau­tet also bei­spiels­wei­se folgendermaßen:

vsim <testbench> -voptargs="+acc=prn" -t 1ns

Das soll­te dann in den Test­be­n­ches tb_*.do ent­spre­chend geän­dert werden.

ATME­GA644-Code

Die Soft­ware, die auf dem ATMEGA644 aus­ge­führt wird, kann hier als Refe­renz her­un­ter­ge­la­den werden.

Ich ver­wen­de Atmel Stu­dio 7.0 als Ent­wick­lungs­um­ge­bung, habe aber kei­ne Pro­jekt­da­tei­en dazu­ge­fügt. Ver­mut­lich hat sowie­so jeder sei­ne eige­ne Phi­lo­so­phie bezüg­lich der Pfa­de. Das 7z-Archiv ent­hält auch eine PDF-Datei mit wei­te­ren Beschreibungen.

Im kom­men­den zwei­ten Teil soll die PC-Soft­ware zur Bedie­nung des Fre­quenz­zäh­lers beschrie­ben werden.

Was­ser­fall-Dia­gram­me

Schon vor ein paar Mona­ten habe ich ein klei­nes Pro­gramm geschrie­ben, das eine PNG Gra­fik-Datei in eine Audio-Datei umwandelt.

Die­ses Pro­gramm ist nun soweit, daß man es wei­ter­ge­ben kann. Es hat sicher hier und da noch ein paar Macken, daher will ich das nicht als „Release“ bezeich­nen und blei­be bei einer Ver­si­ons­num­mer klei­ner als 1.0. Es ist eine rei­ne Spielerei.

Hier ist eine etwas detail­lier­te­re Beschrei­bung in englisch.

Die Audio­da­tei lässt sich mit dem VLC Media Play­er abspie­len, der es gestat­tet, einen ande­ren Audio-Aus­gang zu wäh­len, als den Laut­spre­cher am PC. Im Menü Audio -> Audio­ge­rät kann man den Audio-Ein­gang eines ange­schlos­se­nen Trans­cei­vers wäh­len und so die Audio­da­tei direkt senden.

Aber bit­te nicht die Mit­men­schen damit ärgern. Beim ersten- und zwei­ten­mal ist das ganz spa­ßig, aber dann nervt es…

Meß­da­ten­ana­ly­se mit LibreOffice

In der Ent­wick­lungs­pha­se des noch zu beschrei­ben­den Fre­quenz­zäh­lers habe ich eini­ge Meß­rei­hen erstellt. Eine davon war der Fre­quenz­gang eines 8 MHz Quar­zes auf dem CPU-Board, die ande­re der Fre­quenz­gang eines 100 MHz Quarz­os­zil­la­tors auf dem Fre­quenz­zäh­ler selbst. Bei­de Fre­quenz­gän­ge wur­den über die Tem­pe­ra­tur gemes­sen, die mit Käl­te­spray (Butan­gas, nicht Rau­chen, kein offe­nes Feu­er aber offe­ne Fen­ster!) bzw. einem Föhn geän­dert wurde.

In bei­den Fäl­len wur­de die Tem­pe­ra­tur mit dem Tem­pe­ra­tur­sen­sor auf dem CPU-Board gemes­sen, einem TMP275. Zwi­schen ‑40 °C und +125 °C hat er eine Tole­ranz von +/- 1 °C. Die tat­säch­li­che Tem­pe­ra­tur des Quar­zes und beson­ders des Quarz­os­zil­la­tors dürf­ten um eini­ge °C von der gemes­se­nen Tem­pe­ra­tur abwei­chen, weil sie etwas ent­fernt davon mon­tiert sind. Es soll hier aber nicht um die Prä­zi­si­on der Mes­sung gehen, son­dern ein­zig und allein um die Aus­wer­tung mit Libre­of­fice Calc. Der Fre­quenz­zäh­ler spei­chert die Meß­da­ten in einem CSV-File ab, das mit Libre­Of­fice direkt ein­ge­le­sen wer­den kann. Die bei­den Open­Of­fice Calc Datei­en ste­hen als Refe­renz und für eige­ne Expe­ri­men­te zum Down­load bereit:

In der ersten Tabel­le der jewei­li­gen Datei ste­hen die ori­gi­nal Meß­da­ten. Die wei­te­ren Tabel­len sind nach­fol­gend beschrieben.

Aus­wer­tung

Zur Aus­wer­tung emp­fiehlt es sich, zunächst eine Pivot-Tabel­le („Daten->Pivot-Tabelle->Einfügen) zu erstel­len. Als Zei­len­fel­der wählt man die Tem­pe­ra­tur und als Daten­fel­der die gemes­se­ne Fre­quenz Fcheck. Für die Daten­fel­der inter­es­siert uns aber nicht die Sum­me, son­dern der Mit­tel­wert. Das muß vor dem Erzeu­gen der Pivot-Tabel­le ein­ge­stellt wer­den. Nun sucht Calc alle in der Tabel­le vor­kom­men­den Tem­pe­ra­tu­ren, sor­tiert sie auf­stei­gend und ord­net jeder Tem­pe­ra­tur den Mit­tel­wert aller für die­se Tem­pe­ra­tur gefun­de­nen Meß­wer­te zu. So erhal­ten wir eine Tabel­le der gemit­tel­ten Meß­wer­te von etwa ‑30 °C bis +70 °C (Tabel­le: „Pivot-Tabel­le“).

Da wir einen 8 MHz bzw. einen 100 MHz Quarz­os­zil­la­tor gemes­sen haben, lie­gen alle Meß­wer­te ziem­lich nahe bei 8.000.000 Hz oder 100.000.000 Hz. Ohne ver­nünf­ti­ge Ska­lie­rung sieht man da nur eine hori­zon­ta­le Linie über der Tem­pe­ra­tur. Damit die Meß­wer­te sinn­voll dar­ge­stellt wer­den kön­nen, erstellt man in die­sem Fall am besten eine Spal­te mit der Dif­fe­renz der Meß­wer­te zum Nomi­nal­wert, denn alle Wer­te wei­chen nur sehr wenig davon ab. Die­ses Del­ta läßt sich dann gra­fisch über der Tem­pe­ra­tur darstellen.

Die lin­ken Dia­gram­me zei­gen die unver­än­der­ten Ori­gi­nal­da­ten. Man erkennt deut­lich den Tem­pe­ra­tur­gang, aber die vie­len Aus­rei­ßer sind erschreckend. Die Ori­gi­nal­da­ten ent­hal­ten die sehr schnel­le Abkühl­pha­se mit Käl­te­spray und die fast genau­so schnel­le Auf­heiz­pha­se mit dem Föhn. Dar­an schließt sich jeweils eine Pha­se lang­sa­men Auf­hei­zens bzw. lang­sa­men Abküh­lens auf Zim­mer­tem­pe­ra­tur an.

Die rech­ten Dia­gram­me zei­gen nur die lang­sa­men Pha­sen und die Aus­rei­ßer sind hier kom­plett ver­schwun­den (Tabel­len: „Aus­wahl“ und „Pivot-Tabel­le_1“). Die Kur­ven­form bleibt unver­än­dert. Offen­sicht­lich tun in bei­den Fäl­len die schnel­len Tem­pe­ra­tur­än­de­run­gen nicht gut, die Schwin­gung reißt ver­mut­lich kurz­zei­tig ab.

Erzeu­gen einer Ausgleichskurve

Alle wei­te­ren Aus­wer­tun­gen erfol­gen nun mit den bei­den „lang­sa­men Kur­ven“, denn sie spie­geln offen­sicht­lich die wah­ren Ver­hält­nis­se. Das Ziel ist nun, die jewei­li­ge Kur­ve so zu glät­ten, daß die geglät­te­te Kur­ve mög­lichst genau der gemes­se­nen Kur­ve ent­spricht, ohne deren Meß­ab­wei­chun­gen abzu­bil­den. Die Stan­dard­me­tho­de zum Erzeu­gen einer soge­nann­ten Aus­gleichs­kur­ve ist die Aus­gleichs­rech­nung. Für ein mathe­ma­ti­schen Lösungs­ver­fah­ren muß die­ser Aus­gleichs­rech­nung ein Modell zugrun­de lie­gen. Im all­ge­mei­nen Fall ist das ein Poly­nom der Form

y = a0 + a1 * x + a2 * x2 + … + an * xn

In der Pra­xis muß man die­se Rei­he natür­lich früh­zei­tig irgend­wo abbre­chen, denn sonst wird der Rechen­auf­wand immer grö­ßer. Es sei vor­ab ver­ra­ten, daß bei den gezeig­ten Kur­ven min­de­stens ein Poly­nom drit­ten Gra­des nötig ist, also n = 3. Das liegt an den zwei loka­len Mini­ma bzw. Maxi­ma (jeweils grob bei 0 °C und bei 60 °C), bei denen die erste Ablei­tung des Poly­noms null sein muß. Um zwei Null­stel­len zu haben, muß die erste Ablei­tung aber min­de­stens einen qua­dra­ti­schen Term haben.

Pro­bie­ren wir den­noch zum Spaß und zu Übungs­zwecken ein­fach mal eine Gera­de aus, bre­chen also nach n = 1 ab (Tabel­le „Aus­gleichs­ge­ra­de“):

y = a0 + a1 * x

  • Wir tra­gen wenn mög­lich gut erra­te­ne Start­wer­te für die Para­me­ter a0 und a1 in jeweils eine Zel­le der Tabel­le ein (hier C2 und C3). In eine Spal­te (hier: Spal­te E) neben den Meß­wer­ten tra­gen wir dann die For­mel für die Gera­de ein, mit Bezug auf die Para­me­ter ($C$2 und $C$3) und fül­len die­se Spal­te nach unten auf (obe­re Zel­le und alle Zel­len bis zum Ende der Daten aus­wäh­len und Strg‑D drücken).
  • In einer wei­te­ren Spal­te berech­nen wir dann das Qua­drat des Feh­lers, den der so errech­ne­te Punkt zum tat­säch­lich gemes­se­nen Wert hat (hier: Spal­te F). Auch die­se Spal­te fül­len wir nach unten auf und errech­nen in einer wei­te­ren Zel­le (G2) die Sum­me all die­ser Feh­ler­qua­dra­te. Das Ziel ist nun, a0 und a1 (C2 und C3) so zu bestim­men, daß die Sum­me der Feh­ler­qua­dra­te mini­mal wird.

Von Hand ist das aus­ge­spro­chen müh­sam, aber zum Glück bie­tet Calc dafür eine auto­ma­ti­sche Lösung, den „Sol­ver“. Man star­tet Extras->Solver und gibt die Zel­le mit der Sum­me der Feh­ler­qua­dra­te (hier G2) als Ziel­zel­le an. Der Ziel­wert soll mini­mal wer­den und als ver­än­der­li­che Zel­len geben wir C2 und C3 in der Form $C$2:$C$3 an. Der Sol­ver rech­net nun eini­ge Sekun­den, denn er muss die Wer­te in C2 und C3 solan­ge anpas­sen, bis er einen Mini­mal­wert findet.

Wie die bei­den Dia­gram­me zei­gen, fin­det der Sol­ver nach eini­gen Sekun­den einen plau­si­blen Wert. Die oran­ge dar­ge­stell­ten Gera­den nähern die gemes­se­ne Kur­ve best­mög­lich an. Bei nur zwei Varia­blen und den linea­ren Eigen­schaf­ten einer Gera­den kann man auch sicher sein, ein ech­tes Mini­mum gefun­den zu haben.

Aus­gleichs­kur­ve mit Polynomen

Die Aus­gleichs­ge­ra­de aus dem vori­gen Kapi­tel ist bes­ser als nichts, aber sie befrie­digt nicht wirk­lich. Für bes­se­re rech­ne­ri­sche Annä­he­rung an die Meß­kur­ve kommt man nicht umhin, höher­gra­di­ge Poly­no­me zu ver­wen­den. Der Rechen­weg unter­schei­det sich dabei nicht grund­le­gend von dem der Aus­gleichs­ge­ra­den, nur die For­mel wird etwas kom­pli­zier­ter. Wir neh­men ein­fach wei­te­re Ter­me der Form anxn dazu.

Je grö­ßer n wird, je höher also die Ord­nung des Poly­noms wird, umso genau­er kön­nen wir die Meß­kur­ve annä­hern. Pro­bie­ren wir es der Rei­he nach durch, zunächst mit einem Poly­nom zwei­ten Grades:

Aus den oben schon genann­ten Grün­den ver­wun­dert es nicht, daß das die Meß­kur­ve noch nicht trifft. Wie erwar­tet gibt es nur einen loka­len Extrem­wert, ein Mini­mum bei etwa 20 °C. Ver­su­chen wir es nun mit einem Poly­nom drit­ten Grades:

Damit kom­men wir der Form der gemes­se­nen Kur­ve schon sehr nahe. Gleich­zei­tig wird die Sum­me der Feh­ler­qua­dra­te mit stei­gen­dem Grad des Poly­noms immer kleiner.

Um es auf die Spit­ze zu trei­ben, kann man für den 100 MHz Quarz­os­zil­la­tor auch ein Poly­nom vier­ten und fünf­ten Gra­des aus­pro­bie­ren, das wei­te­re klei­ne Ver­bes­se­run­gen bringt:

Tem­pe­ra­tur­kom­pen­sa­ti­on per Software

Das sind net­te Spie­le­rei­en mit einem Spreadsheet-Pro­gramm, aber was bringt das gan­ze nun? Ganz ein­fach, das so gefun­de­ne Poly­nom gestat­tet uns eine soft­ware­ge­steu­er­te Tem­pe­ra­tur­kom­pen­sa­ti­on. Wir kön­nen die mut­maß­li­che tat­säch­li­che Fre­quenz des Oszil­la­tors bei einer bestimm­ten Tem­pe­ra­tur aus sei­ner Nomi­nal­fre­quenz annähern.

Das zeigt die Tabel­le Poly_n5 für bei­de Quarz­os­zil­la­to­ren. In der Spal­te H wur­de die nach der Kom­pen­sa­ti­on ver­blei­ben­de Abwei­chung zur gemes­se­nen Fre­quenz errech­net und in Spal­te I in ppm (parts per mil­li­on) umge­rech­net. Die ver­blei­ben­de Abwei­chung liegt nun außer an den Tem­pe­ra­tur­gren­zen bei weni­ger als 1 ppm. Die unkom­pen­sier­te Abwei­chung ist zum Ver­gleich in Spal­te J dar­ge­stellt und deren Maxi­mum liegt bei knapp 40 ppm bzw. gut 16 ppm, was für einen mit +/- 25 ppm spe­zi­fi­zier­ten Quarz auch schon recht gut ist.

Man beach­te die unter­schied­li­che Ska­lie­rung der y‑Achsen. Von den extre­men Tem­pe­ra­tur­be­rei­chen abge­se­hen, hat die Tem­pe­ra­tur­kom­pen­sa­ti­on die Fre­quenz­sta­bi­li­tät also min­de­stens um den Fak­tor 10 ver­bes­sert. Die deut­li­chen Abwei­chun­gen bei etwa 25 °C lie­gen an der Meß­me­tho­de, denn die Zim­mer­tem­pe­ra­tur war jeweils der End­punkt der Mes­sun­gen. Hier gab es mut­maß­lich Meß­feh­ler durch den abge­setz­ten Tem­pe­ra­tur­sen­sor auf dem CPU Board, der durch die Eigen­erwär­mung eini­ge Grad mehr anzeigt, als beim Quarz wirk­lich herrschen.

Such­stra­te­gien

Bei der hier gezeig­ten Meß­da­ten­ana­ly­se kommt der Calc-Sol­ver schnell an sei­ne Gren­zen. Am Ende steht ein Poly­nom fünf­ter Ord­nung mit sechs unbe­kann­ten Para­me­tern a0 .. a5. Der Sol­ver muß im Prin­zip alle mög­li­chen Para­me­ter-Wer­te durch­pro­bie­ren, die Qua­drat­sum­me bil­den und ver­su­chen, die­se Sum­me zu mini­mie­ren. Ohne halb­wegs pas­send gewähl­te Start­wer­te ist das ein Unter­fan­gen, das auf heu­ti­gen Rech­nern nicht lös­bar ist. Der Such­raum ist unend­lich groß und der Sol­ver muß ihn auf irgend­ei­ne Wei­se ein­schrän­ken. Sei­ne Suche gilt als been­det, wenn die Qua­drat­sum­me bei jeder klei­nen Ände­rung eines Para­me­ters wie­der grö­ßer wird. Dabei besteht aber immer die Gefahr, ein loka­les Mini­mum zu fin­den, das weit weg vom tat­säch­li­chen Mini­mum liegt. Es kann immer sein, daß hin­ter den Ber­gen bei den sie­ben Zwer­gen ein Mini­mum liegt, das tau­send­mal schö­ner als das bis­her gefun­de­ne ist. Man soll­te dem Sol­ver also durch geeig­ne­te Anfangs­wer­te hel­fen. Wie macht man das?

Suk­zes­si­ve Erhö­hung des Polynom-Grades

Die ein­fach­ste Metho­de, die hier auch ange­wen­det wur­de, ist die suk­zes­si­ve Erhö­hung des Poly­nom Gra­des. Man star­tet mit nied­ri­ger Ord­nung und lässt den Sol­ver dazu pas­sen­de Para­me­ter suchen. Geht man schritt­wei­se zu höhe­ren Ord­nun­gen, dann sind die­se Para­me­ter zwar nicht mehr ganz rich­tig, aber auch nicht ganz falsch. Sie sind ein guter Start­wert. Man kann auch zunächst mal nur den besten neu­en Para­me­ter suchen und erst dann eine wei­te­re Suche über alle bis­he­ri­gen Para­me­ter star­ten. So ver­bes­sert sich das Ergeb­nis nach und nach.

Kur­ven­dis­kus­si­on

Eine Kur­ven­dis­kus­si­on kann beim Erra­ten gün­sti­ger Anfangs­wer­te für die Para­me­ter hel­fen. Zur Kur­ven­dis­kus­si­on benö­tigt man die Ablei­tun­gen der Funk­ti­on. Gehen wir zunächst von einem Poly­nom drit­ten Gra­des aus, so erge­ben sich fol­gen­de Ableitungen:

y = a0 + a1 * x + a2 * x2 + a3 * x3

y‘ = a1 + 2 * a2 * x + 3 * a3 * x2

y“ = 2 * a2 + 6 * a3 * x

Aus der ersten Glei­chung erkennt man sofort, daß a0 = y(0) ist, denn wenn x = 0 ist, dann fal­len alle ande­ren Ter­me weg. a0 ist beim 8 MHz Oszil­la­tor also etwa 212 und beim 100 MHz Oszil­la­tor etwa 355.

Die erste Ablei­tung einer Funk­ti­on ist an loka­len Extrem­wer­ten gleich null. Beim 100 MHz Oszil­la­tor fin­den wir ein loka­les Mini­mum etwa bei x=3 und ein loka­les Maxi­mum bei etwa x=60. Mit der ersten Ablei­tung erhal­ten wir dar­aus zwei Gleichungen:

y‘ = a1 + 2 * a2 * 3 + 3 * a3 * 32 = 0

y‘ = a1 + 2 * a2 * 60 + 3 * a3 * 602 = 0

Aus zwei Glei­chun­gen mit drei Unbe­kann­ten kann man durch Mul­ti­pli­ka­ti­on mit einem geeig­ne­ten Fak­tor und anschlie­ßen­der Addi­ti­on bei­der Glei­chun­gen eine Glei­chung mit zwei Unbe­kann­ten machen. Eli­mi­nie­ren wir zunächst a2 durch Mul­ti­pli­ka­ti­on der ersten Glei­chung mit ‑20 und anschlie­ßen­der Addition:

‑20 * (a1 + 2 * a2 * 3 + 3 * a3 * 32) + a1 + 2 * a2 * 60 + 3 * a3 * 602 = 0

ergibt nach Auflösung:

a1 = 540 * a3

Durch Mul­ti­pli­ka­ti­on mit ‑1 und anschlie­ßen­der Addi­ti­on lässt sich alter­na­tiv a1 eliminieren:

a1 + 2 * a2 * 60 + 3 * a3 * 602 – (a1 + 2 * a2 * 3 + 3 * a3 * 32) = 0

und nach Ausmultiplizieren

a2 = ‑94,5 * a3

Damit haben wir eine direk­te Abhän­gig­keit zwi­schen a1 und a3 bzw. a2 und a3 gefun­den. Die­se bei­den For­meln kann man direkt in die Zel­len für a1 und a2 ein­ge­ben und braucht sie dann nicht mehr in die Liste der Unbe­kann­ten für den Sol­ver auf­zu­neh­men. Der Such­raum ist also wei­ter deut­lich eingeschränkt.

Kön­nen wir noch mehr tun? Ja klar, wir ken­nen nun Nähe­rungs­wer­te für a0, a1 und a2 und kön­nen die in die Glei­chung des Poly­noms einsetzen:

y = 355 + 540 * a3 * x – 94,5 * a3 * x2 + a3 * x3

Ohne zu ver­ges­sen, daß alles sowie­so nur Nähe­rungs­wer­te sind, suchen wir aus der Meß­rei­he einen Wert x und den zuge­hö­ri­gen Wert y her­aus. Dabei ver­su­chen wir einen reprä­sen­ta­ti­ven Wert zu fin­den, also Son­der­fäl­le an den Tem­pe­ra­tur­gren­zen und auch die loka­len Extrem­wer­te zu ver­mei­den. Wie wär’s, mehr oder weni­ger will­kür­lich, mit x=40 und y=773? Mit die­sen Wer­ten kön­nen wir nun einen plau­si­blen Start­wert für a3 ausrechnen:

773 = 355 + 540 * a3 * 40 – 94,5 * a3 * 402 + a3 * 403

Aus die­ser Glei­chung ergibt sich a3 = ‑0,006372 und durch Ein­set­zen die­ses Wer­tes in die oben schon gefun­de­nen Glei­chun­gen a1 = ‑3,44088 und a2 = 0,602154.

Damit haben wir dem Sol­ver das Leben leicht­ge­macht. Wir haben plau­si­ble Start­wer­te für alle Para­me­ter des Poly­noms drit­ter Ord­nung. Ohne den Sol­ver auch nur zu bemü­hen, deckt sich die­se Kur­ve schon erstaun­lich gut mit der Meß­kur­ve (links):

Rechts ist noch­mal zum Ver­gleich das oben schon gezeig­te Dia­gramm des mit dem Sol­ver gefun­de­nen Poly­noms der­sel­ben Ord­nung gezeigt. Über gro­ße Tei­le des Dia­gramms ist die Deckung des von Hand gefun­de­nen Poly­noms sogar bes­ser. Aller­dings ist die Sum­me der Feh­ler­qua­dra­te den­noch höher, denn um den Dia­gramm­teil bei hohen Tem­pe­ra­tu­ren kor­rekt zu model­lie­ren feh­len die höher­gra­di­gen Terme.

Ganz am Schluß kann man dann a0 bis a3 noch­mal durch den Sol­ver ver­bes­sern las­sen. Der fin­det dabei tat­säch­lich eine bes­se­re Lösung, als bei der Suche aufs Gera­te­wohl im ersten Ansatz. Die gering­ste Sum­me der Feh­ler­qua­dra­te ergibt sich bei a0 = 339,27, a1 = ‑3,023, a2 = 0,703 und a3 = ‑0,00858.

Mit dem­sel­ben Vor­ge­hen kann man natür­lich auch den Fall des 8 MHz Oszil­la­tors noch­mal durch­spie­len, was aber hier kei­ne neu­en Erkennt­nis­se mehr bringt. Das sei daher dem geneig­ten Leser überlassen.

Gesagt getan…

Wie bereits im vori­gen Bei­trag über nütz­li­che Web­sites in Aus­sicht gestellt, habe ich nun doch ein klei­nes Pro­gramm zum Erstel­len von Timing Dia­gram­men im Text-For­mat geschrie­ben: Draw­Timing­Dia­gram.

Das Pro­gramm öff­net ein Ein­ga­be- und ein Aus­ga­be­fen­ster. In das Ein­ga­be­fen­ster kön­nen Kom­man­dos geschrie­ben wer­den, die beim Klick auf den Start-Knopf in ein Timing-Dia­gramm im Aus­ga­be­fen­ster umge­wan­delt wer­den. Ein klei­nes Bei­spiel zeigt der fol­gen­de Screenshot:

Das so erzeug­te Dia­gramm kann über das Clip­board aus dem Aus­ga­be­fen­ster in eine UTF8-Text­da­tei über­nom­men werden.

Eine kur­ze Beschrei­bung der unter­stütz­ten Ein­ga­be­kom­man­dos mit einem etwas kom­ple­xe­ren Timing Dia­gramm Bei­spiel fin­det sich in der Online-Hil­fe.

Nütz­li­che Websites

Anläss­lich mei­ner diver­sen Designs in den ver­gan­ge­nen Mona­ten, brauch­te ich immer wie­der mal die Mög­lich­keit, ein­fa­che Gra­fi­ken, Tabel­len und For­meln als Text in die Quell­tex­te der C‑Programme und Ver­i­log-Datei­en als Kom­men­tar­blöcke ein­zu­bet­ten. Bis­her habe ich mehr schlecht als recht mit AACir­cuit gear­bei­tet, das aller­dings schon reich­lich ange­staubt ist und auch sei­ne Macken hat. Eine Suche im Inter­net för­der­te ein paar sehr hilf­rei­che Online-Tools zu Tage.

Dia­gon – ASCII art dia­gram collection

Dia­gon (Dia­gram Online) ist ein Online-Tool, um mathe­ma­ti­sche Aus­drücke, Tabel­len, Fluß­dia­gram­me und son­sti­ges in ASCII- oder UTF-8-For­mat umzu­wan­deln. Ein­fach mal die Web­site auf­ru­fen und aus­pro­bie­ren. Man wählt zunächst das Werk­zeug aus und kann dann im Ein­ga­be­fen­ster die Roh­da­ten ein­ge­ben. Sie wer­den dann sofort im Aus­ga­be­fen­ster dar­ge­stellt und kön­nen mit Copy&Paste in den eige­nen Code über­nom­men wer­den. Für jedes Tool gibt es ein oder meh­re­re Bei­spie­le, die zei­gen, wie es geht.

ASCIIFLOW

ASCIIFLOW ist ein wei­te­res Online-Tool, das auf das Zeich­nen ein­fa­cher geo­me­tri­scher For­men spe­zia­li­siert ist. Man kann Recht­ecke, Lini­en und Pfei­le zeich­nen und natür­lich auch Tex­te ein­ge­ben. ASCIIFLOW unter­stützt außer dem ASCII-Zei­chen­satz auch den erwei­ter­ten Zei­chen­satz, der schö­ne Lini­en und Ecken dar­stel­len kann. Dar­über­hin­aus kann man das Ergeb­nis direkt als Kom­men­ta­re in /* und */ ein­bet­ten. Das zeigt, was der Ent­wick­ler im Sinn hatte.

Tex­tik

Tex­tik funk­tio­niert ähn­lich wie ASCIIFLOW. Auch hier kann man auf einer Lein­wand ein­stell­ba­rer Grö­ße Recht­ecke, Lini­en, Pfei­le und Text zeich­nen. Anders als ASCIIFLOW kennt Tex­tik unter­schied­li­che Ebe­nen in z‑Richtung. Man kann also wäh­len, ob ein Objekt über oder unter ande­ren Objek­ten liegt. Dafür unter­stützt Tex­tik aber nur den Stan­dard ASCII Zeichensatz.

Was noch schön wäre…

Ich hät­te noch ein Tool gesucht, das ein­fa­che (exten­ded-) ASCII-Timing Dia­gram­me dar­stel­len kann. Auch das ist in Quell­tex­ten immer wie­der mal nötig. Bis­her zeich­ne ich sowas von Hand, dabei bricht man sich die Fin­ger. Est recht, wenn man dar­an etwas ändern muß. Wer sowas kennt, kann mich ger­ne kon­tak­tie­ren. Ich habe auch schon über­legt, sowas sel­ber zu schreiben.