Lab 1.3 — RC Low-Pass Filter

Course 3 syllabus · Module 1 · Prev: « Lab 1.2 · Next: Lab 2.1 »

Goal

Build the simplest real filter — a first-order RC low-pass — and measure the two things that define it: its step response (an exponential charge/discharge with time constant \(\tau = RC\)) and its frequency behavior (attenuation above the cutoff \(f_c = 1/(2\pi RC)\)). This connects a physical circuit to the transfer function \(H(j\omega) = 1/(1 + j\omega RC)\) you will use for the rest of the course. The RC low-pass is the anti-aliasing filter in front of every ADC, the smoothing filter after every DAC, and the mental model behind every digital IIR filter — so measuring one by hand, and reconciling \(\tau\) against \(f_c\), is foundational for DSP/firmware work.

Equipment & parts

  • Siglent SDS1104X-E + two compensated 10× probes (CH1, CH2) — compensate both per Lab 1.1.
  • Breadboard + jumpers.
  • One resistor and one capacitor from the kit chosen to land the cutoff near 1 kHz — e.g. R = 1.6 kΩ, C = 100 nF (\(f_c \approx 1.0\) kHz), or R = 1 kΩ, C = 100 nF (\(f_c \approx 1.6\) kHz). Measure the actual R and C first (Fluke / LC1020E, Lab 0.2/Lab 0.3).
  • Signal source: the SDS1104X-E base unit has no built-in signal generator. Drive the filter with the scope’s ≈1 kHz probe-compensation square wave for the step-response part. (Later you can revisit this with the MCP4725 DAC from Module 3 to sweep a clean sine — see Lab 3.3.)

Wiring & bench setup

The signal chain: the scope’s own probe-comp square wave drives the breadboard RC; CH1 watches the input node, CH2 watches node A (across C).

flowchart LR
  COMP["Probe-comp output<br/>≈1 kHz, ~3 Vpp square"]
  R["R = 1.6 kΩ<br/>series"]
  A["node A<br/>RC junction = output"]
  C["C = 100 nF<br/>shunt to ground"]
  CH1["CH1 probe, 10×"]
  CH2["CH2 probe, 10×"]
  COMP --> R --> A --> C
  COMP -.-> CH1
  A -.-> CH2

flowchart LR
  COMP["Probe-comp output<br/>≈1 kHz, ~3 Vpp square"]
  R["R = 1.6 kΩ<br/>series"]
  A["node A<br/>RC junction = output"]
  C["C = 100 nF<br/>shunt to ground"]
  CH1["CH1 probe, 10×"]
  CH2["CH2 probe, 10×"]
  COMP --> R --> A --> C
  COMP -.-> CH1
  A -.-> CH2

Pin map / node map (every wire; rows are breadboard tie-point rows):

From To Pin/jack
Probe-comp square-wave tab jumper → breadboard row 1 = input node front-panel tab
Probe-comp ground tab jumper → breadboard − rail = circuit ground front-panel tab
R (1.6 kΩ) row 1 (input) → row 5 (node A)
C (100 nF) row 5 (node A) → − rail (ground)
CH1 probe tip row 1 — the input node CH1, probe + menu at 10×, DC coupling
CH1 ground clip − rail
CH2 probe tip row 5 — node A, the filter output CH2, probe + menu at 10×, DC coupling
CH2 ground clip − rail (same ground node as CH1’s)
 scope front panel                         breadboard
 probe-comp ●──jumper────● row 1 ─ input node ─────────────► CH1 tip (10×)
 ground tab ●──jumper────● − rail ─ circuit GND ───────────► CH1 + CH2 ground clips
                           row 1 ●──[ R 1.6 kΩ ]──● row 5
                           row 5 ─ node A (across C) ──────► CH2 tip (10×)
                           row 5 ●──[ C 100 nF ]──● − rail

Coupling per procedure part: DC coupling on both channels throughout — the step response is the DC-path behavior; AC coupling would differentiate away exactly what you’re measuring.

Setup gotchas (not safety): the 100 nF ceramic/film cap is non-polarized — either orientation is fine. Both probes must be compensated first (Lab 1.1) or the CH1 edge itself is distorted. Land both ground clips on the same − rail; and remember the CH2 probe adds ~10–15 pF at node A (it slightly raises the effective C — see Analysis).

Safety & don’t-break-it

  • Signal levels are tiny (the probe-comp output is ~3 Vpp, current-limited) — no shock or part-damage risk in this lab. The care here is about correct measurement, not safety.
  • Discharge the capacitor before measuring it on the LCR meter and before re-wiring (a small ceramic/film cap at these voltages holds negligible charge, but make it a habit for the electrolytics later).
  • Share a common ground. Both probe ground clips and the probe-comp ground must tie to the same circuit ground node. Grounding the two probes at different nodes will inject error or short part of the circuit.
  • Do not probe the comp terminal with the ground clip on the +. Same rule as Lab 1.2 — ground clip to circuit ground only.
  • Keep the probes at 10× in the channel menu so amplitudes read correctly; a 1× mismatch will make the attenuation look wrong.

Background

A series R into a shunt C, output taken across C, is a first-order low-pass. In the time domain, driving it with a step of height \(V\) charges the capacitor exponentially:

\[v_\text{out}(t) = V\left(1 - e^{-t/\tau}\right), \qquad \tau = RC,\]

and the discharge (falling edge of the square wave) is \(v_\text{out}(t) = V e^{-t/\tau}\). One time constant reaches 63.2% of the final value; five time constants reach ~99%. Because the probe-comp square wave is a periodic step up/down, each half-period shows a charge or discharge curve — provided the half-period is long compared to \(\tau\) so it (nearly) settles.

In the frequency domain, the transfer function is

\[H(j\omega) = \frac{1}{1 + j\omega RC}, \qquad |H(j\omega)| = \frac{1}{\sqrt{1 + (\omega RC)^2}},\]

with the −3 dB cutoff where \(\omega RC = 1\):

\[f_c = \frac{1}{2\pi RC} = \frac{1}{2\pi\tau}.\]

At \(f_c\) the output is \(1/\sqrt{2} \approx 0.707\) of the input (−3 dB) and lags by 45°. Above \(f_c\) the magnitude rolls off at −20 dB/decade. The two views are the same fact: the time-domain \(\tau\) and the frequency-domain \(f_c\) are reciprocals up to the \(2\pi\). Since the square wave is a sum of a fundamental plus odd harmonics, the low-pass rounds its corners — the high harmonics that make the edges sharp are exactly what gets attenuated, which is why a low-passed square looks like the RC exponential.

Theory — RC Circuits and First-Order Filters

The RC part of the bench lesson distilled from Practical Electronics for Inventors; the DC-circuit core is in Lab 0.2’s theory section, capacitors themselves in Lab 0.3’s, and the active Sallen–Key section in Lab 4.4’s.

RC time constant

Charging a capacitor through a resistor from a step \(V_S\):

\[ V_C(t) = V_S\bigl(1 - e^{-t/RC}\bigr), \qquad \tau = RC . \]

After one time constant \(V_C\) reaches \(63.2\%\) of \(V_S\); after \(3\tau\), \(95\%\); after \(5\tau\) it is “fully charged” (\(99.3\%\)). Discharge is the mirror image, \(V_C = V_S e^{-t/RC}\). This one curve runs every timer, debouncer, and reset circuit you will build.

Reactance

A capacitor passes AC in proportion to frequency; its opposition is

\[ X_C = \frac{1}{2\pi f C} \quad (\Omega). \]

At DC it is an open circuit; as \(f \to \infty\) it is a short; no power is dissipated in reactance. This frequency-dependent “resistance” is the whole basis of RC filtering and supply decoupling.

First-order RC

Series \(R\), then \(C\) to ground, output across \(C\): a low-pass with cutoff

\[ f_c = \frac{1}{2\pi RC}, \qquad \left|\frac{V_{\mathrm{out}}}{V_{\mathrm{in}}}\right| = \frac{1}{\sqrt{1 + (f/f_c)^2}} . \]

At \(f_c\) the output is \(-3\,\mathrm{dB}\) (half power, \(0.707\times\)); beyond it the response falls \(6\,\mathrm{dB}\)/octave (\(20\,\mathrm{dB}\)/decade): the Bode picture is a flat shelf meeting a \(-20\,\mathrm{dB/dec}\) ramp at \(f_c\). Swap \(R\) and \(C\) for the matching high-pass.

Sharper filters

One pole is shallow. For a spec “\(-3\,\mathrm{dB}\) at \(f_{3\mathrm{dB}}\), at least \(-A\) dB at \(f_s\),” compute the steepness factor \(A_s = f_s/f_{3\mathrm{dB}}\) and read the required order \(n\) off normalized response curves — Butterworth (maximally flat), Chebyshev (steeper, passband ripple), or Bessel (best pulse behavior) — then scale normalized (\(1\,\mathrm{rad/s}\), \(1\,\Omega\)) tables in frequency and impedance: recipe, not algebra.

Worked by hand

Example (RC timing network). A timer IC triggers when its input, charged through \(R\) from a \(5\,\mathrm{V}\) supply into \(C = 10\,\mu\mathrm{F}\), reaches \(3.4\,\mathrm{V}\). For a \(5\,\mathrm{s}\) delay, invert the charging law \(t/RC = -\ln\!\bigl((V_S - V_C)/V_S\bigr)\):

\[ R = \frac{5.0\,\mathrm{s}}{-\ln\!\bigl(\tfrac{5-3.4}{5}\bigr)\cdot 10^{-5}\,\mathrm{F}} = \frac{5.0}{1.139\cdot 10^{-5}} \approx 4.4\times 10^{5}\,\Omega \quad (\text{use } 439\,\mathrm{k}\Omega). \]

Example (Reactance numbers). A \(220\,\mathrm{pF}\) capacitor at \(10\,\mathrm{MHz}\): \(X_C = 1/(2\pi \cdot 10^7 \cdot 2.2\times10^{-10}) = 72.3\,\Omega\). (The RMS half of this example is in Lab 1.2.)

Theory exercises

Theory exercise 2 [Hand] — Find the reactance of a \(470\,\mathrm{pF}\) capacitor at \(7.5\,\mathrm{MHz}\) and at \(15\,\mathrm{MHz}\). What happens to \(X_C\) when the frequency doubles, and why does that make a shunt capacitor act as a low-pass element?

(Theory exercise 1 of this lesson is with Lab 0.2, exercise 3 with Lab 4.4.)

Procedure

Part A — Measure the parts and predict.

  1. Measure the actual R (Fluke, ohms) and C (LC1020E at 1 kHz). Compute \(\tau = RC\) and \(f_c = 1/(2\pi RC)\) from the measured values, not the nominal ones.

Part B — Build the filter.

  1. On the breadboard (per Wiring & bench setup): probe-comp output → R → node A (the RC junction) → C → ground. Output is node A (across C). Tie the probe-comp ground and the breadboard ground rail together.
  2. CH1 on the filter input (probe-comp output / R input side), CH2 on node A (the output). Both probes 10×, both ground clips to the common ground.

Part C — Step response (τ).

  1. Set the timebase to see one edge clearly — start ~100 µs/div (the comp period is ~1 ms, half-period ~500 µs). Trigger Edge, CH1, rising, level mid-amplitude, stable.
  2. On CH2 you should see the exponential charge on the rising half and discharge on the falling half. If it looks like a straight ramp or barely bends, your \(\tau\) is too small/large relative to the timebase — adjust V/div and timebase to frame one full exponential.
  3. Measure \(\tau\): use cursors to find where CH2 reaches 63.2% of its final value after the edge; the time from the edge to that point is \(\tau\). Alternatively use the scope’s automatic rise time (10–90%) and convert: \(t_{10\text{–}90} = \ln(9)\,\tau \approx 2.20\,\tau\).

Part D — Attenuation (frequency view, qualitative).

  1. Compare CH1 (input) and CH2 (output) amplitudes with automatic Vpp on each. The comp fundamental is ~1 kHz; if your \(f_c \approx 1\) kHz the output fundamental is attenuated and the corners are visibly rounded. Note the CH2/CH1 amplitude ratio.
  2. (Optional, cleaner) Drive the filter later with the MCP4725 DAC (Lab 3.3) generating a sine you can sweep in frequency, and measure \(|H|\) at several frequencies to trace the roll-off and confirm the −3 dB point at \(f_c\).

Deliverable & expected results

Where results go (no firmware or host code in this lab — just the note and the scope exports):

Artifact Path
Bench note (table below, filled in) labs/lab-1-3/notes.md
Two-channel step-response capture, 63.2 % cursor at \(\tau\) labs/lab-1-3/captures/step-tau.png
Input/output amplitude comparison at ~1 kHz labs/lab-1-3/captures/attenuation.png
(Optional) Siglent CSV export of the step for later host-side fits labs/lab-1-3/captures/step.csv
LTspice schematic — the same RC; sim third opinion on \(\tau\) and \(f_c\) hardware/lab-1-3.asc

LTspice sim (third opinion) — mechanics in the LTspice workflow; the lab-specific recipe:

  • Draw (hardware/lab-1-3.asc): source → R = 1.6 kΩ → node AC = 100 nF → ground — use your measured R and C, and label the source node in.
  • Source: PULSE(0 3 0 1u 1u 0.5m 1m) — the ≈1 kHz, ~3 Vpp probe-comp square. For the Bode run, set the same source’s AC amplitude = 1.
  • Directives: .tran 5m (step response) and, as a second run, .ac dec 100 10 100k (magnitude/phase).
  • Plot/export: V(a) and V(in) from the .tran; V(a)/V(in) from the .ac. File → Export data as text into labs/lab-1-3/captures/.
  • Cross-checks: the .tran cursor at 63.2 % of the settled level → the \(\tau\) and \(t_{10\text{–}90}\) rows; the .ac −3 dB cursor → the \(f_c\) row; the .ac magnitude at 1 kHz → the \(|H|\) at ~1 kHz row. To model probe loading, add ~15 pF across C and watch \(\tau\) nudge up.

A two-channel capture of the step response (input square on CH1, exponential output on CH2) with the cursor marking the 63.2% point at \(\tau\), plus the measured \(\tau\), the derived \(f_c = 1/(2\pi\tau)\), and the input/output amplitude ratio at 1 kHz.

Using R = 1.6 kΩ, C = 100 nF as the worked example:

Quantity Predicted Measured
\(\tau = RC\) \(1.6\text{k} \times 100\text{n} = 160\ \mu\text{s}\)
\(f_c = 1/(2\pi RC)\) \(\approx 995\ \text{Hz}\)
\(t_{10\text{–}90} = 2.20\,\tau\) \(\approx 352\ \mu\text{s}\)
Output at 63.2% after edge at \(t = \tau \approx 160\ \mu\text{s}\)
\(|H|\) at ~1 kHz fundamental \(\approx 1/\sqrt{2} \approx 0.71\) (\(f_c\approx f\))

(If you use R = 1 kΩ, C = 100 nF instead: \(\tau = 100\ \mu\text{s}\), \(f_c \approx 1.59\) kHz.)

Analysis & reconciliation

Compute \(\tau\) and \(f_c\) by hand from the measured R and C, then compare to the scope-measured \(\tau\) (63.2% cursor and/or rise-time conversion). Expect a few-percent spread: resistor tolerance (±5%), capacitor tolerance (film ±5–10%, ceramic often worse and voltage-dependent), the LC1020E’s own accuracy, and — importantly — probe loading: the 10× probe adds ~10–15 pF at the output node, which slightly increases the effective C and thus \(\tau\). Check that your two independent \(\tau\) estimates (63.2% cursor vs. rise-time formula) agree; if they don’t, the frame or trigger isn’t clean. Finally, confirm the reciprocal relationship \(f_c = 1/(2\pi\tau)\) holds between your time-domain and frequency-domain numbers — this is the single most important sanity check tying the two descriptions of a filter together.

Going further

  • Swap R (or C) to move \(f_c\) by 10× and confirm both \(\tau\) and the roll-off scale as predicted.
  • Take the output across R instead of C to build a first-order high-pass (\(H = j\omega RC/(1+j\omega RC)\)) and contrast the step response (a decaying spike).
  • Drive it with the MCP4725 sine (Lab 3.3) and measure \(|H|\) and phase at \(0.1f_c\), \(f_c\), and \(10f_c\) to plot a real Bode magnitude/phase curve — the bridge to the digital filter labs in Module 6, where this same \(H\) becomes an IIR filter with a pole (Course 1 Lesson 34).