Forum: Mikrocontroller und Digitale Elektronik "Ähnlichkeitsanalyse" von Sensorwert


von Michael (Gast)


Lesenswert?

Hallo zusammen,

ich würde bei einer Sensormesswertausgabe, bevor ich den Sensorwert an 
das Display übergebe, eine erhöhte Sicherheit einbringen, in dem ich
den gemessenen Wert mit den vorher-gemessenen Wert vergleiche.

Ich will dadurch verhindern, dass ein Ausreißer, der aufgrund des 
Messaufbaus leider vorkommen kann, ausgegeben wird.

Ich bräuchte also einen Algorithmus, der im Prinzip den (die) 
vorhergehenden Wert(e) mit den aktuellen vergleicht, und dann erst ggf. 
die Ausgabe macht.
Ein Mittelwert von Messungen o.ä. macht keinen Sinn, da die Ausreißer 
das Ergebis zu sehr verfälschen.

Wie stellt man sowas an ? Mit welcher Methode speichere ich die vorher 
gemessen Sensorwerte und vergleiche dann den aktuellen damit ?

Vielleicht kann mit jmd. ein paar Stichpunkte nennen ?

Danke, Michael

von Georg (Gast)


Lesenswert?

Michael schrieb:
> Vielleicht kann mit jmd. ein paar Stichpunkte nennen ?

Stichworte: 3-Sigma-Korrektur. Ganz ganz alter Hut, aber wirksam.

Georg

von Michael (Gast)


Lesenswert?

Michael schrieb:
> Vielleicht kann mit jmd. ein paar Stichpunkte nennen ?

Medianfilter

von Lks (Gast)


Lesenswert?

Im einfachsten fall ein Medianfilter, wie vorher schon erwähnt und sonst 
könnte man ein Kalmanfilter modellieren.

von ths (Gast)


Lesenswert?

Mit dem Ausreißertest nach Grubbs habe ich gute Erfahrungen gemacht.

von Jakob (Gast)


Lesenswert?

Das Erkennen von Ausreißern ist relativ leicht, wenn man sich
die Daten HINTERHER anschaut.

Du sagst aber nicht, ob du Messreihen erfassen willst, die
später ausgewertet werden sollen, oder eine Überwachung
von Betriebsparametern durchgeführt werden soll, die nicht
auf Ausreißer über-reagieren soll.

Hier zwei übliche Methoden, bei denen man sich nur den vorherigen
Ausgabewert merken muss - oft reicht das:

1) Üblicherweise werden "verrauschte" Messwerte mit einer
RC-Tiefpass-Nachbildung gefiltert.
Von jedem neuen Messwert wird die Abweichung zum vorherigen
Ausgabewert ermittelt. Diese Abweichung wird mit einem Faktor
TP < 1.0 multipliziert. Das Ergebnis wird zum vorigen Ausgabewert
addiert und als neuer Ausgabewert zur Anzeige gebracht.
Damit werden Ausreißer gedämpft, aber die Anzeige hinkt dem
realen Verlauf der Messwerte IMMER etwas hinterher.

Liegen vielleicht Erfahrungen vor, wie groß die maximale
Änderung der Messwerte pro Messzyklus (ohne Ausreißer) in
68% ... 96% der Fälle ist? (Hier kommt sigma ins Spiel.)
- Nennen wir diesen Wert DMAX.

2) In diesem Fall kann man neue Messwerte, die sich (absolut)
um weniger, als DMAX vom vorherigen Anzeigewert unterscheiden,
unverändert durchlassen, während größere Änderungen mit
passendem Vorzeichen auf alten Wert +/-DMAX begrenzt werden.

Damit bleibt die Anzeige zeitlich nah am realen Messwert,
während Ausreißer reduziert werden - und ECHTE (dauerhafte)
Sprünge mit nur wenig Verzögerung sichtbar werden.

Es geht natürlich auch aufwändiger...

von Wolfgang (Gast)


Lesenswert?

Michael schrieb:
> ich würde bei einer Sensormesswertausgabe, bevor ich den Sensorwert an
> das Display übergebe, eine erhöhte Sicherheit einbringen, in dem ich
> den gemessenen Wert mit den vorher-gemessenen Wert vergleiche.

So ein Algorithmus hat lange Zeit die Entdeckung des Ozone-Loches über 
der Antarktis verhindert. Die Daten wurden in der ersten Zeit als 
Messfehler rausgeschmissen.

Ein Median-Filter hilft, erzeugt aber in Form eines kausales Filter auch 
einen Zeitversatz.

Jakob schrieb:
> Liegen vielleicht Erfahrungen vor, wie groß die maximale
> Änderung der Messwerte pro Messzyklus (ohne Ausreißer) in
> 68% ... 96% der Fälle ist?

Das hängt vom Prozess und von der Messung ab. Pauschal läßt sich das 
nicht beantworten.

von Georg (Gast)


Lesenswert?

Jakob schrieb:
> in
> 68% ... 96% der Fälle ist? (Hier kommt sigma ins Spiel.)

Daher der 3Sigma-Test. Das Wissen darüber scheint aber gründlich 
verlorengegangen zu sein. Der Unterschied zum Median-Filter: da bleibt 
der wahrscheinliche falsche Messwert drin in der Auswertung, es wird 
lediglich so gemixt, dass ein gemittelter Momentanwert entsteht. Bei 
Sigma-Tests fliegt ein unplausibler Wert ganz aus der Messreihe raus.

Voraussetzung ist theoretisch, dass die Messwerte einer Gaussverteilung 
unterliegen. Ob man nun 1,2 oder 3 Sigma als Grenze nimmt ist 
Geschmackssache und auch von der Qualität der Messungen abhängig. Bei 3 
Sigma ist eine Überschreitung so unwahrscheinlich dass sie in der Praxis 
nicht vorkommt.

Implementieren kann das der TO sicher nicht, aber mit der Rechenleistung 
gibt es kein Problem, ich hatte das vor Jahrzehnten schon auf einem Z80 
laufen.

Georg

von Walter S. (avatar)


Lesenswert?

Georg schrieb:
> Der Unterschied zum Median-Filter: da bleibt
> der wahrscheinliche falsche Messwert drin in der Auswertung

sehe ich nicht so, aus einer Reihe von Werten wird der "mittlere" Wert 
genommen, damit kommt eine Ausreißer nicht in die AUswertung

Wolfgang schrieb:
> Ein Median-Filter hilft, erzeugt aber in Form eines kausales Filter auch
> einen Zeitversatz.

man kann den Medianfilter etwas abwandeln:
man nimmt den neuen Wert dann, wenn er in der Messreihe von sagen wir 10 
Werten keinen Randplatz einnimmt, wenn der Wert auf einem Randplatz 
sitzt wird entweder der nächstliegende Wert genommen oder der Medianwert

damit gibt es keinen Zeitversatz solange keine Störungen sind

von Wolfgang (Gast)


Lesenswert?

Walter S. schrieb:
> damit gibt es keinen Zeitversatz solange keine Störungen sind

Doch, wenn die Eingangsgröße der Messung ein Sprung ist, wird die 
Erkennung verzögert. Die Erkennung von Störungen erfordert mehr 
Abtastwerte und mehr Abtastwerte erzeugen bei kausalen Filtern 
Zeitversatz.

Georg schrieb:
> Das Wissen darüber scheint aber gründlich verlorengegangen zu sein.

Mitnichten. Aber nicht alle Prozessdaten lassen sich damit beurteilen.
Die statistische Verfahren die auf Normalverteilung beruhen, können auch 
nur mit Prozessdaten umgehen, die sich ausreichend gut durch eine 
Normalverteilung beschreiben lassen. Sprünge gehören nicht dazu.

von Sascha (Gast)


Lesenswert?

Also mir fällt da ja direkt die Autokorrelationsfunktion ein. Verwendet 
man in Radaranlagen, um den zurückkommenden Radarpuls von Störstrahlung 
unterscheiden zu können.
Sollte sich bei genügend großer Abtastrate auch auf nem µC 
implementieren lassen.

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.