Schlagwort-Archive: Arduino

Die Auflösung des ADC vom Arduino Uno erhöhen auf 16 Bit mit Oversampling

Der Arduino Uno hat Analog Digital Wandler mit 10-Bit Auflösung eingebaut. Damit kann z. B. die Versorgungsspannung über die USB Schnittstelle ermittelt werden, wie in diesem Artikel beschrieben.

Bei 5V VCC und 10 Bit Auflösung sind das 1023 Messwerte oder ca. 5mV Auflösung eines Bits. Wenn das nicht ausreichend ist, kann die Genauigkeit erhöht werden durch den Trick des Oversampling. Dann sind 12 oder sogar 16 Bit Auflösung mit diesem einfachen AD Wandler möglich. Weiterlesen

Den NMEA0183 RMC Datensatz zerlegen

Hier nun das Programm zum Zerlegen des NMEA0183 RMC Datensatzes mit dem Arduino Uno.

Nach dem GGA Datensatz aus dem letzten Beitrag wird hier nun der RMC Datensatz ausgelesen. Weiterlesen

Den NMEA 0183 Datensatz GGA zerlegen in die einzelnen Daten

Der GGA GPS-Datensatz soll in die Bestandteile zerlegt werden. Einzelne Funktionen geben die Werte zurück.

Der GGA Datensatz sieht so aus:
$GPGGA,172643.004,5415.6232,N,01004.9739,E,0,00,,,M,,M,,*43
Er enthält mindestens die Uhrzeit, die Breite und Länge, siehe nmea.de .
Mehr Inhalt ist möglich, aber häufig nicht enthalten.

Zuerst werden die Daten eingelesen. Ich verwende hier eine GPS Antenne und einen selbstgebauten NMEA0183 > UART Wandler mit dem Arduino Uno zusammen. Weiterlesen

Teil 2: Kapazitäten von 10nF bis 2000uF einfach messen mit dem Arduino

Auf der Grundlage des vorherigen Artikels habe ich das Programm etwas verändert. Jetzt sind Messungen von ca. 10nF bis hin zu gut 2000uF möglich.

1. Als erstes werden jetzt Mikrosekunden (10^-6) gemessen und nicht mehr Millisekunden (10^-3). Dadurch sind auch schnellere Ladezeiten erfaßbar und nF Kondensatoren können vermessen werden.

2. Der Ladewiderstand wurde gemessen und eingegeben, was zu einer höheren Genauigkeit führt

3. Die Zeit der Nullmessung ( ohne Kondensatoranschluß ) wurde abgezogen. Auch hier eine genauere Messung der Zeit. Weiterlesen

Teil 1: Kapazitäten von 1uF – 2000uF einfach messen mit dem Arduino

Auf Grund dieses Beispiels von der Arduino Seite habe ich mir das Kapazität Messverfahren einmal genauer angesehen. Die Schaltung ist sehr simpel aufgebaut mit 2 Widerständen, einem Arduino Nano und 6 Drahtbrücken

Zuerst wird der Kondensator aufgeladen über dem 10kOhm Widerstand auf 63% von der Arduino Versorgungsspannung (5V). Die Zeit wird ermittelt und die Kapazität daraus errechnet.

Kapazität = Zeit (63%) / Widerstand Weiterlesen

AIS Daten vom Cypho-150 Empfänger im Arduino live einlesen und die MMSI ausgeben

Hier werden die AIS Daten von meinem AMEC Cypho-150 AIS Empfänger eingelesen und die MMSI wird ausgegeben.

Die NMEA0183 Ausgangsleitungen vom Cypho-150 sind gelb + und grün – , wie im Handbuch angegeben.

Zur NMEA0183 > UART Pegel Wandlung nehme ich den MAX232 Chip.
Der NMEA0183 Eingang+ ist Pin 8 (R2IN) und der UART Ausgang ist Pin 9 (R2OUT). Dieser kommt an den Arduino Uno RX Eingang.
Der NMEA0183 Eingang- kommt auf den GND vom MAX232 und vom Arduino. Weiterlesen

Distanz und Peilung zwischen 2 Positionen berechnen

Die Entfernung und die Peilung sollen von Position 1 (Länge / Breite) zu Position 2 (Länge / Breite) berechnet werden. Dabei werden beide Positionen in Grad mit Kommastellen eingegeben. Die Software soll auf dem Arduino laufen.

Die Distanz wird in m und sm (Seemeilen) ausgegeben, die Peilung in Grad 0….359 Grad. Weiterlesen

AIS VDM Datensatz Decoder mit dem Arduino Uno

Marine AIS Empfänger und Transponder geben über den NMEA0183 Ausgang die AIS Informationen im !AIVDM Datensatz aus. Diese Informationen sind 6-Bit codiert und können aus dem Datensatz extrahiert werden.

Ich verwende hier für erste Versuche zur Decodierung den Arduino Uno mit 3 Testdatensätzen.

In dieser Software Version 0.1 werden die Messages 1, 2 und 3 untersucht.
Daraus werden die folgenden Daten extrahiert.
– die Checksumme wird überprüft, die Erklärung hier.
– der AIS Kanal
– der Message Typ
– die MMSI
– der NavStatus
– SOG / Geschwindigleit über Grund
– Breite der Position in Minuten
– Länge der Position in Minuten
– Kurs
– Heading / Vorausrichtung

Weiterlesen

Ein SeaTalk zu Arduino Interface mit LT-Spice simuliert

Thomas Knauf stellt auf seiner Seite viele Informationen zum SeaTalk Protokoll von Autohelm / Raymarine zur Verfügung, unter anderem eine RX / TX Eingangsstufe vom PC (RS232) zum SeaTalk Bus.

Diese Schaltung habe ich mit LT-Spice simuliert und etwas verändert.
1. Es wurden die Standard Transistoren BC547B (NPN) und BC557B (PNP) verwendet.
2. Die Spannung am Arduino Pin sollte 5V nicht übersteigen, deshalb ist am Ausgang zum RX am Arduino ein Spannungsteiler mit 4,7k und 2,2k Ohm eingefügt. Weiterlesen

Einen String im Flashspeicher mit PROGMEM ablegen und ausgeben

Der SRAM Speicher beim Arduino Uno und Nano hat 2 kByte für Variablen und Strings.
> Infos zum Arduino Speicher.

Das reicht manchmal nicht aus um alle Strings zu speichern und dann kann der Programmspeicher (FLASH) zusätzlich verwendet werden. Hier stehen immerhin 32 kByte zur Verfügung, abzüglich Programm und Bootloader. Dazu gibt es zwei Möglichkeiten. Weiterlesen