Filter: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
(→‎Digital: bißchen "aufgeräumt")
Zeile 43: Zeile 43:
Zuerst berechnen wir die Filterkoeffizienten mithilfe folgender Daten:
Zuerst berechnen wir die Filterkoeffizienten mithilfe folgender Daten:


Filterart, Ordnung, Sample-Frequenz, Grenzfrequenz.
# Filterart
# Ordnung
# Sample-Frequenz
# Grenzfrequenz.


Für die "analogen Koeffizienten" findet man z.B. im Tietze-Schenk  Tabellen (nach Art und Ordnung sortiert).
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.
 
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)
Gleich mal ein Beispiel: krit.Filter, 2.Ordnung, Samplefreq 100Hz, Grenzfreq 2Hz (Verhältnis 50:1)
<pre class="code">
<pre class="code">
float afc[] = { /* analoge Filterkoeff.   Art   Ordnung */
float afc[] = {
  1.287188506,0.414213562, 0.0         /* Krit.  2.   */
/* analoge Filterkoeff.                                         Art     Ordnung */
  0.869958884,0.189207115, 0.0         /* Krit.  4.   */
    1.287188506, 0.414213562, 0.0,                            /* Krit.  2.     */
  0.699891558,0.122462048, 0.0         /* Krit.  6.   */
    0.869958884, 0.189207115, 0.0,                            /* Krit.  4.     */
  0.601690062,0.090507733, 0.0         /* Krit.  6.   */
    0.699891558, 0.122462048, 0.0,                            /* Krit.  6.     */
  1.3617, 0.6180, 0.0,                                 /* Bessel  2.   */
    0.601690062, 0.090507733, 0.0,                            /* Krit.  6.     */
  1.3397, 0.4889, 0.7743, 0.3890, 0.0,                  /* Bessel  4.   */
    1.3617,     0.6180,     0.0,                             /* Bessel  2.     */
  1.2217, 0.3887, 0.9686, 0.3505, 0.5131, 0.2756, 0.0,  /* Bessel  6.   */
    1.3397,     0.4889, 0.7743, 0.3890, 0.0,                  /* Bessel  4.     */
  0.0
    1.2217,     0.3887, 0.9686, 0.3505, 0.5131, 0.2756, 0.0,  /* Bessel  6.     */
    0.0
};
};


Ergebnis:
Ergebnis:
AFC: A0= 0.870000  A1= 0.189200
 
DFC: C1=-1.494553  C0= 0.558423  D0= 0.015967  D1= 0.031934  D2= 0.015967
AFC: A0= 0.870000  A1= 0.189200
(das sind die gesuchten fünf Werte)
DFC: C1=-1.494553  C0= 0.558423  D0= 0.015967  D1= 0.031934  D2= 0.015967
DFC 0x5fa7  0x8ef4  0x0416  0x82d  0x0416 (skaliert mit -16384 bzw. +65536)
(das sind die gesuchten fünf Werte)
DFC: 0x5fa7  0x8ef4  0x0416  0x82d  0x0416 (skaliert mit -16384 bzw. +65536)
</pre>
</pre>


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.
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:
geeignete Literatur:


www.digitalfilter.com
[http://www.digitalfilter.com www.digitalfilter.com]


Dough Coulter: Digital Audio Processing
Dough Coulter: Digital Audio Processing

Version vom 24. Februar 2005, 14:21 Uhr

Einführung

Als Filter bezeichnet man eine Schaltung die die Frequenzanteile eines Signals unterschiedlich stark abschwächt.

Tiefpass

Filtert Frequenzen oberhalb der Grenzfrequenz heraus. Der einfachste passive Tiefpass besteht aus einer R/C-Kombination.

        R
       ___
o-----|___|----+----o
               |
               |
              ---
              --- C
               |
               |
               |
              GND

Grenzfrequenz

[math]\displaystyle{ f_g = \frac{1}{2 * \pi * R * C} }[/math]


Bei der Grenzfrequenz [math]\displaystyle{ f_g }[/math] besteht zwischen Eingangssignal und Ausgangssignal eine Phasenverschiebung von 45°.

Hochpass

Bandpass

u.a. auch Sender - Phänomen!

Notch-Filter

Realisierung

Analog

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