Es hat mich mal wieder in den Fingern gekribbelt. Nachdem wir die vergangenen zwei Jahre nur mit unserem neuen Haus beschäftigt waren, musste ich mal wieder ein kleines Board entwickeln.
Ich habe ja wieder mit dem Amateurfunk angefangen und zwei Transceiver von Icom gekauft. Die Antennenanlage lässt allerdings sehr zu wünschen übrig. Ich will verschiedene Antennen aufbauen, für Kurzwelle vorläufig nur Mono- und Dipole. Da nicht jede Antenne ein eigenes Kabel bekommen kann, werde ich also einen Antennenumschalter installieren müssen, der von der Station aus elektrisch schaltbar sein soll. Sowas kann man fertig kaufen oder auch selberbauen, aber auch die gekauften brauchen eine Steuerung.
Zur Kommunikation zwischen Antennenumschalter und Shack bietet sich die RS485 Schnittstelle an. Sie setzt auf einer asynchronen seriellen Schnittstelle auf und unterstützt Leitungslängen von vielen hundert Metern (bis 1,2 km nach der Norm) bei Baudraten bis 12 MBd. Durch die Verwendung eines Leitungspaars im Gegentakt wird eine hohe Störsicherheit erreicht. Ein Leitungspaar gestattet die Kommunikation im Halbduplex-Mode, für Vollduplex sind zwei Leitungspaare nötig. RS485 ermöglicht auch den Aufbau eines Bussystems, bei dem bis zu 32 Teilnehmer angeschlossen werden können. Bei der hier geplanten Antennenumschaltung könnten also mehrere Antennenumschalter über ein einziges Leitungspaar angeschlossen werden.
Weil ich gerade noch einige Exemplare des Mikrocontrollers in der Kiste liegen hatte, habe ich ein kleines Board mit dem ATtiny1634 und einem RS485-Transceiver gebaut. Hier die KiCad 3D-Vorschau:


Da die Umschaltrelais des Antennenschalters typischerweise mit 12V arbeiten, ist auf der Oberseite ein einfacher Linearregler implementiert. Es passen 3V- und 5V-Typen. Da der 1634 bei 3V nur bis 8 MHz getaktet werden kann, habe ich auf dem Prototypen 5V-Regler eingelötet. Damit läuft der Controller mit bis zu 12 MHz. Hier ist der Schaltplan, es gibt keinerlei erwähnenswerte Besonderheiten.
In der Wahl des Kommunikationsprotokolls ist man ziemlich frei, aber warum etwas eigenes erfinden, wenn es schon weitverbreitete Standards gibt. Ich habe mich für den Modbus entschieden, der auch beispielsweise bei der Kommunikation mit PV-Wechselrichtern verwendet wird. Es gibt ein schönes Utility für Windows, QModMaster, das Modbus-Nachrichten senden und empfangen kann. Das war sehr hilfreich bei der Implementierung des Modbus Protokolls in den ATtiny1634. Ich bin noch nicht komplett mit der Implementierung fertig, daher will ich die Software im Moment noch nicht hier veröffentlichen. Das hole ich nach, wenn’s fertig ist. Da die wesentlichen Dinge aber bereits funktionieren, hier mal nur kurz der Ressourcenverbrauch:
Program Memory Usage : 2892 bytes 17,7 % Full
Data Memory Usage : 85 bytes 8,3 % Full
EEPROM Memory Usage : 2 bytes 0,8 % Full
Daran wird sich im Endausbau nicht mehr viel ändern. Vielleicht braucht er mit weiteren Funktionen 25 – 30% Flash Speicher, aber die vorhandenen 16 kB werden auf jeden Fall ausreichen. Wenn genügend Platz bleibt, werde ich die Sende- und Empfangspuffer etwas vergrößern, was dann den Datenspeicher Verbrauch um ein paar Prozent ansteigen lassen wird. Auch hier wird das 1 kB SRAM allemal ausreichen.
Über ein 25m Kabel lief die Kommunikation bei 38 kBd wie erwartet mehrere Stunden fehlerfrei, allerdings kann QModMaster auch leider nur eine Nachricht pro Sekunde absetzen. Das ist also nicht wirklich ein hoher Durchsatz. Auf der PC-Seite verwende ich übrigens einen „WaveShare USB TO RS232 RS485 TTL Industrial Isolated Converter“, der bisher zuverlässig funktioniert.