meta data for this page
This is an old revision of the document!
Open Micro-Manipulator
We are building an open micro-manipulator after the amazing design of Diffraction Limited (YouTube). He describes is as
This project contains an open source low-cost, easy-to-build motorized XYZ Micro-Manipulator motion control platform achieving submicron precision. It's designed for applications such as optical alignment, probing electronic components, and microscopy.
[Work in Progres]
Resources
- Upstream Project Documentation: https://github.com/0x23/MicroManipulatorStepper
Log
2026-08-02
The code to drive the fafo-flavored circuit board has been pushed to git: https://git.fa-fo.de/fafo/OpenMicroManipulator
We are redesigning the motor horn as the current ones sit so crooked on the too short axles/shafts of the motors that we need to do something about it. Our approach is to use a little trick: Repurpose a GT2 timing belt pulley as an axle adapter as described by @rrmutt on Mastodon:
We finished soldering the circuit board and confirmed all three axis working.
Design lives in the fafo-hardware branch of https://git.fa-fo.de/fafo/OpenMicroManipulator.
2026-08-01
Plotted the encoder values to understand why results do not add up.
The discontinuities look suspicious. Disassembled the encoder from the micromanipulator again and manually played with the magnet array next to it. Figured out where the magnets need to sit in relation to the encoder to produce continuously changing encoder graphs.
We noticed that the version of the stepper motor mount (MotorMount in the FreeCAD assembly) that we printed does not match the latest design. It is missing a mounting hole for the encoder… Printed the new version.
With a properly mounted encoder the measurements look a lot better, but the calibration process was still unhappy with the results. The reason for that was that the magnets were moved out of their linear range when homing. We fixed this by monkey-patching the code to retract 18 degrees after homing. Now the micromanipulator axis is working as intended and can be controlled via G-Code! Success! `G0 X0` can be used to move the X-Axis to the center position.
We continued soldering the motor drivers for the remaining axis to the board.
2026-07-31
Assembly arrived in the lab and we finished assembling it.
The chosen stepper motors have too short of an axle which makes the mating parts not sit straight. The motor coils also have too low resistance which means we cannot drive them at full specified torque. Running at 3V supply for now.
Attached the encoders. They report a “weak” magnetic field (come on, it's at least average!). Patched out the error check for this.
Open loop motion during calibration works, but the closed control loop oscillates heavily. During calibration, motion starts in a weird direction.


