# Tiefpass Filter programmieren



## Bensen83 (12 Oktober 2012)

Hallo Leute,

würde gerne einen Tiefapass filter programmieren, um störeinwirkungen auf ein messignal ausgleichen zu können.
Leider weis ich nicht genau, wie ich da ran soll. Wie filtert man so etwas, denn wenn ich eine Spitze in meinen messignalen drin habe, will ich diese ja ausblenden, wenn jedoch das messsignal auf einmal hochschießt und auch dort bleibt, will ich natürlichauch relativ schnell diesen wert annehmen. hat da jemand eine idee von euch?


----------



## Larry Laffer (12 Oktober 2012)

Hallo,
so ein Filter nennt sich auch "Glättung" oder "Mittelwert-Bildung".
Gib das doch einfach mal in die Suche ein. Dann bekommst du ettliche Beispiele dazu ...

Gruß
Larry


----------



## Bensen83 (12 Oktober 2012)

*Ok*

Eine Mittelwertbildung will ich ja nicht, denn wenn ich da nen ausreißer drin habe, und 10 werte mittel, dann bekomme ich ja bei
bspw. 9*10V und einem Messfehler ausreißer 1*200V schon folgedes raus:

9*10+1*200 = 290V
290V / 10 = 29V   --> Falsch

und diesen wert habe ich ja dann so lange drin stehen, bis der messfehler ja aus meinem 10er schiebregister wieder drausen ist.


----------



## MasterOhh (12 Oktober 2012)

Naja, aber ein Tiefpassfilter macht genau das Selbe. Schnelle/Abrupte Änderungen im Signal werden vom Filter weggebügelt/gedämpft. 

Musst dich dann entscheiden was du willst. 

Ein TP 1. Ordnung kannst du so realisieren:


```
Wert_neu = (1-Faktor)*Wert_alt + Faktor * Eingangswert
Wert_alt = Wert_neu
```

Über Faktor kannst du die Trägheit des Filters bestimmen.


----------



## Larry Laffer (12 Oktober 2012)

Das würde dir aber jeder Filter dann auch machen, da der ja erstmal nichts anderes ist ...
Du kannst natürlich auch noch einen Plausibilitäts-Check dranhängen (also der neue Wert darf niemals größer sein als z.B. der doppelte bisherige Mittelwert).
Oder du überprüfst den Gradienten - also den Anstieg (kommt aber wahrscheinlich auf das Gleiche heraus ...)

Gruß
Larry


----------



## kaputt (13 Oktober 2012)

What about a ramp function?  That allows only minor change per scan.

Kaputt


----------



## gloeru (14 Oktober 2012)

Ja Filter sind eine komplizierte Angelegenheit.
Als erstes würde ich wie vorgeschlagen eine Plausbilitätsprüfung vorschalten. (Beispiele dafür sind: Temperaturen von Räumen ändern sich nur sehr langsam, die Position von Achsen ändert sich selten schlagartig. Hier musst du entscheiden, wie die Messprozess in der Natür überhaupt funktionieren kann)
Weiter wäre denkbar, neben der reinen Differenz auch die zweite Ableitung auf einen max. Wert zu überwachen. (Dass heisst, das Signal darf sich nicht zu stark verändern, als Beispiel ein Stein der runterfällt, beschleunigt ja auch mit 10m/s^2 -> Viele Prozesse in der Natur laufen mit Exponentialfunktionen ab, gerade im Bereich Temperatur)
Danach kommt ein Filter. Ich nehme oftmals ein Schieberegister oder ein gleitender Mittelwert (Vorteil vom gleitenden Mittwelwert ist, dass Änderungen sofort sichtbar werden, wenn auch sehr fein... -> Du erhälst weiterhin eine "stetige" Funktion, je nach Weiterverwendung wichtig!)

Die Anzahl Werte für die Mittelwertbildung bestimmst du natürlich von deinem Prozess abhängig.  (Bei einer Gärtankanlage (500L) für eine Brauerei nehme ich 500 Werte -> 2s @2ms, bei einer sehr präzisen Messapplikation nehme ich 10 Werte -> 5ms @500us, das mit einem gleitenden Mittelwert, da wir das Messignal auf kleine Sprünge (Kraftabrisse) überwachen müssen)


----------

