A low pass Butterworth filter is an electronic circuit or digital algorithm that allows low-frequency signals to pass through while smoothly attenuating higher frequencies, characterized by a perfectly flat amplitude response in the passband with no ripple. If you need to strip high-frequency noise from a sensor signal without introducing resonant peaks in your baseband, this is your go-to topology. In a real circuit, it changes a jagged, noise-ridden analog waveform into a clean DC or low-frequency AC signal, protecting downstream analog-to-digital converters (ADCs) from aliasing and ensuring audio crossovers sound natural. Think of it like a municipal water main equipped with a hydraulic surge tank: the steady, low-frequency baseline flow passes through to the destination unimpeded, but high-frequency pressure spikes (water hammer) are diverted and smoothed out before they can damage downstream valves.
The Core Math and Roll-Off Characteristics
The defining trait of the Butterworth response is its maximally flat passband. Unlike other filter topologies that trade passband flatness for a steeper cutoff, the Butterworth polynomial ensures that the first 2n-1 derivatives of the magnitude response are zero at DC (0 Hz). The magnitude of the transfer function is given by:
|H(jω)| = 1 / √(1 + (ω/ωc)2n)
Where n is the filter order (number of poles) and ωc is the cutoff frequency (the -3 dB point). As you increase the order n, the transition band becomes steeper, approaching an ideal 'brick wall' filter, but at the cost of increased component count and phase shift. Below is the definitive reference table for analog Butterworth roll-off characteristics.
| Order (n) | Poles | Roll-off (dB/decade) | Roll-off (dB/octave) | Attenuation at 2 × fc (dB) | Phase Shift at fc |
|---|---|---|---|---|---|
| 1 | 1 | -20 dB | -6 dB | -9.5 dB | -45° |
| 2 | 2 | -40 dB | -12 dB | -18.1 dB | -90° |
| 3 | 3 | -60 dB | -18 dB | -28.6 dB | -135° |
| 4 | 4 | -80 dB | -24 dB | -39.2 dB | -180° |
| 5 | 5 | -100 dB | -30 dB | -50.1 dB | -225° |
For most microcontroller sensor front-ends and DIY audio projects, a 2nd-order (n=2) or 4th-order (n=4) filter provides the best balance between noise rejection and component complexity. A 2nd-order filter attenuates signals at twice the cutoff frequency by roughly 18 dB, which is usually sufficient to kill switching noise from a nearby buck converter.
Butterworth vs. Chebyshev vs. Bessel: Clearing Up the Confusion
What do people commonly confuse the Butterworth filter with? Hobbyists and students frequently mix up Butterworth, Chebyshev, and Bessel filters, assuming they are just different names for the same low-pass behavior. They are not. The confusion usually leads to a ruined audio project or a distorted sensor reading because the designer chose a filter based solely on its roll-off steepness, ignoring phase and passband behavior.
According to Electronics Tutorials, the choice of filter approximation dictates the trade-off between amplitude flatness, phase linearity, and transition steepness.
| Characteristic | Butterworth | Chebyshev (Type I) | Bessel |
|---|---|---|---|
| Passband Amplitude | Maximally flat (no ripple) | Ripple present (e.g., 0.5 dB, 1 dB) | Gentle droop (not flat) |
| Roll-off Steepness | Moderate | Very steep | Very gentle |
| Phase Response (Group Delay) | Moderate linearity | Highly non-linear (rings on step inputs) | Maximally flat (linear phase) |
| Best Use Case | General purpose, audio crossovers, ADC anti-aliasing | RF channel selection, strict bandwidth limits | Pulse/step preservation, ECG/EEG biomedical signals |
Worked Numeric Example: 1 kHz Unity-Gain Sallen-Key Design
Let's move from theory to the workbench. We will design a 2nd-order active low pass Butterworth filter with a cutoff frequency (fc) of 1,000 Hz. We will use the unity-gain Sallen-Key topology. This topology is favored because it requires no feedback resistors, minimizing thermal noise and op-amp bandwidth limitations.
The Design Equations:
For a unity-gain Sallen-Key Butterworth response (Quality factor Q = 0.707), the standard component ratio is:
R1 = R2 = R
C1 = 2 × C2
The cutoff frequency formula simplifies to:
fc = 1 / (2 × π × R × C2 × √2)
Step 1: Select the Capacitors
Capacitors are harder to source in exact values than resistors, so we pick them first. Let's choose a standard, readily available film capacitor value for C2:
C2 = 10 nF (0.01 μF)
Therefore, C1 = 20 nF (You can achieve this by placing two 10 nF capacitors in parallel, or using a single 22 nF and accepting a slight shift in fc. For this example, we assume an exact 20 nF).
Step 2: Calculate the Resistors
Rearranging the formula to solve for R:
R = 1 / (2 × π × fc × C2 × √2)
R = 1 / (2 × 3.14159 × 1000 × 10 × 10-9 × 1.4142)
R = 1 / 0.00008885
R = 11,254 Ω
Step 3: Select Real-World Components
You won't find an 11,254 Ω resistor in a standard kit. If you use a standard 5% (E24) 11 kΩ resistor, your cutoff frequency will shift up to roughly 1,023 Hz. If you need precision for an anti-aliasing application, use a 1% tolerance (E96 series) 11.3 kΩ metal film resistor. This yields an actual cutoff of 996 Hz, which is well within acceptable engineering tolerances.
Step 4: Op-Amp Selection
For a 5V or 3.3V microcontroller system (like an Arduino or ESP32), do not use the ancient LM741. Use a rail-to-rail input/output (RRIO) op-amp like the MCP6002 or TLV2372. If this is for an audio line-level signal on a ±12V supply, the TL072 or OPA2134 are the industry standards for low noise.
Where You Meet This In Practice (And How to Wire It)
You will encounter the need for a low pass Butterworth filter in three primary DIY and prosumer scenarios: audio subwoofer crossovers, ECG/biomedical signal conditioning, and microcontroller ADC anti-aliasing. The latter is where most embedded hobbyists run into trouble.
The ESP32 ADC Aliasing Problem
The ESP32 features a Successive Approximation Register (SAR) ADC. While the Espressif ESP-IDF documentation notes high theoretical sampling rates, practical analogRead() operations in the Arduino framework often occur at irregular intervals, and the internal sample-and-hold circuit is highly susceptible to high-frequency RF and switching noise. If you are reading a 50 Hz or 60 Hz AC current transformer (CT) to measure home power usage, the ESP32's ADC will happily alias the 50 kHz switching noise from your phone charger right into your baseband, resulting in wildly fluctuating RMS calculations.
The Fix: Build the 2nd-order 1 kHz Butterworth filter we calculated above, but scale the capacitors up by a factor of 5 (C2 = 50 nF, C1 = 100 nF) to drop the cutoff to 200 Hz. Place this active filter between your CT burden resistor and the ESP32 GPIO pin. The Butterworth response ensures your 50/60 Hz fundamental wave passes with zero amplitude distortion, while the -40 dB/decade roll-off crushes the 50 kHz noise into the mud.
PCB Layout and Wiring Rules for Active Filters
An op-amp filter is only as good as its physical layout. A sloppy breadboard build will turn your Butterworth filter into an unintended antenna. Follow these rules when moving from prototype to perfboard or PCB:
- Decoupling is Non-Negotiable: Place a 100 nF (0.1 μF) X7R ceramic capacitor across the VCC and GND pins of the op-amp. It must be within 2 mm of the IC pins. Without this, the op-amp's output impedance rises at high frequencies, destroying the filter's attenuation curve.
- Ground Planes: The Sallen-Key topology relies on a stable ground reference. Route the ground returns for C1, C2, and the op-amp's GND pin to a single 'star ground' point, or use a solid copper ground plane on a PCB.
- Component Tolerances: The Butterworth Q-factor (0.707) is highly sensitive to component ratios. Always use 1% metal film resistors and 5% (or better) C0G/NP0 ceramic or polypropylene film capacitors. Avoid Y5V or X7R dielectrics for the filter capacitors, as their capacitance drops drastically with applied DC bias voltage, which will shift your cutoff frequency upward in real-world operation.






