Automatischer Antennen-Umschalter für ICOM-Geräte
(aus Funkamateur 09/2016)




Antennenumschalter Gehäuse
Gesteuert wird er durch die bei fast allen ICOM-Geräten identische CI-V Schnittstelle [1], [2].
Es handelt sich hierbei um eine serielle Schnittstelle für die Kommunikation der Geräte untereinander, mit einem PC oder anderer Peripherie. Die Übertragung in beide Richtungen erfolgt über eine 2-polige Leitung.
Man kann darüber fast alle Geräteparameter fernsteuern oder abfragen.
Die Schaltung fragt die CI-V Schnittstelle 5 x pro Sekunde ab, und wertet die Frequenzdaten, die der Transceiver sendet aus.
Abgefragt wird hier die Frequenz, und abhängig von letzterer werden 13 Bänder geschaltet.
Auf Transceiverseite muß man "CI-V Transceive" auf on setzen, Baud Rate auf Auto, die Adresse braucht nicht verändert zu werden.
Zur Schaltung:
Das Serielle Signal wird mit T1 verstärkt und dann wieder mit T2 invertiert. Man darf hier keinesfalls Pegelwandler wie z.B Max232 in der Übertragungsstrecke haben, da diese das Signal erneut invertieren, und man bekommt seltsame Daten über die Schnittstelle. Die Befehle werden direkt von der IS über R4 an den TRX über die selbe Leitung gesendet.

Die Ausgänge gehen bei folgenden Frequenzen auf high:
MHz        Pin (Atmega8)
1-2        C0
3-4        C1
7-8        C2
10-11    C3
14-15    C4
18-19    C5
20-22    D3
24-25    D4
26-30    D5
50-55    D6
70-71    D7
140-150    B6
420-450 B7

Über die 13 Schaltausgänge kann man durch Verknüpfung der Bänder mit den Antennenrelais mehrere Antennen Schalten, in meiner Schaltung sind es 4 Relais, ich hab 10A-Typen verwendet.
Man kann dann beispielsweise Relais 1 (3-Element 3-Bander) auf 14,21 und 28MHz legen 144 und 430MHz auf eine 2-Band VHF/UHF 
Antenne und 3,5/7/10/18/24MHz auf die Windom usw. Nicht geschaltete Antennenausgänge liegen automatisch auf Masse.
Möchte man die Schaltausgänge unabhängig von der Transceiver-Frequenz schalten, erfolgt das durch einen längeren Druck (> 0,5s) auf S1, (die Auswertung der Dauer erfolgt erst beim loslassen des Tasters) man befindet sich dann im manuellen Modus und kann durch kurzes Drücken auf S1 die Bänder weiterschalten. Erneutes langes Drücken beendet den manuellen Modus und es gelten wieder die am Transceiver eingestellten Frequenzen.
Für VHF/UHF sollte man Koax-Relais nehmen und die Leiterbahnen "UKW-tauglich" ausführen.
Die Schaltung inclusive Frequenzanzeige hab ich in einem nur 168 x 103 x 56 mm kleinen Gehäuse untergebracht (PROMA 1030).
Die Stromversorgung erfolgt mit 12V (8-20V)

Antennenumschalter DL2IAO
Basic-Programm (Bascom-AVR)




'Fuses:
'SUT_CKSEL: INTROSC_8MHZ_6CK_64MS

$regfile = "m8def.dat"
$crystal = 8000000
$baud = 19200


Dim I As Byte
Dim S(17) As Byte
Dim X As Byte
Dim Band As Byte
Dim Mhz As String * 2
Dim Mhz1 As String * 1
Dim Mhz2 As String * 2
Dim Khz As String * 2
Dim Khz1 As String * 1
Dim Khz2 As String * 1
Dim Fr As Single
Dim Fr1 As Single
Dim Tdauer As Byte
Dim Address As Byte

Const Anfang =&HFE                                        
Const Extaddr = &HE0
Const Getfrq = &H03
Const Ende = &HFD

I = 1


Taster1 Alias Pind.2
Config Taster1 = Input
Taster1 = 1


Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Config Portc.3 = Output
Config Portc.4 = Output
Config Portc.5 = Output
Config Portd.3 = Output
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output
Config Portb.6 = Output
Config Portb.7 = Output


On Int0 Taster_ein
Config Int0 = Rising
Enable Int0

Config Com1 = Dummy , Synchrone = 0 , Parity = Disabled , Stopbits = 1, Databits = 8 , Clockpol = 0

Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5

Config Lcd = 16 * 2

Cursor Off

Cls
Cursor Off
Upperline
Lcd "DL2IAO Antenn-  "
Lowerline
Lcd "umschalter 5.0  "
Wait 1
Cls


On Urxc Onrxd
 Enable Urxc
 Enable Interrupts
 Address = &H00



'---------------------------CAT-Befehl senden
Do
   Print Chr(anfang);
   Print Chr(anfang);
   Print Chr(address);
   Print Chr(extaddr);
   Print Chr(getfrq);
   Print Chr(ende);

   Waitms 200
   Locate 1 , 10
   Lcd "CI-V   "
   Gosub Relais
Loop

'---------------------------18 Bit vom RTX empfangen
Onrxd:
 X = Udr
 Incr I
 If I < 18 Then
 S(i) = X
 Else
 I = 18
 End If
Return

'---------------------------Wenn Taster gedrückt

Taster_ein:

Gosub Tastdauer

If Tdauer > 50
Then                                        
'Wenn Taster lange
   Disable Urxc
   Gosub Machwas
Else
   Enable Urxc
End If
Return

'---------------------------Wenn Taster >0,5s gedrückt, manuell

Machwas:
Locate 1 , 10
' für manuell
Lcd "manuell"
Do                                                         
' Bänder können mit Taster weitergeschaltet werden,
 Disable
Int0                                              
' unabhängig vo TRX-Frequenz, erneut lange drücken,
 Locate 1 , 3                                              
' für normale Funktion
 Waitms 10
  If Taster1 = 1 Then                                      
'Taster gedrückt

   Gosub Tastdauer

      If Tdauer > 50
Then                                  
'Wenn Taster >0,5s verlasse Schleife
        Enable Int0
        Enable Urxc : Return
      Else
        Band = Band + 1
        If Band = 14 Then Band = 1
         Gosub Relais
        End If
      End If


   Enable Int0
   Enable Urxc

Loop
Return

'---------------------------Relais schalten + LCD Anzeige
Relais:
Mhz = Hex(s(17)) + Hex(s(16))

Fr = Val(mhz)

'---------------------------Frequenzen Bänder zuordnen
Select Case Fr
 Case 1 To 2
 Band = 1
 Case 3 To 4
 Band = 2
 Case 7 To 8
 Band = 3
 Case 10 To 11
 Band = 4
 Case 14 To 15
 Band = 5
 Case 18 To 19
 Band = 6
 Case 20 To 22
 Band = 7
 Case 24 To 25
 Band = 8
 Case 26 To 30
 Band = 9
 Case 50 To 55
 Band = 10
 Case 70 To 71
 Band = 11
 Case 140 To 150
 Band = 12
 Case 420 To 450
 Band = 13
End Select


'--------Ausgänge schalten Port B, C und D für Relais

Select Case Band
 Case 1
 Portc = &B00000001 : Portd = &B00000000 : Portb = &B00000000       'C0

 Case 2
 Portc = &B00000010 : Portd = &B00000000 : Portb = &B00000000       'C1

 Case 3
 Portc = &B00000100 : Portd = &B00000000 : Portb = &B00000000       'C2

 Case 4
 Portc = &B00001000 : Portd = &B00000000 : Portb = &B00000000       'C3

 Case 5
 Portc = &B00010000 : Portd = &B00000000 : Portb = &B00000000       'C4

 Case 6
 Portc = &B00100000 : Portd = &B00000000 : Portb = &B00000000       'C5

 Case 7
 Portd = &B00001000 : Portc = &B00000000 : Portb = &B00000000       'D3

 Case 8
 Portd = &B00010000 : Portc = &B00000000 : Portb = &B00000000       'D4

 Case 9
 Portd = &B00100000 : Portc = &B00000000 : Portb = &B00000000       'D5

 Case 10
 Portd = &B01000000 : Portc = &B00000000 : Portb = &B00000000       'D6

 Case 11
 Portd = &B10000000 : Portc = &B00000000 : Portb = &B00000000       'D7

 Case 12
 Portb = &B01000000 : Portc = &B00000000 : Portd = &B00000000       'B6

 Case 13
 Portb = &B10000000 : Portc = &B00000000 : Portd = &B00000000       'B7





End Select


'---------------------------LCD-Ausgabe

Khz = Hex(s(14))
Khz1 = Left(khz , 1)
Khz2 = Right(khz , 1)

 Locate 1 , 1
 Lcd "Band " ; Band ; " "

 If S(17) > 0
Then                                         
'Führende "0" in Leerz. umw.
  Mhz1 = Str(s(17))
 Else
  Mhz1 = " "
 End If


 Mhz2 = Hex(s(16))
 If Left(mhz2 , 1) = "0" Then                              
'Führende "0" in Leerz. umw.
   Mhz2 = " " + Right(mhz2 , 1)
 Else
 End If
 Locate 2 , 1
 Lcd Mhz1 ; Mhz2 ; "." ; Hex(s(15)) ; Khz1 ; "." ; Khz2 ; Hex(s(13)) ; " MHz "
 I = 1
Return


'--------------------------- Zeit Taster geschlossen ermitteln

Tastdauer:
  Tdauer = 0
   Do
   Incr Tdauer
      Waitms 10
   Loop Until Taster1 = 0
Return






Besucher: 953

 


An den Seitenanfang E-Mail an den Autor Homepage