RS-485 Kom­mu­ni­ka­ti­ons­soft­ware

Hier soll nun kurz die Soft­ware beschrie­ben wer­den, über die ein Win­dows PC mit den Bus­teil­neh­mern über RS-485 kom­mu­ni­ziert. Es wur­de das freie und weit ver­brei­te­te Mod­bus-RTU-Pro­to­koll ver­wen­det. Es ist gut doku­men­tiert, wegen Pari­ty und 16-bit CRC hin­rei­chend feh­ler­re­si­stent und es gibt mit QMod­Ma­ster ein frei­es Win­dows-Pro­gramm, das bei der Imple­men­tie­rung und Feh­ler­su­che sehr hilf­reich ist. Sowohl für den Win­dows-PC wie auch für das Ardui­no Bio­top gibt es fer­ti­ge Software.

Vor­be­mer­kun­gen

Mit Ardui­no habe ich selbst nichts zu tun, ein­fach weil es das noch nicht gab, als ich zum ersten­mal mit Atmel Bau­stei­nen gear­bei­tet habe. Gele­gent­lich wer­de ich mir das mal anschau­en. Die Mod­bus-Biblio­thek für Win­dows habe ich mir einen hal­ben Tag lang ange­schaut und sie nicht zum Lau­fen bekom­men. Sie ist sicher gut und kann alles, aber die paar Funk­tio­nen die ich brau­che, habe ich dann doch sel­ber geschrie­ben. Das schien mir schnel­ler zu gehen, zumal die Funk­tio­nen auf der Gegen­sei­te, dem Atmel Bau­stein, schon fer­tig war und sich nicht grund­sätz­lich unter­schei­det. Damit ist nun die kom­plet­te Soft­ware sowohl auf der Host- wie auf der Device-Sei­te selbst­ge­schrie­ben und kann hier ohne Ein­schrän­kun­gen im Quell­text ver­öf­fent­licht werden:

Quell­text der Host-Software

Quell­text der Device-Soft­ware für den ATMEGA644PU

Wer will, kann bei­des ger­ne unein­ge­schränkt wei­ter­be­nut­zen, eine Garan­tie für die feh­ler­freie Funk­ti­on gibt’s natür­lich nicht. Es sind sicher­lich hier und da noch Feh­ler ein­ge­baut. Außer­dem ist nur ein Sub­set des Mod­bus-Pro­to­kolls imple­men­tiert, auch die eine oder ande­re Funk­ti­on, die in der Spec als „man­da­to­ry“ bezeich­net wird, ist nicht vor­han­den (z.T. imple­men­tiert, aber aus­kom­men­tiert da ungetestet).

Als Ent­wick­lungs­um­ge­bung für Atmel ver­wen­de ich „Atmel Stu­dio 7.0“, für Win­dows „VS Express 2013“. Bei­de Ver­sio­nen sind etwas älter, Atmel gehört inzwi­schen zu Micro­chip, und von VS Express gibt es neue­re Ver­sio­nen, die aber nicht mehr mit Win­dows 7 lau­fen, son­dern Win­dows 10 benö­ti­gen. Soll­te ich jemals auf Win 10 umstei­gen, wer­de ich mir eine neue­re Ver­si­on besor­gen. Es gibt im Moment für mich kei­nen Grund zum Umsteigen.

Bei­de Pro­gram­me sind sehr spe­zi­fisch für mei­nen Anwen­dungs­fall geschrie­ben, daher habe ich auch kei­ne aus­führ­ba­re Datei bei­gefügt. Die Quell­tex­te sol­len als Muster die­nen, wie man es machen kann, aber nicht muß. Das Win­dows Pro­gramm mag gleich­zei­tig als Bei­spiel die­nen, wie man die seri­el­le Schnitt­stel­le mit Win­dows-Funk­tio­nen bedient.

Alle Pro­gram­me sind in ANSI‑C geschrie­ben, der ATMEGA nutzt ein paar win­zi­ge Assem­bler-Funk­tio­nen. Für Win­dows wird ledig­lich das Win32-API ver­wen­det und ResEdit als Res­sour­cen Edi­tor, weil die kosten­lo­se Ver­si­on von VS Express zumin­dest bis 2013 kei­nen Res­sour­cen Edi­tor dabei hatte.

Host-Soft­ware

Ganz phan­ta­sie­los habe ich die Host-Soft­ware Ser­Com genannt. Da zur Zeit nur der Anten­nen­um­schal­ter ange­schlos­sen ist, ist dies der erste Tab, der nach dem Start ange­zeigt wird:

Tab Antennenumschalter
Die Bedie­nung des Antennenumschalters

Hier wird ledig­lich eine der bis zu sechs Anten­nen aus­ge­wählt. Die Namen sind in der Regi­stry kon­fi­gu­rier­bar und oben nur Bei­spiel ohne rea­le Bedeu­tung. Die momen­tan akti­ve Anten­ne wird mit dem Icon ange­zeigt, nur eine kann zu einem Zeit­punkt aktiv sein. Port Sta­tus ist eigent­lich eine ver­zicht­ba­re Dia­gno­se­mel­dung. Hier wird der phy­si­ka­li­sche Sta­tus des Ports A ange­zeigt, der die Relais ansteu­ert. Die bei­den Tabs „Rotor“ und „Anten­nen­tu­ner“ sind leer und hier nur Platz­hal­ter für zukünf­ti­ge Steue­run­gen, die am sel­ben Bus hän­gen sollen.

Mit dem Con­fig-Tab wird einer der Bus­teil­neh­mer konfiguriert:

SerCom Config
Ser­Com Config

Beim Start ohne Para­me­ter wer­den hier die Kon­fi­gu­ra­ti­ons­da­ten des PCs und des aus­ge­wähl­ten Devices ange­zeigt, also Baud­ra­te, Device ID und ver­wen­de­ter COM-Port. Wird Ser­Comm mit dem Par­am­ter „-c“ gestar­tet, läuft es im Kon­fi­gu­ra­ti­ons­mo­dus und die hier dun­kel geschal­te­ten Fel­der wer­den weiß und kön­nen geän­dert wer­den. In die­sem Tab wird ein Zäh­ler gezeigt, der angibt, wie oft das EEPROM pro­gram­miert wur­de, denn die Anzahl der Pro­gram­mier­zy­klen ist end­lich (aller­dings wer­den min­de­stens 100k-Zyklen garantiert).

Auch eine Uhr ist imple­men­tiert, deren Datum und Uhr­zeit hier gesetzt und aus­ge­le­sen wer­den kön­nen. Mit dem Wert bei „RTC cor­rec­tion“ kann im Con­fig-Modus ein Kor­rek­tur­wert ein­ge­ge­ben wer­den, mit dem eine Fre­quenz­ab­wei­chung des Quar­zes für die Uhr­zeit kom­pen­siert wird. Mit „Restart Device“ wird auf dem Device ein Watch­dog Reset pro­vo­ziert, also ein ech­ter Hard­ware-Reset. „Refresh“ liest die ange­zeig­ten Daten erneut aus dem Device aus.

Der Dia­gno­se-Tab zeigt eini­ge Daten an, die etwas über den Gesund­heits­zu­stand des Devices aussagen:

SerCom Diagnose
Ser­Com Diagnose

Zunächst wird der Typ des Moduls, sei­ne Takt­fre­quenz und die Ver­si­on der imple­men­tier­ten Soft­ware ange­zeigt. Ver­schie­de­ne Zäh­ler zei­gen dann die Anzahl der unter­schied­li­chen Resets, die Anzahl feh­ler­frei emp­fan­ge­ner eige­ner und frem­der Nach­rich­ten und die Anzahl von Kom­mu­ni­ka­ti­ons­feh­lern an. Auch die Ver­sor­gungs­span­nung und die Tem­pe­ra­tur auf der Device-Sei­te wer­den ange­zeigt. Trotz des nur etwa 30mA gro­ßen Ver­sor­gungs­stroms erwärmt sich das Board merk­lich. Nun­ja, bei 12V sind es ja auch immer­hin 360 mW. Der Tem­pe­ra­tur­sen­sor (TMP275) hat übri­gens eine Genau­ig­keit von 0.5 K und 116 K Auf­lö­sung. Daß drei Stel­len hin­ter dem Kom­ma ange­zeigt wer­den, deu­tet eine höhe­re Genau­ig­keit an.

Außer­dem wer­den die Namen und Zeit­stem­pel der Quell­da­tei­en und der Zeit­punkt des Com­pi­ler­laufs ange­zeigt. Auch hier lässt sich mit der Refresh-Taste der ange­zeig­te Inhalt erneu­ern. Durch Anklicken der „Con­ti­nuous“ Check­box wird der Refresh dau­er­haft aus­ge­führt. Das ist für Dau­er­tests hilf­reich. Ein über Nacht aus­ge­führ­ter Dau­er­test brach­te kei­nen ein­zi­gen Feh­ler her­vor. Daß die Feh­ler­zäh­ler funk­tio­nie­ren, zeig­te aller­dings ein erster Test mit 100 W HF auf dem Antennenumschalter.

Seit eini­gen Tagen und Näch­ten ist die Soft­ware im Ein­satz und hat sich bewährt. Für das Inter­face zwi­schen dem USB-RS485-Wand­ler und dem Bus habe ich auch zum Ein­kop­peln der 12V Ver­sor­gungs­span­nung eine klei­ne Box gebaut:

RS485-PC-Box
RS485 PC-Inter­face Box.

Sie fügt noch­mal klei­ne Tief­päs­se in die Kom­mu­ni­ka­ti­ons­lei­tung ein und ent­stört die Ver­sor­gungs­span­nung eines exter­nen Stecker­netz­teils. Das Gehäu­se ist übri­gens ein sehr preis­wer­tes Euro­box-Gehäu­se, das ich auch für ande­re Din­ge ger­ne verwende.

Der Schieb­ko – ein elek­tro­me­cha­nisch ein­stell­ba­rer Schiebekondensator

Für einen Anten­nen­tu­ner der meh­re­re Fre­quenz­bän­der abdecken soll, benö­tigt man ein­stell­ba­re Induk­ti­vi­tä­ten und Kapa­zi­tä­ten. Manu­ell ein­stell­ba­re Tuner ver­wen­den dafür Dreh­kon­den­sa­to­ren und Roll­spu­len. Die­se Tuner sind nor­ma­ler­wei­se nur im Haus an der Funk­sta­ti­on zu ver­wen­den, denn selbst wenn sie wet­ter­fest sind, wird man nicht nach drau­ßen gehen wol­len, um sie neu abzustimmen.

Für den Außen­ein­satz gibt es daher elek­trisch ein­stell­ba­re Anten­nen­tu­ner, die aber meist nur per Relais eini­ge Fest­kon­den­sa­to­ren und Spu­len umschal­ten. Dadurch wird der Abstimm­be­reich ein­ge­schränkt und jedes Relais bedeu­tet zusätz­li­che Ver­lu­ste und induk­ti­ve und kapa­zi­ti­ve Stö­run­gen. Daher wären stu­fen­los elek­tro­me­cha­nisch ein­stell­ba­re Bau­tei­le von Vorteil.

Zum Ein­stel­len der Kapa­zi­tät bie­ten sich Schritt­mo­to­ren an. Sie sind sehr preis­gün­stig in vie­len Vari­an­ten erhält­lich. Damit kann man zum Bei­spiel einen Dreh­kon­den­sa­tor ein­stel­len, aller­dings benö­tigt man ein pas­sen­des Unter­set­zungs­ge­trie­be mög­lichst ohne Spiel. Es gibt auch Schritt­mo­to­ren, die schon eine Spin­del ein­ge­baut haben und damit die Dreh­be­we­gung auf eine Trans­la­ti­ons­be­we­gung umset­zen, wie z.B. der hier abgebildete:

Schrittmotor mit Spindel
Schritt­mo­tor mit Spin­del zum Erzeu­gen einer linea­ren Bewegung.

Die­ser Schritt­mo­tor ist bei den bekann­ten Ver­kaufs­stel­len in Chi­na im Zeh­ner­pack für weni­ger als 2 Euro pro Stück zu bezie­hen. Mit einem sol­chen Motor kann man recht ein­fach einen Plat­ten­kon­den­sa­tor aus einer oder meh­re­ren Plat­ten ver­stel­len, der als Schie­be­kon­den­sa­tor („Schieb­ko“) aus­ge­führt ist. Gesagt getan!

Die wesent­li­chen Rand­be­din­gun­gen für den Kon­den­sa­tor sind sein Ein­stell­be­reich und die Span­nungs­fe­stig­keit. Die Anwen­dung in einem Anten­nen­tu­ner bei einer mode­ra­ten Aus­gangs­lei­stung von 100 Watt erfor­dert weni­ger als 1 kV Span­nungs­fe­stig­keit. Bei 50 Ω hat man zwar nur unter 100 V anlie­gen, aber da auch hoch­oh­mi­ge end­ge­spei­ste Anten­nen mit eini­gen weni­gen kΩ ange­passt wer­den sol­len, ist man erst mit 1 kV auf der siche­ren Sei­te. Bei der Wahl des Ein­stell­be­reichs fällt die Fest­le­gung etwas schwe­rer. Einer­seits kann man nach oben nie genug haben, beson­ders für die lang­wel­li­gen Bän­der, ande­rer­seits steigt aber fast unver­meid­lich auch die mini­ma­le Kapa­zi­tät mit der maxi­ma­len. Nun gut, für den Pro­to­ty­pen habe ich ein­fach einen Bereich von 20 pF bis 100 pF ange­strebt. Durch Hin­zu­fü­gen wei­te­rer Plat­ten lässt sich die­ser Bereich anpassen.

Bleibt die Fra­ge des ver­wen­de­ten Mate­ri­als und sei­ne Dimen­sio­nen. Der Hub des oben gezeig­ten Schritt­mo­tors beträgt gut 35 mm. Auf eine Füh­rung für den Plat­ten­sta­pel soll mög­lichst ver­zich­tet wer­den, d.h. der Schie­ber soll ein­fach in den Sta­tor glei­ten und dabei der Plat­ten­ab­stand gewahrt blei­ben. Um die lei­ten­de Kon­den­sa­tor­plat­te muß also ein Iso­la­tor ange­bracht sein, der einen Kurz­schluß ver­hin­dert. Ein Luft-Dreh­ko bzw. ‑Schieb­ko wäre wegen der not­wen­di­gen Füh­rung mecha­nisch aufwendiger.

Der Auf­bau

Als ein­fach­ste und bil­lig­ste Lösung bie­ten sich auf Maß gefrä­ste FR-4-Lei­ter­plat­ten an.

Kondensatorplatten aus FR4
Kon­den­sa­tor­plat­ten aus FR‑4

Links sind die drei Plat­ten des Sta­tors zu sehen und rechts die bei­den Plat­ten des Schie­bers. Außer­dem gibt es Abstands­hal­ter und eini­ge M2er Schrau­ben. Die Sta­tor­plat­ten sind 40 mm x 50 mm groß und auf der Unter­sei­te etwa 0,25 mm ein­ge­fräst, so daß die Schie­ber leicht hin- und her­glei­ten kön­nen. Zusam­men­ge­baut sieht das gan­ze dann so aus:

Schiebekondensator zusammengebaut
Der fer­tig­mon­tier­te Schiebekondensator.

Hier ist der Schie­be­kon­den­sa­tor auf einem betriebs­be­rei­ten Pro­to­ty­pen mit dem Schritt­mo­tor verbunden.

Die Ansteue­rung erfolgt hier mit einem I/O Board mit RS485 Schnitt­stel­le, das an ande­rer Stel­le schon­mal beschrie­ben wur­de. Es ist über eine Mod­Bus-Schnitt­stel­le mit dem PC ver­bun­den. Als Trei­ber dient ein klei­nes Board mit „A4988 step­per motor dri­ver“, die es auch als Schütt­gut bei chi­ne­si­schen Händ­lern zu kau­fen gibt. Es ist zwei­fel­los über­di­men­sio­niert, aber hier die ein­fach­ste, bil­lig­ste und schnell­ste Lösung. Die jewei­li­ge Ziel­po­si­ti­on wird hier am PC mit dem Mod­Bus-Uti­li­ty QMod­Ma­ster ein­ge­ge­ben. Das Video oben zeigt die Ori­gi­nal­ge­schwin­dig­keit, also weder Zeit­raf­fer noch Zeit­lu­pe. Zwi­schen den End­po­si­tio­nen lie­gen hier etwa 250 Schrit­te. Der Ein­fach­heit hal­ber wer­den die Schritt­im­pul­se in einem 10 ms-Inter­rupt-Hand­ler erzeugt. Micros­tep­ping ist mög­lich, aber hier wird für jeden Schritt­im­puls ein vol­ler Schritt aus­ge­führt. Mit Micros­tep­ping fährt der Motor wesent­lich sanf­ter und geräusch­lo­ser, braucht aber dop­pelt oder vier­mal so lan­ge. Für eine „Release-Ver­si­on“ wäre die Soft­ware noch etwas zu über­ar­bei­ten, aber hier soll es ja nur um ein „pro­of-of-con­cept“ gehen.

Die Meß­er­geb­nis­se

Die Para­me­ter des Kon­den­sa­tors kön­nen mit einem Netz­werk­ana­ly­sa­tor an der SMA-Buch­se gemes­sen wer­den. Hier zunächst mal die Meß­er­geb­nis­se zwi­schen 0 und 100 MHz für ver­schie­de­ne Ein­stel­lun­gen des Kondensators:

Schiebekondensator, voll ausgefahren
Schie­be­kon­den­sa­tor voll ausgefahren.
Schiebekondensator, 50% eingefahren
Schie­be­kon­den­sa­tor 50% eingefahren.
Schiebekondensator, 75% eingefahren
Schie­be­kon­den­sa­tor 75% eingefahren
Schiebekondensator, voll eingefahren
Schie­be­kon­den­sa­tor voll eingefahren

Im voll aus­ge­fah­re­nen Zustand hat der Kon­den­sa­tor also unge­fähr 20 pF, im voll ein­ge­fah­re­nen Zustand gut 100 pF. Das sind unge­fähr die Ziel­wer­te für die Ent­wick­lung des Pro­to­ty­pen. Dem­entspre­chend wur­de die Grö­ße des Schie­bers und die Anzahl der Plat­ten gewählt. In einer über­ar­bei­te­ten Ver­si­on wür­de ich ver­su­chen, die unte­re Kapa­zi­tät auf 10 pF bis 15 pF her­un­ter­zu­be­kom­men. Das soll­te durch Umdi­men­sio­nie­ren des Schie­bers mög­lich sein. Die Kapa­zi­tät ist line­ar ein­stell­bar und jeder Schritt ändert sie um etwa 0,3 pF ((100pF-20pF)/250 Schrit­te). Die Wie­der­hol­ge­nau­ig­keit liegt etwas höher, weil der Schie­ber lose ein­ge­hängt ist und etwas wackelt, aber den­noch bei unter 1 pF.

Die Mes­sun­gen bei 75% und 100% zei­gen Seri­en­re­so­nan­zen bei 89,8 MHz und 82,2 MHz. Das ist nicht wei­ter ver­wun­der­lich und war zu erwar­ten. Die Zulei­tun­gen zum Sta­tor und zum Schie­ber bil­den eine Induk­ti­vi­tät in der Grö­ßen­ord­nung von 40 nH. Sie ändert sich auch etwas mit der Stel­lung des Schie­bers. Da der Ein­satz­be­reich des Kon­den­sa­tors bis zum 10 m Band geplant ist, stört die­se Induk­ti­vi­tät hier nicht. Auch das 6 m Band und das 4 m Band wären noch abzudecken.

Gute Güte…

Ist also alles gut? Nein, die Crux ist die Güte des Kon­den­sa­tors. Sie ist in rot dar­ge­stellt und liegt je nach Fre­quenz und Kapa­zi­tät zwi­schen 50 und 100. Das ist nicht gut, Kon­den­sa­to­ren haben nor­ma­ler­wei­se Güten über 1000, aber viel­leicht kann man das hier tole­rie­ren oder verbessern.

Der Kehr­wert der Güte ist der Ver­lust­fak­tor, hier also 0,01 bis 0,02. Das bedeu­tet, wenn der Kon­den­sa­tor mit 100 Watt beauf­schlagt wird, erzeugt er eine Ver­lust­lei­stung von 1 bis 2 Watt. Die feh­len dann bei der abge­strahl­ten Lei­stung, aber bekannt­lich gilt „ein biss­chen Schwund ist immer“. Da Ener­gie aber zum Glück nicht ver­lo­ren geht, wird sie in Wär­me umge­wan­delt. Nun hat der Kon­den­sa­tor eine recht gro­ße Ober­flä­che und wird 2 Watt auf Dau­er ablei­ten kön­nen. Außer­dem ist FR‑4 ja recht hit­ze­be­stän­dig, aber über das Pro­blem soll­te man sich im Kla­ren sein, zumal wei­te­re Kom­po­nen­ten auch erheb­li­che Ver­lu­ste haben. Eine End­stu­fe mit 1 oder 2 kW wür­de sicher­lich die Bela­stungs­gren­ze die­ses Schie­be­kon­den­sa­tors überschreiten.

Zum Ver­gleich habe ich einen 10 pF Glim­mer-Kon­den­sa­tor und einen 100 pF Kera­mik-Hoch­volt-Kon­den­sa­tor (3 kV) mit dem­sel­ben Test­auf­bau ausgemessen:

10pF Mica
10pF/100V Glim­mer­kon­den­sa­tor.
100pF KerKo, 3kV
100pF/3kV Kera­mik­kon­den­sa­tor

Bei­de Kon­den­sa­to­ren haben deut­lich höhe­re Güten zwi­schen eini­gen 100 und eini­gen 1000. Das zeigt, daß der Meß­auf­bau im wesent­li­chen kor­rekt ist.

Was ist denn nun die Ursa­che für die gerin­ge Güte des Eigen­bau-Kon­den­sa­tors und wie kann man sie ver­bes­sern? Nun, die Ursa­che sind die dielek­tri­schen Ver­lu­ste von FR‑4. Wiki­pe­dia doku­men­tiert einen Dielek­tri­scher Ver­lust­fak­tor von 0,012 bis 0,035 für FR‑4 Stan­dard­ma­te­ri­al. Das deckt sich gut mit den oben gezeig­ten eige­nen Mes­sun­gen, die zwi­schen 0,01 und 0,02 erga­ben. Da muß man nicht wei­ter­grü­beln, mit FR‑4 wird das nicht besser.

Zukünf­ti­ge Versuche

Die Ergeb­nis­se die­ses ersten Ver­suchs sind viel­ver­spre­chend. Im Prin­zip hat es funk­tio­niert. Wie geht es nun weiter?

Soll das Kon­zept bei­be­hal­ten wer­den, dann muß man nach bes­se­rem Lei­ter­plat­ten­ma­te­ri­al suchen und even­tu­ell doch auf Luft als Dielek­tri­kum umstei­gen. Eine schö­ne und nütz­li­che Tabel­le mit den Ver­lust­fak­to­ren ver­schie­de­ner Mate­ria­li­en gibt es bei Microwaves101. Außer den für Bast­ler schwer erhält­li­chen Mate­ria­li­en von Rogers (hin und wie­der bie­tet die jemand auf der Ham-Radio an) bie­ten sich Eigen­bau­lö­sun­gen auf PTFE-Basis („Tef­lon“) an. Des­sen Dielek­tri­zi­täts­kon­stan­te ist nur halb so groß, wie die von FR‑4 und damit wird für die­sel­be Kapa­zi­tät die dop­pel­te Flä­che benö­tigt. Dafür liegt der Ver­lust­fak­tor in der Grö­ßen­ord­nung von 0,0002 und ist damit hun­dert­mal bes­ser als FR‑4. Die Durch­schlags­fe­stig­keit von PTFE ist etwas höher als FR‑4, 18kV/mm gegen­über 14 kV/mm. Damit kön­nen die Plat­ten etwas dich­ter anein­an­der posi­tio­niert werden.

Ein Schie­be­kon­den­sa­tor nach dem hier beschrie­be­nen Muster mit PTFE Dielek­tri­kum ist ein hei­ßer Kan­di­dat für wei­te­re Versuche.

Stay tun­ed!

I/O Board mit RS485 Schnittstelle

Es hat mich mal wie­der in den Fin­gern gekrib­belt. Nach­dem wir die ver­gan­ge­nen zwei Jah­re nur mit unse­rem neu­en Haus beschäf­tigt waren, muss­te ich mal wie­der ein klei­nes Board entwickeln.

Ich habe ja wie­der mit dem Ama­teur­funk ange­fan­gen und zwei Trans­cei­ver von Icom gekauft. Die Anten­nen­an­la­ge lässt aller­dings sehr zu wün­schen übrig. Ich will ver­schie­de­ne Anten­nen auf­bau­en, für Kurz­wel­le vor­läu­fig nur Mono- und Dipo­le. Da nicht jede Anten­ne ein eige­nes Kabel bekom­men kann, wer­de ich also einen Anten­nen­um­schal­ter instal­lie­ren müs­sen, der von der Sta­ti­on aus elek­trisch schalt­bar sein soll. Sowas kann man fer­tig kau­fen oder auch sel­ber­bau­en, aber auch die gekauf­ten brau­chen eine Steuerung.

Zur Kom­mu­ni­ka­ti­on zwi­schen Anten­nen­um­schal­ter und Shack bie­tet sich die RS485 Schnitt­stel­le an. Sie setzt auf einer asyn­chro­nen seri­el­len Schnitt­stel­le auf und unter­stützt Lei­tungs­län­gen von vie­len hun­dert Metern (bis 1,2 km nach der Norm) bei Baud­ra­ten bis 12 MBd. Durch die Ver­wen­dung eines Lei­tungs­paars im Gegen­takt wird eine hohe Stör­si­cher­heit erreicht. Ein Lei­tungs­paar gestat­tet die Kom­mu­ni­ka­ti­on im Halb­du­plex-Mode, für Voll­du­plex sind zwei Lei­tungs­paa­re nötig. RS485 ermög­licht auch den Auf­bau eines Bus­systems, bei dem bis zu 32 Teil­neh­mer ange­schlos­sen wer­den kön­nen. Bei der hier geplan­ten Anten­nen­um­schal­tung könn­ten also meh­re­re Anten­nen­um­schal­ter über ein ein­zi­ges Lei­tungs­paar ange­schlos­sen werden.

Weil ich gera­de noch eini­ge Exem­pla­re des Mikro­con­trol­lers in der Kiste lie­gen hat­te, habe ich ein klei­nes Board mit dem ATtiny1634 und einem RS485-Trans­cei­ver gebaut. Hier die KiCad 3D-Vorschau:

ATTINY1634
Unter­sei­te des RS485 Moduls mit einem ATtiny1634.
Oberseite
Ober­sei­te des RS485 Moduls.

Da die Umschalt­re­lais des Anten­nen­schal­ters typi­scher­wei­se mit 12V arbei­ten, ist auf der Ober­sei­te ein ein­fa­cher Line­ar­reg­ler imple­men­tiert. Es pas­sen 3V- und 5V-Typen. Da der 1634 bei 3V nur bis 8 MHz getak­tet wer­den kann, habe ich auf dem Pro­to­ty­pen 5V-Reg­ler ein­ge­lö­tet. Damit läuft der Con­trol­ler mit bis zu 12 MHz. Hier ist der Schalt­plan, es gibt kei­ner­lei erwäh­nens­wer­te Besonderheiten.

In der Wahl des Kom­mu­ni­ka­ti­ons­pro­to­kolls ist man ziem­lich frei, aber war­um etwas eige­nes erfin­den, wenn es schon weit­ver­brei­te­te Stan­dards gibt. Ich habe mich für den Mod­bus ent­schie­den, der auch bei­spiels­wei­se bei der Kom­mu­ni­ka­ti­on mit PV-Wech­sel­rich­tern ver­wen­det wird. Es gibt ein schö­nes Uti­li­ty für Win­dows, QMod­Ma­ster, das Mod­bus-Nach­rich­ten sen­den und emp­fan­gen kann. Das war sehr hilf­reich bei der Imple­men­tie­rung des Mod­bus Pro­to­kolls in den ATtiny1634. Ich bin noch nicht kom­plett mit der Imple­men­tie­rung fer­tig, daher will ich die Soft­ware im Moment noch nicht hier ver­öf­fent­li­chen. Das hole ich nach, wenn’s fer­tig ist. Da die wesent­li­chen Din­ge aber bereits funk­tio­nie­ren, hier mal nur kurz der Ressourcenverbrauch: 

Pro­gram Memo­ry Usa­ge : 2892 bytes 17,7 % Full
Data Memo­ry Usa­ge : 85 bytes 8,3 % Full
EEPROM Memo­ry Usa­ge : 2 bytes 0,8 % Full

Dar­an wird sich im End­aus­bau nicht mehr viel ändern. Viel­leicht braucht er mit wei­te­ren Funk­tio­nen 25 – 30% Flash Spei­cher, aber die vor­han­de­nen 16 kB wer­den auf jeden Fall aus­rei­chen. Wenn genü­gend Platz bleibt, wer­de ich die Sen­de- und Emp­fangs­puf­fer etwas ver­grö­ßern, was dann den Daten­spei­cher Ver­brauch um ein paar Pro­zent anstei­gen las­sen wird. Auch hier wird das 1 kB SRAM alle­mal ausreichen.

Über ein 25m Kabel lief die Kom­mu­ni­ka­ti­on bei 38 kBd wie erwar­tet meh­re­re Stun­den feh­ler­frei, aller­dings kann QMod­Ma­ster auch lei­der nur eine Nach­richt pro Sekun­de abset­zen. Das ist also nicht wirk­lich ein hoher Durch­satz. Auf der PC-Sei­te ver­wen­de ich übri­gens einen „WaveSha­re USB TO RS232 RS485 TTL Indu­stri­al Iso­la­ted Con­ver­ter“, der bis­her zuver­läs­sig funktioniert.