Work zeroring somewhat inaccurate GRBL 1.1 on Arduino

TLDR; I’ve read, watched and spent countless hours calibrating, tweaking, upgrading, updating and learning GCode, trying different software, etc. I have a pretty good setup going, the machine is 100% calibrated and I’ve got some decent cuts, but I’m cutting speaker faces that have to be perfectly centered (down to the mm). I would assume this is possible with this machine, but zeroing sometimes is off by .5-1mm in either direction. I’m wondering if anyone has had this issue or if there’s any tips I should know of how to accurately zero my machine.

Machine Info:
What I have is a late 1000mm 2015 x-carve, which seems to be somewhat of a weird in between setup. It came with the Nema 27s, but had the Arduino controller, didn’t have the auto homing or the single piece Y axis. I’ve since update the ardunio to GRBL 1.1, installed the wiring for the homing (zeroing) and upgraded the Y axis, among the other axis with the “cnc4newbies” X axis (same size) and L plates on the Y axis. I’ve also designed a custom square probe holder for work zeroing to make it as accurate as possible (image attached).

Calibration Info:
I’ve re-tightened all of the belts, go through and reset $100 and $101 to make the machine jog to exact mm at a 450mm scale. I’ve also made sure everything is 100% square by taking the machine apart and meticulously putting it back together as well as run test carves to make sure that’s good.

My Theory:
When it’s auto zeroing I’ve noticed that the machine keeps going for 500ms or so after it touches the round “z-probe”. The z-axis is mostly spot-on, but the X and Y is where I usually have the issue. I’ve even turned the zeroing speed down to 50% of what I saw was recommended, which makes it pretty slow (I’ll post the code below). I have to theories I guess why this is happening. 1.) The arduino is too slow to respond 2.) There’s interference or something that’s causing it not to see that the probe touched right away.

I’m going to try turning down the speed again. I also thought of zeroing multiple times and comparing the delta between the machine zero to see what the numbers are. I’m just curious if anyone else has had this issue or seen this? Any help is appreciated, sorry I tried to do as much research before posting.

X GCode:
G0 Z1; #Go to Z-1mm for horizontal zeroing
G91 G21 G38.3 F50 X-20;
G10 P1 L20 X1.588;
G0 X15; #Go to 15mm after zeroing

Y GCode
G91 G21 G38.3 F50 Y-20;
G10 P1 L20 Y1.588;
G0 Z40; #Go to Z-40mm for adding dust shield back on

Ok before I lead anyone on a wild goose chase, I think I have everything figured out for the most part.

  • I slowed the feed rate to 25 from the 50 posted initially.
  • After that I tested the delta between the work location and the machine location like I said I would and it did actually fluctuate, but very minimally. Roughly .050mm which is hardly worth worrying about.
  • While I did that I noticed that the physical location actually was spot-on every time, since in my GCode I move it 20mm after zeroing, which is actually the most important. Either that or my naked eye can’t see a .05mm difference which is the point.
  • I then did some more tests and noticed that X axis was off by .01% which adds up in the long run. So I re-calibrated the X again and did a test carve and for the most part it’s spot-on.

What I’m noticing now is that my carving is very close to 1mm smaller than my design. I’m using Fusion360 for all of the GCode, and I’m doing a roughing cut using 2D Adaptive and then a final pass on the outline with a 2D Contour while telling it to not leave any material. This is actually what lead me down the initial path, because I thought my machine wasn’t calibrated, then noticed things were off centered.

If for whatever reason someone makes all the way through this insanity of a thread I made and knows the answer to this it would be great to hear from you. Otherwise, it’s back to google/search tool on this site.


Have you machined a test sample using Easel only?
This will rule out any possibility of something is “lost in translation” or is incorrectly defined in Fusion360.

For calibration, always measure over the longest possible travel for that axis, to minimize the backlash factor.

I don’t have any answers to your questions, but I’ve been looking for something like your probe plate holder - would you be willing to share the model?

Maybe I lied and do have an idea on your issue - are you accounting for the bit width when zeroing in X and Y? Z is independent of the bit diameter, I believe.

1 Like