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.
Recommended reading
PEI Ch. 2, 9 — the RC step response and the first-order low-pass: time constant, cutoff, and the exponential charge/discharge this lab measures.
Lyons Ch. 1 — the practitioner’s framing of signals and filtering that the rest of the DSP modules build on. Light read. → Lyons, Understanding DSP
PEI Ch. 2 & 9 — the RC portions only: Ohm’s law, series/parallel circuits, capacitive reactance, and RC charging/discharging and the time constant (Ch. 2); the first-order RC low-pass response, cutoff frequency, and magnitude/phase/dB plots (Ch. 9). Skip Ch. 2’s deeper network-theory material and Ch. 9’s high-pass/band-pass/notch sections for now — this is the build-and-measure version of this lab.
Course 1 Lesson 48 — complex analysis / Laplace & the transfer function as a function of a complex frequency; a light link here (poles and \(j\omega\) substitution), applied in earnest in Module 6.
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
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:
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.
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.
Procedure
Part A — Measure the parts and predict.
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.
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.
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 (τ).
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.
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.
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).
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.
(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 A → C = 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:
(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 48).