GPS und Atmega

Mittlerweile habe ich eine Schaltung mit einem Atmega 1284p zusammen gesteckt, um mich dem Ziel zu nähern, Franz Joseph mit einer GPS Navigation aus zu statten. Da der 1284p zwei Hardware UARTs bietet, ist die Anbindung des GPS sehr komfortabel möglich. Über den einen UART kann per Bootloader die Software geladen und die Ausgabe realisiert werden. Der zweite UART bindet das GPS Modul an. Die Schaltung sieht dann wie folgt aus:

IMG_20140122_163920

Das GPS Modul habe ich nach Maestro A2035-H user manual (v 1.3, Page 14) beschaltet und mit einem Kabel versehen, um es an die Schaltung an zu binden. Hier ein Bild des Moduls:

IMG_20140122_164106

sowie der Auszug aus dem Datenblatt, der die minimale Beschaltung zeigt.

a2035-h-minimal

Software-technisch bin ich soweit gekommen, dass ich die relevanten NMEA Sentences GPGGA und GPVTG vom Modul gelesen, geparst und in Structs aufbereitet habe. Anhand einer Dokumentation für Flugschüler habe ich eine Kursberechnung realisiert, die es ermöglich zwischen dem aktuellen Standort und einer vorgegebenen Ziel-Koordinate einen Kurs und eine Distanz zu berechnen. Da der NMEA Sentence GPVTG den anliegenden Kurs in Bewegung enthält, ist es somit möglich, diesen Kurs dem Soll-Kurs anzupassen um sich in Richtung auf die Ziel-Koordinate zu bewegen. Hier ein Screenshot, der im oberen Teil die aufbereitete Ausgabe zeigt, unterhalb die Rohdaten und weitere Debug-Ausgaben.

ausgabe-debug-mode

Es ist zu beachten, dass dieses GPS Modul tatsächlich einen geordneten Shut-Down braucht, da sonst der interne Flash korrumpiert werden kann. Im schlimmsten Falle wird das Modul dadurch unbrauchbar. Da man einen solchen Shut-Down durch eine Low-High-Low Transition des ON/OFF Pin einfach erreichen kann, und man diesen PIN auch zum Start-Up mit einer solchen Low-High-Low Sequenz bedienen muss,  ist das kein größeres Problem. Ein einfacher IO-PIN des Atmega reicht. Diesen im Default auf LOW halten und bei Bedarf für ca. 1ms auf HIGH ziehen führt zum Erfolg. Damit ist es dann auch möglich das Modul in einen Hibernate-Mode zu versetzen, und Engerie zu sparen, wenn man über längere Zeit keinen Fix benötigt.

Ein Abgleich der auf dem Atmega errechneten Daten mit Google-Earth und anderen Tools zur Kursberechnung (die ich im Internet finden konnte) hat ergeben, dass die Berechnungen erstaunlich genau sind. Sowohl im Nahbereich, als auch über große Strecken, sind Kurs und Distanz richtig. Auch ein manueller Check mit Geodreieck und Karte passt. Der Atmega hat bei 8Mhz schon locker genug Performance, jede Sekunde ein entsprechendes Update zu rechnen. Vermutlich würde auch eine 5Hz Update-Rate gehen, die das Modul als maximum unterstützt. Für Franz Joseph reicht es alle 10 bis 30 Sekunden aus.

Das das GPS einen Kurs nur in Bewegung und nur bei guter Abdeckung hinreichend genau ermitteln kann, möchte ich als nächstes noch einen Kompass integrieren und den dort ermittelten Kurs mit dem des GPS abgleichen und ggf, mitteln. Vielleicht nehme ich hier gleich eine günstige China-IMU, die dann auch noch Gyro, Accelerometer und barometrischen Höhenmesser bietet (10DOF). Damit kann man dann einen neigungskompensierten Kompass realisieren, die GPS-Höhe mit der Baro-Höhe mitteln und zusätzlich noch die Lage des Systems im Raum ermitteln.

 

 

Leave a Reply