Lume Bench Annotations

Bench characterization of the Lume TLF+ToF sensor against controlled air, still-water, and agitated-water exposures — 2026-04-18.

Three-panel time series of sipm_mon2_raw, model_temp_c, and model_tof_raw shaded by annotation category
air (sensor exposed) water, no shake twist shake / submerged

Test Setup

A Lume sensor was placed in a bench fixture and cycled through three conditions while raw telemetry was recorded at one sample per minute (~0.017 Hz). Each time the operator changed conditions, an annotation was written inline to the data stream. Three signals are plotted here:

sipm_mon2_raw
SiPM monitor channel on the TLF (time-resolved fluorescence) detector — proportional to the fluorescence signal.
model_temp_c
Model-input temperature (°C) derived from the HDC2080.
model_tof_raw
Raw signal from the ToF (time-of-flight) distance sensor that looks into the sample cell.

Conditions

Findings

1. The ToF channel is a clean air-vs-water discriminator.

model_tof_raw is essentially bimodal: it sits near 25 whenever the sensor is in water and jumps to ~70 whenever the sensor is in air. Transitions between the two states are effectively step functions — a fixed threshold near 45 separates the two conditions with no ambiguity on this dataset.

2. The TLF channel alone cannot separate air from water.

Air-phase sipm_mon2_raw values (roughly 2000–2600) overlap heavily with still-water values. The signal is temperature-sensitive and condition-sensitive, so any air/water gate built on TLF alone would need the ToF channel as a prior.

3. Still water traps micro-bubbles that the ToF cannot see but the TLF reports.

In every water-no-shake region the TLF reads noticeably higher than it does immediately after a twist-shake, even though model_tof_raw stays firmly in its “water” band (~25) throughout. The ToF sensor confirms that water is present against the window; the elevated TLF reading must therefore be driven by something the ToF cannot resolve — consistent with small air bubbles trapped on the optical window scattering additional light into the SiPM.

4. Twist-shaking reveals the true water-only TLF baseline.

Each twist-shake event produces an immediate drop in sipm_mon2_raw — ~720, ~1300, and ~600 across the three shake events — well below the still-water readings that precede or follow them. This is the bubble-free baseline. The fact that the baseline itself is not perfectly repeatable (720 vs 1300 vs 600) suggests that either residual turbidity, the angle the sensor was re-seated in, or partial re-bubbling between annotations still modulates the reading.

Implication for the classifier

A two-stage decision makes physical sense: (a) use model_tof_raw as a hard gate for air vs. water, and (b) within water, treat the TLF reading as an upper bound that can be inflated by trapped bubbles. A periodic agitation cycle or a bubble-scrub routine before measurement would make the TLF reading reflect the water itself rather than the air trapped against the window.

Data & Reproducibility

All panels plot the same timebase. Annotation rows in the source CSV contain only a timestamp and a note field; each annotation marks the start of a section that runs until the next annotation. The three categories shown here merge the raw labels: “Air”/“air” → air, “water no shake” → water no shake, “twist shake”/“submerged”/“air cleared” → twist shake.

Source: data.csv in the project directory. Plot regenerated with python3 plot.py.