Bryan Mayland
TVWBB Hall of Fame
I put an optical sensor on my i3 and printed a little strip that would come down and interrupt the beam.
![](https://lh6.googleusercontent.com/-P9dY-w44kZI/Ud6sKiJdl9I/AAAAAAAABWQ/ojHESpHNzIc/s640/IMG_1651.JPG)
I printed the strip so it would endstop before the head got to the bed, but at the same place every time. Then I just would enter the offset as printer initialization G-code. If the head was 3.1415mm from the bed, you home, then G92 Z3.1415.
It is another one of those things where it isn't on/off, but rather the voltage changes based on how much light is getting to the receiver. As the strip went in between you could see the voltage change as the edge diffused the light and "slowly" winked it out. I believe it was affected by ambient light as well. I would say it was repeatable to within 0.02mm assuming nothing changed, and at most 0.15mm from one use to another.
I switched to the servo system which works alright. The autoleveling I don't use, but using a servo as the z endstop works well enough. The Hall endstop is probably better, cheaper, and easier.
I printed the strip so it would endstop before the head got to the bed, but at the same place every time. Then I just would enter the offset as printer initialization G-code. If the head was 3.1415mm from the bed, you home, then G92 Z3.1415.
It is another one of those things where it isn't on/off, but rather the voltage changes based on how much light is getting to the receiver. As the strip went in between you could see the voltage change as the edge diffused the light and "slowly" winked it out. I believe it was affected by ambient light as well. I would say it was repeatable to within 0.02mm assuming nothing changed, and at most 0.15mm from one use to another.
I switched to the servo system which works alright. The autoleveling I don't use, but using a servo as the z endstop works well enough. The Hall endstop is probably better, cheaper, and easier.