Filters designed from various tools or methods rarely deal with parasitic parameters of reactive components.
I need to include/correct for the inductors series resistance, mostly: I design a series of LPFs using exclusively air-cored inductors, to keep the THD well below the ppm level, but even with coils optimized according to the Brooks form-factor, this results in significant series resistance.
The simulated and measured effect of this resistance is to increase the HF losses, before the cutoff frequency is reached. It also increases the DC/LF losses of course, but in an easily predictable and compensable way.
I don't mind losing 0.5 or 1dB, as long as the loss remains flat for all of the useful frequency range. If I cannot achieve it, I will need to include additional equalization networks, which is annoying.
Is there a way to flatten the curve by tweaking the filter parameters alone?
Here is an example: this is the response of a 100kHz elliptic filter, with the actual 5 ohm resistance of the inductors included:
From ~85kHz, there is a clear droop in the amplitude. When the inductors are perfect, there is no such droop, just the ripple inherent to this type of filter.
I informally tried various fixes and tweaks, but I only managed to further damage the response in other ways, without being able equalize the response.
I there a deterministic (and simple!) method to deal with this?
As a base, I rely on simple and effective design tools like this one: https://rf-tools.com/lc-filter/ but there is no way to include parasitics
I need to include/correct for the inductors series resistance, mostly: I design a series of LPFs using exclusively air-cored inductors, to keep the THD well below the ppm level, but even with coils optimized according to the Brooks form-factor, this results in significant series resistance.
The simulated and measured effect of this resistance is to increase the HF losses, before the cutoff frequency is reached. It also increases the DC/LF losses of course, but in an easily predictable and compensable way.
I don't mind losing 0.5 or 1dB, as long as the loss remains flat for all of the useful frequency range. If I cannot achieve it, I will need to include additional equalization networks, which is annoying.
Is there a way to flatten the curve by tweaking the filter parameters alone?
Here is an example: this is the response of a 100kHz elliptic filter, with the actual 5 ohm resistance of the inductors included:
From ~85kHz, there is a clear droop in the amplitude. When the inductors are perfect, there is no such droop, just the ripple inherent to this type of filter.
I informally tried various fixes and tweaks, but I only managed to further damage the response in other ways, without being able equalize the response.
I there a deterministic (and simple!) method to deal with this?
As a base, I rely on simple and effective design tools like this one: https://rf-tools.com/lc-filter/ but there is no way to include parasitics
I recall that sometimes a negative impedance circuit it used to compensate for real resistances. But that's an active stage, so you might as well be using gyrators in place of inductors...
Resistance in a reactive filter like this is going to limit the Q, which limits the placement of the filter poles, so perhaps you have to accept a lower order of filter when using air-cored inductors of limited size.
Resistance in a reactive filter like this is going to limit the Q, which limits the placement of the filter poles, so perhaps you have to accept a lower order of filter when using air-cored inductors of limited size.
Yes, that is what I feared, but I hoped that someone would know of a clever (passive) trick to restore the ideal response (like a small magnetic coupling between the inductors or something similar).Resistance in a reactive filter like this is going to limit the Q, which limits the placement of the filter poles, so perhaps you have to accept a lower order of filter when using air-cored inductors of limited size.
Alternatively, a simple way to reduce the DC/LF level without affecting the HF would be suitable too, but it begins to look like an equalization
Because I need a flat response to 100kHz. Of course, I could push the cutoff frequency much higher, like 150kHz, but this would reduce the attenuation at frequencies of 300kHz. Everything is a matter of tradeoffsWhy are you worried about what happens beyond 85KHz?
Have you looked at the Modeferri patents https://www.diyaudio.com/community/...i-transient-perfect-xo-s.349259/#post-6491592 (cited here: https://patents.justia.com/patent/10701487). In December AudioXpress Modafferi describes a loose magnetically coupled transformer (k=0.15)
Last edited:
Interesting stuff.
I'll need some time to digest it, but Modafferi's concept looks more oriented towards "infinite slope" filters, rather than flatness against imperfect components.
I'll need some time to digest it, but Modafferi's concept looks more oriented towards "infinite slope" filters, rather than flatness against imperfect components.
Chances are that Zverev wrote something about it in his famous filter handbook. Unfortunately I only have access to it when I'm at work, which is only rarely now with the corona pandemic.
It's a public domain book now, all 586 pages.Chances are that Zverev wrote something about it in his famous filter handbook. Unfortunately I only have access to it when I'm at work, which is only rarely now with the corona pandemic.
https://archive.org/details/HandbookOfFilterSynthesis
That's great! Section 6.7 starting on page 305 (page 316 of the file) says something about designing with lossy inductors.
Numerical optimization would be one way to skin the cat.
For each inductor in the circuit, define a relationship that calculates the amount of parasitic resistance as a function of the inductance. It might just be a constant 250 milliohms. Or it might be a linear function like 0.1 milliohms per nanohenry. Or it might be a more complicated expression. Totally your decision.
The simulation is run with these set of component values and parasitic resistances, and its output response is then evaluated by a Figure Of Merit. Sounds like "Deviation from desired flatness" could be a good choice here.
Then the component values are modified by the optimization algorithm, the parasitics are recalculated, and the simulation is run again.
A few thousand iterations of this simulate-->evaluate-->modify_component_values procedure are run, with the goal of finding component values with the very best Figure Of Merit. The algorithm finds one set of component values that give the very least deviation from desired flatness. And now you're done. You now know the values of each component (resistors, capacitors, inductors-with-parasitics) which give the least deviation from desired flatness.
This optimization capability is built into industrial versions of SPICE, whose software licenses cost USD 1E5 per year per seat. It is not built into free simulators like LTSPICE or MicroCap or QUCS or TINA. Generally these kinds of simulators embed either the Levenberg-Marquardt approach to numerical optimization, or else the BFGS. I myself used this capability quite a lot, within the HSPICE simulator, and it worked tremendously well. But I haven't had access to HSPICE for years.
For each inductor in the circuit, define a relationship that calculates the amount of parasitic resistance as a function of the inductance. It might just be a constant 250 milliohms. Or it might be a linear function like 0.1 milliohms per nanohenry. Or it might be a more complicated expression. Totally your decision.
The simulation is run with these set of component values and parasitic resistances, and its output response is then evaluated by a Figure Of Merit. Sounds like "Deviation from desired flatness" could be a good choice here.
Then the component values are modified by the optimization algorithm, the parasitics are recalculated, and the simulation is run again.
A few thousand iterations of this simulate-->evaluate-->modify_component_values procedure are run, with the goal of finding component values with the very best Figure Of Merit. The algorithm finds one set of component values that give the very least deviation from desired flatness. And now you're done. You now know the values of each component (resistors, capacitors, inductors-with-parasitics) which give the least deviation from desired flatness.
This optimization capability is built into industrial versions of SPICE, whose software licenses cost USD 1E5 per year per seat. It is not built into free simulators like LTSPICE or MicroCap or QUCS or TINA. Generally these kinds of simulators embed either the Levenberg-Marquardt approach to numerical optimization, or else the BFGS. I myself used this capability quite a lot, within the HSPICE simulator, and it worked tremendously well. But I haven't had access to HSPICE for years.
With air-cored inductors at up to 100kHz operation you may well have to contend with proximity (cousin of skin) effect, not just DCR. The remedy is Litz wire.
Having played with Chebyshev passive filters in LTSpice, I don't know of a formal way to compensate for DCR with Chebyshevs, I have a heuristic though. The first step is to subtract ~half the total DCR (of all the inductors in series) from the termination impedance. Thus if the perfect filter was terminated in 500ohm and the total DCR is 16ohm for the inductors, reduce the termination to 492ohm. The second step is to reduce the value of the first shunt cap (nearest the source) in small steps and watch to see if this restores the top end of the passband to flatness. Beyond these two steps I normally find I have to increase the first L's value to get the passband ripples a bit more equal.
If using an online calculator (like RFtools one) you may find you need a prototype perfect filter with more ripple than your design spec as adding DCR to the Ls reduces the ripple.
Having played with Chebyshev passive filters in LTSpice, I don't know of a formal way to compensate for DCR with Chebyshevs, I have a heuristic though. The first step is to subtract ~half the total DCR (of all the inductors in series) from the termination impedance. Thus if the perfect filter was terminated in 500ohm and the total DCR is 16ohm for the inductors, reduce the termination to 492ohm. The second step is to reduce the value of the first shunt cap (nearest the source) in small steps and watch to see if this restores the top end of the passband to flatness. Beyond these two steps I normally find I have to increase the first L's value to get the passband ripples a bit more equal.
If using an online calculator (like RFtools one) you may find you need a prototype perfect filter with more ripple than your design spec as adding DCR to the Ls reduces the ripple.
Thanks Marcel and Rayma: it looks promising, and I'll dig further in that directionIt's a public domain book now, all 586 pages.
https://archive.org/details/HandbookOfFilterSynthesis
Sure, but for the moment I prefer to avoid brute force approaches. This will be the last step if everything else failsNumerical optimization would be one way to skin the cat.
rs.
No: they are the ripple inherent to the elliptic response I opted for.For the sake of clarity: is your target to smooth out 0.1 dB peaks in the passband?
The problem is the additional droop at the top of the range, which is not part of the elliptic function
Indeed, and there are also eddy currents adding parallel damping, but they simply add to the losses, with different frequency characteristics.With air-cored inductors at up to 100kHz operation you may well have to contend with proximity (cousin of skin) effect, not just DCR. The remedy is Litz wire.
In fact, one of the filter sections deals with 1MHz, but this was the easiest one: I managed to compensate it perfectly with a damped series-tuned resonant circuit in parallel with the 560 ohm input resistor.
I cannot use the same kind of trick with the subsequent sections, because they will be cascaded by relays according to the frequency range, and because the parasitic resistances are much higher for the lower frequency sections of 10 and 100kHz (I have increased the physical size of the coils, but not in proportion: 100x would be unmanageable).
I'll post a pic of what I have built so far
That is interesting, and it is exactly the type of tip I was looking for.Having played with Chebyshev passive filters in LTSpice, I don't know of a formal way to compensate for DCR with Chebyshevs, I have a heuristic though. The first step is to subtract ~half the total DCR (of all the inductors in series) from the termination impedance. Thus if the perfect filter was terminated in 500ohm and the total DCR is 16ohm for the inductors, reduce the termination to 492ohm. The second step is to reduce the value of the first shunt cap (nearest the source) in small steps and watch to see if this restores the top end of the passband to flatness. Beyond these two steps I normally find I have to increase the first L's value to get the passband ripples a bit more equal.
If using an online calculator (like RFtools one) you may find you need a prototype perfect filter with more ripple than your design spec as adding DCR to the Ls reduces the ripple.
I managed to greatly improve the response by adding a series inductor to the load, but again, due to the cascading I cannot use this for the intermediary stage.
Your idea might be practicable, and I am certainly going to test it
I have tried to understand how to use the info from Zverev's book for lossy components, but I have to admit that I find it difficult to extract practical design information from it. I must be a bit rusty with theory, or downright incompetent.
This is what I have built so far:
The three filter sections each have a primary, individual shield, and the whole is housed in another mumetal secondary shield.
In the final design, there will be two additional shielding boxes, as it is the weak point of air-core filter coils. I may need to add another one, of the active, electronic variety.
The 1MHz is already properly equalized, but it was the easiest one
This is what I have built so far:
The three filter sections each have a primary, individual shield, and the whole is housed in another mumetal secondary shield.
In the final design, there will be two additional shielding boxes, as it is the weak point of air-core filter coils. I may need to add another one, of the active, electronic variety.
The 1MHz is already properly equalized, but it was the easiest one
- Home
- Source & Line
- Analog Line Level
- Dealing with parasitics in passive LC filters