![]() |
Wenig Aufwand bereitet die Steuerung des Senders, als Platine eignet sich auch ein Lochraster |
Die Fuchsjagd ist nicht nur eine sommerliche Beschäftigung für Grünröcke, auch Funkamateure pirschen gern durch das Dickicht. Zum Glück geschieht das ohne Flinte und Gewehr, den Vierbeinern wird bei einer Amateurfunk-Fuchsjagd kein Haar gekrümmt. Ausgestattet mit Empfänger, Antenne und Kopfhörer geht es mit viel Spaß in Wald und Feld. Ob auf 2m oder 80m, gut versteckt im Unterholz wechseln sich die Füchse beim Senden ab, ganz nach dem Motto: "Jeder darf einmal". Ziel der Fuchsjagd ist es, die versteckten Sender (Füchse) möglichst schnell zu peilen und zu orten. Und manchmal sind bei einem Fuchs kleine Aufgaben versteckt, die es zu lösen gilt.
In der Regel werden fünf CW-Sender im Grün versteckt, die sich beim Senden jede Minute abwechseln, genau gesagt geht jeder der Sender alle fünf Minuten für eine Minute auf Sendung. Zur Unterscheidung der Sender ist jedem ein unverwechselbares Rufzechen zugeordnet. Der erste Fuchs besitzt das Rufzeichen MOE, der zweite MOI, der dritte MOS, der vierte MOH, der fünfte MO5. Im Morsecode sieht das so aus: Die Morsekennung beginnt mit "Dah Dah" - das Morsezeichen für den Buchstaben M, dann folgt "Dah Dah Dah" -- der Buchstabe O und das Rufzeichen des ersten Fuches endet mit einen kurzen "Did", das ist ein E. Der zweite Fuchs ist ebenfalls gut zu erkennen, denn dieser sendet nach M und O zwei Punkte "Did Did", das ist der Buchstaben I. Der dritte Fuchs sendet M und O, gefolgt von drei Punkten, das ist das S. Wie es weitergeht, wissen Sie sicher schon: Der vierte Fuchs sendet wieder M, dann O und danach folglich vier Punkte, also ein H. Zuletzt folgt der fünfte Fuchs mit M, O und 5 Punkten, das ist die Ziffer 5. Diese prägnanten Rufzeichen wurden gewählt, um allen Interessierten, ob SWL, Funkamateur oder Otto Normalbürger die Möglichkeit zu geben, an Fuchsjagden teilzunehmen. Die Praxis zeigt, dass dieses System hervorragend funktioniert.
Winterzeit - Bastelzeit. In der kalten Jahreszeit pirscht kaum jemand durch das Unterholz. Dafür ist es eine prima Zeit, die nächste Fuchsjagd vorzubereiten. Zum Beispiel durch den Aufbau eines geeigneten Empfängers oder einiger Sender. Die hier beschriebene kleine Schaltung "Foxcontrol" ist eine Zeitsteuerung für Fuchsjagdsender und hält sich exakt an das MOE-System. Welchen Fuchs er "spielen" soll, merkt Foxcontrol anhand des gesteckten Jumpers F1 bis F5. Sie bestimmen, ob die Schaltung als Fuchs 1, 2, 3, 4 oder 5 agiert. Natürlich darf nur ein Jumper gesteckt sein, damit der kleine Mikrocontroller eindeutig im Bilde ist. Der Jumper kann als Drahtbrücke ausgeführt werden und legt den betreffenden Eingang des Mikrocontrollers auf Massepotenzial. Zur Spannungsversorgung kommt ein 78L05 im Transistorgehäuse zum Einsatz, der maximal 100 mA leistet. Getaktet wird der 8051-Abkömmling, ein Atmel AT89C2051 Mikrocontroller, mit stattlichen 12 MHz. Als einziges Bedienungselement dient ein Taster, der die Schaltung mit weiteren Sendern zeitlich synchronisiert. Für eine komplette Ausstattung zur Fuchsjagd wird man Foxcontrol fünf Mal aufbauen. Zum Starten und Synchronisieren der Füchse drückt man die fünf Starttaster der Sender möglichst gleichzeitig einmal kurz herunter. Damit werden die Füchse zeitgleich gestartet. Es reicht aber aus, die Füchse nebeneinander zu legen und die Taster so schnell wie möglich nacheinander zu betätigen.
| Das Schaltbild ist nicht allzu umfangreich: Kernelemente sind der Prozessor und die RTC PCF8583 | ![]() |
Und damit kommen wir zur Zeitsteuerung. Damit der Mikrocontroller weiß, was die Stunde (besser gesagt, die Minute) geschlagen hat, bedient er sich eines kleinen Zeitgebers, einer Real Time Clock (RTC). Zum Zeitgeber gehört der Quarz von 32,768 kHz und die variable Kapazität. Die RTC stammt von Philips und wird über zwei Leitungen angesprochen, SCL und SDA. I2C heißt das Protokoll und SCL ist für den Sende/Empfangstakt verantwortlich, während SDA die Dateninformation transportiert. SCL und SDA sind zudem auf den Stecker SL1 heraus geführt, ebenso wie +5V und GND. Damit ist es möglich, die Steuerung leicht um weitere I2C-Komponenten, die eventuell auf der Senderplatine untergebracht sind, zu erweitern. Die Schaltung besitzt drei wesentliche Ausgänge, PTT, /PTT und CW-OUT. PTT ist die ganze Zeit auf High-Pegel, während Morsezeichen gesendet werden. Das Signal /PTT verhält sich umgekehrt und wird während einer Aussendung auf Masse gezogen. Beide Signale sind nicht für Fuchssender bestimmt, sondern für andere Anwendungen in Verbindung mit üblichen Funkgeräten. CW-OUT dient speziell dem Fuchs und tastet ihn im Takt der CW-Zeichen. Sendet der Mikroprozessor ein Zeichen, setzt er CW-OUT auf High-Pegel. Im Ruhezustand ist CW-OUT daher Low. Mit CW-OUT kann man über einen Basiswiderstand direkt die Basis eines Transistors bedienen, der den Fuchs "on the air" bringt.
|
Der Bestückungsplan zeigt u.a. die Belegung der beiden 4-poligen Stecker |
| Kaum größer als eine Streichholzschachtel: Das kompakte Layout | |
Die kleine Schaltung ist schnell bestückt. Sie kommt mit einer einseitigen Platine und ohne Drahtbrücken aus. Der Starttaster sollte so montiert werden, dass er aus dem Gehäuse herausschaut. Dann muß man es nicht öffnen, um Foxcontrol zu synchronisieren.
...wurde in Basic geschrieben und ist dank der Subroutinen sehr übersichtlich. Das folgende Listing zeigt unter anderem, wie man recht einfach Morsezeichen erzeugen kann.
Rem Steuerung für Fuchsjagdsender
Rem Bascom Compiler für 8051, Version 1.0.0.16
Rem by Michael Woeste, dg5dbz
' Hardware:
' Jumper, die bestimmen, welcher Fuchs es ist:
' P1.7 gesetzt für Fuchs 1 (sendet 1. Minute)
' P1.6 gesetzt für Fuchs 2 (sendet 2. Minute)
' P1.5 für Fuchs 3
' P1.4 für Fuchs 4
' P1.3 für Fuchs 5
' I2C:
' SDA auf P1.1
' SCL auf P1.0
' CW-Ausgabe auf P1.2
' Optionale, positiv arbeitende PTT auf P3.4
' Optionale PTT negativer Logik: /PTT an Pin P3.5
' Fuchs-Synchronkabel:
' Fuchs-Synchrontaster (Schliesser gegen Masse) an P3.7
' alle Füchse mit einem Kabel gleichzeitig synchronisieren
' oder mehrere Taster flott hintereinander drücken
' PCF8583
' Signal A0 auf GND
' mit 12 MHz getaktet
$crystal = 12000000
Config Scl = P1.0 ' hier ist SCL angeschlossen
Config Sda = P1.1 ' und hier SDA
Dim Fuchs1 As Bit
Dim Fuchs2 As Bit
Dim Fuchs3 As Bit
Dim Fuchs4 As Bit
Dim Fuchs5 As Bit
Dim Dummy As Bit
Dim Wadr As Byte , Radr As Byte ' Schreib- u. Leseadresse PCF8583
Dim On_air As Bit ' Flag: Bin auf Sendung
Dim Sekunde As Byte , Minute As Byte ' für Zeit
Dim Temp As Byte ' für alles und nichts
Dim D As Byte , I As Byte ' in Rufz_senden benötigt
'bestimmt, welcher der 5 Füchse das ist
Declare Sub Senden_an
Declare Sub Senden_aus
Declare Sub Uhr_stellen
Declare Sub Hole_zeit
Declare Sub Rufz_senden
Declare Sub Readloop ' wird von Rufz_senden aufgerufen
'Variablen-Initialisierungen
Dummy = 0
Fuchs1 = 0 ' Flag: welcher Fuchs bin ich (1-5) ?
Fuchs2 = 0
Fuchs3 = 0
Fuchs4 = 0
Fuchs5 = 0
Wadr = &B10100000 ' 8583 mit A0 auf 0
Radr = &B10100001 ' 8583 mit A0 auf 0 !!
'Programm Start
'Initialisierungen
P1 = 255 ' auf Eingang schalten
Reset P1.2 ' cw aus
Call Welcher_fuchs ' Abfrage Jumper
Call Senden_aus ' zusätzliche PTT aus
'nur zum Test:
'Set Fuchs5
'Minute = 4
'Hauptschleife
Do
If P3.7 = 0 Then
Call Uhr_stellen ' falls Sync-Signal auftritt
End If
Call Hole_zeit
If Fuchs1 = 1 Then ' falls ich der Fuchs 1 bin
If Minute = 0 Then ' falls erste Minute
Set On_air ' gehe auf Sendung
Call Senden_an ' zusätzlich PTT schalten
Else ' falls nicht
Reset On_air ' bin nicht dran
Call Senden_aus ' PTT aus
End If
End If
If Fuchs2 = 1 Then
If Minute = 1 Then
Set On_air
Call Senden_an
Else
Reset On_air
Call Senden_aus
End If
End If
If Fuchs3 = 1 Then
If Minute = 2 Then
Set On_air
Call Senden_an
Else
Reset On_air
Call Senden_aus
End If
End If
If Fuchs4 = 1 Then
If Minute = 3 Then
Set On_air
Call Senden_an
Else
Reset On_air
Call Senden_aus
End If
End If
If Fuchs5 = 1 Then
If Minute = 4 Then
Set On_air
Call Senden_an
Else
Reset On_air
Call Senden_aus
End If
End If
If Minute = 5 Then
Call Uhr_stellen ' sobald der 5. Fuchs fertig ist, alle Uhren auf 0:0
End If
If On_air = 1 Then
' Kennung geben
Call Rufz_senden
Wait 1 ' eine Sekunde warten zwischen 2 Rufzeichen
End If
Loop Until Dummy = 1 ' endlose Schleife
End
' liest Jumper aus
Sub Welcher_fuchs
If P1.7 = 0 Then Set Fuchs1
If P1.6 = 0 Then Set Fuchs2
If P1.5 = 0 Then Set Fuchs3
If P1.4 = 0 Then Set Fuchs4
If P1.3 = 0 Then Set Fuchs5
End Sub
' zusätzliche PTT schalten
Sub Senden_an
Set P3.4
Reset P3.5
End Sub
' zusätzliche PTT aus
Sub Senden_aus
Reset P3.4
Set P3.5
End Sub
' Füchse haben die Rufzeichen MOE (Fuchs1) bis MO5 (Fuchs5)
Sub Rufz_senden ' CW-Ausgang ist P1.2
'erst MO senden
Restore Allfox: ' m,o gilt für alle Füchse
For I = 1 To 24
Call Readloop ' Read Data and Set/Reset Pin P1.2
Next
' MO gesendet, jetz kommt es für jeden Fuchs getrennt
' E (einmal kurz) für Fuchs1
If Fuchs1 = 1 Then
Restore Fox1
For I = 1 To 4 ' e und dreimal pause = 4 Ziffern in DATA
Call Readloop
Next
End If
' I (zweimal kurz) für Fuchs2
If Fuchs2 = 1 Then
Restore Fox2
For I = 1 To 6
Call Readloop
Next
End If
' S (dreimal kurz) für Fuchs3
If Fuchs3 = 1 Then
Restore Fox3
For I = 1 To 8
Call Readloop
Next
End If
' H (viermal kurz) für Fuchs4
If Fuchs4 = 1 Then
Restore Fox4
For I = 1 To 10
Call Readloop
Next
End If
' 5 (fünfmal kurz) für Fuchs57
If Fuchs5 = 1 Then
Restore Fox5
For I = 1 To 12 ' 12 = Anzahl der Ziffern in DATA
Call Readloop
Next
End If
End Sub
' Wird mehrfach von Rufz_senden aufgerufen
' liest DATA und setzt / löscht CW-Out Pin P1.2
Sub Readloop
Read D
If D = 1 Then
Set P1.2
Else
Reset P1.2
End If
Waitms 100 ' CW-Geschwindigkeit für ein e
End Sub
' Stellt Fuchs auf 0:00 Uhr
' z.B. nachdem der 5.Fuchs gesendet hat
Sub Uhr_stellen
I2cstart 'generate start
I2cwbyte Wadr 'write address
I2cwbyte 0 'select control register
I2cwbyte 8 'set year and day bit for masking
I2cstop 'generate stop
I2cstart 'generate start
I2cwbyte Wadr 'write mode
I2cwbyte 2 'select seconds Register
I2cwbyte 0 'write seconds
I2cwbyte 0 'write minutes
I2cwbyte 0 'Write Hours
I2cwbyte 0 'write days
I2cwbyte 0 'write months
I2cstop
End Sub
Sub Hole_zeit ' liest Minute und Sek. aus Uhr
I2cstart 'generate start
I2cwbyte Wadr 'write addres of PCF8583
I2cwbyte 2 'select second register
I2cstart 'generate repeated start
I2cwbyte Radr 'write address for reading info
I2crbyte Sekunde , Ack 'read seconds
I2crbyte Minute , Ack 'read minutes
I2crbyte Temp , Ack 'read hours
I2crbyte Temp , Ack 'read year and days
I2crbyte Temp , Nack 'read weekday and month
I2cstop 'generate stop
Sekunde = Makedec(sekunde)
Minute = Makedec(minute)
End Sub
' Hier die Definitionen für MOE bis MO5
' Bei Allfox ist MO codiert, der Rest beim jeweiligen Fox1..5
Allfox:
Data 1 , 1 , 1 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 1 , 1 , 1 , 0 , 1 , 1 , 1 , 0 , 1 , 1 , 1 , 0 , 0 , 0
Fox1:
Data 1 , 0 , 0 , 0 'moe
Fox2:
Data 1 , 0 , 1 , 0 , 0 , 0 'moi
Fox3:
Data 1 , 0 , 1 , 0 , 1 , 0 , 0 , 0 'mos
Fox4:
Data 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 0 , 0 'moh
Fox5:
Data 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 0 , 0 'mo5
End
Und hier geht es zum Download.
Für dieses Projekt biete ich einen Programmierservice an.