Forum: Mikrocontroller und Digitale Elektronik Noise rausrechnen?


von Mirko (Gast)


Lesenswert?

Mein Sensor liefert zappelnde Werte (ca +- 0,5%) und da er relativ 
langsam ist (5 Werte in der Sekunde), kann ich nicht 1000 Werte lesen 
und den Mittelwert bilden.

Hat jemand C-Sourcecode für einen Filter? Suche mit Google führt zu 
Butterworth-Filter für Noise-Eliminiation. Ist das díe richtige 
Richtung?

von pfft. (Gast)


Lesenswert?

Eine exponentielle Mittelung. Benoetigt jeweils nur den letzten Wert.

von Mirko (Gast)


Lesenswert?

Bringt es nicht - falls Du das hier meinst:

gefilterter messwert(t) = Filter * messwert(t) + (1 - Filter) * 
messwert(t - 1) mit 0.0 < Filter <= 1.0

von Ulrich (Gast)


Lesenswert?

Der mittelwert ist auch schon eine Art Filter, und nicht mal einer der 
schlechtesten. Wenn der Mittelwert also immer noch zu sehr schwankt, muß 
man für ein besseres Signal sorgen oder die art der Störungen genauer 
untersuchen. Ein "allgemeiner" Filter ohne extra informationen über die 
STörungen wird kaum besser.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Eine exponentielle Mittelung. Benoetigt jeweils nur den letzten Wert.
Benötigt nur die Summe der letzten n Werte. Der Mittelwert wird 
abgezogen, und der neue Wert aufaddiert.

Such mal im Forum nach "+mittelwert +berechnen"
Beitrag "Re: Gleitender Mittelwert"
Beitrag "Re: gleitender Mittelwert im Atmel"

von Mirko (Gast)


Lesenswert?

> für ein besseres Signal sorgen oder die art der Störungen genauer
untersuchen

Der Sensor liefert, was er liefert, daran kann ich nichts ändern 
(digitales SPI-Interface).

Das Herumzappeln von 0.5% bis fast 0.75% ist problematisch für die damit 
verbundene Regelung.

Wenn ich das Signal mit meinem Smoothing-Filter (oben) glatt mache, ist 
das Zappeln zwar irgenwann weg, der Faktor muss nur extrem genug 
ausfallen, aber weil nur 3 - 5 Werte pro Sekunde kommen, ist das Signal 
(z.B. Sprung der Messwerte) danach zu stark verfälscht/verschoben

Ich hätte gerne einen Filter, der das mehr oder weniger symmetrische 
Zappeln nach oben und unten filtert, ohne die Tendenz des Signals so 
stark zu verändern/verzögern.

(mir fallen als Laie "fuzzy"-Lösungen ein, z.B. zwei aufeinanderfolgede 
Anstiege => Filterung reduzieren), aber eine mathematische Lösung wäre 
mir lieber.

von pfft. (Gast)


Lesenswert?

Naja. Wenn man das Sensor signal kuenstlich langsam macht, der Prozess 
aber schnell ist, so bekommt der regler ein Problem. Falls der Prozess 
noch langsamer ist, so wuerde ich das Raschen auf den Regler geben. Die 
Strecke mach das dann schon weg.

von OlliW (Gast)


Lesenswert?

Irgendwie sollten noch ein paar grundlegene physikalische Gesetze 
berücksichtigt werden. Wenn Ihr Rauschen wegbekomen wollt dann geht das 
NUR wenn Ihr i) die "Integrationszeit" länger macht wodurch die 
Responsezeit automatisch langsammer wird oder Ihr ii) irgendetwas über 
das Raussignal wisst was man ausnutzen könnte (es also kein 
statistisches Rauschen ist). Alle anderen Zauberlösungen können nicht 
gehen.

Wenn dein Zappeln mit einer gewissen Frequenz geschieht (bei 50 oder 
100Hz würde man soetwas Brumm nennen), dann hilft zB ein Notchfilter 
oder so, ansonsten bleibt nur Sensorsignal verbessern.

Die 0.5% sind hoffentlich nicht nur das Ergebnis eines 8-Bit Wandlers?

Wenn der Prozess langsamer wäre dann würde die Regelung ja keine 
Probleme machen => offensichtlich ist bei Mirko der Prozess zu schnell, 
bzw. die Regelung zu langsam...

Wie teils schon gesagt, Mirko, dir bleibt nichts anderes als dein Signal 
zu verbessern, mehr Messpunkte pro Zeit zu bekommen, oder ein langsames 
System zu akzeptieren (wenn alles in Echtzeit gehen soll).

Olli

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.