Howto AC-Analyse zu einer singulären Festfrequenz, erläutert an einem Notchfilter zum Entfernen von Netzbrumm

RudiS

Absoluter Profi
Member
Landesflagge
Normalerweise macht man eine AC-Analyse, um den Frequenzverlauf einer Schaltung zu beurteilen.
Das ist vor allem bei der Entwicklung von Filtern angebracht, denn ich habe schon oft erlebt,
dass die per Formel berechnete Frequenz nicht mit der Simulation übereinstimmte und Bauteilwerte angepasst werden musste.

Hier kann die AC-Simulation zu einer einzelnen Festfrequenz eine Hilfe sein. Leider ist diese Funktion nicht sehr ausführlich in der LTspice-Hilfe dokumentiert,
sie soll nachfolgend an einem Beispiel erläutert werden. Wir gehen dabei in drei Schritten vor.

- In Schritt 1 machen wir eine normwertgestützte, "normale" AC-Analyse zum
Frequenzgang des Filters
. Da die Netzfrequenz im Allgemeinen sehr konstant ist (+/- 200mHz),
können wir diesbezügliche Schwankungen unbeachtet lassen.
- In Schritt 2 folgt die AC-Analyse zur Festfrequenz (= der Filterfrequenz), in der wir versuchen,
optimale Filterwerte zu finden.
- In Schritt 3 geht es um die Verifizierung der Parameter mittels TRAN-Analyse, auf solch eine Weise
wäre auch eine konkret mit realen Bauteilen aufgebaute Schaltung zu prüfen.

Für diese Vorgehensweise werden nur die für den Schritt notwendigen Anweisungen eingeschaltet, die anderen bleiben aus.
Zum Ein- bzw. Ausschalten: Rechtsklick im Schaltplan auf "Step x", Netlist Kontext oben links "Comment" zum Ausschalten,
"SPICE directive" zum Einschalten anklicken.

Die Syntax einer AC-Simulation zu einer bestimmten Festfrequenz ist super-einfach:

.ac list {zu untersuchende Frequenz}

Allein, nur mit dieser Anweisung wird nur eine Liste der in der Schaltung auftretenden Spannungen und Ströme ausgegeben,
was einem meistens nicht viel weiter hilft.
Der Trick: man muss obige Anweisung zusammen mit einer .step-Direktive benutzen!
Denn: mit dem Steppen eines Bauteilwertes kann man so den optimalen Wert eines Bauteils z.B. in einem Filter bestimmen.

Nachfolgend ein Gyrator-Notchfilter zum Entfernen von Netzbrumm. Dieses mit Gyrator realisierte Filter hat den Vorteil,
dass man mit einem Dual-Opamp (NE5532 usw.) auskommt. Für die Schaltung habe ich den OP07 nur deswegen genommen,
weil der innerhalb LTspice vorhanden ist und ich nicht noch extra ein Modell für den NE5532 hochladen muss.
[Wer sich über die Netzfrequenz von 60Hz wundert: in Westjapan, wo ich lebe, beträgt die Netzfrequenz 60Hz,
in Ostjapan (Tokyo) jedoch 50Hz. Wer wissen möchte, warum das so ist, kann sich bei Wikipedia schlau machen.]

01__G-notch_schema.png


Die frequenzbestimmenden Bauteile sind Rf und Cf, die Frequenz berechnet sich nach der Formel:

f = 1 / (2*pi*Rf*Cf)

Da man meist mit einem einzigen Standard-Bauteilwert nicht hinkommt, gibt man am besten den Kondensator vor
und berechnet den entsprechenden Widerstandswert.
Für 60Hz sind das bei einem Kondensator von 220nF 12k057 für den Widerstand.
Wir nehmen erst mal den Normwert 12k und sehen, wie weit wir damit kommen.

02__G-notch_Plot1.png

Wenn wir die berechneten Messwerte in der LOG-Datei mit dem Plot vergleichen, so sehen wir:
selbst eine so scheinbar kleine Abweichung von 56 Ohm verringert die Reduktion von möglichen -50dB auf magere -15dB,
weil nun die Filterfrequenz nicht 60Hz, sondern 60.273Hz beträgt!

03__G-notch_Plot2.png

04__G-notch_Log.png

Wenden wir uns nun dem eigentlichen Thema zu, der AC-Analyse bei einer Festfrequenz.
Wir schalten "Step 1" aus und "Step 2" ein.
Die Frequenz ist natürlich die angestrebte Filterfrequenz von 60Hz (Parameter f).
Der berechnete Filterwiderstand beträgt 12k plus 57 Ohm,
wir steppen diesen Widerstand plus-minus 20 Ohm mit einem möglichst kleinen Step (0.25 Ohm) um diesen Wert herum:

.ac list {f}
.step param Rf 12k040 12k080 0.25


und erhalten folgenden Plot:

05a__G-notch_Plot3.png

Wir sehen hier den Verlauf der Ausgangsspannung in Bezug auf den gesteppten Filterwiderstand Rf.
Durch Linksklick auf den Schriftzug "V(out)" im Plotfenster schalten wir den Cursor ein,
durch erneuten Linksklick ins Plotfenster machen wir es wieder aktiv
und können jetzt den Cursor mit den Cursortasten "links" und "rechts" bewegen.
Auf der X-Achse finden wir den Wert des Filterwiderstandes, auf der Y-Achse den zugehörigen Wert der Ausgangsspannung in dB.
Diese Werte werden in dem kleinen Cursor-Fenster angezeigt.
Es ist nützlich, das Cursor-Fenster ins Plotfenster zu verschieben, dann hat man Cursor und Cursor-Fenster gleichermassen im Blick.

Wir bewegen den Cursor auf den berechneten Wert von 12.057k.
Der liegt rechts vom Minimum, ist also in diesem Plot nicht das Minimum selbst! Magnitude ist hier -51.8dB.

05b__G-notch_Plot3b.png

Wir bewegen den Cursor auf das Minimum: Widerstand 12.0555k, Magnitude -58.8dB.
Das sind 55.5 Ohm, die wir dem Normwert 12k hinzufügen müssten.
Normwert 56 Ohm ist ganz in der Nähe, wir bewegen den Cursor auf den Wert 12.056k: Magnitude -57.1dB.
Das sind knapp 2dB weniger als im Minimum, aber damit kann man leben,
einen Widerstand 55.5 Ohm zusammenzustückeln lohnt die Mühe nicht. Wir entscheiden uns für 12 kOhm + 56 Ohm.

--- Intermezzo - für Fortgeschrittene ---
Per Messanweisung kann man anscheinend nicht direkt auf die gestep'ten Widerstandswerte zugreifen.
Wenn man jedoch im Plotfenster "File/Export data as text" ausführt, kann man in der gespeicherten Textdatei das Minimum
leicht entdecken, weil die Phase das Vorzeichen wechselt. Obwohl man zum Export "V(out)" gewählt hat, sind die Widerstandswerte
in der ersten Kolumne aufgeführt, daneben Ausgangsspannung in dB und Phase.
06a__G-notch_ExpData.png
--- Ende Intermezzo ---

Wir gehen noch einmal zurück zu "Step 1", schalten also "Step 2" aus und "Step 1" wieder ein.
Im Schaltplan selbst ändern wir nun den Parameter Rf in 12k+56R (.param=12k+56R).
Dann starten wir die Simulation und vergleichen den Plot mit den Werten in der LOG-Datei.

06b__G-notch_Plot4.png

Nun liegt die Kerbe ziemlich genau auf 60Hz, das Minimum der Kerbe liegt bei -50.3dB. Zufrieden? - Aber ja doch!

Halt, mein(e) Freund(in)! Wir sind noch nicht am Ziel! Was ist, wenn wir die Schaltung mit realen Bauteilen erstellen?
Die Simulation war mit idealen Werten, Abweichung 0%. Einflüsse des Opamps gar nicht betrachtet.

Was gilt es dabei zu beachten?
Zuerst einmal müssen für eine Kerbe grösser 40dB die Bauteile auf möglichst identische Werte ausgemessen werden,
da führt kein Weg dran vorbei!
Das gilt für die Kondensatoren ebenso wie für die Widerstände.

Wenn man das nicht kann oder nicht will, muss man damit rechnen, dass die Kerbe nicht voll zum Tragen kommt
,
nicht etwa, weil die Kerbe nicht so tief geht - sie hatte selbst bei 12k Normwert eine Tiefe von 50dB! -,
sondern weil die Frequenz des Kerbminimums sich nicht mit der gewünschten Filterfrequenz deckt!
Auch die beiden 10k-Widerstände im Gyrator sollten gleich sein.

Um zu testen, ob alles in Ordnung ist, manchen wir eine TRAN-Simulation.
Wir schalten "Step 1" aus und "Step 3" ein, und starten die Simulation mit unserem Soll-Widerstand 12k+56R.
Wir messen die Eingangsspitzenspannung (500mV) und die Ausgangsspitzenspannung (1.4mV)
und berechnen die resultierende Abschwächung: -51.1dB.

07__G-notch_Plot5.png

Jetzt wiederholen wir den Test mit nur 12k.
Jetzt ist die Ausgangsspitzenspannung ca. 81mV, die berechnete Abschwächung beträgt -15.7dB.

08__G-notch_Plot6.png

In einer realen Schaltung gehen wir genauso vor:
mittels Trafo und Spannungsteiler (+ evtl. Puffer/Voltage Follower) schaffen wir eine Eingangsspannung von 500mV,
messen die Ausgangsspannung und berechnen die Abschwächung in dB.
Und wenn die nicht genug ist, muss man eben fummeln (mit Multiturn-Trimmer oder, wer Geld hat,
kann sich selbstverständlich Präzisionswiderstände kaufen, das geht natürlich auch. . . ;-)

Viel Erfolg für brummfreies Messen,

RudiS

P.S.: Die AC-Analyse arbeitet mit komplexen Daten.
Daher ist in Messanweisungen mit .measure unbedingt die Funktion mag()
(magnitude) zu benutzen
, sonst erhält man falsche Ergebnisse!
 

Anhänge

  • AC-Analyse zu einer einzigen Festfrequenz.pdf
    50,1 KB · Aufrufe: 1
  • dPSU.asy
    441 Bytes · Aufrufe: 1
  • dPSU.sub
    163 Bytes · Aufrufe: 1
  • Gyrator-Notch.plt
    259 Bytes · Aufrufe: 0
  • Gyrator-Notch.asc
    2,7 KB · Aufrufe: 2
Zuletzt bearbeitet:
Addendum zum obigen Notch-Filter mit Gyrator, 27. Juni 2026
In diesem Zusatz geht es NICHT um das eigentliche Thema, der AC-Analyse zu einer Festfrequenz,
sondern um das Notchfilter selbst.

Wie schon eingangs erwähnt, gefällt mir dieses Filter, weil es mit einem einzigen Dual-Opamp auskommt.
Die sind, weil auf einem Chip, ziemlich gleich in ihren Werten.

Es gibt aber noch einen weiteren Vorteil, und der betrifft die Abstimmung auf die genaue Frequenz mittels eines Trimmpotis.
Während in anderen Schaltungen zwei oder mehr Komponenten angepasst werden müssen,
reicht hier die Änderung von nur einem Widerstand in Form eines Trimmers.

Ich habe dazu den Schaltplan geringfügig geändert, schauen wir ihn uns an:

10__G-notch_schema-neu.png

Idealerweise haben die beiden Filterwiderstände R1 und R4 den gleichen Wert.
In unserem Beispiel suchen wir zwei Widerstände zu jeweils 12.0 kOhm.
Wir finden einen, der genau 12.0k ist, aber die anderen sind entweder mehr oder weniger,
wir nehmen einen der WENIGER hat: 11k9. 100 Ohm zu wenig.
Und genau diese 100 Ohm fügen wir dem 12k0 Widerstand hinzu: Rx = SQRT( Ra * Rb) = SQRT (11k9 * 12k1) = 12k.
Es entstehen zwar kleine Rundungsfehler, aber die können wir getrost unberücksichtigt lassen.

Wir machen zwei Durchläufe, einen mit keiner Abweichung (gosa=0) und einmal mit 100 Ohm Abweichung (gosa=100).

gosa=0
11__G-notch_LOG-0.png

Der Wert beider frequenzbestimmender Widerstände beträgt 12k056,
die Abschwächung knapp 50dB und die Frequenz nahezu 60Hz.

gosa=100
12__G-notch_LOG-100.png

Wir sehen: Rf1 hat - verglichen mit seinem Wert bei gosa=0 - 100 Ohm mehr,
Rf2 dagen 100 Ohm zu wenig. Somit unterscheiden sich die beiden Widerstände um 200 Ohm!
Die Abschwächung ist durch das Ungleichgewicht etwas geringer, 48dB,
aber immer noch gut genug.
Frequenzmässig gibt es keinen Unterschied.

In einer mit realen Bauteilen aufgebauten Schaltung gehen wir genauso vor, wie im ersten Beitrag beschrieben.
Man braucht allerdings ein Messgerät, mit dem man 60Hz im Millivolt-AC-Bereich messen kann.
Ein Drehspulinstrument wäre hier vorteilhaft, man stimmt einfach auf geringsten Ausschlag ein.
Ein DVM geht natürlich auch.
Das Trimmpoti sollte man nicht grösser als unbedingt nötig wählen, um feinfühlig abstimmen zu können.

Die die Verstärkung bestimmenden Widerstände R2 und R3 MÜSSEN äusserst gleich sein: R2 = R3.
Der absolute Wert spielt eine untergeordnete Rolle. Ob beide 10k1 sind oder beide 9k9 oder 9k5 oder 8k2,
das ist nebensächlich, solange sie nur gleich sind!
Selbst kleine Abweichungen bewirken eine Frequenzverschiebung mit einer daraus resultierenden geringeren Kerbtiefe.
Es hat eben alles seinen Preis.
Zum Testen dieser Problematik kann man entweder dem Parameter Rz einen anderen Wert zuweisen (z.B. 9k9)
oder zu Rg ODER Rfz ein paar Ohm hinzuaddieren (z.B. .param Rfz=Rz+20).

Noch eine Bemerkung zur Messanweisung für die Notch-Frequenz.
Es kann durch Rundungsfehler sein, dass es keinen Wert für mag(v(out)) gibt, der 100% mit vmin übereinstimmt.
Dann erscheint die Fehlermeldung: Measurement f_notch failed (z.B. bei gosa=13).
Wenn man in dem Fall in der Messanweisung das Semikolon nach vmin entfernt (=vmin*1.001), sollte es klappen.

RudiS
 

Benutzer welche diesen Thread betrachten (Mitglieder: 0, Gäste: 2)

Wer hat diesen Thread gelesen

Zurück
Oben