3
\$\begingroup\$

I started by doing what is described in the image below.

enter image description here

Some simple calculations were made and I obtained these capacitance values:

enter image description here

The values I placed for the resistors were at random.

Then implemented this in LTspice:

enter image description here

Igot this response:

enter image description here

The ideal response should look like this:

enter image description here

For example, at 1000Hz it is -15dB when it should be 0dB.

Do you guys have any idea how to fix this?

I also have no idea how can we go from the transfer function to the circuit shown in the first picture I placed here. In the document I found (that has figure 2.5) there's no mention about that, and I can't seem to find anything about it in other places.

\$\endgroup\$
2
  • 4
    \$\begingroup\$ The answers below are correct, I'll just mention that you can group the first 4 stages into two, 2nd order stages, with a Q=0.5 (critically damped). Active filters, of course, but you save two opamps. In the same manner, the last two for the A-weighting can also be groupped, with a little math. \$\endgroup\$ Commented Jul 17, 2022 at 7:52
  • \$\begingroup\$ I've rolled the question back to where it had relevant details. Without them, the answers seem disconnected from what's presented, and you're vandalizing the content by removing it. This is frowned upon and repeated vandalism will have negative consequences... \$\endgroup\$ Commented Jul 21, 2022 at 21:35

5 Answers 5

7
\$\begingroup\$

Try adding buffers between stages, especially those stages that are duplicates. This plot uses your calculated values, but a gain-of-one buffer (high input impedance, zero output impedance) inserted between each RC stage:
buffered each stage
You could use unity-gain op amps for each buffer.

\$\endgroup\$
8
\$\begingroup\$

While the other answers suggesting the use of buffers between each stage are correct, this increases the cost and power consumption of the circuit (which may or may not be relevant in your case).

If that is a concern, you can design 2-stage active filters, using e.g. the techniques from this document. With this, you could do with 2 amp ops for the first part (2 LP + 2 HP), 1 amp op for the A-weighing part, and possibly no amp ops for the B-weighing part if you don't need to match impedances for the output. Although, if you use an IC with 4 amp ops and are not too concerned about power consumption, you could put the spare 4th amp op to use by making an active filter for the B-weighing part, which IIRC is just an RC followed by an unity gain buffer for a first-order filter such as this.

If you really need to cut on cost/power consumption, you could design a 4-stage passive filter for the first part, followed by an unity gain buffer, and use passive filters for the A-weighing and B-weighing parts (assuming impedance matching is not an issue). Note that, as mentioned in the answer by @Mattman944, the first-order RC filter equation is not applicable here. You'll need to use the methods outlined in the document I linked above.

\$\endgroup\$
3
  • \$\begingroup\$ You're right, I should have made the comment an answer. \$\endgroup\$ Commented Jul 17, 2022 at 16:15
  • 1
    \$\begingroup\$ Sorry, did not see you had commented about this first, otherwise I’d have suggested that you expand your comment to an answer. \$\endgroup\$
    – swineone
    Commented Jul 17, 2022 at 16:22
  • \$\begingroup\$ Safe to forget about it, I was just being lazy. :-) \$\endgroup\$ Commented Jul 17, 2022 at 16:28
6
\$\begingroup\$

The equations that you are using for RC filters are only valid if the source impedance is zero and the load impedance is infinite. When you cascade simple filters, this is not true, the filters are interacting with each other.

You need to use active filters, or add buffers after each stage.

\$\endgroup\$
5
\$\begingroup\$

This is a corollary to the other answers, just in case you're wondering why you can't use unbuffered RC sections.

An RC filter, by itself, is a 1st order system. When buffered 1st order stages are added (all the same, for simplicity), it is possible to make a filter whose transfer function is:

$$H(s)^N=\left(\dfrac{\dfrac{1}{RC}}{s+\dfrac{1}{RC}}\right)^N=\dfrac{1}{(sRC+1)^N} \tag{1}\label{1}$$

Suppose only two sections are considered. Then, the transfer function will be a 2nd order whose \$Q=0.5\$ and you will never be able to exceed it. For \$R=1,\;C=1\$:

$$H(s)^2=\dfrac{1}{(s+1)^2}=\dfrac{1}{s^2+2s+1} \tag{2}\label{2}$$

For an unbuffered 2nd order filter, the transfer function will be (you can derive this however you wish):

$$G(s)=\dfrac{1}{s^2+3s+1} \tag{3}\label{3}$$

Here \$Q=0.33\$ and it will never go above this. This is why your attempt at "gluing" RC sections would never be able to achieve an active filter's response -- it will never have a high enough \$Q\$. It's also the reason why you see the filters represented as triangles in the 1st picture: they are meant to be active filters. Also, there's a matter of gain, since your last picture shows a slight gain at the peak. You might be able to achieve peaking with RC filters, but its not a practical solution. A pure passive RC network will always have attenuation due to the finite impedances of the input and output.

Also, see @swineone's answer for a way to optimize the overall filter.

\$\endgroup\$
2
\$\begingroup\$
  • C5 & C6 are using a comma (",") for the decimal point.
  • You need to place buffers between each filter stage as stages before and after each stage are influencing the response of the individual stages.

[Edit]
Regarding the use of comma as the decimal point in LTspice:
My operating system is set up to use a 'period' as the decimal point. LTspice gives different results depending on the use of a 'period' or 'comma' for the decimal point on my computer as seen in the simulation below.

enter image description here

\$\endgroup\$
3
  • \$\begingroup\$ The comma just implies that the asker is probably from a german speaking background (germany uses the comma as a decimal separator). LTspice is amazing at processing all kinds of wierd number formats( like 21n1 for 21.1nF) so I'm not surprised at all that it takes that without any problems. \$\endgroup\$
    – kruemi
    Commented Jul 18, 2022 at 12:52
  • 1
    \$\begingroup\$ @kruemi I thought the same as you, but when I tested this out on the OPs circuit, LTspice gave different results. I have confirmed this behaviour on a simpler circuit shown above. I'm set up for U.S. operation which means I use 'period' for the decimal point. LTspice has an option setting for selecting 21n1, but not for decimal point. \$\endgroup\$
    – qrk
    Commented Jul 18, 2022 at 15:45
  • 2
    \$\begingroup\$ @kruemi LTspice typically obeys localization, so if OP is from a country that uses comma, instead of period, that's how the numbers will show p. The 21n1 part is allowed for compatibility with many schematics that use that format, even if it's not an official way of writing. In qrk's example the results come up as if the 1, doesn't matter, and ony 9n counts (same as on my computer). This means that 1 is interpreted as a value, or sorts, separated by a char from the actual value. It's silently discarded. OTOH, the inductor is not that silent. It's probably a hidden trap. \$\endgroup\$ Commented Jul 18, 2022 at 17:53

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.