Übertragungsfunktion aktives Filter

Gast #4278246
Lesenswert?

Hallo zusammen,

ich habe angehangenes Filter (1kHz) simulatorisch "gebastelt". Leider 
kann ich die Ü-Fkt zur mathematischen Ermittlung der Grenzfrequenz nicht 
aufstellen. Kann mir jemand Denkanstöße liefern? Meine Uni-Zeit liegt 
echt schon lang zurück. Ich bekomms leider nicht mehr hin.

Gruß
Steffen
Angehängte Dateien:
Gast #4278278
Lesenswert?

Hallo Helmut,

danke dir erstmal. Kannst du mir noch weiterhelfen, wie ich daraus die 
Grenzfrequenz bestimme. Ich habe mittlerweile auch die Ü-Fkt 
aufgestellt. Sieht etwas anders aus als deine.

Gruß
Steffen
Angehängte Dateien:
#4278359
Lesenswert?

Die Grenzfrequenz ergibt sich, wenn man den Betrag der 
Übertagungsfunktion nimmt und diese gleich 1/sqrt(2) setzt. Dann das 
Ganze nach w(omega) bzw f auflösen. Diese Berechnung erfodert das Lösen 
einer Gleichung 3. Grades.

Normalwerweise geht man aber anders vor. Man überlegt sich ob man 
Bessel- oder Butterworth-Funktion haben will und die gewünschte 
Grenzfrequenz. Dann gibt man am besten C1, C2 und C3 vor und berechnet 
die Widerstände. Diese Berechnung erfordert das Lösen eines 
nichtlinearen Gleichungssystems (Matlab). Da man die so berechneten 
Widerstände nicht exakt mit den Werten kaufen kann oder will, simuliert 
man dann mit den gewählten Widerständen mit LTspice um die Abweichung im 
Frequenzgang zu überprüfen.
In der Literatur findet man auch geschlossene Lösungen(Formeln) bei 
denen durch Vorgabe gleicher Widerstände die Kapazitäten berechnet 
werden. Allerdings muss man dann eventuell "krumme" Kapazitätswerte in 
Kauf nehmen.
Gast #4278387
Lesenswert?

Hallo Helmut,

die Widerstände und Cs habe ich ja sozusagen simulatorisch bereits 
festgelegt. Was ich nun brauche ist eigentlich nur noch eine Funktion, 
mit der ich für jede Amplitude+Frequenz der Eingangsspannung die 
Ausgangsspannung berechnen kann.

Geht das dann einfacher?

Gruß
Steffen
#4278401
Lesenswert?

F(jw) = 1/(1 +jw*(R1*C1+(R1+R2+R3)*C3) +(jw)^2*(R1*(R2+R3)*C1*C3 +
R3*(R1+R2)*C2*C3) + (jw)^3*R1*R2*R3*C1*C2*C3)


|F(w)| = 1/sqrt(Realteil^2+Imaginärteil^2)


|F(w)| = 1/sqrt( (1-w^2*(R1*(R2+R3)*C1*C3 +
R3*(R1+R2)*C2*C3))^2 + (w*(R1*C1+(R1+R2+R3)*C3)-w^3*R1*R2*R3*C1*C2*C3)^2 
)

w = 2*pi*f



Das muss man wissen um obige Formel für den Betrag zu erstellen.

(jw)^2 = -w^2

(jw)^3 = -j*w^3
Moderator #4278454
Lesenswert?

Helmut S. schrieb:
> Mit welchem Programm(Maple, Maxima,...) wurde diese Gleichung erstellt?

Programm?

Ich habe gerade eine Schubkarre organisiert, um damit die
vollgeschriebenen Zettel zum Altpapiercontainer zu bringen ;-)


Nein, Spaß beiseite: Ich hab's vom Fräulein Maxima rechnen lassen.

Man kann da aber sicher noch ein paar Dinge etwas vereinfachen.
Moderator #4278459
Lesenswert?

Steffen schrieb:
> Kannst du es kurz erklären (ein bisschen
> Syntax). Ich verstehe python leider nicht.

So viel zu erklären gibt es da nicht:

r1, r2, r3, c1, c2 und c3 sind die Werte der passiven Bauteile.
+, -, * und / sind die Operatoren für die vier Grundrechenarten.
** ist der Potenzoperator und sqrt() die Quadratwurzelfunktion. An zwei
Stellen tauchen auch noch Kubikwurzeln auf, die hier als **(1/3)
geschrieben werden.
Gast #4278469
Lesenswert?

Hi Yalu,

ich gehe davon aus, dass du die Formel nicht extra für mich eingegeben 
haszt ;) Die ist ja echt ziemlich mächtig. Wie bist du auf die Formel 
gekommen, bzw. woher kommt sie?

Danke dir erstmal!

Gruß
Steffen
Moderator #4278492
Lesenswert?

Steffen schrieb:
> Warum liefert mir folgendes Tool eine höhere fg ?

Dieses Tool berechnet die Polstellen der Übertragungsfunktion bzw. die
Beträge der zugehörigen Frequenzen. Der erste Pol entspricht aber nicht
automatisch der 3dB-Grenzfrequenz des Gesamtfilters. Das ist nur dann
näherungsweise der Fall, wenn der zweite Pol weit genug vom ersten
entfernt liegt, so dass der Frequenzgang im Bereich des ersten Pols
durch den zweiten nicht oder nur unwesentlich beeinflusst wird.

Steffen schrieb:
> Wie bist du auf die Formel gekommen, bzw. woher kommt sie?

Wie schon oben geschrieben, habe ich dafür das Computer-Algebra-System
(CAS) Maxima verwendet:

  http://maxima.sourceforge.net/

Dazu gibt es noch eine Oberfläche, die das Arbeiten damit etwas
komfortabler macht:

  http://andrejv.github.io/wxmaxima/

Ich habe die von Maxima ermittelte Formel in ein Python-Programm
kopiert, weil ich davon ausging, dass mehr Leute Python als Maxima
installiert haben.
Gast #4278499
Lesenswert?

Ah OK. Ich werd mir das Tool mal herunterladen. Kannst du mir die maxima 
sources zur Verfügung stellen? Dann habe ich gleich mal was "reales" zum 
rumspielen.

Wie hast du es gerechnet, damit du das Problem mit den zu eng 
beieinanderstehenden Polstellen nicht hast?

Gruß
Steffen
Moderator #4278641
Lesenswert?

Steffen schrieb:
> Ah OK. Ich werd mir das Tool mal herunterladen. Kannst du mir die maxima
> sources zur Verfügung stellen? Dann habe ich gleich mal was "reales" zum
> rumspielen.

Ich habe die Quelldatei mit ein paar Kommentaren versehen und als
Maxima-Batch- und als wxMaxima-Datei angehängt. Erstere startest du von
der Kommandozeile mit
1
maxima -b sallen3.mac

letztere lädst du mit "File" -> "Open..." in wxMaxima und startest die
Berechnung mit "Cell" -> "Evaluate All Visible Cells".

> Wie hast du es gerechnet, damit du das Problem mit den zu eng
> beieinanderstehenden Polstellen nicht hast?

Genau so, wie es Helmut oben geschrieben hat:

Helmut S. schrieb:
> Die Grenzfrequenz ergibt sich, wenn man den Betrag der
> Übertagungsfunktion nimmt und diese gleich 1/sqrt(2) setzt. Dann das
> Ganze nach w(omega) bzw f auflösen.
Angehängte Dateien:
#4278778
Lesenswert?

Herleitung der -3dB Grenzfrequenz

F(jw) = 1/(1 +jw*(R1*C1+(R1+R2+R3)*C3) +(jw)^2*(R1*(R2+R3)*C1*C3 +
R3*(R1+R2)*C2*C3) + (jw)^3*R1*R2*R3*C1*C2*C3)

|F(w)| = 1/sqrt(Realteil^2+Imaginärteil^2)

|F(w)| = 1/sqrt( (1-w^2*(R1*(R2+R3)*C1*C3 +
R3*(R1+R2)*C2*C3))^2 + (w*(R1*C1+(R1+R2+R3)*C3)-w^3*R1*R2*R3*C1*C2*C3)^2
)

w = 2*pi*f

-3dB Frequenz berechnen

1/sqrt(2) = 1/sqrt( (1-w^2*(R1*(R2+R3)*C1*C3 +
R3*(R1+R2)*C2*C3))^2 + (w*(R1*C1+(R1+R2+R3)*C3)-w^3*R1*R2*R3*C1*C2*C3)^2
)

1-w^2*(R1*(R2+R3)*C1*C3+R3*(R1+R2)*C2*C3))^2 + 
(w*(R1*C1+(R1+R2+R3)*C3)-w^3*R1*R2*R3*C1*C2*C3)^2 = 2

(1-w^2*d)^2 +(w*e-w^3*f)^2 = 2

x=w^2

x3 +x^2*(d^2-2*e*f)/f^2 + x*(e^2-2*d)/f^2 -1/f^2 = 0

Hier die Berechnung mit Scilab unter Anwendung der Cardanischen 
Lösungsformel für Gleichungen 3. Grades.
Achtung diese untenstehende Berechnung erfordert das "double precision" 
Zahlenformat falls das jemand in irgend einer Programmiersprache 
implementiert. Der Grund ist dass die Variable D den Wert 10^47 
erreicht. Matheprogramme rechnen schon in der Grundeinstellung mit 
double precision. Man beachte nthroot(,3). Die Funktion ^(1/3) liefert 
falsche Werte für negative Argumente.

--------- Scilab code ----------

R1=15e3
R2=100e3
R3=30e3
C1=10e-9
C2=3.3e-9
C3=1e-9

d=R1*(R2+R3)*C1*C3 + R3*(R1+R2)*C2*C3
e=R1*C1+(R1+R2+R3)*C3
f=R1*R2*R3*C1*C2*C3

a=(d*d-2*e*f)/(f*f)
b=(e*e-2*d)/(f*f)
c=-1/(f*f)

// Lösung der Gleichung 3. Grades mit der Cardanischen Formel
// x^3 + a*x^2 + b*x + c = 0

p=(3*b-a*a)/3
q=2*a*a*a/27-a*b/3+c
D=p*p*p/27+q*q/4
u=nthroot(-q/2+sqrt(D),3)
v=nthroot(-q/2-sqrt(D),3)
x=u+v-a/3

w=sqrt(x)
f=w/(2*%pi)



Ergebnis:
f = 915.26369

Im Anhang ist die Datei(.asc) für die Simulation mit LTspice.
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