Automatische Antennen-Kopplersteuerung
Wie schon am Ende des Beitrags vom symmetrischen Antennenkoppler vorgestellt, ist hier eine automatische Kopplersteuerung beschrieben. Die Entwicklung hat etwas länger gedauert als gedacht, dafür sind aber viele brauchbare Features eingebaut.
Die Verwendung eines graphischen Displays ist bei diesem Projekt zu ersten Mal zur Anwendung gekommen. Die Einarbeitung in die Graphiksoftware Gimp und in die Nextion GUI des Displays hat ebenfalls einige Zeit in Anspruch genommen.
Hier zu sehen ist der Prototyp der Steuerung. Zur Simulation des Kopplers habe ich ein Anzeigeboard gebaut, mit dem über 1-WireBus die seriell übertragenen Daten binär ausgegeben und angezeigt werden können.
Mein Amateurfunkkollege Michi (OE2LWP) war maßgeblich an der Entwicklung der Software beteiligt. Er ist beruflich Softwareentwickler, so konnte ich viele neue Wege und Ansätze zur Programmierung von Arduino Mikrokontrollern lernen. Wir haben fast 1 Jahr mit nur wenigen Unterbrechungen jeden Freitag Abend in unseren Amateurfunk-Clubheim in Salzburg an der Software getüftelt.
Das Graphikdesign des Displays wurde von mir an die blaue Displayeinstellung des ICOM Transceivers IC-7600 angelehnt.
Die SD-Karte mit der gespeicherten Frequenztabelle ist an der Front entnehmbar.
Sämtliche Eingaben sind über Touchscreen am Display und über eine USB-Verbindung möglich.
Derzeit ist nur eine Version für ICOM Geräte vorhanden, in der die Frequenz automatisch vom Transceiver gelesen wird !
Funktionsweise:
Die Kopplersteuerung besteht aus einem Arduino Mega Mikrocontroller, einem graphischen Touchscreen-Display von Nextion NX4024K032 und einem SPI Micro-SD Kartenleser.
Die Schaltung mit Spannungsregler zur Versorgung des Arduinos und zum Anschluss des Displays und des SD-Kartenlesers habe ich auf der Lochrasterplatine des Arduino-Mega Prototypeshields aufgebaut. Die gesamten Komponenten finden in einem ALU-Strangpressprofilgehäuse Platz. Alle nach außen führenden Leitungen wurden zusätzlich mit 1nF Kondensatoren und Klappferriten gegen mögliche HF-Einstreuungen abgeblockt.
In die Rückwand wurde eine Hohlstecker-Buchse für die Spannungsversorgung eingebaut. Als Programminterface ist eine USB-B Buchse eingebaut. Die CI-V Verbindung zum Transceiver erfolgt über eine 3,5mm Mono-Klinkenbuchse. Die Verbindung zum abgesetzten Koppler (Spannungsversorgung und 1-Wire Bus) erfolgt über eine 4 polige XLR-Buchse.
Zur Abstimmung der Antenne muss nicht jedesmal gesendet werden, sondern es muss nur einmalig eine Tabelle erstellt werden, in der die Resonanzwerte der Antenne gespeichert sind.
Die Frequenztabelle wird im CSV-Format mit 10KHz Schrittweite auf der SD-Karte gespeichert. Diese beinhaltet die Frequenz, den Kapazitätswert (weiter C genannt), den Induktivitätswert (weiter L genannt) und die Position der Kapazität für das L-Glied (L-C oder C-L).
Die Kopplersteuerung pollt über die CI-V Schnittstelle die Frequenz vom Transceiver, die am Display angezeigt wird. Zur weiteren Verarbeitung wird die gelesene Frequenz auf 10KHz gerundet. Mit diesen Wert wird die Frequenztabelle auf der SD-Karte durchsucht. Bei Übereinstimmung der Frequenz werden die entsprechenden L und C Werte am Display angezeigt und auch über 1-Wire- Bus zum Kopper übertragen. Die dazugehörige Position der Kapazität wird graphisch am Display angezeigt und ebenfalls über 1-Wire an den Koppler übertragen.
Im Koppler selbst befindet sich kein Mikrokontroller der Störungen verursachen kann, bzw. von der auftretenden HF beeinflusst werden könnte. Hier sind nur 1-Wire 8-Channel Addressable Switches eingebaut, damit werden alle Werte im Kopper binär ausgegeben. Über binär abgestufte und über Relais geschaltene Spulen und Kondensatoren werden die entsprechenden Induktivitäten und Kapazitäten zusammengesetzt.
Im Automodus geschieht dies vollautomatisch, so dass durch Verändern des VFOs oder beim Bandwechsel die Antenne stets in Resonanz bleibt.
Im manuellen Modus (Man1) kann auch ohne Transceiver eine Frequenz eingestellt werden, auf deren Basis die Induktivitäts- und Kapazitätswerte automatisch zum Koppler übertragen werden.
Im manuellen Mode (Man2) kann die Induktivität und Kapazität frei gewählt werden. Diese können auch mit der dazugehörigen Frequenz der Referenztabelle hinzugefügt werden (Button „Save“).
Die Kopplersteuerung ist auch für beliebige andere Koppler konfigurierbar, die mit binär abgestuften Induktivitäten und Kapazitäten arbeiten.
Das dazugehörige Board zur Relaissteuerung ist unter Projekte Symmetrischer Antennenkoppler zu finden.
Zwischen Steuerung und Koppler ist nur eine 4 polige Steuerleitung nötig (Spannungsversorgung und 1-Wire Bus), da der Datentransfer zur Relaissteuerung seriell erfolgt. Der 1-Wire Bus ist sehr robust und eignet sich auch für Kabellängen bis 100m.
Die Anzahl, der im Koppler verwendeten Cs und Ls sind frei wählbar, jedoch auf jeweils maximal 11 Bit begrenzt.
Die binäre Ausgabe für C und L kann nach Bedarf separat invertiert werden. Ebenso die Steuerung der C-Position.
Die minimalen Schrittweiten der binär abgestuften Cs und Ls sind frei konfigurierbar.
Die hier beschriebenen Einstellungen werden ebenfalls im CSV-Format auf der SD-Karte gespeichert.
Aufbau in Verbindung mit einem ICOM Transceiver
Beim Einschalten der Kopplersteuerung erscheint für einige Sekunden ein Startfenster, danach wird automatisch der Automode aufgerufen.
Automode:
Im Automode wird die gelesene Frequenz angezeigt. Die aus der Frequenztabelle gelesene Induktivität und die Kapazität wird angezeigt und automatisch zum Koppler übermittelt. Die aus der Frequenztabelle gelesene Kapazitätsposition wird graphisch angezeigt und ebenfalls automatisch zum Koppler übermittelt.
„polling Freq.“ Im Display links oben zeigt an, dass die Frequenz von der Kopplersteuerung vom Transceiver angefordert wird.
Durch Betätigen der Taste Auto wird der manuelle Mode Man1 aufgerufen.
Manueller Mode (Man1):
Wenn ein Transceiver ohne CI-V Schnittstelle verwendet wird, kann im Mode Man1 der Koppler durch manuelle Eingabe der Frequenz abgestimmt werden. Es wird die gerundete Frequenz angezeigt. Durch Betätigen der Tasten F+ oder F- kann die Frequenz eingestellt werden. Die Auswahl der Schrittweite kann durch Betätigen der Taste Step auf 10KHz, 100KHz oder 1000KHz eingestellt werden.
Die Eingabe der Frequenz kann auch direkt über eine Konsole über die USB Schnittstelle erfolgen. (wird weiter unten beschrieben)
Die aus der Frequenztabelle gelesene Induktivität und die Kapazität wird angezeigt und automatisch zum Koppler übermittelt. Die aus der Frequenztabelle gelesene Kapazitätsposition wird graphisch angezeigt und ebenfalls automatisch zum Koppler übermittelt.
Durch Betätigen der Taste Man1 wird der manuelle Mode Man2 aufgerufen.
Manueller Mode (Man2):
Im Mode Man2 kann die Induktivität und die Kapazität des Kopplers manuell eingestellt werden. Durch Betätigen der Tasten L+ oder L- kann die Induktivität eingestellt werden. Durch Betätigen der Tasten C+ oder C- kann die Kapazität eingestellt werden.
Die Schrittweite kann durch das Betätigen der Taste Step gemäß der angezeigten Werte, z.B. 3,125 pF/40nH oder 31,25pF/400nH oder 312,5pF/4000nH eingestellt werden. (die angezeigten Schrittweiten werden aus den eingegebenen "Step min Values" berechnet)
Durch Betätigen der Taste L/C bzw. C/L kann die Position der Kapazität geändert werden.
Die eingestellte Induktivität, Kapazität und die Position der Kapazität wird automatisch zum Koppler übermittelt.
Durch Betätigen der Taste Store werden die eingestellten Werte in die Frequenztabelle auf der SD-Karte geschrieben.
Während des Speichervorganges wird ein Wartefenster angezeigt.
Durch Betätigen der Taste Man2 wird wieder der Automode aufgerufen.
Durch Betätigen der Taste Setup wird das Setupmenü aufgerufen.
Setupmenü:
Durch Betätigen der Taste Next oder Prev kann zwischen den Seiten gewechselt werden.
Durch Betätigen einer entsprechenden Taste ( ) in der Zeile eines Wertes wird das Keyboard aufgerufen, damit kann der ausgewählte Wert editiert werden.
initial_Frequency [Hz] Start-Frequenz des Kopplers ohne CI-V Verbindung
request_interval [ms] Intervall zur Anforderung der Frequenz (Polling)
brightness [5….100] Helligkeit des Displays
restart_delay [ms] Die Steuerung erkennt anhand einer fremden Controller Adresse eine CI-V Verbindung, die von einer externen Quelle mit dem angeschlossenen Transceiver kommuniziert. (Logprogramm, WSJT-X, Winlink…) Um Datenkollisionen zu verhindern wird das automatische polling Kommando zum Anfordern der Frequenz abgebrochen. Es wird die Frequenz nur noch gelesen. (Anzeige „listening Freq.“)
Wenn die externe Kommunikation abgebrochen wird, beginnt die Steuerung nach dieser eingestellten Verzögerungszeit wieder automatisch mit dem Polling.
controller_addr [HEX] Controlleradresse der Kopplersteuerung (sollte stets eine andere Adresse als in einer externen Software verwendete, typische verwendete Adressen sind 00 oder E0, daher hier auf AA konfiguriert)
civ_addr [HEX] CI-V Adresse des Transceivers
scroll_with Schrittweite des Setupmenüs
list_size Anzahl der angezeigten Zeilen/Seite
Durch Betätigen der Taste Exit wird wieder der Automode aufgerufen.
Durch Betätigen der Taste Reset wird ein Neustart initialisiert.
Keyboard:
Der entsprechende Wert kann mit der Tastatur eingegeben werden.
Mit der Taste ⇦ können einzelne Stellen des Wertes gelöscht werden.
Durch Betätigen der Taste Store wird der Wert gespeichert.
Durch Betätigen der Taste Exit wird ohne zu speichern wieder zum Setupmenü zurückgekehrt.
Wie im Setup bereits beschrieben, wenn die Steuerung anhand einer fremden Controller Adresse eine externe CI-V Verbindung erkennt, wird im Display links oben „listening Freq.“ angezeigt. Die Frequenz vom Transceiver wird von der Kopplersteuerung nur noch gelesen, es wird keine Anforderung zum Lesen der Frequenz gesendet. Wenn die externe Kommunikation abgebrochen wird, beginnt die Steuerung nach einer eingestellten Verzögerungszeit (restart_delay) wieder automatisch mit dem Polling. Die Anzeige wechselt wieder auf „polling Freq.“
Steuerung über die Konsole via USB Schnittstelle:
Einstellungen des seriellen Ports eines beliebigen Terminalprogramms:
9600 BAUD, 8 Datenbits, no parity, 1 Stopbit
Beim Start der Kopplersteuerung oder bei der Eingabe von „help“ erscheint folgendes Menü:
Kopplersteuerung von OE2ROL.
p0 | : shows page 0 |
p1 | : shows page 1 |
p2 | : shows page 2 |
p3 | : shows page 3 |
p4 | : shows page 4 |
p5 | : shows page 5 |
ps | : shows Splash screen |
pw | : shows Wait screen |
pc | : shows Config screen |
kb | : shows keyboard |
info | : shows the current state |
bit | : shows the bit pattern of all chips as nibbles |
sf | : sets the frequency in Hz |
dump | : shows the content of the lookup table. Or the dump of the given frequency |
append freq c l io | : append a line in the lookuptable. ! One space ! |
update | : updates the system state |
config | : shows config values |
config key value | : sets the config value for 'key' to 'value' |
config load | : loads config values |
config save | : saves config values |
config dump | : shows the config file |
help | : shows this help page |
reset | : executes a reset |
Eingabe mit 1 Leerzeichen z.B.: sf 3560000 (Frequenz auf 3560000 Hz setzen)
Mit „info“ kann der aktuelle Status der Kopplersteuerung ausgegeben werden.
Info | |
-------------------------------------- | |
VERSION | : V2.1.0 |
DATE | : 2024-09-22 |
Step L,C | : 1 |
Step frequency | : 10 |
Transceiver connected | : 1 |
Request interval | : 1000 |
Tranceiver frequency | : 3560000 |
Tranceiver frequency(r) | : 3560000 |
C | : 94(293.75) |
L | : 138(5520.00) |
IO | : 1 |
IC1 | : 94 : 01011110 |
IC2 | : 8 : 00001000 |
IC3 | : 138 : 10001010 |
Mit „config“ kann die aktuelle Konfiguration der Kopplersteuerung ausgegeben werden.
CONFIG VALUES | |
------------- | |
initial_frequency* | : 14150000 |
request_interval* | : 1000 |
brightness* | : 70 |
restart_delay* | : 5000 |
controller_addr*(HEX) | : AA |
civ_addr*(HEX) | : 7A |
invert_koppler_output_c* | : 0 |
invert_koppler_output_l* | : 0 |
invert_koppler_output_io* | : 0 |
scroll_width* | : 6 |
list_size* | : 6 |
step_bit_width_l* | : 11 |
step_bit_width_c* | : 11 |
step_c_min_value* | : 3.125 |
step_l_min_value* | : 40.000 |
pin_onewire* | : 23 |
ic1*(HEX) | : 29 7A 8F 1B 0 0 0 7C |
ic2*(HEX) | : 29 8A 8E 1B 0 0 0 C3 |
ic3*(HEX) | : 29 2A 8E 1B 0 0 0 9F |
CHIP_SELECT_PIN | : 53 |
SERIAL_SPEED_SERIAL1 | : 9600 |
SERIAL_SPEED_SERIAL2 | : 9600 |
SERIAL_SPEED_SERIAL3 | : 9600 |
STEP_LC_INITIAL_VALUE | : 1 |
STEP_FREQUENCY_INITIAL_VALUE | : 10 |
FILENAME_FREQ | : freqtab.csv |
FILENAME_CONFIG | : conf.csv |
*) value can be set with config command |
Die Werte die mit * gekennzeichnet sind können geändert werden.
Eingabe mit 1 Leerzeichen dazwischen z.B.: config brightness 80
Speichern: config save
Beschreibung der Configwerte:
initial_frequency* | Startfrequenz ohne CI-V Verbindung |
request_interval* | Intervall [ms] zum Anfordern der Frequenz |
brightness* | Helligkeit des Displays |
restart_delay* | Verzögerungszeit [ms] bis zur Rückkehr zur automatischen Frequenzanforderung |
controller_addr*(HEX | Controlleradresse der Kopplersteuerung |
civ_addr*(HEX) | CI-V Adresse des Transceivers |
invert_koppler_output_c* | Bitausgang C invertieren 0 norm, 1 inv |
invert_koppler_output_l* | Bitausgang L invertieren 0 norm, 1 inv |
invert_koppler_output_io* | Bitausgang C-Pos invertieren 0 norm, 1 inv |
scroll_width* | Scrollschrittweite im Setupmenü am Display |
list_size* | Anzahl der Zeilen/Seite im Setupmenü am Display |
step_bit_width_l* | Bitbreite C Bitausgang max. 11 Bit |
step_bit_width_c* | Bitbreite L Bitausgang max. 11 Bit |
step_c_min_value* | Min C Schrittweite [pF] (3 Nachkommastellen) |
step_l_min_value* | Min L Schrittweite [nH] (3 Nachkommastellen) |
pin_onewire* | Pinnummer für den 1-Wireausgang am Arduino |
ic1*(HEX) | 64Bit HEX Adresse IC1 |
ic2*(HEX) | 64Bit HEX Adresse IC2 |
ic3*(HEX) | 64Bit HEX Adresse IC3 |
Die 64Bit HEX- Adressen der 1-Wire 8-Channel Addressable Switches DS2408S sind Werksseitig fix gesetzt und müssen daher aus den jeweils eingebauten IC´s ausgelesen werden.
Dazu kann das Arduinoscipt „DS2408_Switch_Adresse_auslesen_V1.0“ verwendet werden.
- Zum Auslesen der Adresse von IC1 muss der Jumper J1 am Relaistreiberboard gesetzt sein, alle anderen abgezogen.
- Zum Auslesen der Adresse von IC2 muss der Jumper J2 am Relaistreiberboard gesetzt sein, alle anderen abgezogen.
- Zum Auslesen der Adresse von IC3 muss der Jumper J3 am Relaistreiberboard gesetzt sein, alle anderen abgezogen.
- Die im Serial Monitor ausgegebenen HEX Adressen müssen in die Settings entsprechend den ICs eingetragen und gespeichert werden.
Die SD-Karte für die Frequenztabelle und den Configsettings muss in Fat32 formatiert sein. Eine Frequenztabelle ist im Downloadfile verfügbar.
Die Graphikdatei für das Nextion Display (NX4024_Koppler_Vx.x.x.tft) ist ebenfalls im Downloadfile verfügbar. Diese muss einmalig mit einer SD- Karte in das Display eingespielt werden.
Arduinoscript, Graphikdaten, Defaultwellenlängentabelle, Bedinungsanleitung sind im Downloadbereich verfügbar.
Die Schaltungsunterlagen und eine Stückliste sind ebenfalls im Downloadbereich verfügbar.