budo's Web
Hier findet ihr einiges zu meinen Hobbies

Smooth-Filter für digitale Signale

Ein einfaches Smooth-Filter (digitales Lowpass Filter) lässt sich bei analogen (siehe Fahrrad-Bremslicht) als auch bei digitalen Signalen (siehe Uhren-Synchronisation mit Funkuhr) anwenden. Das Smooth-Filter bildet einen gewichteten Mittelwert zwischen dem aktuellen Messwert (currentValue) und dem vorherig berechneten Mittelwert (smoothedValue).

smoothedVal = (currentValue * (1 - filterValue)) + (smoothedValue * filterValue)

Die Filterwirkung ist dabei abhängig von der Gewichtung (d.h. dem Filterfaktor filterValue). Bei digitalen Signalen beschränkt sich der aktuelle Messwert auf die Werte 0 und 1. Die Filterwirkung ist in den nachfolgenden Diagrammen für verschiedene Filterfaktoren (0, 30, 60 und 90) und für verschieden breite Pulse (1 Takt breit (blau) .. 10 Takte breit (gelb-orange)) dargestellt. Die Breite der Pulse bezieht sich dabei auf die Taktgeschwindigkeit, mit der die Messwerte an das Filter gegeben werden. Die Pulsbreite beschränkt sich somit auf die Aussage x Takte breit.

sm

sm

sm

sm

Betrachtet man das Diagramm mit dem Filterfaktor 0 bezüglich des berechneten "smoothedValue" (vertikale Achse), so erkennt man beim Wert 0,5 (Übergang von LOW nach HIGH und umgekehrt), dass natürlich bei Filterfaktor 0 keinerlei Filterwirkung auftritt. Der blaue Puls ist 1 Takt breit und der gelb-orange Puls ist 10 Takte breit (horizontale Achse). Bei einem Filterfaktor 0,6 sieht das schon anders aus. Der blaue Puls erreicht nicht mehr den Wert 0,5, d.h. er wird weg gefiltert. Den Zusammenhang zwischen Filterfaktor und der Taktanzahl, d.h. die Filterwirkung, zeigt das folgende Diagramm.

sm

Die Lesart des Diagramm ist wie folgt:
- Ab einem Filterfaktor von 0,51 werden 1 Takt breite Pulse weg gefiltert.
- Ab einem Filterfaktor von 0,71 werden 2 Takt breite Pulse weg gefiltert.
- Ab einem Filterfaktor von 0,80 werden 3 Takt breite Pulse weg gefiltert.
- usw.

Die Filterwirkung wirkt sich natürlich sowohl auf die steigende Flanke als auch auf die fallende Flanke aus. D.h. wiederum, hat man das Filter eingestellt, dass 5 Takt breite Pulse noch weggefiltert werden, dann verschiebt sich ein breiterer positver Puls um einige Takte, da im bei der steigenden Flanke etwas weg gefiltert wird und bei der fallenden Flanke etwas angefügt wird. Die Taktanzahl der Verschiebung ist dabei abhängig von der jeweiligen positive bzw. negativen Pulsbreite.

sm

Impulszug 5 x HIGH, 5 x LOW, 10 x HIGH, 10 x LOW, 15 x HIGH, 15 x LOW

In obigem Diagramm erkennt man, dass der 5-Takte-HIGH Puls des Eingangsignals (blau) weg gefiltert wurde. Der 10er und 15er Puls kommen versetzt durch (gelb). Der Versatz ist beim 15er Puls größer als beim 10er Puls.

Filter-Einstellung und Simulation

Zur Einstellung des Smooth-Filters läßt sich der Takt und der Filterfaktor variieren. Die Werte für den Filterfaktor können obigem Filterwirkungsdiagramm entnommen werden. Die Kurven für obigen Pulszug sehen bei einer Filterung mit 1 Takt, mit 5 Takten oder 10 Takten wie folgt aus:

sm

sm

sm

Eine Simulation auf einem Arduino bringt dann die Bestätigung des Eingangs- und Ausgangssignal-Verhältnisses.

sm

Filterung mit 1 Takt mit 100ms

sm

Filterung mit 5 Takten mit 20ms

sm

Filterung mit 10 Takten mit 10ms


Nach Oben