I made a class-D amplifier with an output transformer, as you can see in the simplified schematic. Gate resistors are actually 10 Ω, not 2.2 Ω.

enter image description here

enter image description here

The supply is 24 V, the PWM signal has a frequency of 500 kHz, and the modulated signal is 100 kHz.

The circuit itself works, with minimal ringing at switching nodes and it is acceptable. The transformer is handwound with a ferrite N87 toroid (35.5 mm) and currently has 8 turns at the primary and 16 turns at the secondary.

I tried it with a resistive load of 200 Ω directly connected to the secondary side of the transformer, and it is OK; just a low-pass effect due to inductance and load.

But when I connected the LC filter shown in SPICE, the secondary side starts to ring at some MHz, while the switching nodes are perfect with smooth waveforms.

I tried also with only a second-order filter and it is the same.

Any ideas?

enter image description here Output without filter on 200 Ω load

enter image description here Switching node 1 during oscillations on secondary side

enter image description here Switching node 2 during oscillations on secondary side

enter image description here Oscillations on secondary side

  • 4
    \$\begingroup\$ Try adding some series resistance with the inductors. \$\endgroup\$
    – MOSFET
    Jan 26 at 17:20
  • 1
    \$\begingroup\$ Use "Real Inductors" for your simulation. They series resistance will dampend the oscillation. If not enough, try and add some series resistance. \$\endgroup\$ Jan 26 at 17:45
  • \$\begingroup\$ The oscillation in in the real pcb, not in the simulation. And starts only when the filter Is connected. \$\endgroup\$
    – mtx4
    Jan 26 at 18:51
  • 1
    \$\begingroup\$ @mtx4 What is the leakage inductance of the real transformer. You also need to know the other parasitics of the magnetics, such as the resistances and capacitances. You can use the models that Coilcraft has for their inductors and see if that gives you a better simulation. Also, what sort of dead time is used in the H-bridge? \$\endgroup\$
    – qrk
    Jan 26 at 19:10
  • 1
    \$\begingroup\$ So the output circuit shown, isn't even what you were testing? There is good reason why we ask for the circuit being tested! \$\endgroup\$ Jan 29 at 9:02

2 Answers 2


Q: How do I build an oscillator?

A: Try to build an amplifier.

Q: How do I build a noise generator?

A: Try to build an oscillator.

I can't answer your question, but here's an approach to see how susceptible your circuit, as designed, is to oscillation.

In your simulation, replace L1 with a current generator. Set its DC value to some reasonable amount for your real circuit; put it somewhere in range of the RMS to the peak current you expect in L1. Set it's AC magnitude to something convenient, like 1A (SPICE's AC sweep assumes a linear circuit, so the actual number doesn't matter).

Sweep the frequency from a decade below the oscillation frequency you're observing to a decade above. Plot the AC voltage across the current source. By default you'll get a Bode plot. Since \$E = I Z\$, the AC voltage divided by the AC current that you set will be the complex impedance of the circuit.

If, at any point, the phase shift of the voltage exceeds \$\pm 90^\circ\$, then the real part of the impedance is negative, and you have a circuit that, with the right load, will oscillate.

You can go three ways from there:

  1. Find the worst-case negative real impedance, and just bung in a resistor in series with L1. Make the resistor at least twice the value of your worst-case negative real impedance to make sure its well and truly swamped out. That should give you a phase margin between \$45^\circ\$ and \$60^\circ\$ (I should know this, you can know this if you do the math).
  2. Experiment with your gate drive, or source degeneration on your upper FETs, to kill the negative real resistance. I don't have much experience with this so I can't help much -- I just know that emitter/cathode/source followers can be unstable with inductive loads, so I suspect that's your problem here.
  3. Separate from the power circuit, set up your load on L1, then drive L1 with an independent AC current source, and look at it's voltage to get the driving stage's load impedance. If you sum the drive and the load impedance together and get a point that has a purely negative (i.e., no imaginary part) impedance, then that's your predicted oscillation frequency. You can use that to guide how much of a ballast resistor to put in series with L1 -- if you trust your simulation.
  • 1
    \$\begingroup\$ A series resistor to reduce the Q-factor of the LC filter is hardly ever a good solution in the case of Class D amps, as these are usually relatively high powered amps, and series resistor would decrease efficiency massively.. A better way is a parallel resistor to damp the Q. Practically, one also strings a C in series with this resistor and calls it snubber. \$\endgroup\$
    – tobalt
    Jan 27 at 16:28
  • \$\begingroup\$ Good point, and one I should have thought of myself. The general process of using simulation to get into the ballpark still holds, I think. \$\endgroup\$
    – TimWescott
    Jan 27 at 16:32
  • 1
    \$\begingroup\$ Re. your first part: Everything oscillates at the first prototype, except an oscillator. \$\endgroup\$
    – pipe
    Jan 29 at 10:06

LC filters usually have a rather high Q. This means that when you pass a wide range of frequencies into them (e.g. a PWM waveform), they will strongly amplify specific frequencies.

Preventing this requires one of the following two counter-measures:

  1. damping the LC filters with a snubber
  2. feedback-regulation of the output with proper frequency compensation

In most buck designs, the 2nd option is implicitly implemented, because they are used as voltage regulators, so they must have output voltage feedback.

However, in your case you are designing it as an open-loop driver. If your bandwidth is low, you could still implement feedback, but if you have large bandwidth requirements that make feedback unfeasible, then your only good option is a snubber.


simulate this circuit – Schematic created using CircuitLab

The component values are examples. But all LC filters will have peaking, unless there is some unusually high ESR involved. Below is the filter response without and then with the snubbers:

enter image description here enter image description here

  • \$\begingroup\$ Thanks, but actually the circuiti oscillates with parallel capacitors on the output, without the inductors. So the leakage inductance of the transformer and about 50 nF are enough to make an LC filter that oscillates. I'll try a snubber anyway. \$\endgroup\$
    – mtx4
    Jan 29 at 10:12
  • 1
    \$\begingroup\$ @mxt4 Yeah, the leakage and load capacitor are obviously a high enough Q to make it ring. To get a useful damping, try with a snubber C that is at least ~5x your filter C and then strap some resistance in series. Or simulate first to find the leakage inductance (match with ringing frequency, and then tune R and C until your satisfied. On the plus side: the leakage inductance gives your free filtering without another inductor (once you snub the resonance). \$\endgroup\$
    – tobalt
    Jan 29 at 10:15
  • \$\begingroup\$ I made a new simple LC filter, with math calculations, critically damped with Q=0,707, so no peaking at all in the frequency response. L = 270 uH and C = 10 nF Well, the secondary side rings again, so problem not solved. \$\endgroup\$
    – mtx4
    Jan 30 at 8:19
  • \$\begingroup\$ @mxt4 Ok how did you damp it ? Did you place an actual 100 load resistor? Or are you relying on some Coax cables as load? \$\endgroup\$
    – tobalt
    Jan 30 at 8:54
  • \$\begingroup\$ The filter should be naturally damped with that LC values. So I didn't add a snubber. The load is 200 ohm resistor connected to the output of amplifier by a BNC cable. \$\endgroup\$
    – mtx4
    Jan 30 at 9:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.