MPCNC, Arduino Uno, CNC Shield and homing

Hello Everyone,

Im totally new to the world of CNC machines, always wanted one, always too cheap, found the MPCNC… ya know it :slight_smile:

Now I basically have the machine mostly ready, the frame is set up, axis are moving nicely, etc… but Im really struggling to set up a homing position however. My plan was to use the Arduino Uno and a CNC Shield V3, which generally works great so far.

Looking from the front at the machine, I want it to home top left, so that should be X- and Y+ right?
Thats how I connected the limit switches I want to use for homing, I dont care about endstops really.

I went an edited the GRBL config.h to exclude Z homing because I later want to use a Z probe, and also set the homing position to $23=1, according to the GRBL docs.
I also disabled Hard limits in GRBL with $21=0.

Now the Axis themself move into the right direction, I think, X+ moves to the right, X- moves to the left, Y+ moves to the back, Y- moves to the front when I stand infront the machine.
But when I hit the home button in CNCJS it moves into the very other directions looking for a homing/limit switch…

At this point Im kinda lost and have no idea what I missed in the configuration…

I hope someone can help me here :slight_smile:

thank you and stay safe everyone :slight_smile:

I feel like you’re going to have trouble using top-left as your home position.

You have X+ right and Y+ away (which both match the standard convention :+1: ) but I think that makes bottom-left the logical choice for your home position.

1 Like

You may also want to consider parking vs homing.

The Uno only has 3 drivers so you need to start with hard stops to square first ?

@merrittgene Could you explain why Im going to have trouble with top left as my home position?
I choose that because of how the Z-AXIS is set up, like in that image (not my machine).

@ttraband I might be stupid but I cant find parking really in the docs for GRBL… whats the difference between parking and homing?

@timonjkl Im not really sure what you mean, I can connect 4 motors individually, to be exact I have X and Y axis on one motor driver each, and the Z axis on a separate one, then there is one left Im not using on the CNC Shield, + the CNC shield does have Xmin, Xmax, Ymin, Ymax, Zmin and Zmax connectors. But I am not really interested in having max endstops/ having endstops in general when I can get homing to work.

Sorry for the double post, but new user limits contain I can only mention 2 users/post :slight_smile:

Generally, I tested having endstops and that would work, the machine stops right when it touches the switch, but then I need to go and drive it into a certain position again after resetting and unlocking it… and I feel like if I do not duck up the initial setup of a project, then it will be no problem as I will not drive into my own axis ends… hence why I would like to only use homing :slight_smile:

“Home” is where the machine coordinate system is 0,0,0. So, if 0,0 is upper left, then all of your Y positions will be negative.

I only suggest that it will be confusing because almost everyone uses lower left for home (and lower left for their CAD designs) and your setup will be different.

You can choose to “park” your tool in the upper left position, but keep lower left as your 0,0…that’s just a preference.

In the even more strict sense, (and probably only applies to dual-endstop setups) if you use the HOME function on your controller, it will drive in the negative X direction until the the X endstop switch engages, and then drive in the negative Y direction until the Y endstop switch engages…which is away from your upper left position.

BTW, my MPCNC looks exactly like the picture and my Home position is lower left. I just push the axes out of the way to load material, and pull it close for tool changes, etc.

@merrittgene Ah yes I hear you, that possible confusion makes sense, but I still dont think that would matter to me, as long as I set it up once and then stick to it :slight_smile:

However, that still doesnt solve my problem with setting up GRBL… or I dont get it, because I would like to only connect 2 limit switches, to get the home position, and not more. So how exactly would I set it up to move into the right direction, right now it tries to home to the right side for X (X+) and the bottom for Y (-), searching for a switch, and then fails after a maybe 30mm or so with “Alarm 8, home failed” (or something along those lines).

I think what he meant was you wouldn’t be “homing” in the sense we usually use around here, which includes auto-squaring the axis, but a simple parking maneuver to get the tool to 0,0 in the X,Y plane.

The general consensus is that, aside from auto-squaring the axis, putting endstops on the machine is not terribly helpful. They aren’t used during cutting moves, and by the time you might want to send the tool “home”, it already knows where home is; there’s no reason for endstops to tell it when to stop.

Unless you have a rig that supports dual drivers on the axis, using endstops isn’t that useful, and could give you a false sense of security that your setup is square or actually at zero. (Heck, even with the full setup, if your stops get out of whack, you go out of square.)

IMO, and it is mine, and it is an opinion, skip the endstops altogether for now. Do it by hand. It’s not that onerous a task, just don’t go racing the gantry around the rails, generating backfed voltage. Of course, it’s your machine to do with as you please.


Just to clarify, when you use the Home command, it moves to the right? You said X+ was to the right, and it should be moving left (X-).

Yes, exactly @merrittgene

If my machine did that, I would say that my X stepper was wired backwards.

More clarification…have you confirmed that X+ commands move to the right, Y+ move away, and Z+ moves up?

1 Like

The Uno GRBL can only control 3 axis at a time the 4 is mirrored to usually x that is GRBL limitation. If us use a Mega or similar ther is GRBL x5 that will control 5 axis on a ramps and dule endstops will work then to square your machine.

IF the is your reason for doing this

It’s not. Keep up, Tim… :wink:

1 Like

Sorry I don’t see the reason to do it then? Sorry

@merrittgene Yes thats what I would be thinking, it would be a flipped motors connection… but oddly when I move the axis “by hand” in CNCJS, so just moving it X+ or anything, it does move into the right direction :thinking:
And as said in the beginning post, I set the homing position to $23=1, which according to the docs, is X- Y+ Z+.

@kvcummins I mean you are not wrong, there is hardly any benefit to homing/parking whatever on a CNC machine I guess, and I would not be using max endstops anyway. But still, homing would be nice to have one place to put workpieces at a position and start, also I do have the switches prepared for it :smiley:

And @ Tim W, I am only using a Uno and a CNC Shield V3 so X and Y axis are both motors on one driver :slight_smile:

Maybe I should forget about using switches altogether yes… but then again it can’t be that hard to get it going correctly, surely I am missing some simple config setting…

What are you using to send gcode UGS has s setup wizard that my help

Im using CNCjs on and old ubuntu notebook, plan is to have the cnc program made by Fusion or Estlcam inside the house, save it on an sd card and have it run by CNCjs @timonjkl

1 Like