www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ausfiltern von falschen Werten in einer Messung (kein Tiefpass!)


Autor: Robert B. (robertb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich steh gerade ein wenig auf dem Schlauch und hoffe auf Eure Hilfe.

Ich messe die Periode einer (vergleichsweise langsam) wechselnden 
Frequenz mit einem Timer (per ISR). Leider erhalte ich durch 
Fehltriggerung auch einmal falsche Werte. Anbei einmal eine 
beispielhafte Sequenz mit Fehlern:
15194,    223
15307,    113
15662,    355
15830,    168
 6790,  -9040 ---
 9221,   2431 +++
16230,   7009 +++
16468,    238
16669,    201
   11, -16658 ---
17050,  17039 +++
17257,    207
17519,    262
17798,    279
   10, -17788 ---
18373,  18363 +++
18812,    439
 8179, -10633 ---
10821,   2642 +++
19527,   8706 +++
19746,    219
20000,    254
20450,    450
20779,    329

Der erste Wert ist die Periode, der zweite die Differenz zum vorherigen 
Wert, dahinter ein Marker wo die Änderung unplausibel ist (wird durch 
75%-125% Schwellen erkannt).

In einem einfachen Ansatz könnte man jetzt die kleinen Werte (<30) per 
se ausfiltern. Leider habe ich aber auch Fehlauslösungen die zu 
plausiblen Werten führen. Diese durch die Änderung zum letzten 
akzeptierten Messwert auszufiltern wäre ok, aber falls aus welchem Grund 
auch immer wirklich mal ein größerer Sprung drin war bleibe ich dann auf 
einmal "Kleben". Eine "gepfuschte" Lösung wäre die Anzahl der 
verworfenen Ergebnisse zu begrenzen und dann einen neuen Wert zu 
nehmen...

Gibt es hierzu mehr oder minder gängige Ansätze?

Ich möchte KEINE Tiefpassfilterung (zumindest an dieser Stelle) 
vornehmen!

Grüße
Robert

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Medianfilter sollte das sein was du suchst.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Wenn ca. 30% deiner 'Messwerte' falsch sind, hast du ein anderes 
Problem.

MfG Spess

Autor: heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Christian --- (kakuijin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für mich schaut das so aus als würdest du nicht lang genug warten bis 
der Messwert komplett in der Hardware steht.


Ein paar schnipsel von deinem Code wäre hilfsreich.

lg

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denk auch man sollte sich die Ursache anschauen, denn jeder 3 
Messwert in die Tonne ist nicht wirklich zuverlaessig. Was ist, wenn in 
einer anderen Umgebung, ein anderes Netzteil die Sache sich 
verschlechtert ? zB alle Werte fuer die Tonne sind ?

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man sollte sehen die Fehlauslösungen zu vermeiden. Bei 30% Ausreißern 
ist das nicht einfach die richtigen werte zu finden.

@Heinz:
Der Kalmanfilter wird hier nicht weiterhelfen. Der geht von annähernd 
normalverteilten Werten aus, was hier gerade nicht der Fall ist. Im 
Endefekt wird da auch nur eine Art Tiefpaß rauskommen.

Was man hier bräuchte ist ein rbouster Schätzer, so wie der oben 
erwähnte Median.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich messe die Periode einer (vergleichsweise langsam) wechselnden
> Frequenz mit einem Timer (per ISR).
Hast du für "vergleichsweise langsam" auch Zahlen zur Hand?
Der Ansatz, mit einem langsamen Signal auf einen Interrupt zu gehen, ist 
falsch. Du solltest nämlich vor der Auswertung dein Signal 
aufbereiten, nicht nach der Auswertung an Sypmtomen herumbasteln...

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

sieht für mich so aus als entweder in der Software die Register in der 
falschen Reihenfolge ausgelesen werden, oder Überläufe "65536" nicht 
richtig berechnet werden.
Ansonsten sollte eine Periodendauer immer erst Tiefpaßgefiltert und dann 
mit einem Schmitt-Trigger mit ausreichender Hysterese aufbereitet werden 
bevor man auf einen Prozessor-Pin geht.

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

üblich (und mathematisch abgesichert) ist eine 3-Sigma-Filterung. Bei 
Normalverteilung kommen Werte ausserhalb +- 3 Sigma praktisch nicht vor, 
also kann man sie als Fehlmessung eliminieren ohne Rückwirkung auf die 
normalverteilte Messreihe. Da in den übrigen Messwerten wieder 
Ausreisser auftreten können (die Standardabweichung muss ja ohne die 
elminierten Werte neu berechnet werden), kann man das Verfahren 
wiederholen, ev. solange bis keine Werte mehr zu eliminieren sind.

Gruss Reinhard

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bring erst mal die externe Beschaltung in Ordnung, dann wird die Anzahl 
der Fehltriggerungen sehr reduziert, eventuell dein Problem komplett 
beseitigt

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... jeder dritte Wert eine Fehlmessung ? Da stimmt was nicht. Das koennt 
sich auch verschlechtern. Und dann ist alles Fehlmessung ? Wie reagiert 
das System dann ?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.