Auto squaring and end stops

I think I'm ready to try this endstop thing. I am seeing the need for a "home" and the ability to use offsets. I think I know what I need to get and the general idea of how to use this feature. It would be awesome if there was a specific page or post on adding this feature to an existing MPCNC and how to use it. For example

1) What additional parts and supplies do I need to buy/print to add this feature.
  1. There is going to be a lot of wiring, is there a good source/link for the small connectors that plug onto the board for the end stops? Also what wire gauge is general good to use? What’s a good general routing method?

  2. It has been mentioned that a person might as well add min and max end stops. Which end stop on the Z axis is min and which one is max? One will obviously be the touch plate. Same style printed end stop holder on the Z?

  3. How do you properly set the location of the endstop holders?

  4. After getting all the endstops installed and the wiring done, what are the steps on the software side to use this function. Home all on LCD? What G code commands are used? Can you home X and Y then home the Z when the spindle is over the workpiece?

  5. How do you set up work offsets. Is there a good info page/link on this? What commands and how are they used? How do I set the location of my offsets?

  6. What would be the general method for a part flip?

8)Can you use the machine like we typically do without doing any homing?


I know the answer to some of these questions and the “foggy” answer to the rest. I know I can research everything out, but i think it would be great if there was a step by step of some sort available. Maybe those with some experience could answer some of these clearly? I think this feature if nailed down, with clear instructions, will really be a awesome upgrade for people that want to step into the advanced features of bigger more expensive machines. It would be great for production stuff. I could set up a offset location with a simple corner fixture for a piece. Push it into the corner, clamp it down and go to town. Turn the machine off come back the next day, swap in a new piece and do it all over again with very little setup between pieces, and dead accurate every time. Looking forward to the input.




I’m kinda of holding off on a full explanation page. I would prefer to get this into Marlin first, or know that it isn’t getting into marlin. I am not sure what will and won’t change. As for the rest of the instructions there are many ways to do all this stuff. I will try to get up something basic but instructions are not my strong suit. But after I find out about Marlin, maintaining it is taking a lot of work for me as I am not the proficient with Coding and git. Each update they make I have to integrate into 3 different builds and test, if there is a conflict it gets sketchy. For now this is beta, and using these features bring all cuts into an intermediate to advance level of difficulty, in trade it also brings the final products dimensions up with it and allows for some complicated CAM procedures.

1)4 end stops and some endstop plugs.

2)Not sure, I have a source for wires, I will try and get some shipped ASAP. Routing, Not sure yet I am still stuck more on the software side.

3)No Min and Max with this, it uses all the endstop ports for MINs.

4)trial and error, get them as close as you possibly can and then you can fin tune it with firmware offsets. Firmware will need to be flashed if you can’t get the end stops just right.

5)Same as always, home all, home 1, no new gcode other than M666 for the offset trial and error.

6)In CAM. the origin in CAM is the machine"home" move you material away form the origin and you are created offsets.

7)Drill 2 holes, use dowels, or a fixture. This is advanced but there are plenty of videos.



1 Like

I thought you might say that, and I understand completely…in videos I’ve seen with people using Mach they can save various offsets into the program as a button. They can fixture a piece over an over again, send to “offset 1” and that sets the spindle over the same zero every time. I guess in our case it would be a simple coordinates command manually added to the g code or saved as a separate settings file for estlcam added to the program start code. Home the machine send to x and y location then home at the new location? This would be insanely useful for me. Where in the firmware do you set the offsets for the endstop locations? I guess they would initially be set up using one of the square checkers or by simply measuring squareness?

I’m not clear on what you are asking.

A fixture would be at a set location that you either set in your CAM ahead of time, or for some odd reason yes you could jog over too it.

Offsets are clearly labeled in config_adv, you can check squareness in a few ways. Roughly by measuring a roller to a corner, then plot a square and measure diagonals. This is a whole new level of accuracy that will also depend on your machines frame as well. Be careful not to chase too many decimal places.

Sorry I didn’t explain myself better. I found the particular video I was talking about. The video will clear it up.

This is what I mean by fixturing and using the offset…say it was a cabinet door, and I had the machine set up with a fixture to accept a dimensional piece of mdf at the exact same location over and over again. The machine would home to absolute zero. It would jog to the offset coordinates that I have set up. That happens to be the corner of my dimensional piece of mdf. Set the new home in this location with a g92. This new home is obviously the zero location set up in CAM and off it goes. This could all be coded in the g code file and you wouldnt have to do anything but drop in the dimensional piece of mdf and hit run. You could then easily flip the dimensional piece and drill holes on the backside or whatever and be exactly at the right location because the zero remains identical every single time. It would eliminate any guess work and no manually aligning the zero location. Hope that all makes sense.


He is doing “manually” what I would do in CAM.

He moves to a set of pre-programmed coordinates then runs a program. That is how you would do it if you were manually milling, if you had a set of blueprints you would fixture your part, move the mill, zero it out then follow the specs.

I would just do that in CAM, move the origin. Same thing except you can’t forget to move it if it is programmed in.

You might want to stay away from Mach3 videos it is a older different way of doing things, not that they are wrong but it is not made for our machine.

All the same things can be achieved with one more step in CAM, one less step every single time you mount a part.

I do and have done a lot of manual milling. I spent all day at the mill today. I guess that’s why it seems to have clicked with me. Your saying you would basically just set the origin in the CAM at x amount away on X and x amount away on Y from you workpiece, instead of resetting zero after going to a set location. That makes sense. Thanks for clarifying. Am I allowed to be stubborn and set in my old ways and prefer the other way? Lol…it really is hard sometimes to not think like a machinest when doing this stuff. I am realizing though that the two have very little in common.



This is all new for all of us. We have not had the ability to accurately home until now.

I have not had much time to spend with it to find a way I think is “best”. If you like the way he does it it is very possible to do. We have the 5 script buttons in repetier host you can set to whatever you want or just save a small gcode to your sd card, like his 5 buttons. Pretty sure we are on the same page now. You are one of very few running it so we will be working out the kinks and workflow together I think.

I have been banging my head with the 2.0 version of the dual firmware, so I have been actually avoiding using it for now as it is a source of some serious frustration. Lots of bugs in 2.0 and the dual firmware actually isn’t one of them!

1 Like

Ill just add that on the first point that we also need two drivers along with four end stops, end stop wiring and plugs, and four end stop holders. I’m gathering this stuff now. Found this basic wiring kit Link after some looking. Should do everything i need with very little extra wiring effort.

There are many ways to do all of these. On my machine, there were some simple parts that would let you pull the mpcnc up to the corner before you started the motors. Then the machine would be as square as the rails. Then you would do your offset stuff (either cam out g92). Or just move to your start position with xyz moves.

The dual endstops thing is awesome, but it’s big benefit (IMHO) is using one driver per motor, and doing that in a way that stays square. Then it’s the miniature square adjustments M666 gives you. Actually, my favorite benefit is that it’s cool.

Making instructions before this gets settled would be a pain. If something gets changed, then the instructions would be out of date. Plus, it is not a beginner thing, and instructions will convince beginners to do it. Possibly before doing any milling :frowning: .


Do i need to set the drivers to a lower voltage since they will now only be driving one motor each?




Nope. We use series wiring for two steppers, so the current is the same as it is for one.

Ok perfect…are the extra drivers you sell separate from the kit preset to the proper voltage? I’m assuming not and that I will need to set them since they look like they are still in the factory sealed package?

Correct, they have to be set when you get them.

Still working on the 2.0 code, with professor Heffe’s help. I really hope it is close.

1 Like

I’m assuming also that I’ll be using the three jumpers under the two additional drivers?



Yes, or whatever step rate you want.

1 Like

Ok great thanks again Ryan

It appears if I wire the end stops up like in your picture they will be normally closed. Meaning when the machine hits them the contact becomes open. Is this right? I’m asking because I know a z touch plate is open and when the bit contacts the plate it becomes closed.




Yes NC, also correct on the Z.


Man your fast! Thanks