Second-order active filters are taught through transfer functions and neat textbook Bode sketches, but the connection between the equation and the oscilloscope is usually never made: students design a filter, wire it once, look at two or three frequencies, and declare success. They cannot answer the two questions every examiner and every employer asks — how far does the real circuit deviate from the design, and can you attribute that deviation quantitatively?
Attribution is the hard part. A measured cut-off that differs from nominal could come from component tolerances (predictable from the equations if the actual values are known), from breadboard parasitics, from op-amp bandwidth limits, or from measurement error — and 'it's probably tolerances' is not an answer without component-level data and a controlled comparison.
This project addresses the gap by designing one filter, measuring it properly (~30 frequencies, repeats, stated instrument accuracy), measuring its actual components before insertion, re-evaluating the design equations and an ngspice simulation with those measured values, and rebuilding it soldered to expose breadboard parasitics — producing a complete, quantitative design-versus-reality account of a real analog circuit.
Abstract
This single-member design-and-measurement study covers a 2nd-order unity-gain Sallen–Key Butterworth low-pass (f_c = 1 kHz). Designed from the transfer-function equations, built on breadboard and perfboard with a TL071 op-amp, and characterised on the bench: gain versus frequency over 20 Hz–100 kHz, interpolated −3 dB point, pass-band flatness, fitted slope and square-wave transient response. Measured component values re-evaluate the theory and feed an ngspice model, so design, simulation and measurement sit on one Bode plot with deviations attributed to tolerances and parasitics.
Introduction
Active RC filters realise precise responses without inductors, and the Sallen–Key topology (Sallen and Key, 1955) remains the standard first active filter: one op-amp as a unity-gain buffer. The design algebra runs through ω₀ = 1/√(R₁R₂C₁C₂) and Q = √(R₁R₂C₁C₂)/(C₂(R₁+R₂)); with R₁ = R₂ = R, the Butterworth condition Q = 1/√2 is met by C₁ = 2C₂ — the choice this project builds on, with standard values (R = 10 kΩ, C₁ = 22 nF, C₂ = 10 nF) evaluated honestly rather than assumed ideal.
Existing practice and the gap
Filter theory is covered in textbooks and application literature (TI's SLOA049, Active Low-Pass Filter Design), and the TL071 datasheet gives the op-amp limits — gain–bandwidth, slew rate — that bound the topology. What student reports omit is the bench audit: Bode data with stated instrument accuracy, a least-squares roll-off slope, an interpolated −3 dB point, square-wave verification of Q, components measured before insertion, and a simulation with measured values. The gap this project fills is the complete design-to-measurement chain with an uncertainty budget, answering the examiner's standard question — 'your measured f_c is off by X %, why?' — from the student's data.
Proposed study
- Design: evaluate ω₀ and Q for R = 10 kΩ, C₁ = 22 nF, C₂ = 10 nF; predict f_c; check the TL071's gain–bandwidth headroom.
- Measure every component (DMM for R, LCR for C); build on breadboard; verify DC point and supply decoupling.
- Measure the Bode response: 1 V amplitude (linearity confirmed on both DSO channels), ~30 log-spaced frequencies, gain in dB; repeat the sweep once.
- Extract interpolated f_c, pass-band flatness, least-squares slope (2–20 kHz) and the square-wave Q signature.
- Simulate in ngspice with nominal and measured component values; overlay design, simulated and measured curves.
- Repeat the measurement on a soldered perfboard to quantify parasitics; write the tolerance discussion.
Feasibility
- Technical: the circuit is three passives and one op-amp; the instruments — generator, dual-channel DSO, DMM, LCR meter — are standard in B.Sc electronics labs; ngspice is free.
- Economic: TL071s, resistors, capacitors and perfboard total under ₹300; the study builds two copies, so spares are naturally on hand.
- Operational: an individual student can finish in 12 weeks at 8 h/week — build and first sweep by week 4, measurement matrix by week 8, writing by 12. Breadboard contact faults (resolved by the perfboard rebuild) and stray 50 Hz pickup are the main risks.
Research design: an iterative engineering-verification study — design, simulate, build, measure, re-model — with a pre-registered measurement protocol so the bench data are comparable across builds and days.
Design (Weeks 1–2): target f_c = 1 kHz, Butterworth Q = 1/√2. With R₁ = R₂ = R and C₁ = 2C₂ the unity-gain Sallen–Key gives Q = ½√(C₁/C₂) and f_c = 1/(2πR√(C₁C₂)); R = 10 kΩ, C₁ = 22 nF, C₂ = 10 nF evaluate to f_c ≈ 1.07 kHz and Q ≈ 0.742 — the deviation from the ideal pair (22 nF vs exactly 20 nF) is itself part of the tolerance story and is reported. Op-amp check: TL071 gain–bandwidth ≈ 3 MHz keeps the loop gain ample across 20 Hz–100 kHz for this Q.
Simulation before build (Week 3): ngspice netlist with nominal values, AC analysis 10 Hz–1 MHz; confirm the simulated f_c and slope; then re-run with measured values after Step 3 to complete the overlay.
Build and component audit (Week 4): every resistor (DMM) and capacitor (LCR) measured and logged; breadboard build with supply decoupling (100 nF at the TL071 rails); DC operating point verified (output ≈ 0 V, supplies ±9 to ±12 V).
Measurement protocol (Weeks 5–8): generator sine 1 V rms amplitude (linearity confirmed by comparing channel amplitudes at 1 kHz), ~30 frequencies log-spaced 20 Hz–100 kHz; at each, record V_in and V_out (DSO, amplitude measurement on screen averages), convert to dB: 20·log₁₀(V_out/V_in); full sweep repeated on a second day. Square wave 200 Hz and 1 kHz at fixed amplitude for overshoot/ringing; one spot check at ±12 V vs ±9 V supplies for supply sensitivity. All raw screen readings and settings (volts/div, time/div, bandwidth limit) logged in the bench sheet.
Analysis (Weeks 9–11): Python (NumPy, Matplotlib) builds the Bode overlay: design curve from the transfer function, ngspice nominal and measured-value AC results, measured points with repeat-spread error bars. Extract interpolated f_c (linear interpolation across the −3 dB crossing), pass-band flatness, slope from least-squares fit of dB vs log₁₀(f) between 2–20 kHz, and Q signature from square-wave overshoot. Attribute deviations: re-evaluate f_c and Q with measured component values; compare perfboard vs breadboard f_c for the parasitic contribution; quote instrument accuracy as the measurement floor.
Timeline (12 weeks): Weeks 1–2 design and procurement; Week 3 simulation; Week 4 build and component audit; Weeks 5–8 measurement matrix and perfboard rebuild; Weeks 9–11 analysis and overlay; Week 12 report, slides and viva.