Filter
Einführung
Als Filter bezeichnet man in der Elektronik eine Schaltung, die die Frequenzanteile eines Signals unterschiedlich stark abschwächt oder betont. Im Bereich der Signalverarbeitung mit Software werden Filter mathematisch nachgebildet.
Tiefpass
Ein TP filtert Frequenzen oberhalb der Grenzfrequenz weg. Der einfachste passive Tiefpass besteht aus einer R/C-Kombination.
R ___ o-----|___|----+----o | | --- --- C | | | GND
Grenzfrequenz
[math]\displaystyle{ f_g = \frac{1}{2 \pi \cdot R \cdot C} }[/math]
Bei der Grenzfrequenz [math]\displaystyle{ f_g }[/math] besteht zwischen Eingangssignal und Ausgangssignal eine Phasenverschiebung von 45°.
Hochpass
Ein HP filtert Frequenzen unterhalb seiner Grenzfrequenz weg, d.h. er lässt Frequenzen oberhalb passieren.
Bandpass
Ein BP lässt sich als Kombination von HP und TP auffassen. Er lässt Frequenzen zwischen zwei Grenzwerten durch.
Notch-Filter
Das notch Filter nimmt eine bestimmte Frequenz aus dem Spektrum heraus.
Realisierung
Analog
Analoge Filter werden aus elektronischen oder mechanischen Bauteilen aufgebaut. In der Elektronik dienen sie der analogen Signalbearbeitung, in der Mechanik der Beeinflussung von Schwingungen. Beispielsweise werden durch Verkettung von schwingenden Feder-Masse-Systemen akustische Dämpfer ausgebildet.
Analoge Filter haben bis auf eine systembedingte Anstiegszeit keine Reaktionsverzögerung bzw Latenz.
Digital
Hier unterscheiden wir im Wesentlichen zwischen IIR- und FIR-Filtern. Der Algorithmus und der Rechenaufwand ist - wie die Effizienz - sehr verschieden. Speziell beim IIR muss man aufpassen, dass die Filterstufen nicht übersteuern, da IIR-Filter grundsätzlich instabil sein können.
Digitale Filter haben neben einer Anstiegszeit eine rechenzeitbedingte Latenz.
Aufbau der Digitalfilter
Ein digitales Filter besteht aus einem Speicher, in den nacheinander die einzelnen Daten eines Datenstromes hineingeladen und mit Koeffizienten multipliziert werden. Die Summe über einen definierten Bereich, der Zahl der sog. Taps, ist der Filterwert, der gfs noch durch die Zahl der Taps dividiert wird. Die Zahl der Taps ist massgeblich für die Güte und den Frequenzgang des Filters.
Die Filterkoeffizienten rühren aus der Überlagerung mit Schwingungen genau der Frequenzen, die man herausselektieren möchte. Im einfachsten Fall multipliziert man einen eingehenden Datenstrom mit einer COS-Schwingung (im komplexen Fall auch mit der Sinus-Schwingung) und erhält eine Resonanz: Frequenzen im Datenstrom, die genau der Filterfrequenz entsprechen, werden logischerweise komplett durchgelassen. Frequenzen links und rechts davon mit zunehmender Abweichung der Filterfrequenz immer schlechter. Durch Überlagerung mehrerer solcher Frequenzen erhält man eine Addiotion der COS-Funktionen und immer mehr Frequenzen werden durch das Filter durchgelassen. Mathematisch kann man dies allgemein formulieren und z.B. für alle Frequenzen abwärts gegen Null integrieren, wodurch man einen Tiefpass erhält.
Die Filterkoeffizienten sind selsbt überlagerbar, d.h. wenn man von einem Koeffizientensatz eines Tiefpasses, der auf 100kHz ausgelegt wurde, einen TP-Koeffizientensatz, welcher auf 1kHz ausgelegt wurde, abzieht, erhält man automatisch ein Bandpassfilter 1kHz-100kHz.
Beispiel
Zuerst berechnen wir die Filterkoeffizienten mithilfe folgender Daten:
- Filterart
- Ordnung
- Sample-Frequenz
- Grenzfrequenz.
Für die "analogen Koeffizienten" findet man z. B. im Tietze-Schenk Tabellen (nach Art und Ordnung sortiert). Diese rechnet man in "digitale Koeffizienten" um (Verhältnis Sample-Frequenz / Grenzfrequenz geht mit ein). Die Eingangsdaten werden mit diesen Koeffizienten im eigentlichen Filteralgorithmus verarbeitet.
Gleich mal ein Beispiel: krit.Filter, 2.Ordnung, Samplefreq 100Hz, Grenzfreq 2Hz (Verhältnis 50:1)
float afc[] = { /* analoge Filterkoeff. Art Ordnung */ 1.287188506, 0.414213562, 0.0, /* Krit. 2. */ 0.869958884, 0.189207115, 0.0, /* Krit. 4. */ 0.699891558, 0.122462048, 0.0, /* Krit. 6. */ 0.601690062, 0.090507733, 0.0, /* Krit. 6. */ 1.3617, 0.6180, 0.0, /* Bessel 2. */ 1.3397, 0.4889, 0.7743, 0.3890, 0.0, /* Bessel 4. */ 1.2217, 0.3887, 0.9686, 0.3505, 0.5131, 0.2756, 0.0, /* Bessel 6. */ 0.0 }; Ergebnis: AFC: A0= 0.870000 A1= 0.189200 DFC: C1=-1.494553 C0= 0.558423 D0= 0.015967 D1= 0.031934 D2= 0.015967 (das sind die gesuchten fünf Werte) DFC: 0x5fa7 0x8ef4 0x0416 0x82d 0x0416 (skaliert mit -16384 bzw. +65536)
Für höhere Ordnungen speisen wir das Ergebnis wiederholt (Ordnung / 2 mal) durch den Filter, allerdings (außer beim krit. Filter) jede Stufe mit anderen Koeffizienten.
geeignete Literatur:
Dough Coulter: Digital Audio Processing
Tietze / Schenk: Schaltungstechnik
Fortsetzung / Erweiterung folgt...
Anwendungen
- Entfernen von Störsignalen aus einem Nutzsignal (z. B. bei einem Funkempfänger)
- Unterdrückung eines Wechselpannungsanteils
- ...