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­GA­644-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 Veri­log. Veri­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 Pres­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.

Veri­log Code

Hier ist nun der Veri­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 Veri­log Datei­en FreqCntr_tb_Counter.v und FreqCntr_tb_Serial_IO.v ent­hal­ten die Model­Sim-Test­ben­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.

ATME­GA­644-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­er­wä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­Ti­ming­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 Veri­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.

Was gibt’s neues?

Lei­der gab es seit ein paar Mona­ten kei­ne Updates mehr in die­sem Blog, das wer­de ich nun nach­ho­len. Im Som­mer war viel an unse­rem Haus zu tun, wir haben das Gar­ten­haus fer­tig­ge­stellt und auch im Haus gab und gibt es noch so eini­ge Bau­stel­len. Meist klei­ne Din­ge, die nicht drin­gend sind, aber doch bela­sten, weil man sie immer vor sich her­schiebt. Zwi­schen­durch hat­te ich immer wie­der etwas Zeit, um eine Lei­ter­plat­te zu desi­gnen oder Soft­ware zu schrei­ben, ohne mir aber die Zeit zu neh­men, die­se Din­ge in die­sem Blog zu beschrei­ben. Hier nun eine kur­ze Zusammenfassung.

ATMEGA644 V1.1

Nach­dem das mit der Fer­ti­gung und Bestückung des Relais­trei­bers in Chi­na so gut funk­tio­niert hat, habe ich auch das ATMEGA644 Board noch­mal auf­ge­legt und zehn Stück davon fer­ti­gen und teil­be­stücken las­sen. Es spart doch eine Men­ge Arbeit, wenn wenig­stens das Vogel­fut­ter schon­mal drauf ist und man nur noch die „makro­sko­pi­schen Bau­tei­le“ von Hand bestücken muß.

Ich habe die Schal­tung mini­mal geän­dert, es wur­den zwei optio­na­le Schott­ky-Dioden vor­ge­se­hen, damit man dem Board ein Bat­te­rie-Back­up spen­die­ren kann und es wur­den zwei zusätz­li­che Stütz­kon­den­sa­to­ren für den Pro­zes­sor hin­zu­ge­fügt. Der hat jetzt an jedem sei­ner drei VCC-Pins einen eige­nen Stütz­kon­den­sa­tor. Kann nichts scha­den, kostet kein Geld (eini­ge mil­li-Cent) und bei 0402-er Bau­form ist auch der Platz­be­darf zu ver­nach­läs­si­gen. Den Trimm­kon­den­sa­tor am Quarz habe ich weg­ge­las­sen, der war sowie­so nur expe­ri­men­tell auf einem ein­zi­gen Board auf­ge­lö­tet. Außer­dem habe ich eine Mög­lich­keit vor­ge­se­hen, den Span­nungs­reg­ler etwas zu küh­len. Es sind zwei Boh­run­gen vor­han­den, in die ein Flach­stecker als Kühl­fah­ne ein­ge­lö­tet wer­den kann. Not­wen­dig ist die­se Küh­lung nicht, aber es hat sich beim Anten­nen­um­schal­ter und beim Tuner gezeigt, daß die Tem­pe­ra­tur der Pla­ti­ne im Betrieb um ein paar Grad ange­ho­ben wird und damit die Tem­pe­ra­tur­mes­sung ver­fälscht wird. Hier nun der Voll­stän­dig­keit hal­ber die 3D-Ansich­ten der neu­en Pla­ti­ne und der Schaltplan.

Zuge­ge­ben, die Kühl­fah­ne sieht etwas gewöh­nungs­be­dürf­tig aus, aber man muß sie ja nicht bestücken. Zudem kann man sie vor dem Ein­lö­ten seit­lich weg­bie­gen oder auch auf der Unter­sei­te bestücken. Sie kann natür­lich auch durch irgend­ein ande­res pas­sen­des Blech ersetzt werden.

Fre­quenz­zäh­ler

Pas­send zum oben beschrie­be­nen CPU-Board habe ich einen Fre­quenz­zäh­ler gebaut. Hier zunächst mal die 3D-Ansichten:

Auf der Ober­sei­te sieht man links das auf­ge­steck­te CPU-Board und dane­ben das Intel (Alte­ra) CPLD, in dem der Zäh­ler und das CPU-Inter­face imple­men­tiert sind. Rechts sind zwei SMA-Buch­sen ange­bracht, über die das zu mes­sen­de Signal und die Refe­renz­fre­quenz ein­ge­speist wer­den. Ganz links sieht man die Buch­se für die Span­nungs­ver­sor­gung und dar­über die Klemm­lei­ste für das RS485-Inter­face. Um das CPLD her­um sind Stift­lei­sten ange­bracht, auf die die nicht ver­wen­de­ten CPLD-Pins geführt sind. Damit ist das Board auch für ande­re Zwecke ver­wend­bar. Die Schal­ter­stel­lun­gen des vier­po­li­gen DIP-Schal­ters kön­nen von der CPU ein­ge­le­sen wer­den und die acht LEDs am obe­ren Rand kön­nen per Soft­ware ein- und aus­ge­schal­tet wer­den. Die bei­den zehn­po­li­gen Stift­lei­sten am obe­ren Rand der Pla­ti­ne die­nen zum Pro­gram­mie­ren der CPU und des CPLDs. Hier ist nun der Schaltplan:

Der Fre­quenz­zäh­ler funk­tio­niert inzwi­schen sehr gut. Die Simu­la­ti­on ergibt eine Grenz­fre­quenz von 120 MHz für die Refe­renz- und die Meß­fre­quenz. Den Zäh­ler wer­de ich spä­ter in vor­aus­sicht­lich meh­re­ren Bei­trä­gen detail­lier­ter beschrei­ben. Dazu gehört dann der in Veri­log geschrie­be­ne CPLD-Code, die Soft­ware für das CPU-Board und die Host Soft­ware für einen Win­dows-PC. Außer­dem lohnt es, die Aus­wer­tung einer Meß­rei­he mit Libre­of­fice genau­er anzu­schau­en. Viel­leicht fan­ge ich sogar damit an, auch wenn es die chro­no­lo­gisch fal­sche Rei­hen­fol­ge ist.

Pro­gram­mier- und Debugboard

Wo ich gera­de so schön am Desi­gnen war und sowie­so eine Bestel­lung in Chi­na plan­te, habe ich auch noch ein klei­nes Pro­gram­mier- und Debug­board für das ATME­GA­644-CPU-Board ent­wickelt. Es dient dazu, Pro­gram­me auf das CPU-Board zu pro­gram­mie­ren und auch zu testen. Der ATMEGA644 hat meh­re­re Schnitt­stel­len, unter ande­rem die SPI Schnitt­stel­le zum Pro­gram­mie­ren des Flash-Spei­chers und des EEPROMs und die JTAG-Schnitt­stel­le, die dar­über­hin­aus auch zum Debug­gen ver­wen­det wer­den kann.

Auf dem Board sind außer­dem ein paar Taster und LEDs ange­bracht, damit auf ein­fa­che Wei­se ohne Emu­la­tor ein paar Ein- und Aus­ga­be­mög­lich­kei­ten zu haben. Auf die SMA-Buch­se kann der System­takt aus­ge­ge­ben wer­den, um sei­ne Fre­quenz bei­spiels­wei­se mit dem oben gezeig­ten Fre­quenz­zäh­ler bei unter­schied­li­chen Tem­pe­ra­tu­ren zu messen.

Der Schalt­plan zeigt kei­ne Beson­der­hei­ten, die erklä­rungs­be­dürf­tig wären.

Relais­trei­ber, Ver­si­on 1.1

Das hier beschrie­be­ne Relais­trei­ber-Board wur­de im Anten­nen­tu­ner ein­ge­setzt und funk­tio­niert mit klei­nen Ein­schrän­kun­gen sehr gut. Die SMD-Mon­ta­ge der eigent­lich für Loch­mon­ta­ge vor­ge­se­he­nen 100-mil-Sockel ist aber feh­ler­an­fäl­lig. Beim Ein­satz hat sich her­aus­ge­stellt, daß das seit­li­che Abbie­gen der Pins des Sockels zu Kon­takt­feh­lern führt. Ein­rei­hi­ge Sockel für die SMD-Mon­ta­ge scheint es nicht zu geben, zumin­dest habe ich kei­ne gefun­den. Außer­dem wur­de durch einen Design­feh­ler das Sta­tus-Signal des BTS724G Bau­steins auf PB3 gelegt, der aber auf dem ATME­GA­644-Board fest mit dem Tem­pe­ra­tur­sen­sor ver­bun­den ist.

Das allei­ne sind eigent­lich kei­ne Grün­de für ein Rede­sign, aber ich woll­te schon seit län­ge­rem den in Chi­na ange­bo­te­nen Ser­vice einer Teil­be­stückung der Lei­ter­plat­te aus­pro­bie­ren. Man kann zwar SMD-Pla­ti­nen sel­ber bestücken und ich habe das auch oft gemacht, aber es gibt Gren­zen. Mein per­sön­li­ches Limit beim Hand-Bestücken sind 0805er Bau­grö­ßen, auch mal das ein oder ande­re 0603er Bau­teil, aber nicht in Men­gen. Außer­dem habe ich für die­se Bau­tei­le immer das Foot­print zum sel­ber Löten, also mit dem Suf­fix „Hand­sol­de­ring“ gewählt, weil es etwas grö­ßer ist, als das regu­lä­re Foot­print. Lässt man die Pla­ti­ne jedoch (Teil-) bestücken, dann kann man das klei­ne­re regu­lä­re Foot­print aus­wäh­len und außer­dem die klein­ste ver­füg­ba­re Bau­form, näm­lich 0402 aus­wäh­len. Das gibt einer­seits einen beacht­li­chen Platz­ge­winn, ande­rer­seits sind die klei­nen Bau­tei­le für Anwen­dun­gen im Hoch­fre­quenz­be­reich weit­aus bes­ser geeig­net, weil ihre Selbst­re­so­nanz­fre­quen­zen deut­lich höher lie­gen, als bei den grö­ße­ren Bau­tei­len. Zu beach­ten ist aber, daß Kon­den­sa­to­ren in die­ser Bau­grö­ße meist nur gerin­ge Betriebs­span­nun­gen ver­tra­gen, man­che nur 6 V oder 10 V und die SMD Dros­seln in der zuläs­si­gen Strom­stär­ke begrenzt sind, weil ihr ohm’scher Wider­stand höher ist, als bei grö­ße­ren Bauformen.

Als Her­stel­ler habe ich mir die Fir­ma JLCPCB aus­ge­sucht, ein­fach weil mehr­fach über deren Ser­vice berich­tet wur­de, zuletzt in einer der jüng­sten Aus­ga­ben des „Funk­ama­teur“. Es gibt ande­re Her­stel­ler, die sicher­lich genau­so­gut sind. JLCPCB hat einen gro­ßen Lager­be­stand an benutz­ba­ren Bau­tei­len, laut Web­site über 40.000 Stück. Vie­le davon kön­nen ohne Auf­preis benutzt wer­den, weil sie stän­dig auf dem Bestückungs­au­to­ma­ten ein­ge­legt sind. Wählt man ande­re Bau­tei­le aus, die soge­nann­ten „exten­ded parts“, dann zahlt man ein­ma­lig pro Auf­trag und pro exten­ded part $ 3,00 oder € 2,40 als Auf­wands­ent­schä­di­gung für den­je­ni­gen, der dann die neue Rol­le aus dem Lager holen und ein­le­gen muß. Dar­über­hin­aus zahlt man natür­lich die Fer­ti­gung der Lei­ter­plat­te, einen gerin­gen Grund­preis für die Bestückung und jedes Bau­teil. Bei den pas­si­ven Bau­tei­len, Wider­stän­den, Kon­den­sa­to­ren und Spu­len sind die Bau­teil­ko­sten ver­nach­läs­sig­bar. Sie wer­den im Bau­tei­le­ka­ta­log ange­zeigt und kosten meist weni­ger als 1 ct, mit­un­ter nur 0,1 ct. Dabei ist 0402 oft die preis­gün­stig­ste Variante.

Unter die­sen Rand­be­din­gun­gen habe ich dann ein Rede­sign des Relais­trei­bers gemacht und bei JLCPCB fer­ti­gen las­sen. Die gerin­ge Bau­teil­grö­ße gestat­te­te viel mehr Dros­seln und ein paar mehr Kon­den­sa­to­ren auf der Lei­ter­plat­te unter­zu­brin­gen, als auf der ersten Ver­si­on. Die Abmes­sun­gen der neu­en Lei­ter­plat­te sind gleich­ge­blie­ben: 30,5 mm x 43,0 mm (1,2″ x 1,7″). Lei­der ist sie den­noch nicht kom­pa­ti­bel, weil ich die Buch­sen­lei­ste nicht mehr als SMD bestücken woll­te, son­dern als durch­kon­tak­tier­tes Bau­teil. Damit muss­te der Abstand der Lei­sten lei­der um 100 mil grö­ßer wer­den. Weil es ohne Auf­preis mög­lich war, habe ich dies­mal blau­en Löt­stopp­lack gewählt. Hier die Kicad 3D-Vorschau:

Und hier der zuge­hö­ri­ge Schalt­plan als PDF.

Das Vogel­fut­ter auf der Unter­sei­te habe ich bis auf die gro­ßen SMD-Bau­tei­le D1, F1 und L1 bestücken las­sen. Zum manu­el­len Bestücken blei­ben also die bei­den Trei­ber auf der Ober­sei­te und die Prüf­pins, die Pin- und Sockel­lei­sten oben und unten und die drei schon erwähn­ten SMD-Bau­tei­le auf der Unter­sei­te. An „guten Tagen“ ist sowas in 20 Minu­ten erledigt.

Was hat das gan­ze nun geko­stet? Genau €28.52 für zehn Lei­ter­plat­ten. Die Kosten beinhal­ten die Fer­ti­gung der dop­pel­sei­ti­gen Lei­ter­plat­ten, die Teil-Bestückung wie oben beschrie­ben, die Bau­tei­le­ko­sten und die Zusatz­ko­sten für ein „exten­ded Part“. Außer­dem beinhal­tet der Preis die Lie­fe­rung nach Deutsch­land in das Ver­teil­zen­trum von JLCPCB, die Ver­zol­lung und den Wei­ter­ver­sand vom Ver­teil­zen­trum zu mir nach Hau­se. Der Gesamt­preis teilt sich übri­gens fol­gen­der­ma­ßen auf: Mer­chan­di­se Total: €17.73, Ship­ping Char­ge: €10.78. Die Lie­fer­zeit war 12 Tage, Sonn­tag­abend bestellt und Frei­tags geliefert.

Auch der Ser­vice war her­vor­ra­gend. Ich hat­te am Sonn­tag­nach­mit­tag mehr­fach ver­sucht, die Bestel­lung online ein­zu­ge­ben und es kam immer wie­der eine unver­ständ­li­che Feh­ler­mel­dung beim Über­neh­men in den Waren­korb. Dar­auf konn­te ich mir kei­nen Reim machen, also mal im Online For­mu­lar um Hil­fe gebe­ten. Ich erhielt sofort eine auto­ma­ti­sche Email-Ant­wort, daß im Moment nie­mand ver­füg­bar sei und man sich sobald wie mög­lich mel­det. Ja klar, es muss­te in Chi­na auf Mit­ter­nacht zuge­hen, die Ant­wort wird dann wohl am Mon­tag­mor­gen kom­men. Zu mei­ner Ver­wun­de­rung dau­er­te es kei­ne Stun­de, bis mir jemand per Email freund­lich und in gutem Eng­lisch erklär­te, daß ich ver­mut­lich eine Kom­bi­na­ti­on gewählt hät­te, die sie nicht anbie­ten. Sie ken­nen das Pro­blem, der Dia­log auf der Web­site wür­de nicht alle Ein­ga­be­feh­ler abfan­gen. Ich hat­te 1,2 mm Lei­ter­plat­ten­stär­ke bei blau­em Löt­stopp­lack gewählt, blau geht aber nur bei 1,6 mm Stärke.

Unglaub­lich, da kann und will kein euro­päi­scher Her­stel­ler mit­hal­ten, ganz davon abge­se­hen, daß die hier noch nie an Bast­lern inter­es­siert waren. Die waren immer nur lästig. Wo führt das hin? Ganz klar zu immer wei­te­rer Abhän­gig­keit von Chi­na. Unse­re Fer­ti­gung macht dicht und irgend­wann wer­den wir jeden Preis zah­len müs­sen, weil wir es nicht mehr kön­nen. Viel­leicht wird ja Gen­der­ga­ga und Kli­ma­hy­ste­rie unser neu­er Exportschlager.

Anten­nen­tu­ner, Teil 2

Nach der Beschrei­bung im ersten Teil wur­de nun mit KiCad eine Lei­ter­plat­te für den Anten­nen­tu­ner ent­wor­fen. Das vor­ge­se­he­ne Gehäu­se, ein RND 455–00150, gibt den Form­fak­tor der Lei­ter­plat­te vor, sie ist 210 mm breit und 100 mm hoch. Hier ist der Schalt­plan (PDF) und hier die KiCad 3D-Vor­schau von oben und unten:

Spu­len und Con­trol­ler sind auf der Ober­sei­te mon­tiert, Relais und Kon­den­sa­to­ren auf der Unter­sei­te. Um die Schalt­ka­pa­zi­tä­ten nied­rig zu hal­ten, ist die Pla­ti­ne auf ein­sei­tig beschich­te­tem Lei­ter­plat­ten­ma­te­ri­al gefräst. Die oben gezeig­ten Lei­ter­bah­nen auf der Relais­sei­te, wer­den durch Dräh­te realisiert.

Der Con­trol­ler wird von einem WB 375530 Weiß­blech­ge­häu­se (37 mm x 55 mm x 30 mm) gegen Ein­strah­lun­gen durch benach­bar­te Spu­len abgeschirmt.

Da sie auf der Lei­ter­bahn­sei­te mon­tiert wer­den ist da Löten des Mit­tel­pins der SMA Buch­se und des GND-Test­pads etwas erklä­rungs­be­dürf­tig: hier wird vor dem Bestücken eine 0,5 mm² Ader­end­hül­se (1,4 mm Außen­durch­mes­ser) auf der Lei­ter­bahn­sei­te fest­ge­lö­tet und nach dem Bestücken des Bau­teils von unten verlötet.

Der prak­ti­sche Aufbau

Die Lei­ter­plat­te ist schnell gefräst, mit Stahl­wol­le ent­gra­tet und poliert und vor dem Bestücken mit Löt­lack überzogen. 

Leiterplatte Antennentuner
Lei­ter­plat­te für den Anten­nen­tu­ner und die fer­tig gewickel­ten Spu­len, hier noch mit den SMA-Testbuchsen.

Zum Gewähr­lei­sten der Form­sta­bi­li­tät sind die grö­ße­ren Spu­len mit pas­send gefrä­sten und ange­kleb­ten Sprei­zern aus Hart-PVC fixiert. Jetzt kann die Lei­ter­plat­te bestückt, gete­stet und in das vor­ge­se­he­ne Gehäu­se ein­ge­baut wer­den. Nach­fol­gend ein paar Fotos kurz vor der Mon­ta­ge am Mast:

Auf den ersten bei­den Fotos ist das Weiß­blech­ge­häu­se zu sehen, das den Con­trol­ler abschirmt. Es ist mit einem Abstand von etwa 1 mm über der Lei­ter­plat­te mon­tiert. Die Lei­ter­plat­te ist an den Kan­ten der Abschir­mung mit hit­ze­be­stän­di­gem Kap­ton­band abge­klebt. Es ist nicht wirk­lich nötig, ich habe es vor der Inbe­trieb­nah­me wie­der abge­zo­gen. Der Deckel des Weiß­blech­ge­häu­ses ist nur lose aufgesteckt.

Wie beim Anten­nen­um­schal­ter ist auch hier beim Tuner der Kom­mu­ni­ka­ti­ons-Anschluß dop­pelt aus­ge­legt. Der RS-485 Stan­dard sieht vor, daß alle Bus­teil­neh­mer hin­ter­ein­an­der­ge­schal­tet wer­den und der Letz­te am Strang einen Abschluß­wi­der­stand bekommt. Bei­de Buch­sen sind gleich­be­rech­tigt. An einer der Buch­sen wird das Kabel zum vor­he­ri­gen Teil­neh­mer bzw. zum Host-PC ange­schlos­sen, die ande­re Buch­se erhält das Kabel zum näch­sten Teil­neh­mer oder einen Ter­mi­nie­rungs­stecker mit einem 120 Ω Abschlußwiderstand.

Die Lei­ter­plat­te des Tuners ist übri­gens auf einer 1 mm dicken Alu­plat­te mon­tiert, die im Gehäu­se fest­ge­schraubt ist. Sie ist auf die­sen Fotos nicht zu sehen, da sie vom Tuner ver­deckt wird. Das wet­ter­fe­ste Gehäu­se mit dem Tuner wird auf einer pas­send gefrä­sten PVC-Plat­te mon­tiert, die mit Klem­men an den Anten­nen­mast geschraubt wird.

Erste Ver­su­che auf dem Bastel­tisch ver­lie­fen erfolg­reich. Statt einer Anten­ne wur­de ein 2 kΩ Abschluß­wi­der­stand ein­ge­lö­tet und die Impe­danz mit einem vek­to­ri­el­len Netz­werk­ana­ly­sa­tor gemes­sen. Es gelang für alle Ama­teur­funk­bän­der eine Anpas­sung auf ein SWR bes­ser als 2 zu errei­chen. Das Ziel, ein SWR bes­ser als 3, wird damit über­trof­fen. Den Rest über­nimmt der Anten­nen­tu­ner im Transceiver.

Das PC-Kom­mu­ni­ka­ti­ons­pro­gramm wur­de so erwei­tert, daß der Tuner damit zunächst mal pro­vi­so­risch ein­stell­bar ist:

Man kann jeweils die Spu­len- und Kon­den­sa­tor­kas­ka­den in Stu­fen von 0 bis 63 ein­stel­len und die­se Paa­re dann auch als ben­am­te vor­de­fi­nier­te Wer­te abspei­chern, so daß sie schnell abruf­bar sind. Dabei hat sich gezeigt, daß es Dis­kon­ti­nui­tä­ten gibt, beson­ders bei den Spu­len, die Ein­stel­lun­gen ver­lau­fen nicht ganz mono­ton. Das scheint aber kein Pro­blem zu sein, es ließ sich immer eine pas­sen­de Ein­stel­lung finden.

Inzwi­schen ist der Tuner am Anten­nen­mast mon­tiert und speist einen 20m lan­gen Draht:

Auf dem lin­ken Foto sieht man, wie der Anten­nen­draht und die Erde des Anten­nen­masts ange­schlos­sen sind. Sie sind jeweils über was­ser­dich­te Kabel­ver­schrau­bun­gen nach außen geführt. Das rech­te Foto zeigt den Anschluß an den Anten­nen­draht mit Hil­fe einer Draht­seil­klem­me. Als Gegen­ge­wicht für die end­ge­spei­ste Anten­ne dient der geer­de­te Antennenmast.

Da die­se Kon­struk­ti­on ohne Balun nicht nach Lehr­buch aus­ge­führt ist, habe ich in der Anten­nen­lei­tung zunächst pro­vi­so­risch eine Man­tel­wel­len­sper­re aus RG58 Koax­ka­bel auf einem FT240-43 Ring­kern eingebaut.

Erste Ver­su­che sind sehr ermu­ti­gend. Auch hier mit der rea­len Anten­ne lässt sich für jedes Kurz­wel­len­band, inklu­si­ve der WARC-Bän­der (außer 160m), eine Ein­stel­lung fin­den, mit der das SWR unter 3 liegt, meist sogar unter 2. Der im Trans­cei­ver ein­ge­bau­te Anten­nen­tu­ner bringt dann das SWR auf idea­le Wer­te um 1.

Eini­ge erfolg­rei­che FT8 QSOs auf unter­schied­li­chen Bän­dern zei­gen, daß auch ein hin­rei­chen­der Anteil der ein­ge­spei­sten HF-Ener­gie in Rich­tung Iono­sphä­re abge­strahlt wird und nicht (nur) die benach­bar­ten Kirsch­lor­beer­sträu­cher erwärmt. Ech­te Dau­er­tests ste­hen noch aus, aber bis­her haben sich auf ver­schie­de­nen Bän­dern auch bei 100 Watt Aus­gangs­lei­stung nach einer Minu­te kei­ne Auf­fäl­lig­kei­ten gezeigt. Auch der Con­trol­ler und die Kom­mu­ni­ka­ti­on zum Host-PC blie­ben bis­her von die­ser Aus­gangs­lei­stung unbeeindruckt.

Anten­nen­tu­ner, Teil 1

Da mei­ne end­ge­spei­ste Draht­an­ten­ne sowie­so nur als Pro­vi­so­ri­um gedacht war und eigent­lich nur auf dem 20- und 40-m-Band halb­wegs zufrie­den­stel­lend funk­tio­niert, muß eine dau­er­haf­te Lösung her. Ver­suchs­wei­se habe ich einen neu­en 20 m lan­gen Draht gespannt, für den nun ein neu­er Anten­nen­tu­ner gebaut wer­den soll. Wegen der beschrie­be­nen Pro­ble­me mit dem Ring­kern­tra­fo soll die neue Anten­nen­an­pas­sung kom­plett auf Fer­rite ver­zich­ten und der Tuner soll mit selbst­ge­wickel­ten Luft­kern­spu­len auf­ge­baut werden.

Design­zie­le

Der Ein­fach­heit hal­ber soll der Tuner nicht auto­ma­tisch funk­tio­nie­ren, damit ent­fällt also eine Steh­wel­len­meß­brücke. Es reicht, wenn der Tuner die Anten­nen­im­pe­danz auf ein Steh­wel­len­ver­hält­nis unter 3 trans­for­miert, den Rest über­nimmt der auto­ma­ti­sche Anten­nen­tu­ner im Trans­cei­ver. Der Tuner soll außen bei der Anten­ne mon­tiert und über die­sel­be RS-485-Schnitt­stel­le ein­ge­stellt wer­den, wie auch schon der Anten­nen­um­schal­ter. Damit wer­den bei­de Gerä­te vom Shack aus zen­tral bedien­bar und auch von dort mit Span­nung versorgt.

Ver­wen­de­te Bauteile

Der prin­zi­pi­el­le Auf­bau eines Anten­nen­tu­ners ist aus­ge­spro­chen sim­pel, näm­lich ein LC-Tief­paß. Ein Pro­to­typ wur­de hier schon gezeigt. Jetzt muß man „nur“ noch die Induk­ti­vi­tä­ten und Kapa­zi­tä­ten als hin­rei­chend strom- und span­nungs­fe­ste schalt­ba­re Kas­ka­den aus­füh­ren, das gan­ze steu­er­bar machen und in ein wet­ter­fe­stes Gehäu­se packen. Daher muß man sich zunächst mal Gedan­ken über die Aus­wahl der Bau­tei­le machen.

Hier noch­mal die Tabel­le der benö­tig­ten Kon­den­sa­to­ren und Spulen:

Dimen­sio­nie­rung des LC-Anpassnetzwerks
Bandmitt­le­re
Fre­quenz
Anpas­sung
C [pF]
Anpas­sung
L [nH]
160 m1,90512130.000
80 m3,6505352.900
60 m5,3591537.315
40 m7,100438.749
30 m10,125892.322
20 m14,175283.588
17 m18,11853640
15 m21,225232.020
12 m24,94046608
10 m28,850161.461
6 m50,51511720
4 m70,25014214

Die end­gül­ti­ge Auf­hän­gung der Anten­ne und die Aus­füh­rung des Gegen­ge­wichts wird den Impe­danz­ver­lauf ver­än­dern. Daher sind die­se Wer­te kei­nes­wegs end­gül­tig, aber sie sind zunächst plau­si­ble Ausgangspunkte.

Die Kon­den­sa­to­ren

Wegen der hohen Impe­dan­zen end­ge­spei­ster Anten­nen muß die Span­nung hoch­trans­for­miert wer­den. Bei 100 Watt Aus­gangs­lei­stung und 3 kΩ Impe­danz muß man mit etwa 550 Veff rech­nen. Um auf der siche­ren Sei­te zu sein, soll­ten die Kon­den­sa­to­ren min­de­stens 2 kV aus­hal­ten, was dann theo­re­tisch für über 1 kW Aus­gangs­lei­stung rei­chen wür­de, wenn da nicht die end­li­che Güte der Kon­den­sa­to­ren vor­her zu ihrem ther­mi­schen Able­ben füh­ren würde.

Erste Ver­su­che mit einem mecha­nisch ein­stell­ba­ren Kon­den­sa­tor waren viel­ver­spre­chend. Aller­dings gibt es min­de­stens zwei Pro­ble­me zu lösen, die siche­re Funk­ti­on der Mecha­nik im Außen­ein­satz (wenn auch im Gehäu­se, aber zwi­schen ‑20°C und +80°C) und die man­gel­haf­te Güte des Kon­den­sa­tors. Zudem gibt es kei­nen über­zeu­gen­den Grund, die Impe­danz auf genau 50 Ω anzu­pas­sen, wenn man wenig­stens in die Anpas­sungs­gren­zen des ein­ge­bau­ten Tuners kommt. Nach wei­te­ren Ver­su­chen mit selbst­ge­bau­ten Fest­kon­den­sa­to­ren (hier und hier) bin ich nun doch wie­der zurück bei käuf­lich erwerb­ba­ren ein­fa­chen span­nungs­fe­sten (3 kV) Kera­mik­kon­den­sa­to­ren. Deren Güte kommt auch auf eini­ge Hun­dert oder sogar an die Tau­send, womit sich deren Ver­lust­lei­stung bei 100 Watt am Sen­der­aus­gang auf hun­dert oder höch­stens zwei­hun­dert Mil­li­watt begren­zen soll­te. Die Nach­tei­le von Kera­mik­kon­den­sa­to­ren soll­te man frei­lich nicht ver­ges­sen, ins­be­son­de­re die mit­tel­mä­ßi­ge Güte, aber auch die Span­nungs- und Tem­pe­ra­tur­ab­hän­gig­keit ihrer Kapa­zi­tät. Soll­ten sich im Betrieb des Tuners Pro­ble­me erge­ben, die auf die­se Män­gel zurück­zu­füh­ren sind, kön­nen die Kera­mik­kon­den­sa­to­ren immer noch durch bes­se­re (ggf. selbst­ge­bau­te) Vari­an­ten ersetzt werden.

Die benö­tig­ten Kapa­zi­tä­ten erge­ben sich aus der oben gezeig­ten Tabel­le. So fiel die Wahl auf eine Kon­den­sa­tor­kas­ka­de aus sechs ver­schie­de­nen Wer­ten, die per Relais jeweils par­al­lel­ge­schal­tet wer­den. Wenn wir davon aus­ge­hen, daß die Schalt­ka­pa­zi­tä­ten ins­ge­samt etwa 10 pF betra­gen (eine opti­mi­sti­sche Annah­me, es wird eher mehr sein), dann soll­te eine Kon­den­sa­tor­kas­ka­de mit den fol­gen­den Kapa­zi­tä­ten die oben gezeig­ten Fäl­le annä­hernd abdecken: 5 pF, 10 pF, 20 pF, 40 pF, 80 pF und 470 pF. Damit soll­te die Kapa­zi­tät dann in 5 pF-Schrit­ten bis 155 pF ein­stell­bar sein, wobei aber immer die geschätz­te Schalt­ka­pa­zi­tät von 10 pF hin­zu­kommt. Außer­dem bringt jedes geöff­ne­te Relais noch­mal 1 pF Kapa­zi­tät dazu (sie­he unten). Der sech­ste Kon­den­sa­tor deckt dann den Bereich ab 470 pF ab.

Spu­len

Aus der Tabel­le ist ersicht­lich, daß Induk­ti­vi­tä­ten bis zu etwa 10 µH not­wen­dig sind. Wenn wir auch hier mit sechs Relais und sechs Spu­len aus­kom­men wol­len, dann ergibt sich als klein­ste Induk­ti­vi­tät und damit Schritt­wei­te ein Wert von 10 µH / 64 = 156 nH. Um mit halb­wegs gera­den Wer­ten zu arbei­ten, ent­schei­de ich mich für 160 nH, 320 nH, 640 nH, 1280 nH, 2560 nH und 5120 nH. Die Spu­len sol­len aus den oben genann­ten Grün­den als Luft­kern­spu­len gewickelt wer­den. Alle ande­ren Kern­ma­te­ria­li­en haben schon im Nor­mal­be­trieb Umma­gne­ti­sie­rungs­ver­lu­ste, die zudem über­pro­por­tio­nal anwach­sen, wenn der Kern in die Sät­ti­gung gerät. Dar­über­hin­aus sind Luft­ker­ne preis­wert und erlau­ben hohe Güten, die pro­blem­los 300 über­stei­gen und auch 500 errei­chen kön­nen. Es gibt aber auch min­de­stens zwei Nach­tei­le gegen­über Ring­kern­spu­len, ihr rela­tiv gro­ßes Volu­men und der not­wen­di­ge grö­ße­re Abstand zu Nach­bar­spu­len, um Kopp­lun­gen gering zu halten.

Dimen­sio­nie­rung der Spulen

Die Induk­ti­vi­tät einer Spu­le errech­net sich nähe­rungs­wei­se nach fol­gen­der For­mel (Wiki­pe­dia):

Damit ist die Induk­ti­vi­tät also pro­por­tio­nal zum Qua­drat der Win­dungs­zahl (N) und dem Quer­schnitt der Spu­le (A) und umge­kehrt pro­por­tio­nal zur Län­ge der Spu­le (l). Damit erge­ben sich prak­tisch belie­bi­ge Dimen­sio­nie­run­gen um eine bestimm­te Induk­ti­vi­tät zu erhal­ten. Aber nicht alle davon sind gleich gut.

Paul Zwicky, HB9DFZ, beschreibt in dem sehr inter­es­san­ten Arti­kel „Opti­mie­rung der Güte ein­la­gi­ger Zylin­der­spu­len“ (Funk­ama­teur 10/2013, Sei­te 1080ff) wie Spu­len dimen­sio­niert sein soll­ten, damit ihre Güte opti­mal ist. Der Arti­kel ist sehr lesens­wert und hier sol­len nur zwei Erkennt­nis­se dar­aus als Faust­re­gel zitiert wer­den: für opti­ma­le Güte sol­len Luft­kern­spu­len etwa halb so lang wie dick sein und der Win­dungs­ab­stand soll etwa dem Draht­durch­mes­ser ent­spre­chen. Dan­kens­wer­ter­wei­se kön­nen auch nicht-Abon­nen­ten des Funk­ama­teur das Spreadsheet von HB9DFZ her­un­ter­la­den, mit dem man Spu­len mög­lichst hoher Güte ent­wer­fen kann. Mit Hil­fe die­ses Spreadshe­ets habe ich die Spu­len für die­se Induk­ti­vi­täts­kas­ka­de dimen­sio­niert. Hier und da waren klei­ne Abwei­chun­gen not­wen­dig, weil nicht jede Draht­stär­ke und nicht jeder Wickel­durch­mes­ser rea­li­sier­bar war. Auch das zu ver­wen­den­de Gehäu­se setzt Gren­zen beim Durch­mes­ser der Spulen.

In sei­nem Arti­kel „Spu­len­ent­wurf und ‑opti­mie­rung – kom­for­ta­bel gelöst mit Opti­coil V2.2“ (Funk­ama­teur 03/2021, Sei­te 199ff) stellt Ed van Rooij, PA2EVR, sein Pro­gramm Opti­coil vor. Es basiert auf dem zuvor zitier­ten Arti­kel von HB9DFZ sowie wei­te­ren Quel­len. Auch die­ses Pro­gramm ist freund­li­cher­wei­se für Jeder­mann von der Funk­ama­teur Web­site her­un­ter­zu­la­den. Es erleich­tert den Spu­len­ent­wurf gegen­über dem oben genann­ten Spreadsheet erheb­lich, da ver­schie­de­ne Vari­an­ten ein­fach durch­ge­spielt wer­den kön­nen. Ich habe die mit dem Spreadsheet ent­wor­fe­nen Spu­len noch­mal mit Opti­coil veri­fi­ziert und zum Teil leicht ange­passt. Ins­be­son­de­re habe ich die Stei­gung der Win­dun­gen bei 1,5 mm Draht­durch­mes­ser auf 3 mm / Win­dung fest­ge­legt. Damit ergibt sich wegen ganz­zah­li­ger Win­dungs­zah­len für jede Spu­le ein ein­heit­li­ches Raster im Mil­li­me­ter­ab­stand. Zuge­ge­ben, das sind rein opti­sche Grün­de, jedes ande­re Raster ist auch machbar.

Ein klei­ner Wickeltipp

Ein klei­nes prak­ti­sches Pro­blem ergibt sich bei der Suche nach pas­sen­den Wickel­kör­pern zwi­schen etwa 15 mm und 50 mm Durch­mes­ser. Beim Wickeln stellt sich außer­dem her­aus, daß es hilf­reich ist, die Spu­le zunächst auf einem zwei oder drei Mil­li­me­ter dün­ne­ren Kör­per zu wickeln, denn auch das wei­che Kup­fer wickelt sich wie­der ein Stück weit auf. Dann wird die gewickel­te Spu­le auf den vor­ge­se­he­nen dicke­ren Wickel­kör­per auf­ge­bracht, auf dem sie dann stramm, aber auch nicht zu stramm sit­zen soll­te. Auf die­sem Wickel­kör­per kann man dann pas­send gefrä­ste Sprei­zer mit Sekun­den­kle­ber anbrin­gen. Damit nicht der Wickel­kör­per ver­klebt, habe ich vor­her dün­nes Tef­lon­band aus der Sani­tär­ab­tei­lung aufgewickelt.

Die nach­fol­gen­de Tabel­le soll ein­fach nur Ideen lie­fern, wo man nach geeig­ne­ten Wickel­kör­pern suchen kann. Jeder Haus­halt wird sei­ne eige­nen Quel­len haben.

Spu­len und Wickelkörper
vor­han­de­ne Wickel­kör­perDurch­mes­ser [mm]Spu­len­durch­mes­ser [mm]
Kup­fer­rohr15,0016,50
Zelt­stan­ge16,5018,00
Kup­fer­rohr18,0019,50
Pla­stik­ro­hr20,0021,50
Brau­se­ta­blet­ten Röhrchen29,0030,50
HT-Rohr32,0033,50
Staub­sauger­rohr37,0038,50
HTB DN 4040,0041,50
Abfluß­rohr45,5047,00
HTB DN 5050,0051,50

Der genann­te Spu­len­durch­mes­ser ist um die Draht­dicke (hier 1,5 mm) grö­ßer, als der Wickel­kör­per. Es ist der Durch­mes­ser von Draht­mit­te zu Draht­mit­te und er gilt für die Dimen­sio­nie­rung mit den oben genann­ten Werkzeugen.

Meß­er­geb­nis­se der rea­len Spulen

Die nach­fol­gen­de Tabel­le zeigt die gewähl­te Dimen­sio­nie­rung der Spu­len unter den gege­be­nen Aus­gangs­be­din­gun­gen (Wickel­kör­per, Draht­durch­mes­ser, gewähl­te Stei­gung, maxi­ma­le Abmes­sun­gen) sowie die Meß­er­geb­nis­se der fer­ti­gen Spu­len. Teil­wei­se wur­de von den Vor­schlä­gen der oben gezeig­ten Pro­gram­me abgewichen.

ABCDEFGH
160316,518,0160175224>250,0
320420,021,5318318370207,5
640432,033,5635653212130,9
1.280540,041,51.225130637786,0
2.560937,038,52.544267454960,7
5.1201440,041,55.232648224438,3
Bedeu­tung der Spalten:
A: Soll­in­duk­ti­vi­tät [nH]
B: Windungsanzahl
C: Durch­mes­ser des Wickel­kerns [mm]
D: Durch­mes­ser der fer­ti­gen Spu­le [mm]
E: errech­ne­te Induk­ti­vi­tät [nH]
F: gemes­se­ne Induk­ti­vi­tät bei 15 MHz [nH]
G: gemes­se­ne Güte
H: Selbst­re­so­nanz­fre­quenz [MHz]

Alle Spu­len außer der letz­ten tref­fen hin­rei­chend genau die vor­her errech­ne­te Induk­ti­vi­tät. Die Abwei­chun­gen lie­gen unter 10% und kön­nen gege­be­nen­falls nach dem Ein­bau durch Ver­bie­gen der äuße­ren Win­dun­gen noch etwas getrimmt werden.

Hier ein Foto der fer­tig gewickel­ten Spu­len, jeweils mit ange­lö­te­ter SMA-Buch­se für die Messungen.

Fer­tig gewickel­te Spulen

Die klei­ne­ren Spu­len sind eigen­sta­bil und brau­chen kei­ne Spreizer.

Not­wen­di­ge Spulenabstände

Um ein Gefühl dafür zu bekom­men, wel­chen Abstand Spu­len von­ein­an­der haben müs­sen, damit ihre Kopp­lung ver­nach­läs­sig­bar bleibt, habe ich zwei mög­lichst iden­ti­sche Spu­len mit jeweils drei Win­dun­gen aus 1,5 mm dickem CuL-Draht gewickelt. Der Durch­mes­ser ist etwa 28 mm und die Län­ge etwa 10 mm und sie sind jeweils direkt an eine SMA-Buch­se ange­lö­tet. Mit dem VNWA kön­nen damit sehr leicht s21 Mes­sun­gen durch­ge­führt wer­den. Gleich­zei­tig wird aus der s11 Mes­sung die Güte der Spu­le auf der Ein­gangs­sei­te bestimmt.

Die Mes­sun­gen wür­den einen eige­nen Blog-Arti­kel recht­fer­ti­gen (und viel­leicht mache ich das mal), aber hier sol­len nur qua­li­ta­tiv die Ergeb­nis­se auf­ge­li­stet wer­den. Als Kri­te­ri­um soll eine Kop­pel­dämp­fung um min­de­stens 30 dB ange­nom­men wer­den. Ergebnis:

Um 90° gegeneinander gedrehte Spulen können dicht aneinander platziert werden, gleich ausgerichtete Spulen sollten etwa 30 mm Abstand haben.

Es gibt hier einen gro­ßen Ermes­sens­spiel­raum, was man bereit ist zu akzep­tie­ren und bei wel­cher Dämp­fung man die Gren­ze setzt. Gene­rell ist ein grö­ße­rer Abstand natür­lich immer bes­ser. Da beim Anten­nen­kopp­ler aber alle Spu­len das­sel­be Signal ver­ar­bei­ten, machen sich Ver­kopp­lun­gen ledig­lich in einer etwas geän­der­ten Induk­ti­vi­tät und Güte bemerk­bar, aber nicht durch Ein­kopp­lung von Stör­si­gna­len. Daher ist der Abstand in die­sem Fall nicht wirk­lich kritisch.

Ein Augen­merk soll­te man aber auf Ver­lu­ste durch Kopp­lun­gen wer­fen, die die Güte der Spu­le völ­lig zunich­te machen kön­nen, weil sie Ener­gie ent­zie­hen. Auch hier wie­der nur qua­li­ta­tiv: eine kurz­ge­schlos­se­ne gekop­pel­te Spu­le senkt die Güte der Erre­ger­spu­le deut­lich, aber selbst bei enger Kopp­lung kaum unter 50% der Leer­lauf­gü­te. Weit­aus schlim­mer ist eine mit einem ohm’schen Wider­stand, z.B. 50 Ω, ter­mi­nier­te Spu­le. Da ist die Güte schnell im zwei- oder ein­stel­li­gen Bereich. Das ist inso­fern logisch, da ein idea­ler Kurz­schluß genau­so­we­nig Ener­gie ver­braucht, wie eine offe­ne Lei­tung: P = U * I und wenn ent­we­der U oder I null ist, ent­steht kei­ne Lei­stung. Einen wei­te­ren Ver­such habe ich mit einem Weiß­blech­ge­häu­se im Ein­fluß­be­reich der Spu­le gemacht. Es ver­hält sich ganz grob wie die kurz­ge­schlos­se­ne Spu­le, der Effekt ist deut­lich meß­bar, aber nicht kata­stro­phal, wenn man etwas Abstand hält (~20 mm). 

Relais

Anders als beim Anten­nen­um­schal­ter kön­nen beim Tuner alle Relais gleich­zei­tig durch­ge­schal­tet sein, was einen hohen Ruhe­strom ver­ur­sacht. Daher habe ich bista­bi­le 12V-Relais vom Typ HFE60-12–1HST-L2 des chi­ne­si­schen Her­stel­lers Hong­fa aus­ge­wählt, die preis­wert bei den bekann­ten chi­ne­si­schen Anbie­tern zu bezie­hen sind. Bista­bi­le Relais wer­den durch einen kur­zen Impuls ein­ge­schal­tet und durch einen wei­te­ren Impuls wie­der aus­ge­schal­tet. Nur wäh­rend die­ses Impul­ses von eini­gen zehn Mil­li­se­kun­den fließt ein Strom. Bista­bi­le Relais gibt es in ver­schie­de­nen Aus­füh­run­gen. Bei eini­gen muß die Erre­ger­span­nung umge­polt wer­den, was elek­trisch etwas auf­wen­di­ger ist. Die hier ver­wen­de­ten Relais haben zwei Spu­len, eine zum Ein­schal­ten und die ande­re zum Aus­schal­ten. Daher brau­chen sie zwei Pins mehr, sind aber ein­fa­cher zu Verdrahten.

Das Relais hat im geöff­ne­ten Zustand eine Rest­ka­pa­zi­tät und im geschlos­se­nen Zustand eine Induk­ti­vi­tät, die ich mit dem VNWA gemes­sen habe:

Kapazität
Kapa­zi­tät eines Hong­fa HFE60 Relais bei geöff­ne­ten Kontakten

Induktivität
Induk­ti­vi­tät eines Hong­fa HFE60 Relais bei geschlos­se­nen Kontakten

Die Kapa­zi­tät liegt also bei geöff­ne­ten Kon­tak­ten bei gut 1 pF, die Induk­ti­vi­tät bei geschlos­se­nen Kon­tak­ten bei gut 13 nH. Daher ist zu berück­sich­ti­gen, daß zu dem oder den durch­ge­schal­te­ten Relais immer die ande­ren geöff­ne­ten Relais mit jeweils 1 pF par­al­lel lie­gen und natür­lich die schon erwähn­te rest­li­che Ver­drah­tungs­ka­pa­zi­tät von kaum unter 10 pF. Damit addie­ren sich also zu jeder aus­ge­wähl­ten Kon­den­sa­tor­kom­bi­na­ti­on min­de­stens etwa 10 pF, so daß die mini­ma­le Kapa­zi­tät 15 pF kaum unter­schrei­ten dürf­te. Genaue­res wer­den die Mes­sun­gen am fer­ti­gen Pro­to­ty­pen zeigen.

Auch über die Seri­en­re­so­nan­zen muß man sich ein paar Gedan­ken machen. Zu jedem Kon­den­sa­tor lie­gen min­de­stens die 13 nH des Relais in Serie und wei­te­re unver­meid­ba­re Schalt­in­duk­ti­vi­tä­ten. Neh­men wir mal in Sum­me 40 nH an, dann ergibt sich dar­aus mit dem 80-pF-Kon­den­sa­tor aus der Thom­son­schen Schwin­gungs­glei­chung schon eine Seri­en­re­so­nanz bei knapp 90 MHz. Das liegt noch gut über dem 10-m-Band, wird aber bei 6 und 4‑m schon knapp. Also auf­pas­sen und die Induk­ti­vi­tät klein halten!

Ansteue­rung

Zur Ansteue­rung soll wie­der das ATMEGA644PA-AU Board ver­wen­det wer­den, das schon im Anten­nen­um­schal­ter pri­ma funk­tio­niert. Wegen der gro­ßen Spu­len und der hohen Aus­gangs­span­nung muß beim Anten­nen­tu­ner aller­dings mit deut­lich stär­ke­rer Stör­ein­strah­lung gerech­net wer­den. Daher habe ich ein Relais­trei­ber­board gebaut, das außer den not­wen­di­gen Lei­stungs­trei­bern auch noch Dämp­fungs­glie­der für jedes ein­zel­ne Signal bereit­stellt, das her­ein oder her­aus­geht. Bei­de Boards wer­den auf­ein­an­der­ge­steckt und in ein Weiß­blech­ge­häu­se auf dem Tun­er­board aufgesteckt.

Wei­te­re Details dazu fol­gen im zwei­ten Bei­trag zum Antennentuner.

End­ge­spei­ste Anten­ne, zwei­ter Versuch

Über kurz oder lang muß ich, wie schon beschrie­ben, mei­ne Kurz­wel­len­an­ten­ne ver­bes­sern. Aus bau­li­chen Grün­den scheint mir immer noch eine end­ge­spei­ste Anten­ne am besten geeig­net. Weil ich die exi­stie­ren­de Anten­ne für wei­te­re Ver­su­che nicht außer Betrieb neh­men will, habe ich einen zwei­ten 20 m lan­gen Anten­nen­draht gespannt. Er ist am sel­ben Anten­nen­mast befe­stigt, führt aber zum ande­ren Ende des Bal­kons, so daß bei­de Anten­nen­dräh­te einen Win­kel von gut 10° zuein­an­der bil­den. Eine gegen­sei­ti­ge Beein­flus­sung ist also anzunehmen.

Impe­danz­mes­sung

Das fol­gen­de Bild zeigt das Ergeb­nis der Impe­danz­mes­sung zwi­schen 1 MHz und 35 MHz.

Impedanzverlauf einer 20m langen Drahtantenne
Impe­danz­ver­lauf einer 20m lan­gen Draht­an­ten­ne mit 10,50 m lan­gem Gegen­ge­wicht („Pig­tail“)

Falls jemand selbst mit den Meß­wer­ten expe­ri­men­tie­ren möch­te: hier sind die zuge­hö­ri­gen s1p-Files (für 1–35 MHz und für Spaß auch noch die für 45–55 MHz und 65–75 MHz).

Man sieht deut­lich die Reso­nan­zen bei unge­rad­zah­li­gen Viel­fa­chen von λ/4, ins­be­son­de­re bei 3,5 MHz (1*λ/4) und 18,4 MHz (5*λ/4). 3*λ/4 bei 11,5 MHz und 7*λ/4 bei 25,3 MHz sind auch erkenn­bar. Die Viel­fa­chen von λ/2 lie­gen jeweils im hoch­oh­mi­gen Bereich und sie sind bei 6,6 MHz, 13,5 MHz, 20,8 MHz und 28,1 MHz zu erken­nen. Die Fre­quen­zen lie­gen jeweils noch etwas unter­halb der Ama­teur­bän­der, das las­se ich aber erst­mal so. Abge­schnit­ten ist schnell…

Als Gegen­ge­wicht wird im gezeig­ten Fall eine 10,50 m lan­ge iso­lier­te Kup­fer­lit­ze mit 2,5 mm² Quer­schnitt ver­wen­det, die vom 6 m hohen Bal­kon schräg nach unten führt. Ich habe ver­schie­den lan­ge Dräh­te aus­pro­biert, auch einen direk­ten Anschluß über weni­ge Zen­ti­me­ter an den geer­de­ten Anten­nen­mast. Wie erwar­tet ver­schiebt sich die Impe­danz bei jedem Ver­such etwas, aber es ändert sich nichts grund­le­gend. Wie ich letzt­lich das Gegen­ge­wicht ver­drah­te, ist im Moment noch nicht entschieden.

Als Crux hat sich bei der bis­he­ri­gen Anten­ne die Anten­nen­an­kopp­lung erwie­sen, die im Grun­de nur aus einem Ring­kern­tra­fo besteht, der die 50 Ω Sen­der­im­pe­danz an die Anten­nen­im­pe­danz von eini­gen kΩ anpasst. Es gelingt mir lei­der nicht, einen Über­tra­ger zu bau­en, der für meh­re­re har­mo­ni­sche Bän­der mit ver­tret­ba­rem Steh­wel­len­ver­hält­nis (SWR < 3) funk­tio­niert. Außer­dem wird bei den höher­fre­quen­ten 15- und 10-m-Bän­dern schon bei 100 Watt Aus­gangs­lei­stung der Ring­kern so heiß, daß das Steh­wel­len­ver­hält­nis nach kur­zer Zeit schlag­ar­tig aus dem Ruder läuft. Wer haupt­säch­lich SSB oder CW macht und viel­leicht noch grö­ße­re und teu­re­re Ring­ker­ne ein­setzt, mag ande­re Erfah­run­gen machen. Digi­ta­le Betriebs­ar­ten wie z.B. FT8, ins­be­son­de­re aber auch SSTV oder RTTY mit ihren län­ge­ren Durch­gän­gen, set­zen Dau­er­be­last­bar­keit vor­aus. Auf Fer­rite soll daher bei der neu­en Anten­nen­kopp­lung kom­plett ver­zich­tet und der zukünf­ti­ge Tuner soll statt­des­sen mit selbst­ge­wickel­ten Luft­kern­spu­len auf­ge­baut werden.

Anten­nen­an­pas­sung

Da alle Impe­dan­zen über 50Ω lie­gen, kann die­sel­be LC-Topo­lo­gie für alle Bän­der benutzt wer­den. Uni­ver­sell ver­wend­ba­re Anten­nen­tu­ner müs­sen das LC-Glied in ein CL-Glied umschal­ten kön­nen, damit auch ande­re Auf­wärts­trans­for­ma­tio­nen mög­lich sind. Hier ein Bei­spiel für die Anpas­sung auf dem 15-m-Band:

Anpassung 15m
Anpas­sung. Bei­spiel für das 15-m-Band

Ein klei­nes Board mit Test­klem­men aus der Elek­tro­in­stal­la­ti­on dient zum Aus­pro­bie­ren ver­schie­de­ner Anpas­sun­gen. Das Foto zeigt eine Luft­kern­spu­le und einen Kera­mik­kon­den­sa­tor, die eine hin­rei­chen­de Anpas­sung (SWR < 3) auf 15‑m und 17‑m erreichen. 

LC-Antennenanpassung
LC-Anten­nen­an­pas­sung, Testversion

Die Spu­le ist aus blan­kem Kup­fer­draht (1,5 mm Quer­schnitt, abiso­lier­te Man­tel­lei­tung) gewickelt und zeigt nach eini­gen Regen­ta­gen erste Kor­ro­si­on. Gefrä­ste Sprei­zer aus PVC sor­gen für hin­rei­chen­de Form­sta­bi­li­tät und gut repro­du­zier­ba­re Induk­ti­vi­tät. Dau­er­be­trieb mit 100 Watt ist über­haupt kein Pro­blem, nichts wird auch nur hand­warm. Die­ses Test­board ist ein Pro­of-of-con­cept, es zeigt, daß ein Tuner die­ser Bau­art zumin­dest bis 100 Watt funk­tio­nie­ren wird.

Das Durch­spie­len der Anpas­sun­gen für ver­schie­de­ne Ama­teur­funk­bän­der ergibt fol­gen­de not­wen­di­gen Wer­te für die Kon­den­sa­to­ren und Spulen:

Dimen­sio­nie­rung des LC-Anpassnetzwerks
Bandmitt­le­re
Fre­quenz
Anpas­sung
C [pF]
Anpas­sung
L [nH]
160 m1,90512130.000
80 m3,6505352.900
60 m5,3591537.315
40 m7,100438.749
30 m10,125892.322
20 m14,175283.588
17 m18,11853640
15 m21,225232.020
12 m24,94046608
10 m28,850161.461
6 m50,51511720
4 m70,25014214

Aus der Tabel­le sieht man, daß mit rea­li­sti­scher Dimen­sio­nie­rung alle Bän­der von 80 m bis 10 m ange­passt wer­den kön­nen. Beim 6- und 4‑m-Band wird es eng, weil die Min­dest­ka­pa­zi­tät der Kon­den­sa­to­ren 15 pF kaum unter­schrei­ten wird, beim 160-m-Band dürf­te die not­wen­di­ge Induk­ti­vi­tät zu hoch sein. Letzt­lich kann bei hohen Fre­quenz­bän­dern auch die Selbst­re­so­nanz­fre­quenz einer Spu­le oder des gesam­ten Auf­baus erreicht oder über­schrit­ten wer­den. Nun gut, man wird sehen. Es reicht ja, wenn die Anpas­sung in die Nähe von 50 Ω kommt, so daß der ein­ge­bau­te Anten­nen­tu­ner den Rest über­neh­men kann. Ob die Effi­zi­enz der Anten­ne ins­be­son­de­re auf den nicht-reso­nanten Bän­dern für einen pas­sa­blen Betrieb aus­reicht, steht auf einem ande­ren Blatt, hier geht es nur um die Anpassung.

Als näch­stes Pro­jekt steht nun der Bau eines schalt­ba­ren Anten­nen­tu­ners für die­se Anten­ne an. Die not­wen­di­gen Induk­ti­vi­tä­ten und Kapa­zi­tä­ten erge­ben sich aus der oben gezeig­ten Tabel­le. In Kür­ze geht’s hier weiter…