← Piezo Motor / Articles
§8Article · 8 of 13

Independent Research · 3D-Printed Piezo Stick-Slip Motor

Measuring Micrometers at Home: A Michelson Interferometer With a BPW34 Photodiode and a Rigol Scope

Published · Last updated

A perfectly working stick-slip motor on my bench, stepping at 5 Hz, moves a few micrometers per second, which the human eye cannot see. For about a month I ran experiments without fully realizing they were blind, and §M10 tells that story. So I needed better eyes, not a faster motor.

Since commercial laser displacement sensors and interferometer systems are priced as precision instruments, I built a Michelson interferometer out of hobby parts and wired its output into the $449 oscilloscope from §M3a. One cycle of the pattern it makes is 260 nanometers of travel, which is the resolution this project needs. It works, but as I write this in late August it has never been pointed at the motor. If you can align two mirrors and solder a photodiode, you can copy the build in this chapter.

01

What a Michelson does, in one paragraph

A 50:50 beamsplitter splits the laser beam into two arms, sending one half to a fixed reference mirror and the other half to the measurement mirror, which is mounted on the thing that moves. When the reflections recombine, the two waves interfere. Moving the measurement mirror changes the light path by twice the motion, so the combined beam cycles through bright-dark-bright fringes. Every full fringe cycle equals half a wavelength of travel, and at my laser's 520 nm that is one fringe per 260 nm of slider motion (Derived: λ/2). Counting fringes over time gives displacement versus time, with resolution far below anything mechanical.

02

The parts, and the two-laser decision

The optics kit has two green laser modules, a 50:50 beamsplitter, mirrors, an ND filter, and a five-pack of BPW34 photodiodes (optics prices were not recorded in the BOM, and none of these are precision-branded parts) [project CLAUDE.md §2]. There are two lasers because I hedged.

Module (a) is a 532 nm, 30 mW unit sold for stage lighting. It is powerful but Class 3B, which means an ND filter (neutral density, a grey glass that attenuates the beam) is mandatory. Cheap green modules like it are usually DPSS (diode-pumped solid state, an infrared diode driving a crystal that halves the wavelength), and the classic caveat is that some of that infrared can leak out the front, invisible, with nothing to warn that it is there.

Module (b) is a 520 nm, 5 mW direct-diode dot module with a copper head, 7.9 mm in diameter and 18 mm long (listing string "7.9X18 Green 5mW 1PC"), running on 2.3–5 V [builder, 2026-08-07]. It is Class 3R and tamer, but as a bare diode its coherence length is expected to be short, which for an interferometer means the two arm lengths have to match within roughly millimeters or the fringes wash out [project CLAUDE.md §2].

At the very beginning, the 532 nm unit went in and was scrapped for the same reason it was suspect (too much power to work around comfortably). The tamer 520 nm module replaced it and is the one in the rig today [builder, 2026-08-07]. The tamer module's 3D-printed mount is the Onshape Boolean case study from §M5. The fringe math is wavelength-specific, so the analysis script takes the wavelength as a parameter (260 nm per fringe at 520 and 266 at 532). Mixing them up would silently scale every measurement by about 2.3%.

Even the 5 mW module needs care, and the 30 mW unit is hazardous. The rules are to always keep the ND filter in the path, never put a beam at eye level, and treat any cheap DPSS green as if it also carries invisible IR unless proven otherwise.

03

One photodiode, five resistors

The detector is a BPW34 photodiode, reverse-biased, feeding a 50 kΩ load resistor, and the voltage across that load goes straight into the DHO804's 1 MΩ input. A brighter fringe gives more photocurrent and more volts, so the fringe pattern becomes a waveform on CH1 (wiring diagram, bpw34_wiring_diagram.svg). The 50 kΩ load is five 10 kΩ resistors in series, because I wanted roughly 47 kΩ and had none in stock. I checked the parts bins twice [project CLAUDE.md §2].

04

Alignment

Getting fringes means making two reflected beams retrace and overlap almost perfectly while their path lengths agree to within the diode's short coherence. In practice that takes long sessions of steering dots onto dots. The project's alignment guides (interferometer_alignment_visual_guide.svg, fringe_pattern_and_calibration_guide.svg) sum up what worked.

Two problems show up in the records, and the first is satellite reflections. Every glass surface makes its own faint beam, so the bench ends up with extra dots that can be mistaken for the real ones. They were managed with pinhole cards to identify the real beams and a deliberately tilted ND filter to throw the satellites off-axis, though they were never fully eliminated.

The second is arm matching with no calibrated hardware. Mirror 2 sits on a plain sliding stage with no markings, so equalizing the arms was iterative nudging rather than dialing a number [project CLAUDE.md §2]. It took three to five sessions before alignment stopped being luck and started being a workflow, and the only way through was practicing the same moves until they got faster [builder, 2026-08-07].

More than once the pattern appeared, held, and then vanished the moment the stack started driving, most likely because nothing on this rig is truly rigid. Stiffer, properly locked fixturing is the upgrade this instrument needs most.

05

July 6: first fringes

The first fringes appeared on 2026-07-06, and the capture files from that night are stamped 23:27. Instead of the textbook straight-line fringes, the pattern was a bull's-eye of concentric rings, which is what a diverging diode beam produces when it meets a residual arm mismatch (a sign of wavefront curvature rather than a mistake). It was still usable, because with the photodiode parked at its center, the rings pass it as bright-dark cycles, which is all the electronics ever sees [project CLAUDE.md §2].

What I remember from that night is actual patterns on the wall, extremely small but with edges more distinct than anything I'd ever produced, and the realization that a thing built at home out of plastic, printers, and lasers actually worked [builder, 2026-08-07]. Then a fingertip tap on the measurement mirror made the scope trace move and confirmed the chain from optics through photodiode to scope. Even so, the script that counts fringes has still never seen real ones.

06

From pattern to numbers

The scope half of the pipeline is the direct descendant of the Ex45 SCPI exercise (§M3a). interferometer_capture.py pulls the photodiode waveform off the DHO804 over USB and saves CSV, and fringe_to_displacement.py counts fringe cycles and multiplies by λ/2, turning volts-versus-time into displacement-versus-time. Its self-test passed 2026-07-02, before the optics were even aligned [project CLAUDE.md §2].

The instrument's first assignment, on paper, was validating the actuator itself, driving the bare stack slowly and counting fringes against the datasheet expectation (about 2.0 µm at 15 V, Derived from the verified 20 µm @ 150 V [9], which at this rig's 260 nm per fringe is a little under eight fringes). But the project's own records list that check as still pending (design_notes §18, first-motion debug order, item 2), and the capture files from the alignment night are flat traces.

What the records do support is the tap test, which proved the sensing chain, and then the motor itself moving (§M11), which proved the stack. The bare-stack fringe count is still owed. The instrument's much bigger assignment, reading the slider itself at an expected 9–19 fringes per second, is also still ahead of it.

07

Current status

As I write this, in late August, the interferometer still needs realignment. It was aligned on the old rig, and the measurement mirror has not yet moved onto the new slider. The bench day that was meant for that went to the motion diagnosis instead (§M10, §M11), so every August travel number in this write-up was read off a ruler and a strip of masking tape, not off this instrument.

It also has limits: a homemade Michelson on a desk measures vibration, drift, and air currents along with everything else, satellites were managed rather than eliminated, and the uncalibrated stage means arm-matching is still a skill rather than a procedure. But it was never meant to be a metrology lab, only a way to replace guessing with measurement for the price of some optics, some resistors, and a mid-range scope. The numbers in §M12 are meant to come through this photodiode rather than a ruler, and moving the mirror onto the slider is the first job of that phase.