Tiefpassfilter 1. Ordnung; Abtastrate / Grenzfrequenz

#6236235
Lesenswert?

Jaroslaw schrieb:
> Helmut S. schrieb:
>> (...) Grenzfrequenz fc = a/((1-a)*2*pi*Ts) (...)
>
> Hallo,
> ich bin zu einer anderen Formel gekommen:
> fc = 1/(2*PI*Ts) * arccos{1-a*a/[2(1-a)]}
> Und daraus:
> a = sqrt[B*(B+2)] - B    wo B = 1-cos(2*PI*fc*Ts)

Hello Jaroslaw,
vielen Dank für deine Formel.
Ich hatte mich schon gewundert warum ich im Frequenzgang und in der 
Sprungantwort in meinem Beispiel um 4% daneben lag. (wc=1000/s, 
Ts=100us)
Mit deiner Formel für "a" passt das perfekt.

wc = 2*pi*fc
fc = fs/(2*pi) * acos(1-a^2/(2*(1-a)))
wc/fs = acos(1-a^2/(2*(1-a)))
cos(wc/fs) = 1-a^2/(2*(1-a))
b = cos(wc/fs)
b = 1-a^2/(2*(1-a))
a = b-1+sqrt((b-1)^2+2-2*b)
B = 1 -cos(wc/fs)
a = sqrt[B*(B+2)] - B

Beispiel: wc=1000 fs=10000
a = 0.0951

Mit meiner alten Formel kam da a=0.09091 heraus.

Gruß
Helmut
#6237035
Lesenswert?

Da noch keiner den Rechenweg hingschrieben hat mache ich das mal ;). War 
etwas rumrechnerei, kennt jemand einen schnelleren Weg?

k ist der diskrete Zeitschritt.
y ist das Ausgangssignal im Zeitbereich
x ist das Eingangssignal im Zeitbereich
Y resp. X sind die Z-Transformierten ebenjener Signale.
H(z) ist die diskrete Übertragunsfunktion

Der Frequenzgang ist die Übertragungsfunktion auf der komplexen Achse 
ausgewertet. Der Zusammenhang lautet
. Der Frequenzgang ist der Betrag der Übetragungsfunktion:
Da kann man jetzt noch etwas rumrechnen und cos^2 + sin^2 = 1 usw 
benutzen. Die cutoff Frequenz ist da, wo sich die Leistung halbiert, 
also im Falle unserer Übertragungsfunktion (das sind Amplituden, keine 
Leistungen):

Einsetzen, ich betrachte ab jetzt nur noch den Nenner!
Die quadratische Gleichung lösen, dann kommt mit
 folgendes für n heraus:
Ich komme da mit
auf n = 10.517, was eurem a = 0.095087 entspricht.

Kennt wer einfachere Möglichkeiten?

Schöne Grüße,
Jan
#6238855
Lesenswert?

Martin K. schrieb:
> Sollte man bei den heutigen Möglichkeiten von MCUs den Rechenaufwand
> nicht direkt auf ein TPF zweiter Ordnung lenken?

Kommt drauf an was du brauchst ;) Das genannte Filter ist halt fix und 
einfach implementiert. Wenn du ein bisschen was glätten möchtest ohne 
viel rechnen passt du halt heuristisch an und gut ist..

Filter höherer Ordnung muss man halt irgendwie eine Funktion für 
schreiben oder eine Lib nehmen. Da muss man dann aber auch die 
Koeffizienten berechnen usw.

Manchmal lohnt das, manchmal nicht. Von der Rechenleistung ist das 
natürlich sehr häufig gar kein Problem mehr.
Persönliche Seite #6239758
Lesenswert?

Naja, für Filterauslegung für 2.Ordnung ist jetzt auch nicht so schwer. 
entweder man zieht die GF weit auseinander, in Anpassung an z.B. eine 
Dezimation oder man legt sie auf dieselbe Frequenz, um  es steilflankig 
zu machen. Die einzige Abweichung, die ich sonst noch kenne ist die 
Auslegung von den ladder filter, wenn man Oktave-weise einen 
zusätzlichen Knick braucht. Alles andere drum herum ist Optimierung für 
den Rechenaufwand.
#6239896
Lesenswert?

Hier noch eine Verbesserung für das Filter 1. Ordnung.
Wenn man die Übertragungsfunktion 1/(1+jwT) mit der bilinearen 
Transformation in den z-Bereich transformiert, dann geht die Dämpfung 
vorteilhaft in Richtung unendlich bei der halben Abtastfrequenz. Siehe 
die rote Kennlinie.

y(n) = (x(n) +x(n-1) +y(n)*c1)*c2

Die grüne Kennlinie ist das bisher diskutierte Filter 1. Ordnung.

y(n) = x(n)*a +y(n)*(1-a)
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren