Sensorwerte fuer Druck: Trend anzeigen

Gast #5154811
Hallo.

Ich "sammle" gerade mit einem Arduino fortlaufend die Sensorwerte des 
BMP180, also Temperatur und Druck und gebe Sie mir auf einem LCD-Display 
aus. Alle 30sec wird ein Wert genommen und angezeigt.
Jetzt moechte ich mir gerne einen Trend anzeigen lassen, also vor allem 
fuer den Druck. Ich moechte sehen ober dieser sich z.B. ueber einen 
Zeitraum von 3 Stunden tendenziell eher steigt oder sinkt.
Auf dem LCD wuerde ich dafuer einen Pfeil der nach unten oder oben zeigt 
vorsehen.

Jetzt meine Frage:
Wie sieht so ein Algorithmus aus? Die Zeitspanne wuerde ich mir hierbei 
gerne flexibel halten (1Std, 2Std, 3Std).

Einige Tipps dahingehend waeren hilfreich!
(Auf eine SD-Karte kann ich leider derzeit noch nicht zugreifen, daher 
muesste ich die Daten direkt im Mikrocontroller vorhalten und 
berechnen.)

DANKE!
Arduino Nutzer können auch wirklich überhaupt nichts alleine auf die 
Kette bekommen. Man sollte meinen, wer Display und Drucksensor zum 
laufen bekommen hat, der hat kein Problem jetzt noch einen Trend 
anzuzeigen. Aber nööö, das gabs ja nicht per Copy&Paste und schon stehen 
sie wieder wie der Ochs vorm Berg.

Mensch Leute, gebt euch nicht auf, lernt man selber irgendwas zu machen.

> Auf eine SD-Karte kann ich leider derzeit noch nicht zugreifen
Ohne SD Karte wird es natürlich schwierig ein paar Werte für einen Trend 
vorzuhalten. Zumindest wenn man sein Gehirn im Einmachglas neben sich 
stehen hat.
Gast
Wir hatten mal etwas ähnliches umgesetzt:
1. Array definieren, um Differenzwerte zu speichern
z.B. int Array mit 12 Einträgen (3 h * 4 Werte)
2. Immer Differenzen zur vorausgegangenen Messung im Array abspeichern
3. Ist das Array "voll", Werte wieder von vorne eintragen (round robin)
4. Wenn der Trend festgestellt werden soll, Summe über das ganze Array 
bilden.
Gast
Da gibt es sehr viele Varianten einen Trend anzuzeigen. Ich vermute mal, 
dass z.B. ein quadratischer Mittelwert diese Aufgabe ganz passabel 
erfüllen würde.
Hängt von der weiteren Verwendung dieses Trends ab, denn ein RMS-Wert 
steigt natürlich langsamer an als z.B. ein über Periode gemittelter. 
Würde aber nicht so viele Speicherresourcen verbrauchen (aber eben ab 
und an mal die Rechenresourcen -  Wurzel + Potenz)
Heinz schrieb:
> Jetzt meine Frage:
> Wie sieht so ein Algorithmus aus?

Fachbegriff: lineare regressionsanalyse

Wird von den Mathematikern gerne komplizierter dargestellt als es in der 
Praxis eigentlich ist. Ich habe mal eine Umsetzung in C herausgesucht. 
Es gibt aber noch mehr. Für Dich ist die Steigung der berechneten 
Geraden das gewünschte Ergebnis. Positiv = steigt, negativ = fällt.

http://c-program-example.com/2011/11/c-program-to-implement-linear-regression-algorithm.html
mfg klaus
Gast
Klaus R. schrieb:
> Wird von den Mathematikern gerne komplizierter dargestellt als es in der
> Praxis eigentlich ist.

Sich den Algorithmus aus einem C-Programm rauszuprökeln, macht die Sache 
nicht unbedingt leichter.
Das wird dann allenfalls Copy&Paste eine Stufe höher.

In Wikipedia steht für jederman zugänglich die Formel zur Berechnung der 
Ausgleichsgeraden fertig drin. Für die Prognose interessiert nur die 
Steigung, i.e. der Koeffizien a1
https://de.wikipedia.org/wiki/Methode_der_kleinsten_Quadrate#Herleitung_und_Verfahren
Wolfgang schrieb:
> In Wikipedia steht für jederman zugänglich die Formel zur Berechnung der
> Ausgleichsgeraden fertig drin. Für die Prognose interessiert nur die
> Steigung, i.e. der Koeffizien a1
> 
https://de.wikipedia.org/wiki/Methode_der_kleinsten_Quadrate#Herleitung_und_Verfahren

Genau diese Art der Darstellung ist vielleicht für einen Abiturienten 
zugänglich. In der Praxis ist es aber viel einfacher. Ich habe ja auch 
nur die erste beste C - Funktion herausgesucht. Es gibt ja noch einige 
andere.

Hier der zweite Treffer mit Beispiel, schön übersichtlich.

https://stackoverflow.com/questions/5083465/fast-efficient-least-squares-fit-algorithm-in-c
mfg klaus

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.