NMEA2000 Ankeralarm mit dem Arduino aufgebaut

Ein Ankeralarm hält die Ankerposition des Bootes fest und ermittelt dann kontinuierlich den Abstand zum Ankerplatz über die Nacht. Es wird ein Alarmradius eingegeben den das Boot nicht verlassen darf. Alle gehen schlafen und sollen geweckt werden, wenn der Anker nicht hält, weil z.B. der Wind stärker geworden ist, der Anker sich gelöst hat und der eingestellte maximale Ankerradius verlassen wird.

Dazu benötige ich einen GPS Empfänger (hier mein Lowrance HDS), ein NMEA2000 Netzwerk, den Arduino mit Schnittstellenplatine zur Berechnung der Positionen und dem Abstand, einen Poti um die Alarmdistanz (maximaler Ankerradius) einstellen zu können und einen Alarmtongeber (hier habe ich nur eine LED angeschlossen) der ggf. noch über ein Relais geschaltet werden kann. Weiterlesen

NMEA2000 GPS-Position in den Arduino einlesen und formatiert ausgeben

Die GPS Position, Kurs und Geschwindigkeit werden vom HDS gesendet, aus dem NMEA2000 Netzwerk in den Arduino Mega eingelesen und per USB dann formatiert in der Konsole ausgegeben.

Es kommt ein schneller Kurs/Speed Datensatz 4x pro Sekunde aus dem NMEA2000 Netz
PGN 129026 COG & SOG, Rapid Update
und ein GPS Datensatz 1x pro Sekunde
PGN 129029 GNSS Position Data

Diese beiden Datensätze werden eingelesen, zerlegt und die interessanten Werte werden auf der Konsole ausgegeben. Weiterlesen

NMEA2000 Daten mit dem Arduino an den Actisense NMEA Reader übertragen

Actisense hat einen NMEA Reader, der die NMEA 2000 Datensätze entschlüsselt und lesbar darstellen kann. Den NMEA Reader gibt es hier.

Mit meiner MCP 2515 Platine und dem Arduino Mega 2560 werden die Daten jetzt im Actisense Format über USB an den PC gegeben und im NMEAReader dargestellt.

Hier das Programm Weiterlesen

NMEA2000 Daten aus dem Bus seriell auf USB als Klartext ausgeben

Nachdem der Aufbau hier beschrieben wurde, kommt nun das erste Programm.
Die NMEA2000 Daten sollen Klartext über USB auf den PC ausgegeben werden in der seriellen Konsole.

Das heißt der MCP 2515 holt die NMEA2000 Daten aus dem Netz und gibt sie an den Arduino Mega weiter. Hier ist im NMEA2000 Netz nur noch der Lowrance HDS 5m. Mit der Library wird daraus Klartext und dieser wird auf dem USB Port an den PC weiter gegeben und in der Seriellen Konsole ausgegeben. Weiterlesen

NMEA2000 Interface

Das NMEA2000 Marine Netzwerk, etwas zum Einstieg.

NMEA2000 ist ein CAN-Bussystem am Bord moderner Yachten. Hier werden viele Sensordaten gesammelt und auf den Bus gegeben. Alle angeschlossenen Displays können diese Daten verwenden, sie darstellen oder für Berechnungen zur Hilfe nehmen. Typische Daten sind z.B. die Geschwindigkeit durch das Wasser und die Wassertiefe. Hierfür wird am häufigsten der Airmar DST800 Geber im Bootsrumpf eingesetzt. Die Displays zur Darstellung der Daten kommen von den verschiedenen Herstellern Raymarine, Simrad, Garmin …

Das Ganze wird mit dem NMEA2000 Bus verbunden. Hier gibt es die Rückgrad Leitung (auch Backbone genannt) die mit Widerständen an beiden Enden abgeschlossen wird. Die Geber und Displays werden über T-Stücke und Stichleitungen (Spur Kabel genannt) an das NMEA2000 Netzwerk angeschlossen. Weiterlesen

Den Arduino Quarztakt auf 3ppm genau bestimmen mit der DS3231 RTC

Der Arduino Uno hat einen 16MHz Quarz für den Prozessortakt.

Diese Quarzfrequenz ist von der Temperatur abhängig, typisch +-30ppm oder 480 Hz über normale Temperaturen und Herstellungsbedingt fehlerhaft in der Größenordnung von typisch +-30ppm oder 480Hz. Das ergibt zusammen einen Fehler von +-960Hz oder 60ppm. Bei einer Frequenzmessung kann das zu großen Fehlern führen sodaß die 4. Stelle schon falsch sein kann. Bessere Angaben liefert das Datenblatt vom Quarz oder der Aufdruck.

Das läßt sich verbessern auf unter 3ppm oder 48 Hz Fehler mit der RTC DS3231. Dazu wird der 1Hz Ausgang des DS3231 verwendet um bei steigender Flanke einen Interrupt im Arduino auszulösen. Bei jedem 4. Interrupt (4 Sekunden) wird die vergangene Prozessorzeit mit der Funktion micros() in Mikrosekunden ermittelt. Daraus kann nun der Prozessortakt genauer bestimmt werden. Weiterlesen

RTC3231 Aufbau

Von der RTC DS3231 die Temperatur auslesen mit dem Arduino

Die RTC DS3231 kompensiert die Quarz Frequenzänderung mit der Temperatur. Die Temperatur wird alle 64 Sekunden neu gemessen. Man kann diese Quarz Temperatur auslesen.

Hier das Arduino Programm dazu Weiterlesen