GPS-gesteuerter Timer/Uhr mit Alarmausgängen
In Bearbeitung
Stand 25. Mai 2018

Für ein bestimmtes Projekt ( WSPR-Bake [2] ) benötigte ich Ausgangsimpulse, die zu bestimmten vorgegebenen Zeitpunkten sekundengenau verfügbar sein mussten. Ideal bot sich hierzu eine Auswertung der von GPS-Bausteinen bereitgestellten Zeitsignale an. Mithilfe eines zusätzlichen Mikrocontrollers liess sich dabei nicht nur eine sekundengenaue Uhr aufbauen, sondern es war auf einfache Weise auch eine präzise Erzeugung der gewünschten Schaltsignale realisierbar. 

Aus Gründen der Einfachheit wurde für das realisierte Projekt eines der weit verbreiteten ARDUINO-Prozessorboards des Typs "UNO" ( bzw. Baugleiche ) verwendet. Die Datenanzeige erfolgte mithilfe eines mit einem 2x16-Zeichen-Display ausgestatteten LCD Keyboard Shields, so wie es als aufsteckbares Standardbauteil von z.B. DFROBOT angeboten wird [1] ( siehe Abb.1 ). Komplettiert wurde die Anordnung durch ein GPS-Modul, wobei hierfür alle Versionen infrage kommen, die Daten nach NMEA-0183 mit TTL-Pegel und einer Baudrate von 9600bps zur Verfügung stellen. Zur Verbindung zwischen GPS-Baustein und UNO-Board werden lediglich 3 Adern, als da sind: Masse, +5V und ein an den Prozessor-Port-Eingang #2 zu leitendes GPS-Datensignal benötigt.
Bei Empfang von GPS-Daten wird eine auf dem UNO-Board befindliche LED ( im vorliegenden Fall leider durch das LCD-Shield verdeckt ) im Sekundentakt blinken. Bei Bedarf lässt sich aber an Port #13 auch eine externe LED ( mit Serienwiderstand von z.B. 470 Ohm gegen Masse ) anschliessen.  



Abb.1  ARDUINO "UNO" mit  LCD Keyboard Shield und GPS-Modul

Das erstellte ARDUINO-Programm arbeitet unter Verwendung der bewährten Library "TinyGPS". Auf einfache Weise ermöglicht diese ein Verarbeiten eintreffender  GPS-Signale, wobei Zeitsignale als GMT-Zeiten bereitgestellt werden. Neben ihrer Anzeige ermöglicht das verwendete Programm auch eine Darstellung im MEZ- ( GMT +1 Stunde ) und im MESZ-Format ( GMT +2 Stunden ). Die Auswahl kann über die auf dem LCD-Board befindliche SELECT-Taste getroffen werden. Jeweils gewählte Einstellungen werden auch im EEPROM-Bereich des Prozessors abgelegt und stehen somit auch für weitere Inbetriebnahmen wieder zur Verfügung.

Zu vom Anwender bestimmbaren Zeitpunkten lassen sich über zwei Prozessor-Portausgänge sekundengenaue Schaltsignale mit TTL-Pegel ausgeben. Um universellere Verwendbarkeit zu ermöglichen, handelt es sich dabei um jeweils positive ( an Pin #11 ) und negative ( an Pin #12 ) Impulse. Die gewählte Pulsdauer liegt derzeit bei 100mS, kann im Programmcode aber verändert werden. Bei Schaltsignalauslösungen erfolgt zudem auch jeweils eine mehrsekündige Anzeige über das LCDisplay.

Im Programmcode werden auch die gewüschten Zeitpunkte für die Impulsausgaben festgelegt. Die hierzu benutzten Daten sind im Unterprogramm "gpsgatetime" zu finden und können selbstverständlich auch entsprechend eigener Wünsche angepasst werden. Im vorliegenden Beispiel erfolgen alle Signalausgaben dabei ohne Einbindung von Stundensignalen und wiederholen sich somit alle 60 Minuten. Die vorgesehene WSPR-Nutzung [2] verwendet an dieser Stelle einen 10 Minuten-Rhythmus. Anwendungen, die jeweils nur eine Alarmauslösung pro Tag erfordern, bedingen dagegen ein erweitertes Erkennungsformat. Hierfür enthält der Programmcode auch noch ein entsprechendes ( derzeit ausgeklammertes ) Beispiel.

Der zugehörige Quellcode kann HIER ( oder unter Link [3] ) heruntergeladen werden.


WICHTIGER HINWEIS
Voraussetzung für ein einwandfreies Funktionieren des Timers ist, dass zumindest minimaler GPS-Satellitenempfang besteht. In den meisten Fällen genügt dazu ein Positionieren zumindest des GPS-Moduls in Fensternähe. Dabei kann es nach dem Einschalten durchaus auch einmal ein wenig dauern, bis gültige Zeitinformationen  angezeigt werden. 

Linkliste

[1] https://www.dfrobot.com/wiki/index.php/Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)
[2] http://www.kh-gps.de/wspr_bake.htm
[3] http://www.kh-gps.de/gps_timer_v5.zip

E-Mail contact via: