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.

Digital

Hier unterscheiden wir zwischen IIR und FIR. Der Effekt ist der selbe, der Algorithmus und der Rechenaufwand verschieden. Speziell beim IIR muss man aufpassen, dass die Filterstufen nicht übersteuern.

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