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!
Wieso vergleichst du nicht einfach den Druck von vor 3 Stunden mit dem jetzigen und dann siehst du, ob er gestiegen oder gefallen ist.
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
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.
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
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
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
:
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.