When you need to isolate a specific frequency from a noisy signal—whether it is pulling a 1 kHz pilot tone from an audio stream or filtering sensor noise before an ESP32 ADC—a passive RC network will not cut it. The direct answer for a robust, high-Q AC analysis circuit in the 10 Hz to 100 kHz range is the Multiple-Feedback (MFB) bandpass topology. Unlike passive filters that suffer from insertion loss, or Sallen-Key topologies that become unstable at high Q-factors, the MFB configuration provides precise gain, sharp roll-off, and predictable behavior using standard 1% resistors.
Below is a complete design walkthrough for a 1 kHz center frequency ($f_0$), a Quality factor ($Q$) of 5, and a voltage gain ($A_v$) of 10, terminating in a concrete component list you can order today.
The MFB Topology: Why Active Over Passive?
To understand why we choose the MFB topology for AC analysis, we must look at the circuit's node structure and compare it to the alternatives. The MFB bandpass filter relies on an operational amplifier with two distinct feedback paths: one through a capacitor and one through a resistor.
• Node A (Input): AC signal enters through input capacitor $C_1$.
• Node B (Summing Junction): The inverting input of the op-amp. This is a virtual ground where currents from $C_1$, $R_1$, $R_2$, and $C_2$ sum to zero.
• Node C (Output): The op-amp output, which feeds back through $C_2$ and $R_2$ to Node B.
Why this topology over a passive RLC tank or a Sallen-Key active filter? A passive RLC circuit requires bulky, non-ideal inductors that introduce parasitic resistance, killing your Q-factor. The Sallen-Key topology is excellent for low-pass and high-pass filters, but when configured as a bandpass, the required component spread (the ratio between the largest and smallest resistor/capacitor values) becomes impractical for $Q > 3$. The MFB topology keeps component ratios manageable and is far less sensitive to the op-amp's internal gain-bandwidth product, making it the undisputed king of narrow-band AC analysis up to about 100 kHz. For deeper theoretical backing on active filter limitations, refer to the Analog Devices active filter design guides.
Component Selection and Design Walkthrough
Let us design a circuit with the following target specifications:
- Center Frequency ($f_0$): 1,000 Hz
- Quality Factor ($Q$): 5 (Bandwidth = 200 Hz)
- Voltage Gain ($A_v$): 10 (20 dB)
We start by picking a standard capacitor value to set the impedance scale. Let $C_1 = C_2 = C = 10 \text{ nF}$ (0.01 µF). Using the standard MFB design equations, we calculate the resistors:
1. Calculate $R_2$ (The main feedback resistor):
$R_2 = \frac{Q}{\pi \cdot f_0 \cdot C} = \frac{5}{\pi \cdot 1000 \cdot 10 \times 10^{-9}} \approx 159,154 \,\Omega$
Concrete Pick: 160 kΩ (Standard E24 value, 1% metal film).
2. Calculate $R_1$ (The input resistor setting gain):
$R_1 = \frac{R_2}{2 \cdot A_v} = \frac{160,000}{2 \cdot 10} = 8,000 \,\Omega$
Concrete Pick: 8.06 kΩ (Standard E96 value, 1% metal film).
3. Calculate $R_3$ (The ground-referenced bias resistor):
$R_3 = \frac{R_2}{2 \cdot (2Q^2 - A_v)} = \frac{160,000}{2 \cdot (2(25) - 10)} = \frac{160,000}{80} = 2,000 \,\Omega$
Concrete Pick: 2.00 kΩ (Standard E96 value, 1% metal film).
Using 1% tolerance resistors is not optional here. A 5% tolerance on $R_2$ could shift your center frequency by 50 Hz and alter your Q-factor enough to cause peaking or oscillation. For high-precision AC analysis circuits, always specify metal film resistors (e.g., Vishay MRS25 or Yageo MFR-25 series) rather than carbon composition.
AC Behavior and Element Sensitivity
When tuning or troubleshooting an AC analysis circuit on the bench, you need to know which component to tweak to fix a specific symptom. The table below maps component changes to their exact effects on the AC response.
| Component Changed | Effect on Center Freq ($f_0$) | Effect on Q-Factor | Effect on Gain ($A_v$) | Primary Use Case for Tweak |
|---|---|---|---|---|
| Increase $C_1$ or $C_2$ | Decreases | Minor shift | Unchanged | Coarse frequency tuning |
| Increase $R_2$ | Decreases | Increases | Increases | Adjusting bandwidth/peaking |
| Increase $R_1$ | Unchanged | Unchanged | Decreases | Setting exact output amplitude |
| Increase $R_3$ | Unchanged | Increases slightly | Unchanged | Fine-tuning Q without touching $R_2$ |
Notice that $R_1$ is your independent gain control. If your signal is clipping the op-amp's output rail, swap $R_1$ for a higher value. It will attenuate the gain without shifting your 1 kHz center frequency.
Failure Modes: What Breaks at the Extremes?
A theoretical schematic is useless if you cannot diagnose it when a solder joint fails or a component blows. Here is the failure-mode contrast for the MFB topology when elements open or short.
- $C_1$ Opens: The AC signal path to Node B is severed. The op-amp output (Node C) will sit flat at the DC bias voltage (virtual ground). Diagnosis: No AC output, DC offset is correct.
- $C_2$ Shorts: The output (Node C) is directly tied to the inverting input (Node B). This destroys the phase shift required for negative feedback at high frequencies. The op-amp will likely latch up and rail-to-rail saturate. Diagnosis: Output pinned to VCC or GND; op-amp runs hot.
- $R_3$ Opens: The DC bias path for the inverting input is lost. The input bias current of the op-amp will slowly charge $C_1$ and $C_2$, causing the output to drift until it hits the supply rail. Diagnosis: Output slowly drifts to the rail over a few seconds after power-on.
- $R_2$ Opens: The primary negative feedback loop is broken. The op-amp operates open-loop. Even microvolts of input noise will cause the output to slam against the supply rails. Diagnosis: Output is a square wave oscillating at the op-amp's maximum slew rate limit.
Breadboard Testing and Verification Steps
Do not just wire the filter and hope for the best. Follow this exact sequence to verify your AC analysis circuit on a solderless breadboard. For this walkthrough, we assume a single 5V supply derived from an Arduino or bench supply.
- Establish the Virtual Ground: Because we are using a single 5V supply, the AC signal must swing around 2.5V, not 0V. Build a voltage divider using two 10 kΩ resistors from 5V to GND. Connect the midpoint to the non-inverting pin (Pin 3) of the op-amp. Add a 10 µF bypass capacitor from this midpoint to GND to kill power supply noise.
- Wire the DC Bias Path First: Install $R_3$ from Node B (Pin 2) to the 2.5V virtual ground. Install $R_2$ from Node B to Node C (Pin 1). Power the circuit and measure Pin 1 with a multimeter. It should read exactly 2.5V DC.
- Add the AC Components: Insert $C_1$, $R_1$, and $C_2$. Ensure $C_1$ and $C_2$ are C0G/NP0 ceramic capacitors, not X7R. X7R capacitors exhibit microphonics and voltage coefficients that will distort your AC analysis at high amplitudes.
- Inject the Signal: Connect a function generator to Node A. Set it to a 1 kHz sine wave, 100 mV peak-to-peak, with a 2.5V DC offset (to match your virtual ground).
- Verify Gain and Phase: Probe Node C with an oscilloscope. You should see a 1 V peak-to-peak sine wave (Gain = 10). Sweep the generator from 100 Hz to 10 kHz. The amplitude should peak sharply at 1 kHz and drop by -3dB at roughly 900 Hz and 1100 Hz (confirming Q = 5).
Decision Tree: Picking Your Op-Amp
The passive components define the filter shape, but the op-amp defines the physical limits of your AC analysis circuit. Use this decision path to select the right silicon for your specific application. For a comprehensive look at op-amp selection criteria, the All About Circuits semiconductor textbook provides excellent foundational rules.
| Application Scenario | Supply Voltage | Required Slew Rate / GBW | Concrete Op-Amp Pick |
|---|---|---|---|
| Audio processing, low noise, dual supply bench setup | ±12V to ±15V | Low noise, audio GBW | TL072 (Classic JFET input) |
| Microcontroller (ESP32/Arduino) sensor interfacing | 3.3V or 5V Single | Rail-to-Rail I/O, low power | MCP6002 (CMOS, RRIO) |
| Ultrasonic sensors, high-frequency AC analysis (>100 kHz) | 5V Single or Dual | High Slew Rate (>20V/µs) | OPA350 (High-speed CMOS) |
| Precision DC-coupled AC analysis, minimal offset drift | ±5V to ±15V | Zero-drift, low offset voltage | ADA4522 (Zero-drift chopper) |
The Default Recommendation: If you are building this circuit to interface with a modern 3.3V microcontroller ADC (like the ESP32-S3 or Raspberry Pi Pico), stop evaluating and use the MCP6002. It operates flawlessly on a single 3.3V supply, features true rail-to-rail input and output (maximizing your dynamic range for the ADC), and costs under $1.50 in single quantities. Pair it with the 1.65V virtual ground (using the divider method outlined in step 1), and your 1 kHz MFB bandpass filter will output a clean, centered signal ready for digital sampling.






