Zeroing x,y,z axis mod

I was browsing through youtube for cnc mods and i came a cross to a usb microscope mod, you mount a usb microscope to the spindle mount, adjust it to be as accurate as possible and zero the machine with the microscope instead of just eye- balling it. Also he soldered a wire to a copper plate and used that with the +5 volts from an arduino and used conductivity to zero the z axis and programmed it to remove the thickness of the copper plate so the machine will know exactly where the top of the material is. So i guess my question is what mods have everyone come up with to further improve the performance and accuracy of your cnc machines. I will definitely be doing the usb microscope mod, what are your thoughts and what are your ideas for different mods.

The microscope and copper plate mod blog:


That’s interesting… The X-Carve will be my first CNC. So I’m trying to learn as much as I can. Never thought the zero would be that critical, unless you’re coming back at a later time to make more cuts.

Wouldn’t a laser pointer mounted to the spindle serve the same purpose? Could be a little less costly.

Is there a way to set a constant home? And apply an x,y or z offset though g-code?

I just got done making a similar mod to my ShapeOko 2.

I posted a wright up here: [Zeroing a CNC with a USB Microscope ][1]

So far, I’m very happy with it.

Note: I’m using LinuxCNC instead of GRBL to control my machine.


Dang, now that is really cool. I’m definitely going to have to look into this one, even with the limit switches, that’s a cool capability.

On the shark piranha that I am trying to sell( to buy an x-carve of course) , the touch plate accessory uses continuity to determine z-zero. the control pendant has an app that you run to set the zero.It’s a totally automatic operation once you tell it to run and then you can accept the settings, try again or abort. The touch plate is .375" thick and this is accounted for when zero is set.

The G-shield on the X-Carve also supports the touch-plate method of zeroing, I believe. :smiley:


There are two great ways to do this accurately without using optics. The first uses a tool called an edgefinder. You mount it in the spindle and turn it on. The tip is mounted on a spring inside the tool. When the tip touches the workpiece, it moves off-center of the spindle axis. As you move the spindle more toward the edge of the workpiece, the tip will become concentric with the edgefinder body when the tip of the edgefinder is exactly half it’s diameter from the center of the spindle. You then move the Z axis up to clear the workpiece, move over half of the edgefinder diameter (usually move .1 inch) and you are now over the edge where you set your axis zero. You do this for both the X and Y, then you know where your startpoint is.

The other method involves mounting a machined metal bushing on your sacrificial board. You use a dial-test indicator mounted in the spindle to indicate the hole of the bushing and this centers the spindle over the bushing hole. You then set X and Y zero to that point which will also be the programmed zero point inside your CAM software. Of course you will have to have some method of accurately locating your part on the machine like two pins in a line and a third on the edge for a square piece of stock. Other methods work for round or odd-shaped workpieces.

I’ve been operating and programming CNC machines for 30 years. These are both standard machine shop practices.


I just today changed a PC over to Linux and LinuxCNC for future us on an X-Carve to be ordered at a later date. How are you liking LinuxCNC. I would be interested in your config setting when I get to that point.
Also have you made any changes to you UI.


Hey what’s your setup between the LinuxCNC and the machine? Are you using different drivers/motors/controller board?
Could you share your setup and configuration settings?

I just ordered a 3rd stepper driver for my breakout board once I realized the included NEMA 23 motors were only 140 ounce and I’ve got 3 x 270 ounce I can use to drive the X/Y.


Caleb and I both missed this post. LinuxCNC talks to the machine controller via the parallel port or a Mesa card that replaces the parallel port. I will be using a Gecko G540 4 axis controller with axis 1 and 4 slaved together for the Y axis in the standard configuration or in my case the X axis that will be the longer 1800 axis on my machine.
I do my part designs in alibre/Geomagic, Draft sight, or Onshape. I use SprutCAM 9 or CamBam for generating tool paths and Gcode using LinuxCNC post processors.

I did not order any of the electronics for my machine with the exception of the power supply.

Hope this answers your question.


Yep - I’ve been using it with an old PC to run a lathe. Before that I tried Mach3 on the same machine but with windows XP. You’re using different motors and drivers, but I’d still be interested in whatever numbers you settle on for max velocity and acceleration.