Archiv der Kategorie: Berechnung

Kapazitäten messen – das Shield von Christian

Hallo Matthias,

ich habe mich sehr über das Projekt zum Kapazitäten messen gefreut habe und es auch öfters schon benutzt.

Allerdings war es mir auf die Dauer zu mühsam das ganze immer wieder neu auf dem Steckbrett aufzubauen. Kurzerhand habe ich mich entschieden einfach ein mini „Shield“ für den Arduino Nano zu bauen.

Es ist wirklich nichts Besonderes, aber vielleicht als Idee für andere auch nützlich gerade weil es so simpel nachzubauen ist.

Im Anhang sind ein paar Fotos.

Danke und Gruß

Christian Weiterlesen

Der Peukert Exponent bei Blei Säure Batterien

Die Kapazität einer Blei-Säure Batterien wird meist für eine 20 Stunden Entladung angegeben. Das ist dann der aufgedruckte C20 Wert von z.B. 100Ah. Nach Vollladung kann die Batterie also 100Ah in 20 Stunden abgeben oder anders ausgedrückt 5A für 20 Stunden.

Wird der Strom erhöht, sinkt die Kapazität. Das ist mit dem Peukert Exponenten darstellbar.

Wenn dauerhaft 20A entnommen werden, sinkt die Kapazität auf ca. 70Ah und die Batterie ist schon nach 3,5 Stunden entladen. Weiterlesen

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

Den Mittelwert fortlaufend bilden mit einer Funktion

Es soll ein fortlaufender Mittelwert aus n Integer Zahlen gebildet werden. Dazu wird die Funktion float mittelWert(int neuerWert) verwendet.

Am Anfang des Programms wird die Anzahl der Mittelungen festgelegt und die globalen Variablen werden erstellt.

#define anzahlMittelWerte 10
int werte[anzahlMittelWerte], zaehlerMittelWerte=0;

Im Hauptprogramm werden fortlaufend Zufallszahlen zwischen 1 und 10 erzeugt. Diese werden hier gemittelt und ausgegeben.

Weiterlesen

Der Hamming Code für den Arduino

Bei einer digitalen Funkübertragung kann es zu Störungen kommen und einzelne Bits werden falsch empfangen, kippen sozusagen um. Aus einer 1 wird eine 0.

Richard Wesley Hamming hat sich dazu Gedanken gemacht und eine Codierung entwickelt, die es erlaubt zu überprüfen ob alle Bits richtig übertragen wurden. Einzelne Bits können sogar rekonstruiert werden.

Hier sollen 4 Daten-Bits übertragen werden. Dazu werden nach einem bestimmten Schema 3 Paritäts-Bits hinzugefügt, die Daten werden codiert. Es müssen nun 7 Bits übertragen werden. Wird ein Bit falsch empfangen, so lässt es sich später bei der Decodierung rekonstruieren.

Die 4 Daten-Bits werden mit 3 Paritäts-Bit nach diesem Schema ergänzt.
Die Datenbits: d4, d3, d2, d1 Weiterlesen

Arduino FFT auf dem 5110 Display ausgeben

Aus den letzten beiden Artikeln Arduino FFT berechnen und 5110 Grafik ausgeben ist nun eine Arduino Uno FFT Berechnung mit Grafik Ausgabe geworden.

Arduino Uno FFT Ausgabe

Für die Grafik Ausgaben wurde die Library von Henning Karlsen installiert und verwendet.

Das Programm berechnet verschiedene Wellenformen
– Ein Rechtecksignal
– Ein Sinus Signal
– Zwei addierte Sinus Wellen
– Eine Frequenzmodulation
und gibt das Frequenzspektrum von 0 – 2520 Hz aus, in 40 Hz Schritten. Weiterlesen

Eine einfache FFT – Fast Fourier Transformation – mit dem Arduino Uno

Ein Rechtecksignal kann aus verschiedenen Sinussignalen erstellt werden indem man die einzelnen Sinusschwingungen addiert. Um ein Rechtecksignal zu erhalten nimmt man die Grundfrequenz f mit der Amplitude 1 und addiert die dreifache Frequenz 3*f mit der Amplitude 1/3 und 5*f mit 1/5 Amplitude usw. Das ergibt dann eine Rechteckschwingung.

 f(t) = sin(\omega t) + 1/3 sin(3 \omega t) + 1/5 sin(5 \omega t) + 1/7 sin(7 \omega t) ...

Diese Fourierreihe beschreibt ganz allgemein die Frequenzbestandteile einer Schwingung. Siehe Wikipedia.

Hat man bereits eine Schwingung vorliegen und möchte sie zerlegen in die einzelnen Frequenzen kann man ein Fourierzerlegung machen, auch Fourier Transformation genannt. Für Mikrokontroller und andere Programme wurde eine schnelle Frequenzzerlegung geschrieben, die FFT oder Fast Fourier Transformation um diese Zerlegung fast im Echtzeit machen zu können. Weiterlesen