Forum: Mikrocontroller und Digitale Elektronik Sensorwerte fuer Druck: Trend anzeigen


von Heinz (Gast)


Lesenswert?

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!

von Sebastian Hepp (Gast)


Lesenswert?

Wieso vergleichst du nicht einfach den Druck von vor 3 Stunden mit dem 
jetzigen und dann siehst du, ob er gestiegen oder gefallen ist.

von Cyblord -. (cyblord)


Lesenswert?

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.

: Bearbeitet durch User
von Mick (Gast)


Lesenswert?

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.

von Joe F. (easylife)


Lesenswert?

Mick schrieb:
> Wenn der Trend festgestellt werden soll, Summe über das ganze Array
> bilden.

Entspricht der einfacheren Rechnung "aktueller Wert" - "Wert vor drei 
Stunden". Dazu müssen im Array natürlich die Messwerte abgelegt werden 
und nicht Differenzen.

: Bearbeitet durch User
von Note (Gast)


Lesenswert?

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)

von Klaus R. (klara)


Lesenswert?

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

von Wolfgang (Gast)


Lesenswert?

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

von Klaus R. (klara)


Lesenswert?

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

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.