Schlagwort-Archive: Arduino

NMEA2000 Ankeralarm

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

Actisense NMEA Reader

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

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

RTC3231 Aufbau

Die Uhrzeit des RTC DS3231 Modul vom Arduino einstellen

Die Uhrzeit des RTC DS3231 Uhrzeitmoduls soll vom Arduino einmalig eingestellt werden. Danach speichert das Modul die richtige Uhrzeit und läuft mit der angebauten Batterie weiter.
Die Verkabelung wurde im vorherigen Beitrag beschrieben.

Hier das Programm.
Die aktuelle Uhrzeit +1min wird manuell eingegeben unter setup(). Dann wird das Programm ca. 4 Sekunden vor der Uhrzeit übersetzt und hochgeladen. Es sollte nun ungefähr zur richtigen Uhrzeit im RTC Chip ankommen. Ansonsten ein wenig mit den 4 Sekunden herum spielen. Weiterlesen

RTC3231 Aufbau

Die Uhrzeit des RTC DS3231 Modul vom Arduino auslesen

Das Uhrzeitmodul RTC DS3231 (Real Time Clock ZS-042) ist eine genaue Uhr mit eingebauten Quarz. Dieser Quarz wird intern Temperatur überwacht und korrigiert sodass sie einen Fehler von nur +-2ppm hat, was ca. 1 Minute pro Jahr entspricht.

Ich habe das RTC3231 mit 4 Leitungen an den Arduino Uno angeschlossen. Weiterlesen