Mittelwertbildung

Gast #73212
Hallo,

ich arbeite gerade an einem Projekt, ein kleiner Teil davon ist das
erfassen eines Durchflusses per 4-20mA Sensor.
Die nötige Schaltung zum I/U wandeln ist schon fertig.
Der µc misst nun alle 500ms die Spannung, so und nun kommt das
Problem:
Es soll ein Mittelwert gebildet werden, der entweder alle 5,20, oder 60
Minuten per UART abgefragt wird. (µc bekommt eine Anfrage und schickt
daraufhin den Mittelwert raus)

Die konkrete Frage ist nun, wie bilde ich über diesen Zeitraum einen
vernünftigen Mittelwert?
Zu testzwecken hab ich das mal einfach mit:
Mittelwert=(Mittelwert+neuerWert)/2 gemacht, geht auch, aber da ist der
Fehler ja enorm hoch.
Würde ich das mit einem gleitenden Mittelwert machen, würde ich aber
auch nur die letzten x Werte berücksichtigen.

Der Clou wäre es alle Werte zu berücksichtigen und dabei die zuletzt
gemachte Tendenz zu priorisieren.

Wäre schön wenn mir da Jemand einen Tip geben könnte :-)

Ich wünsche allen noch einen schönen oster Sonntag.

Bye Tobias
Gast #73213
Hallo,

verwende doch einen Ringbuffer:

A B C D E F G

Schreibe einfach von A bis G und wieder von A - G und bilde den
Mittelwert über diesen Buffer.


Martin
Gast #73214
Gib doch einfach die Summe aller Messwerte seit der letzten Abfrage mit
der Anzahl der Messungen an. Dann kannst du dir (warscheinlich mittels
PC) denn Mittelwert einfach ausrechnen.

Ist warscheinlich die fehlerärmste Methode.
Gast #73216
Tom hat doch die Lösung schon gegeben:
Messwert aufnehmen, zu den anderen hinzuaddieren und einen Index
inkrementieren.
Sobald ein die Anfrage vom PC kommt den Quotient aus Summe und Index
bilden und an den PC übertragen.
Danach müsste man doch die Summe und den Index auf Null zurücksetzen;
ansonsten hättest du irgendwann ein Problem (konvergiert gegen
Unendlich, oder?)
Gast #73217
Ja danke so werde ichs machen, manchmal sieht man den Wald vor lauter
Bäumen nicht hehe.
Ich glaube ich werd es auch lassen, die letzten Messwerte anders zu
gewichten als die ersten.
Jo, nach dem Senden müssen die beiden Variablen auf 0 gesetzt werden.
Sonst würde irgentwann ein überlauf stattfinden.
Sie divergiert gegen Unendlich, dh. sie hat keinen Grenzwert,
Konvergente Folgen haben einen Grenzwert.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.