Zum Inhalt springen

Glättung von Werten


steinadler

Empfohlene Beiträge

Hallo zusammen,

ich taste in meinem Programm in bestimmten Zeitabständen Werte eines Sensors ab.

Diese "zappeln" jetzt... wie das bei einem Sensor halt üblich ist.

Wie kann man die Werte denn jetzt am besten glätten?

Zwei Sachen fallen mir da auf Anhieb ein:

1. Gleitender Mittelwert

2. (letzter gemessener Wert - erster gemessener Wert) / Zeitabstand

Gibt es denn noch was besseres?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zu welchem Zweck willst du sie denn glätten? Geht es nur um die Anzeige, oder um weitere Verarbeitung?

Eigentlich um beides.

Aber vorrangig um weitere Verarbeitung.

Auf deutsch gesagt:

Von einem Lüfter soll die Drehzahl per Zähler ausgewertet werden.

Dieser Wert schwank ziemlich sehr... warum auch immer.

Jetzt möchte ich den glätten, um dann die Drehzahl in Abhängigkeit von der Spannung zu regeln.

Das Problem mit der Mittelwertbildung ist, dass, wenn ich ein halbwegs ordentliches (gleichmäßiges) Ergebnis haben möchte, ca. 40 Werte gesampelt werden müssen.

Allerdings werden hierbei Drehzahländerungen erst ne ganze Zeit später erkannt (logischerweise)...

Und das ist für ne Regelung ja nicht sonderlich gut.

Drehzahl hoch -> Entgegenreglung ... obwohl die Drehzahl vor zwei Sekunden hoch war und mittlerweile aber sich schon wieder (warum auch immer) eingepegelt hat...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo zusammen,

Diese "zappeln" jetzt... wie das bei einem Sensor halt üblich ist.

Wie kann man die Werte denn jetzt am besten glätten?

Zwei Sachen fallen mir da auf Anhieb ein:

1. Gleitender Mittelwert

2. (letzter gemessener Wert - erster gemessener Wert) / Zeitabstand

Gibt es denn noch was besseres?

Definier mal zappeln. Wenn die Abweichungen über die üblichen 2*Sigma drüber rausgehen ist Mittelwertbildung sehr fehlerbehaftet. Genauso ist es, wenn positive und negative Werte in der Ergebnismenge sind.

Handelt es sich bei Dir um Rauschanteile? Dann könnte auch Averaging was bringen.

EDIT: da war ich wohl etwas zu langsam. Aber was Du im letzten Post beschreibst ist nicht unbedingt ein Problem Deiner Messwerte. Du musst in diesem Fall auch über eine Totzeit Deiner Regelstrecke nachdenken, damit die nicht anfängt zu schwingen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du musst in diesem Fall auch über eine Totzeit Deiner Regelstrecke nachdenken, damit die nicht anfängt zu schwingen.

Ja schon, aber ich dachte es gibt was, wo ich meine Werte etwas glätten kann, aber auch Änderungen ziemlich zeitnah mitbekomme.

Bei einer Abtastrate von 250ms schwankt es um +/-1 Impuls.

Das sind 4 Impulse in der Sekunde und demnach 240 Impulse in der Minute.

Also wären das ca. 120 Umdrehungen/Minute Schwankung.

Und das ist eigentlich zuviel.

Und das, wenn der Lüfter mit ner konstanten Spannung betrieben wird.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kannst du mir die üblichen 2 Sigma mal definieren?

Ich dachte die Grundlagen der Fehlerrechnung wären bekannt. Gehen wir mal von einem normalverteilten Wertevorrat aus. Man berechnet den Mittelwert und die Varianz oder Standardabweichung. Letztere wird als Sigma bezeichnet. Alles was sich in einem Bereich um +/-Sigma um den Mittelwert gruppiert (deshalb 2-Sigma-Umgebung) sollte statistisch sicher sein. Somit sind erst mal die extrem abweichenden Werte eliminiert. Natürlich darf Sigma nicht beliebig groß werden.

120 Umdrehungen als Schwankungen? +/- 1 Impuls? Das klingt mir nach digitalem Restfehler, den hast du doch immer. Klar wenn du summierst potenzieren sich die Fehler. Aber was machst du nochmal ganz genau?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also wären das ca. 120 Umdrehungen/Minute Schwankung.

Und das ist eigentlich zuviel.

Selbst wenn die Geschwindigkeit konstant ist, kann die Anzahl der Impulse um 1 schwanken, je nachdem, wie das Messintervall liegt.

Und 120 rpm ist die kleinstmögliche Abweichung, die du bei deinem Messintervall überhaupt bekommen kannst, also quasi die Auflösung deiner Messung. Das ist ein grundsätzliches Problem: Je kleiner dein Messintervall, desto ungenauer die Messung.

Du könntest Abweichungen um 1 gegenüber dem vorherigen Wert ignorieren, wenn sie die entgegengesetzte Richtung der letzen Änderung hat.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich dachte die Grundlagen der Fehlerrechnung wären bekannt. Gehen wir mal von einem normalverteilten Wertevorrat aus. Man berechnet den Mittelwert und die Varianz oder Standardabweichung. Letztere wird als Sigma bezeichnet. Alles was sich in einem Bereich um +/-Sigma um den Mittelwert gruppiert (deshalb 2-Sigma-Umgebung) sollte statistisch sicher sein. Somit sind erst mal die extrem abweichenden Werte eliminiert. Natürlich darf Sigma nicht beliebig groß werden.
Du verwechselst hierbei aber einiges. Es geht nicht um Fehlerrechnung, das ist etwas ganz anderes. Es geht um statistische Kontrolle.

Erste Frage: Kann man bei dem vorliegenden Prozess wirklich von einer Normalverteilung ausgehen? Es mag den Anschein haben, ist jedoch aufgrund der Messergebnisse nachzuweisen. Dann sind Mittelwert und Standardabweichungen aber eindeutig ermittelbar (aus der vorhandenen Stichprobe).

Zweite Frage: Ist die 2-Sigma- Umgebung mit einem Anteil von 68,27 % der Messwerte wirklich aussagefähig? In der Industrie nimmt man häufig die 6 Sigma Umgebung (+/- 3 Sigma), damit man zumindest 99,73 % der Messwerte erfasst hat.

Eliminiert sind damit noch keine Werte, sondern man hat einen relativ genau eingegrenzten Bereich.

Um eine ganz saubere statistische Lösung hinzubekommen, sind die Methoden der statistischen Prozesskontrolle (SPC) anzusetzen. Sie definieren anhand von Vorlaufwerten, welche die Parameter Mittelwert und Standardabweichung festlegen, un die Klassifizieren, ob es sich wirklich um eine Normalverteilung handelt, sogenannte Regelkarten, in denen jeweils untere und obere Warngrenzen und Eingriffsgrenzen berechnet werden.

Ein Überschreiten der Warngrenzen fordert eine Beobachtung des Prozesses, ein Überschreiten der Eingriffsgrenzen fordert ein Eingreifen in den Prozess.

Ob man damit aber mit Kanonen auf Spatzen schiesst, oder ob für den Threadersteller die saubere Lösung von Nöten ist, kann ich nicht beurteilen.

Eine Glättung der Werte läßt maximal ein Abgleiten des Prozesses erkennen. Dieses kann ausreichend sein, entweder über den gleitenden Mittelwert oder über einen gewichteten gleitenden Mittelwert.

Wenn der Prozess wichtig für die Firma ist, würde ich aber zur sauberen Lösung raten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde einen Zeitraum definieren z.B. 30 Sekunden, jede Sekunde einemal messen - je nach Anwendung muss das natürlich sinnvoll angepass sein. Darüber nen Mittelwert bilden und daraufhin reagieren wenn er z.B. mehr als drei mal hintereinander den Grenzwert berührt, unter oder überschreitet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde einen Zeitraum definieren z.B. 30 Sekunden, jede Sekunde einemal messen - je nach Anwendung muss das natürlich sinnvoll angepass sein. Darüber nen Mittelwert bilden und daraufhin reagieren wenn er z.B. mehr als drei mal hintereinander den Grenzwert berührt, unter oder überschreitet.

Hm... das ist das Problem.

Ich möchte ziemlich schnell auf die Änderung reagieren, also brauch ich auch nen kleinen Zeitraum.

So wie du es meinst, hab ichs ja schon:

Abtastung alle 400ms und Zeitraum 10 Werte. Also 4 Sek.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du könntest Abweichungen um 1 gegenüber dem vorherigen Wert ignorieren, wenn sie die entgegengesetzte Richtung der letzen Änderung hat.

Könntest du mir das mal als Beispiel aufschreiben?

Hab mal bissel rumprobiert, aber ich kapier das nicht so ganz.

Meine Zählerwerte sind jetzt mal als Beispiel diese:

Zählerwerte/Angestrebte Werte:

000 000

022 020

040 040

059 060

082 080

102 100

120 120

141 140

die größte Abweichung ist hier +/-2.

Wie meinst du das jetzt mit dem Ignorieren?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was hast Du bei den Beispielwerten denn groß auszusetzen?

Dann brauchst Du im Idealfall eben eine höhere zeitliche Auflösung.

Naja, bei einer höheren zeitlichen Auflösung - also angenommen 10 Sekunden - wenn ich dann die Lüfterdrehzahl ändere, geht der errechnete Wert erst sehr spät mit hoch.

Runterzu ists noch schlimmer

Da ist der Lüfter quasi schon aus, obwohl noch ewig eine Drehzahl angezeigt wird.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich erkenne zwei mögliche Ursachen deines Problemes.

Erstens besitz die Messgenauigkeit eine zeitliche verzögerung, die du durch eine Glättung der Werte nicht behoben bekommst. Du könntest ausgehend von bestehenden Werten eine Prognose ins Auge fassen, aber

Zweitens sind deine Messergebnisse relativ stabil. Du soltest dich freuen. Jeglicher Einsatz irgendwelcher Methoden wird dazu führen, dass deine Werte nahezu ideal verlaufen. Eine Ursache ist, dass dein Prozess ordentlich läuft, oder dass deine Messung zu ungenau ist (was ich mal bezweifeln mag). Die Abweichungen von +/- 3 (von 59 auf 82) liegt im normalen Abweichungsrahmen (Frage wieder, ob die realen Werte mit den gemessenen Werten übereinstimmen oder dort sich Fehler einschleichen, die man nicht behoben kriegen wird).

Alarm würde ich vielleicht auslösen, wenn die Bewegung der Werte von einem zum nächsten Messpunkt +/- 5 erreicht oder überschreitet und im nächsten Messpunkt in die selbe Richtung driftet.

Aber bei deinen angegebenen Werte besteht absolut kein Grund zur Panik. Das sind ganz normale Zufallsschwankungen in der Drehzahl oder vor allem in der Messgenauigkeit.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nochmal, deine Werte sind stabil.

Ob es gut aussieht, kann doch nicht die Frage sein. Wichtig ist, das es geht.

Die Abweichungen bei deinen Messwerten haben IMO ganz normale Ursachen, Messungenauigkeit und verzögerte Ergebnisdarstellung. Um dieses zu umgehen, wirst du dir bessere und teuere Hardware zulegen müssen. Dann werden die Ergebnisse vielleicht besser. Dein Prozess bleibt jedoch so bestehen, wie er ist.

Vielleicht sollte man auch mal über die Regelung einer datenabhängigen Steuerung (der Drehzahl) diskutieren. Natürlich wird die Drehzahl höher, wenn sie zu niedrig war. Aber sie wird im Normalfall über den optimalen Wert hinausgesteuert, um dann wieder niedriger (über den optimalen Wert hinau) zu werden. Nur so kann man steuern, weil, was passiert, wenn beide Schwellenwerte genau auf den optimalen Wert geeicht sind, genau bei diesem Wert (Gleichbleiben / Höher werden / runter drehen).

Deshalb sieh es einfach als normale Abweichungen an, die dir erst ab einer größeren Abweichung (mein Vorschlag +/- 5) so langsam ins Auge fallen sollten. Wichtig ist doch, dass es nicht abdriftet aus irgendwelchen Gründen und somit zu schnell oder zu langsam wird (abhängig von den jeweiligen Umweltbedingungen, also Laufzeit, Raumtemperatur, Raumklima, etc.)

Falls du etwas gerades für deinen Kunden benötigst, nutze einfach keine Realmessungen ;), oder runde so stark, dass es nicht auffällt (also auf die 10er stelle) ;).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, bei einer höheren zeitlichen Auflösung - also angenommen 10 Sekunden - wenn ich dann die Lüfterdrehzahl ändere, geht der errechnete Wert erst sehr spät mit hoch.

Höhere zeitliche Auflösung bedeutet mehr Messerte pro Sekunde, nichr weniger. Du bekommst Änderungen folglich schneller mit, sofern Dein Messgerät schnell genug präzise messen kann.

Wodurch man zur Frage kommt: Mit welcher Methode (Umsetzung in Hardware) misst das Messgerät die Drehzahl und wie wird sie übermittelt? Dies müsste man wissen, um die Schwankungen erklären zu können, oder feststellen zu müssen, dass etwas nicht stimmt.

Wofür ist die Regelung eigentlich gedacht? Was soll in Abhängigkeit wovon geregelt werden?

Falls du etwas gerades für deinen Kunden benötigst, nutze einfach keine Realmessungen

Davon möchte ich abraten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Davon möchte ich abraten.
Warum?

Die Wert sind IMo sauber und erklärbar. Wenn es für den Kunden nicht ausreichend ist, dann kann man auch die Anzeige derartig verändern, dass es schick aussieht. Sollten irgendwelche unnatürlichen Phänomene auftreten, lassen diese sich dann auch erkennen vom Kunden.

Oder aber der Kunde lebt mit diesen realen Werten, an denen es nix auszusetzen gibt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...