Magnetischer Kompass für SignalK

Abb.: HWT901B-RS232 9-Achs-Sensor

Die chinesische Firma WIT-Motion vertreibt im Internet diverse Sensormodule. Neben 3-Achs-, 6-Achs und 9-Achs-Modulen werden auch reine Magnetometer in verschiedensten Ausführungen angeboten. Es werden eine große Anzahl von Schnittstellen unterstützt wie:

  • TTL
  • RS232
  • Modbus
  • Bluetooth
  • WiFi

Ein besonders interessanter Sensor ist der HWT901B-RS232. Das ist ein 9-Achs-Sensor als Militärvariante mit folgenden Eigenschaften:

  • 3-Achs-Beschleunigungssensor
  • 3-Achs-Gyrometer
  • 3-Achs-Magnetometer
  • BMP280 Umgebungssensor (Temperatur, Luftdruck, Luftfeuchtigkeit)
  • 32Bit CPU für 9-Achs-Sensorfusion
  • Genauigkeit Roll, Pitch: 0,05°
  • Genauigkeit Heading: ca. +/-5° (1 Sigma)
  • 5…36V Versorgungsspannung
  • 40mA Stromverbrauch
  • RS232 Schnittstelle 9600Bd 8N1 (einstellbar)
  • Kit enthält einen USB/Seriell-Adapter
  • Binäres Datenformat (Hex-Werte)
  • 1…20Hz Datenrate (einstellbar)
    • Roll, Pitch, Yawl, Heading
    • langzeitstabile Messwerte
  • Wasserdichtes Aluminiumgehäuse IP68
  • Umfangreiche Windows Konfigurationssoftware (ab. Win7 aufwärts)
  • Gute nachvollziehbare Dokumentation

USB/Seriell-Adapter

Um den HWT901B-RS232 an SignalK nutzen zu können, wird entweder eine serielle Schnittstelle oder eine USB-Schnittstelle des Raspi verwendet. Das mitgelieferte USB/Seriell-Adapter ist nicht gut nutzbar, wenn man die bereits angebrachten Steckkontakte vom Sensor benutzt, da sie schnell vom Adapter abrutschen können. Für erste Test ist das aber ausreichend. Später im Bootseinsatz ist es am hilfreichsten, wenn man die Kabel direkt mit den Anschlüssen des USB/Seriell-Adapters verlötet und die ungeschützte Platine mit einem großen Schrumpfschlauch oder Isolierband gegen versehentliche Kurzschlüsse schützt. Alternativ kann man den Adapter auch in einem eigenen kleinen Gehäuse unterbringen.

Wichtig: RX vom Sensor muss mit TX des Adapters und TX des Sensors mit RX des Adapters verbunden werden.

Abb.: Serielle Verbindung (Wit-Motion)

Abb.: USB/Seriell-Adapter mit Steckern

Abb.: Direkt angelötete Kabel

Kalibrierung des Sensors

Der HWT901B-RS232 berechnet intern mit einer 32Bit-CPU über eine Sensorfusion die Euler-Winkel. In der Sensorfusion werden die Messdaten vom Beschleunigungssensor, Gyrometer und Magnetometer zu einem Satz von drei Winkeln verrechnet, mit denen die Orientierung eines festen Körpers im dreidimensionalen Raum beschrieben werden kann. Als Ergebnis der Sensorfusion werden Roll, Pitch und Heading als Sensor-Messwerte ausgegeben. Damit die Sensorfusion korrekt funktioniert, müssen alle einzelnen Sensoren des HWT901B-RS232 kalibriert werden. Dazu gibt es vom Hersteller eine Windows-Konfigurationssoftware. Mit dieser Software werden die Korrekturparameter der jeweiligen Sensoren vom Beschleunigungssensor, Gyrometer und Magnetometer in allen 3 Achsen im ausgebauten Zustand des Sensors durch spezielle Bewegungen ermittelt und nach der Kalibrierung im Sensor dauerhaft gespeichert. Diese Kalibrierung wird als Initial-Kalibrierung bezeichnet. Im zweiten Schritt erfolgt der Einbau des Sensors im Boot. Anschließend wird im eingebauten Zustand der Heading-Offset und die Deviations-Tabelle ermittelt. Danach ist der Sensor vollständig kalibriert. Die Initial-Kalibrierung muss nur einmal erfolgen, während die Ermittlung der Deviationstabelle immer vorgenommen werden muss, wenn sich der Installationsort des Sensors im Boot verändert hat oder größere Ungenauigkeiten im Laufe der Zeit entstanden sind.

Initial-Kalibrierung

Zur Initial-Kalibrierung wird der Sensor ausgebaut und an einen Windows-PC über USB angeschlossen. Danach wird die Konfigurationssoftware MiniIMU.exe aufgerufen.

Abb.: MiniIMU

Dabei sollte der Windows-PC nicht mit dem Internet verbunden sein, da sonst selbständig die Konfigurations-Software in einer fehlerhaften Version aktualisiert wird. Die Kalibrierung erfolgt unter Config in 3 Schritten:

  • Kalibrierung Beschleunigungssensor (in horizontaler ruhiger Lage)
  • Kalibrierung Gyrometer (in horizontaler ruhiger Lage)
  • Kalibrierung Magnetometer (in Form von 3-dimensionalen Bewegungen)

Die Kalibrierung des Beschleunigungssensors und des Gyrometers erfolgen in horizontaler ruhiger Lage. Dabei muss der Sensor exakt horizontal ausgerichtet sein und darf nicht bewegt werden. Am besten funktioniert das auf einer ebenen Tischplatte. Im Boot sollte die Kalibrierung nicht vorgenommen werden.

Bei der Kalibrierung des Magnetometers ist auf größte Sorgfalt zu achten. Nachlässigkeiten verschlechtern am Ende die Qualität des magnetischen Richtungswertes (Heading) deutlich. Es ist darauf zu achten, dass sich keine Metallteile und störenden Magnetfelder in einem Radius von ca. 1 Meter befinden. Das Anschlusskabel des Sensors ist recht kurz und muss in der Nähe des Windows-PC benutzt werden. Halten Sie möglichst einen großen Abstand und kommen sie nicht in die Nähe von Lautsprechern. Besonders in Laptops sind kleine Lautsprecher mit extrem starken Magneten verbaut an die man oft nicht denkt. Diese Störfelder können die Kalibrierung des Magnetometers stark beeinträchtigen und unmöglich machen. Die besten Kalibrier-Ergebnisse werden mit der Elliptischen Kalibrierung erzielt. Dazu wird der Sensor frei schwebend in der Hand in einer Höhe von 50 cm von der Tischplatte in allen  3 Achsen so bewegt, so dass sich für die 3 Raumebenen XY, XZ und YZ elliptische Punktewolken ergeben dessen Ränder sich scharf abgrenzen so wie im Bild zu sehen.

Abb.: Korrekte Kalibrierung des Magnetometers

Bei der Kalibrierung muss der Sensor immer etwas verschieden im Raum gedreht werden, bis die Ränder der Ellipse gleichmäßig mit Messpunkten versehen sind. Über die Live-Grafik kann der Kalibrierfortschritt recht gut überwacht werden. Sollten einzelne Messpunkte deutlich außerhalb des Ellipsenrandes auftauchen ist das ein Zeichen dafür, dass die Kalibrierung nicht korrekt verlaufen ist und Störfelder vorhanden sind. Bis man genügend Messpunkte gesammelt hat vergehen ungefähr 3…5 Minuten. Die Kalibrierung des Magnetometers kann auch nachträglich im Boot noch wiederholt werden, sofern es notwendig ist. Die Kalibrierung des Beschleunigungssensors und des Gyrometers dürfen jedoch auf keinen Fall im Boot vorgenommen werden.

Einstellung des Sendeformates

Damit die Daten korrekt vom SignalK-PlugIn erkannt werden, muss der Sensor so eingestellt werden, dass nur Winkeldaten gesendet werden. Nur der Datensatz ‚Angle‘ wird dazu unter Config aktiviert. Sicherheitshalber setzt das Plugin bei jedem Start diese Einstellung automatisch neu. Alle übrigen Werte belässt man auf den Defaultwerten. Die voreingestellte Baud Rate 9600 ist für bis zu 50 Datensätze pro Sekunde (Output Rate: 50Hz) ausreichend und darf nicht geändert werden.

Abb.: Sendeformate

Einbindung in SignalK

Der Sensor lässt sich einfach in SignalK über das Plugin signalk-hwt901b-imu einbinden. Dazu wird der mitgelieferte USB/Seriell-Apter benutzt und der Sensor via USB mit dem Raspi verbunden. In der Konfiguration des PlugIn wird das passige USB-Device ausgewählt und die gewünschte Übertragungsrate eingestellt.

Abb.: SignalK Plugin für HWT901B-RS232

Die Übertragungsrate ‚Return Rate‘ legt fest, wie viele Messungen pro Sekunde an SignalK übertragen werden sollen. Der Heading-Offset lässt sich einstellen, um die Einbaurichtung des Sensors in Bezug auf den Bug zu setzen. Über das PlugIn lassen sich auch der Beschleunigungssensor sowie Roll und Pitch nachträglich direkt kalibrieren bzw. auf Null stellen. Das ist aber nur ratsam, wenn sich das Boot in absolut ruhiger Lage befindet.

Bestimmung des Heading-Offset und der Deviationstabelle

Der letzte Schritt der Kalibrierung erfolgt, wenn der Sensor im Boot fest verbaut ist. Folgende Dinge sollten beim Einbau beachtet werden, um die besten Ergebnisse zu erzielen:

  • Anbringung des Sensors fern von:
    • Metallteilen
    • Stromleitungen
    • Magnetischen Störfeldern wie Lautsprechern oder mechanischen Kompassen
  • Anbringung in der Mitte des Bootes
  • Anbringung möglichst im Drehpunkt des Bootes
  • Möglichst horizontaler oder vertikaler Einbau (keine schiefer Einbau)

Ein idealer Einbauort wäre die Kabinendecke hinter dem Mast im Drehpunkt des Schiffes oder an der vorderen Schottwand im Boot. Ob der Einbauort des Sensors richtig gewählt wurde kann erst nach der Ermittlung der Deviations-Tabelle festgestellt werden. Unter Umständen muss der Ort des Sensors noch einmal geändert und die Kalibrierung wiederholt werden.

Die Deviations-Tabelle kann auf verschiedene Arten erzeugt werden. Dazu benötigt man als Heading-Referenz immer einen GPS-Empfänger, wie z.B. ein Handy mit einer entsprechenden App die das Heading anzeigen kann.

Die Deviations-Tabelle wird entweder manuell ermittelt, indem man Kurse in 20° Schritten über eine Distanz von ca. 100m fährt und den gemessenen Wert vom Sensor zuordnet. Das Boot sollte dabei mindestens eine Geschwindigkeit von 2…3 kn haben, damit der GPS-Empfänger verlässliche Heading-Werte ausgibt. Die Datenrate vom magnetischen Sensor und vom GPS-Sensor sollte identisch sein, um Probleme bei der Auswertung zu vermeiden. Eine Datenrate von 1 Hz ist ausreichend zur Datenaufzeichnung. Zudem sollte die Geschwindigkeit möglichst konstant sein. Die ermittelten Daten können in einer Excel-Tabelle erfasst und nachträglich verrechnet werden.

Eine andere Variante wäre die Heading-Werte des Sensors und des GPS-Empfängers kontinuierlich während der Fahrt zu speichern und die aufgezeichneten Werte nachträglich in einer Excel-Tabelle zu verrechnen. Dazu würde man mit dem Boot 2  Kreise rechts herum und 2 Kreise links herum fahren. Die Kreise sollten einen Durchmesser von ca. 200 m haben und die Geschwindigkeit des Bootes konstant sein und bei 2…3 kn liegen. Bei kurzen schnellen Wenden sollten die Daten verworfen werden, da der GPS-Sensor etwas träger als der magnetische Sensor ist. Mit dieser Methode werden die besten Ergebnisse erzielt, da für alle Richtungswerte Messwerte vorliegen. Wer SignalK benutzt, kann das Plugin für die Datenbank InfluxDB aktivieren und dort die Daten aufzeichnen lassen. Mit Grafana lassen sich dann die Messergebnisse während der Testfahrt überwachen und begutachten.

Abb.: Darstellung der Messwerte in Grafana

Am Ende erstellt man mit den aufgezeichneten Werten eine Tabelle sowie ein Diagramm in der die Abweichungen des magnetischen Sensors gegenüber den Referenzwerten vom GPS-Sensor aufgetragen werden. Es ist auch ganz hilfreich, die Heading-Werte beider Sensoren in einem Diagramm aufzuzeichnen.

Abb.: Magnetische Abweichung vom GPS (unkorrigiert)

Abb.: Heading magnetischer Kompass und GPS-Kompass (unkorrigiert)

Man sollte möglichst eine Gerade im Diagramm erhalten die keine Beulen hat. Große Beulen sind ein Zeichen von Störfeldern oder Metallteilen um den Sensor herum. Die Abweichungen sollten nicht mehr als +/-20° betragen. Sind die Werte größer, so ist ein anderer Installationsort für den magnetischen Sensor empfehlenswert. Bei Booten aus Stahl kann es notwendig sein den magnetischen Sensor außerhalb des Rumpfes anzubringen.

Heading-Offset

Der Heading-Offset kann dem folgenden Diagramm entnommen werden. Es ist die Winkeldifferenz über alle Winkelwerte gegenüber dem GPS-Wert. Der Versatz wird als Heading-Offset bezeichnet und in Werten von bis zu +/-180° angegeben. Dieser Wert wird im Plugin signalk-hwt901b-imu unter Heading Offset eingetragen.

Abb.: Heading Offset unkorrigiert

Deviations-Tabelle

Um die Sensor-Rohdaten vom HWT901B-RS232 korrigieren zu können, benutzen wir das SignalK Plugin Calibration. Mit dem Plugin können beliebige Sensorwerte korrigiert werden indem man eine Korrekturtabelle erzeugt. Dabei wird immer der gemessene Wert und der Wert eingetragen den man als korrigierten Wert erhalten möchte. Es ist aber darauf zu achten, dass die Werte als Radiant-Werte (vielfaches von PI) eingetragen werden. Grad-Werte können nicht benutzt werden, da SignalK intern ISO-Einheiten verwendet und alle Winkeldaten als Radiant-Werte benutzt. Unter Path wird in unserem Fall der SignalK-Path für den magnetischen Sensor eingetragen. Als Source ist WT.1 anzugeben. Entgegen der Beschreibung zum Plugin sollte der Wert für Period frei gelassen werden, da sonst die Korrektur der Messwerte nicht richtig erfolgt. Scheinbar ist das Plugin an dieser Stelle fehlerhaft.

Abb.: Devialtions-Tabelle im Calibration-Plugin

Überprüfung der Kalibrierung

Nachdem der magnetische Sensor HWT901B-RS232 kalibriert worden ist, können die Messergebnisse noch einmal überprüft werden. Dazu werden die selben Messwerte aufgezeichnet wie bei der Bestimmung der Deviationstabelle. Die Fehler sollten am Ende kleiner +/-5° sein. Ist das nicht der Fall, so sollte die komplette Kalibrierung noch einmal wiederholt werden und ggf. ein neuer Ort für den Sensor im Boot gewählt werden.

Abb.: Magnetische Abweichung vom GPS (korrigiert)

Abb.: Heading magnetischer Kompass und GPS-Kompass (korrigiert)