# What is a proper circuit for a variable low pass filter that can be controlled with a potentiometer?

I have some 100k digipots (MCP41100) and I want to make a lowpass filter controlled with an ATmega328P. I want a variable cutoff between 20 Hz - 20 kHz with unity gain. 1st order is enough, but it can be higher if there are better circuits.

The input is an audio signal (200 mV AC + bias,) provided from an inverting amplifier that works with the mentioned MCP41100.

I drew the above circuit (on OPA227.) Each {Rr} is a different potentiometer, but with common address (_CS). So they are same value +- 10% according to datasheet. It works only when {Rr} values are small (10k maximum.) When the resistance is higher, the opamp gives a small noise on the output.

• Does the high resistance kill the 200 mV signal?
• Should I go 10 nF for C1 and 10k digipots for this circuit or is this circuit incorrect for this purpose?
• Do you know better circuits?
• Add more stages. low pass, amplify and buffer your signal before adding a variable lowpass. Sep 28, 2021 at 15:40
• You can do it as simple as your typical RC lowpass with R variable, followed by a unity gain opamp. You could complicate, too. Sep 28, 2021 at 18:39
• @Jomonger A problem is your three-orders of magnitude in frequency change. A pot is usually good for 10% to 90% of its range. That's about one order of change, not three. The circuit and its proper usage becomes very much more complex if you want a 10%-90% pot change to result in three orders. Additionally, for 1st order, you can probably get by with one pot but for 2nd order you'll need two of them (ganged in value, though.) Etc.
– jonk
Sep 28, 2021 at 20:53
• Maybe switched capacitor with a number of capacitors? No need for digital pot. Sep 29, 2021 at 4:21
• @jonk You're right, I missed that part (I thought it just refers to an audio bandwidth). Not to mention the variation would be linear. A true log pot might help, if available, though I doubt for a full 3 decades (maybe 2, if stretched enough). So a quick'n'dirty solution would be a manual switch with three caps, say 1n, 10n, 100n, in addition to the potentiometer (analog switches will work, too). But now there are too many buttons. Since there's an uC involved, JFETs (+ drivers/commands) might come in handy, but then there's additional noise. It might help if OP said what this is for. Sep 30, 2021 at 15:11

Have you considered a Sallen-Key low pass filter?

This circuit comes from the Okawa-Denshi website:-

There is a calculator for the filter at http://sim.okawa-denshi.jp/en/OPseikiLowkeisan.htm

I got some trial results with different pairs of resistor values as follows, using C1 = C2 = 10nF:-

R1 = R2 = 100k: -3dB at 160Hz approx

R1 = R2 = 1k: -3dB at 16kHz approx

In order to get your required range of 20 - 20kHz I think you will need a pot with 1:1000 variability, or 10-bit resolution.

• I tried and now I can recognise my signal between noise. But it's still mainly noise. I'll try with smaller resistors. Sep 30, 2021 at 16:55
• I killed previous digipots, it works. Resistances must be 3R1 = R2 to work properly. Oct 8, 2021 at 1:58
• Thanks for news of good progress! Oct 9, 2021 at 11:44