The GRBL library for Arduino looks very comprehensive but I like to understand how things work before I try to build them. Something I don't understand is how these systems get positional feedback.
I know it is common to set a Z point for a given tool, but this is just an offset. As far as I can tell from my reading it all depends on a combination of timing and stepper motors successfully executing exactly as instructed. I find it hard to believe that nothing ever gets out of synch.
Is there some kind of ongoing reality check other than stop switches to prevent out of bound travel? How does it work?
How do they measure slop and backlash to compensate for them?
I can think of ways I might try to do it but I've never seen my imagined feedback systems on any "real" CNC machine, so I have to ask.
Thanks to Spiro for a fabulous answer, but it led to me finding this response to a request for closed loop support in the GRBL github issues. It's the position of the maintainers.
I think the general idea is to never run into the problem of losing position. The motors and drive system need to be robust enough to handle the cutting forces. For open loop control, like Grbl, this is mandatory. For closed loop, this is still pretty much mandatory. In my view, closed loop control only gives you the ability to catch the error. In a properly size CNC system, the errors willl be nonexistent or very rare.
Well... crumbs. How am I supposed to build a fancy machine that finds the crookedly mounted billet and figures out its own offset and rotation ?
My desire for feedback arises more from fears of belt stretch but as Spiro points out ball screws are a better answer. A really expensive better answer, but that's not Spiro's fault.