Experiments with auto-zero in CNC

Hi. I’ve been messing about in the workshop and have thrown together a rudimentary touch plate system to auto-zero the CNC.

Currently only does Z axis, but I’ve got many ideas on how to refine it, but find myself wondering how far I should take it. Perhaps if others are interested, it would be worth taking it further?


PS, I tried to upload a video, but wasn’t allowed as it seems I’m too new here.

Sounds very interesting! Maybe an upload on YT or Vimeo would be an alternative?

Yeah, even a video on google drive would be interesting, how does it work?

Here’s a video on YouTube…. Hopefully it explains a bit more. Let me know your thoughts or questions :slight_smile:


Amazing! what gcode are you sending to the printer? I wonder if this could be adapted into a USB device with a pro-micro


The geodes are pretty simple, basically just -z in small steps, 0.25mm, checking the IO port for contact between each step. The code’s a bit messy, but perhaps I’ll find time to tidy it up and post.

The micro would need to have USB host capability (as it plugs in to the Snapmaker’s micro USB port), which I don’t think the pro-micro can do. I think the ESP32-S2 would be a good option, as it has USB host, wifi, and is pretty cheap.

If it’s just for me I could get a touch screen for my Raspberry Pi, but if there’s enough interest from others, I could implement on ESP32 and build a web UI so it can be controlled by, say, your phone.


The arduino pro micro does have usb-host capabilities, athough i’m not sure the snapmaker usb port would work for our needs.

Actually in the machine the camera in the laser has a bluetooth module to send the pictures to the machine.

For me wireless probing with bluetooth seems too slow ( too much latency) and maybe unreliable?

Actually, I also have a wifi connection to the Snapmaker working in python too, but you’re right, the extra latency slows it down and adds extra complexity (and you can’t use the Snapmaker’s touch screen while wifi control is connected). That’s why I deliberately chose wired USB control.

yeah, that sounds reasonable.

so do you have the code available anywhere?

I’m working on a few enhancements…. So let me get those working and I’ll post an update.

I do that with a led and a 9v battery. I substract the screens values when the light is on. et voila !

Indeed, Sebastian, an elegant solution!

I think I’ve decided to use a Pi Zero as a platform, when they eventually become available again, because of the ease of code development and general flexibility.

My old school Pi 1 works, but is a wee bit on the slow side!

FYI, Update in a new topic here:

And on YouTube here: