AT90S8515PDIP

AVR-Microcontroller
im Ham-Shack

ATMEL Controller

deutsch
deutsche Seiten

Startseite

AVR-Projekte

APRS-
Telemetrie-
Interface

APRS-
Thermometer

GPS-Simulator

AVR-Kreis

AVR-Programmierer

AVR-Megaprog

RCEN-Blower

Morsetasten     FM-Keyer
    Microbug
    Nanobug
    Picobug


Amateurfunk

DARC-OV R01

Clubstn. DL0DX

Relais DB0SJ

DL-Contest Journal


Schule

Kombiampel

      GPS-Simulator

Der GPS-Simulator

Bei der Entwicklung meines AVR-UI-TNCs bzw. Trackers für APRS-Betrieb brauchte ich eine Quelle für GPS-Daten. Es war mir zu früh, einen GPS-Empfänger zu kaufen, also musste ich einen GPS-Simulator bauen. Davon gibt es schon mehrere im Internet (z.B. bei DJ7OO), aber mit anderen Controllern. Ich hatte Lust, so ein Ding selber zu bauen und zu programmieren, denn dann kann es genau das, was ich haben möchte.

Mittlerweile habe ich eine GPS-Maus, deshalb konnte ich die alten, per Hand erzeugten Datenätze des Simulators durch echte Datensätze ersetzen.

Die Eigenschaften

Der Simulator sendet alle ca. 16 Sekunden einen GPS-Datensatz vom Typ $GPRMC mit 4800Bd über die Schnittstelle an den PC oder den APRS-Tracker. Die Datensätze haben zwar einen realen Zeitabstand von 20s, aber zum Testen werden sie in schnellerer Folge, 16s, ausgegeben. Nach etwa einer Stunde schaltet sich das Gerät von selber ab. Es ist nur zu Testzwecken gedacht und nach dieser Zeit ist hoffentlich der Test beendet. Aus- und wieder Einschalten startet eine weitere Runde.

Die Daten stehen direkt im Programmspeicher und lassen sich nicht verändern, ausser durch Neuprogrammierung des Controllers. Zur Zeit sind 24 Datensätze vorhanden, die eine Fahrt durch Düsseldorf wiederholen. Die Route wird mehrfach durchfahren. Mehr Datensätze passen nicht in den Speicher des Controllers.

Als Zieladresse der Datenpakete im Tracker bzw. Modem sollte GPRMC eingetragen werden. Das Symbol ist dann ein Auto. Der Digipfad sollte nicht zu lang sein, es sind schließlich nur Testdaten.

Da die Uhrzeit der simulierten Fahrt nicht mit der realen Uhrzeit übereinstimmt, kann es zu Verwirrung der Software auf dem PC kommen.

Die Schaltung

Die Schaltung ist denkbar einfach. Sie basiert auf einem Atmel AT90S2313 Microcontroller. Der Controller hat eine serielle Schnittstelle, über die Daten ohne großartige Software ausgegeben werden können. Dazu einen 16 Bit Timer, um die langen Zeitintervalle, 16s Takt, ohne Aufwand zu erzeugen.

Die negative Spannung für die serielle Schnittstelle entnehme ich aus der TXD-Leitung des angeschlossenen Gerätes, PC oder Tracker. Wenn der Tracker schon aus der Schnittstelle des PC versorgt wird, reicht die Art der Stromversorgung unter Umständen nicht. Ein Empfang von Daten ist nicht vorgesehen. Beim Senden wird, je nach Bitzustand, die Betriebsspannung des Simulators auf die RXD-Leitung des angeschlossenen Gerätes geschaltet. Die Bezeichnung der beiden Leitungen im Schaltbild ist so gemeint. Der Widerstand R3 ist mit 2,2k eventuell zu gross, dann kommt keine Datenübertragung zustande, abhängig von den Eigenschaften der Schnittstelle im angeschlossenen Gerät. Ersatz durch einen 1k Widerstand sollte das Problem lösen.

Der Schalter S1 schaltet den Simulator ein. Es ist wichtig, dass die Betriebsspannung des Controllers im ausgeschalteten Zustand kurzgeschlossen wird, natürlich nicht die Batteriespannung, siehe Schaltbild. Der Prozessor wacht sonst eventuell nicht aus seinem Tiefschlaf auf, wenn der Simulator eingeschaltet wird. Näheres dazu im Softwareteil.

Die Stromversorgung geschieht durch zwei kleine Batteriezellen. Die Spannung von 3V reicht für diese Anwendung. Der Controller arbeitet ab 2,7V. Der Stromverbrauch ist mit 0,7mA äusserst gering. Nach etwa einer Stunde schaltet sich der Simulator von selbst ab. Es ist also nicht zu befürchten, dass die Batterie jemals durch den normalen Betrieb leer wird. Aufgrund der Stromverhältnisse hat sich in der Praxis der Ein- Ausschalter als überflüssig erwiesen. Ein einfacher Reset-Taster zwischen dem Reset-Pin, Pin 1, und Masse hätte als Ein-Schalter gereicht.

Schaltbild GPS_SIM

Der Aufbau

GPS-Simulator, innen

Die Schaltung ist so einfach, dass sich die Entwicklung einer Platine nicht lohnt. Es reicht ein Stück Lochrasterplatine mit Lötpunkten.

Die ganze Schaltung ist in ein kleines Gehäuse mit Batteriefach der Firma Conrad Electronic eingebaut. Im Unterteil sind drei Befestigungspunkte für die Platine vorhanden. Für den Schalthebel muss eine kleine Öffnung in das Gehäuse gefeilt werden, ebenso für den Durchlass des Kabels.

Das Kabel zum Modem hat am anderen Ende einen 9-poligen Sub-D-Stecker. Die Leitung RXD im Schaltbild liegt am Pin 2 des Steckers und die Leitung TXD an Pin 3. Die Masseleitung liegt an Pin 5 des Steckers. Für die Zugentlastung habe ich das Kabel mit einem Kabelbinder an der Platine fixiert. Das Foto zeigt noch eine ältere Version.

Die Batteriehalter sind einfach mit doppelseitigem Klebeband im Gehäusedeckel befestigt, passend zur Öffnung des Batteriefaches.

Die Software

Die Software ist gerade herunter programmiert. Bei Programmstart und nach Ablauf von etwa 16 Sekunden wird jeweils ein GPS-Datensatz über die Schnittstelle ausgegeben. Die vorgefertigten Datensätze stehen im Programmspeicher und werden über eine Tabelle ausgewählt. So lassen sich beliebige Texte verwenden. Sie werden nacheinander gesendet. Dadurch ergibt sich eine Fahrtroute, die wiederholt durchlaufen wird.

Der 16Bit-Timer hat den Vorteiler 1024 und läuft durch. Das führt zu einem Teilfaktor von 226. Bei 4 MHz Quarzfrequenz ergibt sich daraus eine Zeit von etwa 16 Sekunden für einen Timertick. Jeder Tick führt zur Ausgabe eines Datensatzes.

Eine Besonderheit ist, dass es im ganzen Programm keine Warteschleifen gibt. Das Programm muss nur auf relativ seltene Ereignisse warten, Timerüberlauf bzw. serielle Schnittstelle. In dieser Wartezeit wird der Controller in den Idle-Schlafmodus versetzt. Der nächste Interrupt weckt ihn auf und er arbeitet an der Stelle weiter, an der er eingeschlafen ist. Die Interrupt-Routinen bestehen nur aus dem Befehl RETI, um den Interrupt formal abzuarbeiten. Dieses Verhalten ist die Ursache für den geringen Stromverbrauch der Schaltung. Der Analog-Komparator ist zusätzlich abgeschaltet.

Nach 255 Timerticks, etwa einer Stunde, wird der Controller in den "Power Down Schlaf" versetzt. Aus- und Einschalten oder auch ein Prozessor-Reset schalten den Simulator wieder ein. Der Stromverbrauch liegt dann bei wenigen Mikroampere.

Download

Die Software ist frei, unterliegt aber der GNU Public License.

Wegen der unterschiedlichen Dateiformate in Linux/Unix und der Windows/DOS-Welt gibt es zwei Quelltext-Dateien, gps_sim.asm und gps_sim_dos.asm. Die Texte selber sind identisch.

gps_sim.tgz unter Linux auspacken mit: "tar xzf gps_sim.tgz",
unter Windows mit Winzip auspacken.

Zaehler

 





zur Startseite Zur Startseite
nach oben nach oben
mailto Burkhard John
5.7.2006