Two Tests
The new Z axis optical endstop is a unique design that uses a differential screw to enable fine adjustment of the bed position. I devised and ran two tests to see how well it performs.
The first test is simply to check the precision, meaning the repeatability, of the optical endstop. I wanted to know if the bed goes to the same position every time it is homed and if it doesn't, how much the position varies.
The second test is of the differential screw mechanism. It is designed to move the bed 100 um for each full turn of the thumbwheel adjuster over a 2 mm range. The thumbwheel has 10 bumps on it, so if the screw behaves perfectly, each bump represents a 10 um movement of the home position of the bed. I wanted to find out how accurate it is.
Test 1: Precision of the Endstop
I tested the X and Y endstop precision by running two identical prints, one homed only at the start of the print, and the other rehomed at each layer change. If the precision were poor, the layers of the rehomed print would not stack on each other very well and the print quality would be bad. The result of that test was nearly identical prints indicating that the precision of the X and Y endstops is very high. I expected no less from the Z axis endstop.
For the Z axis homing precision test I mounted a gauge on the printer's frame and moved the endstop down the frame so the print bed wouldn't smash the gauge, then homed the bed, zeroed the gauge, and then moved the bed down different distances and rehomed the bed, checking the home position each time.
Here's video of the test:
As you can see, 8 out of 10 times, the gauge went right back to 0.00 mm, and the other 2 out of 10 times it went to 0.01 mm. That is the excellent performance I expected.
My gauge has a basic accuracy spec of 0.03 mm and a precision spec of 0.01 mm. Assuming those specs are to be believed, the readings made are at the limit of the gauge's ability to differentiate the position of the bed.
Test 2 : Accuracy of the Differential Screw Adjuster
For this test, I positioned the endstop and backed out the adjuster screw, homed the bed, zeroed the gauge, then turned the adjuster one full turn and rehomed the bed multiple times. Each full turn of the adjuster should move the bed 100 um. The thumbwheel on the adjuster screw has 10 bumps, one of them proud of the surface so it is easy to tell when the screw has made a full turn.
This is the differential screw adjuster and optical endstop. Notice the one tall bump on the thumbwheel that makes it easy to index the amount of rotation applied. |
Here is video of that test:
03290007 from Mark Rehorst on Vimeo.
As you can see, when I turn the screw one full turn the home position of the bed moves by about 100 um. I used an ordinary M5 screw that I modified using a lathe and a standard M4 die to cut new threads. The thread pitch probably varies slightly in both the M5x0.8 and M4x0.7 portions of the screw, and the printed plastic parts flex a bit whenever I adjust the screw, which explains the not exactly 100 um behavior, so I am pleased with the result. This makes small adjustments to the bed position very easy compared to trying to do the same with an ordinary M4 or M5 screw that would move the bed 700 or 800 um per turn.
A couple people have suggested that a differential screw would be a great way to move the levelers of a kinematic printbed mount. You usually have to make very fine adjustments there to tram the bed to the printer's X and Y axes.
Have you been using Hall endstops for the past few years? How have they stood the test of time? Are they affected by ambient light levels? Does the orientation at which the blocking medium enter change the trigger precision? Have they been generally robust?
ReplyDeleteThanks :)
Hall effect endstops are magnetic, I am using optical endstops. Yes, they are still working fine. I did have a minor problem with one when sunlight was hitting it directly. Closing the curtains fixed it. No other problems at all. If the flag fits in the narrow space between the emitter and detector, it will work reliably.
Delete