Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Experiment 2 — The Speed of Light

Objectives

By the end of this experiment you should be able to:

Textbook connection

Read §2.1–2.3. Einstein’s second postulate makes cc the same in every inertial frame; since 1983 the metre has been defined so that c=299 792 458 m/sc = 299\,792\,458\ \text{m/s} exactly. You are therefore not measuring a constant of nature this afternoon — you are calibrating your meter stick against your oscilloscope. That is a slightly deflating way to put it, and it is worth being clear-eyed about, because it is exactly the kind of definitional shift that Chapter 2 argues relativity forced on physics. The BIPM definition of the metre fixes the value of cc in vacuum. This experiment measures pulse travel through air; its group speed differs from vacuum cc by roughly three parts in ten thousand, smaller than the target uncertainty here. State this approximation when comparing your result with the defined value.

Theory

Time of flight

Light emitted at time t0t_0 and detected after traveling a distance LL arrives at

t=t0+Lc+τ,t = t_0 + \frac{L}{c} + \tau,

where τ\tau represents fixed delays in a single detection channel. In the actual two-channel measurement, the common source turn-on time cancels; τ\tau represents the difference between the reference and signal path lengths, detector and amplifier delays, and cable delays. It may be comparable to the flight time you are trying to measure and is best measured as the intercept rather than assumed from component labels.

The way out is not to measure τ\tau but to eliminate it. Take the delay Δt\Delta t at two or more path lengths LL. Since τ\tau does not depend on LL,

Δt(L)=Lc+τ⟹d(Δt)dL=1c.\Delta t(L) = \frac{L}{c} + \tau \qquad\Longrightarrow\qquad \frac{d(\Delta t)}{dL} = \frac{1}{c}.

Fit a straight line to Δt\Delta t against LL; the inverse slope estimates the light speed in air and the intercept estimates τ\tau. This cancellation works only if the reference path and the channel delays stay fixed as LL changes.

This is a general and important technique: when an unknown offset contaminates a measurement, vary the quantity of interest and fit a slope. It reappears in Experiments 6, 8, and 13.

A plot of delay against path length: the data fall on a straight line whose slope is 1/c and whose y-intercept is the fixed instrumental delay tau, which is unknown but drops out of the slope.

Figure 2.1:The slope-fit trick. τ\tau shifts every point up by the same fixed amount, so it changes the intercept but not the slope — the fit recovers cc without ever needing to know τ\tau.

What limits you

An oscilloscope of analog bandwidth BB has a 10–90% rise time of about

tr≈0.35B,t_r \approx \frac{0.35}{B},

so a 100 MHz100\ \text{MHz} instrument smears every edge over roughly 3.5 ns3.5\ \text{ns} — about a meter of light travel. This does not mean you cannot do better than a meter. A smeared edge can still be located to a fraction of its rise time, because averaging many acquisitions beats down the noise on the edge and the scope interpolates between samples. In practice, with enough signal, sampling, and a stable trigger, locating an edge to a fraction of a nanosecond may be possible. Measure that timing scatter on your actual setup. Across a 10 m10\ \text{m} path change, 0.4 ns0.4\ \text{ns} is about 1.2% of the 33 ns33\ \text{ns} flight-time change.

The other contributors are: the sampling interval (use the fastest time base that still shows both edges), trigger jitter (trigger on the reference channel, which is bright and fast), and — the one students usually forget — the unequal electrical lengths of the two BNC cables. Signal travels in typical RG-58 at about 0.66c0.66c, so a 30 cm30\ \text{cm} cable mismatch changes the channel offset by about 1.5 ns1.5\ \text{ns}. If the cables remain fixed throughout the path-length series, that offset changes the intercept, not the fitted speed. Measure the cables and swap them once as a control; a path-dependent change in electronics or detector response would affect the slope.

Pre-lab

Apparatus

A pulsed source is split at a beamsplitter into a short reference path to one photodiode and a folded path via two mirrors to a second photodiode, both feeding a fast oscilloscope.

Figure 2.2:The time-of-flight bench. A fast pulse is split into a fixed reference path and a folded path of measured length LL; the inverse slope of delay versus LL estimates the propagation speed while fixed channel delays enter the intercept.

Procedure

Before you route the beam

Part A — Setting up the two channels

  1. Mount the source. Split a small fraction of its output onto the reference photodiode a few centimeters away — a glass slide at 45°45° is enough. This channel defines t0t_0 and removes any drift in the source’s turn-on time.

  2. Send the main beam across the room, fold it with the two mirrors, and bring it back onto the signal photodiode. Start with the shortest workable path, about 2 m2\ \text{m} total.

  3. Trigger the scope on the reference channel. Set both channels to the same vertical scale and DC coupling.

  4. Turn on averaging (128 acquisitions is a starting point) and compare the timing scatter. Averaging reduces random noise; it does not restore edge speed lost to limited detector or oscilloscope bandwidth.

[ ] Checkpoint 1. Show the instructor two clean, averaged edges with a stable trigger. If the signal edge is noisy, the beam is possibly off-center; check beam centering, source stability, and electronic noise before changing the amplifier gain.

Part B — The delay measurement

  1. Define your timing criterion before taking data and use it unchanged for every measurement. The 50%-amplitude crossing of the rising edge is a good choice; the peak is a bad one, because the two pulses have different shapes. Most scopes will do this automatically with a delay or “phase” measurement between channels.

  2. Record Δt\Delta t and its scatter over several acquisitions.

  3. Measure the total optical path LL from the source, via both mirrors, to the signal detector. Measure it with a tape, along the beam, and record the uncertainty. Do not forget the short leg from the beamsplitter to the reference detector — it enters τ\tau, so it must not change between runs.

  4. Move one mirror to lengthen the path by roughly 1 m1\ \text{m}, realign onto the detector, and repeat. Collect at least eight path lengths spanning as large a range as the room allows.

Part C — Controls

  1. Swap the two BNC cables and repeat one measurement. If cable delay is the only change, the measured delay shifts by twice the original cable offset. This checks the intercept contribution; a fixed offset cancels from the fitted slope. Restore the original cabling for the series.

  2. Block the main beam and confirm that the pulse correlated with the reference disappears from the signal channel. A remaining correlated pulse suggests electrical crosstalk; find and remove it before fitting. Background and detector noise need not disappear completely.

  3. If time allows, repeat one path length with the averaging turned off, to see what averaging bought you.

Analysis

Fit Δt=L/c+τ\Delta t = L/c + \tau with both parameters free.

import numpy as np
from scipy.optimize import curve_fit

L   = np.array([...])          # total optical path, meters
sL  = np.array([...])          # uncertainty, meters
dt  = np.array([...])          # measured delay, seconds
sdt = np.array([...])          # uncertainty, seconds

model = lambda L, inv_c, tau: inv_c * L + tau
p0    = [1 / 3e8, 0.0]
popt, pcov = curve_fit(model, L, dt, p0=p0, sigma=sdt, absolute_sigma=True)

inv_c, tau = popt
s_inv_c    = np.sqrt(pcov[0, 0])
c, sc      = 1 / inv_c, s_inv_c / inv_c**2      # note the 1/x propagation
print(f"c   = {c:.4g} +/- {sc:.2g} m/s")
print(f"tau = {tau*1e9:.2f} ns")

resid = (dt - model(L, *popt)) / sdt
print(f"chi2/nu = {np.sum(resid**2) / (len(L) - 2):.2f}")

Note the propagation in the calculation of sc: the fit parameter is 1/c1/c, so σc=σ1/c/(1/c)2\sigma_c = \sigma_{1/c}/(1/c)^2. Fitting 1/c1/c rather than cc keeps the model linear; the covariance matrix still depends on a suitable uncertainty model and stable channel delays.

Because LL also carries uncertainty, check whether it matters: the effective uncertainty on Δt\Delta t from a position error is σL/c\sigma_L/c. For σL=5 mm\sigma_L = 5\ \text{mm} this is 17 ps17\ \text{ps}, far below your timing uncertainty — so position error is negligible here, and you should say so rather than silently ignoring it.

Plot the residuals. A curved pattern suggests an effect that changes with path length, such as detector illumination, pulse shape, or a changing electronic delay. Investigate before interpreting the fitted speed.

Post-lab questions

Going further