Continuous wall-thickness monitoring · pulsed eddy-current sensor wrap
Fire+Capture drives the channel above and listens on the Receive mux channel (they can differ on the bench). Records baseline → pulse → switch-off → decay, then fits τ.
Fire drives the selected coil channel. Hold keeps the drive on continuously so you can meter the chain with a DMM — release when done.
Each pair drives its TX channel and listens on its RX channel — match them however your coils are wired. Acquisition uses the Bench settings (pulse, window, rate, averages, fit-skip). Tip: with a few-ms decay, drop Burst duration to ~50–100 ms for a much faster loop.
Cells are channels 1–16, row-major (1–4 across the top). The scan runs one full Fire+Capture per node using the Bench settings (pulse, window, rate, averages) and fits τ per node. Thickness uses the single-node inversion d ∝ √τ against the calibration cell — relative until you calibrate on a known-thickness spot.
Pick the RX channel a coil's receive leads are on, then sweep every TX. The TX with the largest RX response is its drive partner. Polarity is read from which edge the response lands on: a kick at the pulse cut-off = wired normal; a kick at the pulse start = flipped (swap that coil's RX leads). The 0–3.3 V output clamp is what makes only one edge survive, so the test is near all-or-nothing. Auto-map sweeps all 16 RX (256 captures), builds the full coupling matrix, then assigns each RX a unique TX strongest-pair-first — so two RX can't both claim the same drive line.
Tip: click 📈 on any RX box (or any TX sweep / matrix cell) to open the captured waveform and verify the edge by eye. Each RX box is editable — use the dropdown to reassign its TX and the polarity button to flip it; manual edits move the green ring in the matrix and are marked manual. Matching now ranks a genuine decay tail above a taller cross-talk spike, so a false high-amplitude spike no longer steals a TX (spikes are flagged spike?).
Each TX pulse induces a kick in every nearby RX coil, falling off steeply with distance — so the coupling matrix IS a neighbour graph. Strong off-diagonal couplings (after rail/latch rejection) become weighted edges, distances follow amp−1/3 (mutual inductance ~1/d³), and a 2-D embedding (classical MDS) reconstructs where the nodes sit relative to each other — up to rotation/mirror, which is all a wrap layout needs. Red = reversed-polarity (flipped-lead) node — its couplings still count, the flip only changes which edge the kick rides. Apply layout writes the measured positions into the map geometry.
Auto-scan stays off until you start it. It cycles every non-dead node with these settings and broadcasts the live map to all viewers; it pauses automatically for a few seconds whenever you run a manual scan or harness sweep.
Each node is a sensor pixel: RX = receive channel, TX = drive channel (shown on each node as T<tx>R<rx>). The N<id> name is just an internal id. A node only shows a value when its TX→RX capture yields a clean decay; channels with nothing coupling stay blank. If the map only lights up a node or two, the node TX/RX usually don't match your wiring — run the Harness Auto-map, then click From harness below to copy the real pairing onto the map. Click any node to pop up its captured waveform + τ fit.
collecting…
Drag nodes to place them anywhere — no grid is assumed; the map auto-fits. Click a node to edit its label, TX/RX channels, or mark it a dead pixel (excluded from the reconstruction so it reads as the surrounding field, never an artefact). Coordinates are arbitrary units.
Fires the selected drive channel once (energises its coil for the given time). Handy for probing / hearing a coil while laying out the map.
Reading history — each point is one measurement cycle of this sensor.