pulse-echo-azimuthal-scanner

Public

@jerome-graves

Download board files

Files for version 1. Pick what you came for.

Share pulse-echo-azimuthal-scanner

Check access before sharing the link.

Who can open this board

Anyone can open this board. No sign-in is required.

This link opens the latest version. Copying it does not grant additional access.

Loading 3D model… large boards can take a moment.

README

Pulse-Echo Azimuthal Scanner

A single-transducer ultrasonic scanner that measures the crystal orientation fabric (COF) of an ice core disk. The machine rotates a 100 mm ice disk through a full turn while a spring-free vertical carriage repeatedly seats an ultrasonic probe against the rim under a controlled contact force. At each azimuth the probe fires a pulse across the diameter and records the back-wall echoes. Because sound travels faster along the crystal c-axis than across it, the velocity varies with azimuth, and the pattern v(theta) = v0 + A cos 2(theta - phi) reveals the predominant crystal orientation without cutting or melting the sample.

The measurement leans on two design decisions:

  • E2 minus E1 timing. The interval between the first and second back-wall echoes spans exactly one extra two-way transit of the diameter, so the couplant film and wear-plate delays cancel. Timing accuracy no longer depends on how much oil is under the probe.
  • Re-seat and revisit. The probe lifts and re-docks between repeat traces to average the couplant wedge, and the scan revisits a reference azimuth at intervals so slow drift (freezer cycling, rim shape) can be removed in analysis.

How a scan works

For every azimuth in the sweep the machine, fully unattended:

  1. lifts the probe 2 mm clear of the rim,
  2. rotates the disk to the target azimuth (witnessed by an absolute encoder on the rotation axis),
  3. tares the load cell and docks: a fast descent to just above the remembered sample height, then a slow creep until the load cell registers the contact force (5 g nominal),
  4. captures an averaged waveform from the oscilloscope, checking the echo amplitude and re-capturing if the signal is weak,
  5. repeats the dock/capture cycle for the configured number of traces,
  6. logs everything to disk row by row, so a crash or abort loses nothing and the run can be resumed.

When the sweep finishes the machine parks itself: the probe homes to the top stop and the stage unwinds back to azimuth 0.

Repository layout

PathContents
hardware/pcb/KiCad schematic and layout for the controller board (RP2040 Pico, 2x TMC2209, HX711, DS18B20, AS5600 inputs), the bare-board STEP export, and the component 3D models
hardware/3d/STEP and GLB exports of the assembled controller board (board plus fitted modules)
hardware/Gcode/CNC milling toolpaths used to machine the prototype board, plus the Makera CAM source project (.mkc)
software/firmware/Pico C++ firmware. Serial command reference in PROTOCOL.md
software/GUI/Streamlit control application: jog, dock, sweep, run browser, analysis. See its README
docs/LaTeX machine manual
.vscode/editor tasks for one-click firmware build, flash and GUI launch
Run Scanner GUI.batdouble-click launcher; installs a private Python runtime on first use

The ultrasound pulser (OPLab box) and oscilloscope are separate USB instruments driven by the host application. The controller board handles motion and sensing only; no ultrasound signal passes through it.

Quick start

  1. Connect the controller board by USB and switch on the 12 V motor supply. The board tares the load cell, reads the absolute encoder, homes the vertical axis and rotates to azimuth 0 by itself.
  2. Double-click Run Scanner GUI.bat. The first run downloads a self-contained Python runtime into the repository (internet required, a few minutes); after that it starts offline and immediately. It also creates Pulse-Echo Azimuthal Scanner.lnk, a shortcut with the project icon, which can be used from then on.
  3. The GUI auto-detects the board. Dock once from the Dock/Home tab so the machine learns the sample height, then start a sweep from the Scan tab.

To rebuild the firmware, see software/firmware/README.md.

Accuracy and limits

Values measured on this machine during commissioning:

QuantityValueNotes
Rotation drive71.188 steps/degree1.8 degree motor, 32 microsteps, belt reduction; calibrated against the absolute encoder
Azimuth truth0.34 degrees RMSAS5600 absolute encoder after a 2-harmonic correction for magnet eccentricity and tilt (2.14 degrees RMS raw)
Rotation backlash~0.1 degreeapproach direction is constant during a sweep
Vertical drive1600 steps/mmtwo-start T8 leadscrew, 4 mm lead; no encoder on this axis
Vertical homing0.03 to 0.06 mmsensorless StallGuard to the top mechanical stop
Dock repeatability~5 um within-angle (best case)position at 5 g contact, rigid target
Contact force5 g nominalload-cell noise 0.65 g rms idle, 2.6 g peak-to-peak; median filter plus 2-sample debounce; under 20 um over-travel at the 0.06 mm/s creep
Contact calibrationrepeatable, not absoluteno reference mass on site; the force units are consistent counts, which is what the physics needs
Thermal driftdv/dT about -2.3 m/s per KDS18B20 in the tailstock logs temperature per trace; reference revisits detrend the residual
Cycle time11 to 17 s per tracedominated by the final slow creep; a 360 degree sweep at 1 degree steps with 3 traces per angle takes 3.5 to 6 hours

Machine constraints worth knowing:

  • The rotation axis is single-turn by design: cables run to the rotating stage. The firmware and host cooperate to keep the axis inside one turn, allow only small moves across the 0/360 wrap, and always unwind back the way they came after a sweep.
  • The vertical axis has no encoder; distances are derived from step counts and re-referenced by homing, which is why homing runs automatically at power-on and after every sweep.
  • The contact interlock is the only thing that stops the probe on the sample. Do not disable VLIMIT while the probe is above the disk.

Documentation and citing

The full machine manual (operation, hardware, theory of operation, calibration and accuracy, serial protocol, software architecture) is in docs/scanner-manual.pdf, built from the LaTeX sources alongside it.

  • J. Graves, S. Harput, B. Lishman. Non-Destructive Ultrasonic Estimation of Ice Crystal Orientation Fabric: Multi-Frequency Experimental Validation and Failure Mode Characterisation. IEEE International Ultrasonics Symposium, 2026 (accepted). The paper this machine underpins.
  • J. Graves, S. Harput, B. Lishman. A Finite-Difference Simulation Framework for Ultrasonic Crystal Orientation Fabric Estimation in Ice: Timing Methodology, Forward Model Selection, and the Cramer-Rao Accuracy Limit. IEEE International Ultrasonics Symposium, 2026 (accepted). The simulation companion (digital twin) of this measurement.
  • J. Graves, B. Lishman, S. Harput. Measuring Predominant Orientations of Ice Crystal Fabrics From Ultrasonic Measurements of Ice Cores. Preprint.
  • J. Graves, B. Lishman, S. Harput. Determining the Grain Geometry From Ultrasonic Measurements of Large-Grained Temperate Ice Cores. IEEE International Ultrasonics Symposium, 2023. doi:10.1109/ius51837.2023.10307539

The full list, with paper PDFs as they become available, is at jeromegraves.com. An archived DOI for this repository will be added on publication of the 2026 papers.

Comments

No comments yet. Be the first to ask about this board.

Ask about this board

Sign in to BoardRepo

New here? Signing in creates your account; there is no separate sign-up.