meta data for this page
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| projects:micromanipulator:start [2026/07/31 17:34] – created rahix | projects:micromanipulator:start [2026/08/03 20:47] (current) – more docs rahix | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Open Micro-Manipulator ====== | ====== Open Micro-Manipulator ====== | ||
| - | We are building an //open micro-manipulator// | + | We are building an //open micro-manipulator// |
| + | |||
| + | > 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. | ||
| + | |||
| + | We are building ours for die image stitching and laser alignment needs. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | [Work in Progress] | ||
| ==== Resources ==== | ==== Resources ==== | ||
| * Upstream Project Documentation: | * Upstream Project Documentation: | ||
| + | * Our design files and modified firmware: https:// | ||
| + | |||
| + | |||
| + | ===== Log ===== | ||
| + | ==== 2026-08-02 (fiona, anuejn, rahix) ==== | ||
| + | The code to drive the fafo-flavored circuit board has been pushed to git: [[https:// | ||
| + | |||
| + | We are redesigning the motor horn as the current ones sit so crooked on the too short axles/ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Design lives in the '' | ||
| + | |||
| + | We finished soldering the circuit board and confirmed motors and encoders of all three axis working. | ||
| + | |||
| + | ----- | ||
| + | |||
| + | Running calibration on all 3 axes with 27° retration angle (we increased it in an attempt to improve the results). | ||
| + | |||
| + | {{: | ||
| + | {{: | ||
| + | {{: | ||
| + | |||
| + | It does not work reliably yet, neither homing nor calibration yields great results so far. Assuming we will need a combination of improving the encoder to magnet alignment and also tuning software parameters more. | ||
| + | |||
| + | ==== 2026-08-01 (fiona, anuejn, rahix) ==== | ||
| + | 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 ('' | ||
| + | |||
| + | 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 17.5 degrees after homing. | ||
| + | <code diff> | ||
| + | diff --git a/ | ||
| + | index b343a1f..d4263e9 100644 | ||
| + | --- a/ | ||
| + | +++ b/ | ||
| + | @@ -57,7 +57,7 @@ bool RobotJoint:: | ||
| + | bool homing_ok = homing_controller.run_blocking(servo_controller, | ||
| + | | ||
| + | | ||
| + | - 0.0f); | ||
| + | + 17.5f*DEG_TO_RAD); | ||
| + | </ | ||
| + | Now the micromanipulator axis is working as intended and can be controlled via G-Code! Success! | ||
| + | After calibrating joints with '' | ||
| + | |||
| + | We continued soldering the motor drivers for the remaining axis to the board. | ||
| + | |||
| + | {{: | ||
| + | |||
| + | [do not question what the saw is doing on this picture] | ||
| + | |||
| + | ==== 2026-07-31 (anuejn, fiona) ==== | ||
| + | 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 " | ||
| + | |||
| + | Open loop motion during calibration works, but the closed control loop oscillates heavily. During calibration, | ||