Filter

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

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:

  1. Filterart
  2. Ordnung
  3. Sample-Frequenz
  4. 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:

www.digitalfilter.com

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
  • ...