# How to set a new homing position using software and/or slicer without changing hardware end-stop?

Before the question, here is my setup;

• Prusa i3 (with mainboard Mks Gen v1.2)
• Repetier as slicer
• Marlin source code

My main task is to convert my 3D printer into a chocolate printer. I have replaced the filament extruder with a chocolate extruder. And it is there that my issue began. Because, the new extruder is stopping slightly off the y-axis when homing. It is going out of the standard 20x20 cm bed. The other X and Z axes are OK.

So, I have played with the #defines explained below, but I couldn't even make any single mm difference by homing. They are all ignored when the printer is homing. It goes and rests on the hardware end-stops and stops there eventually.

All I want 10 mm offset for Y axis.

Started with this;

// Travel limits after homing
#define X_MAX_POS 200
#define X_MIN_POS 0
#define Y_MAX_POS 190  <<<< (tested with 190 and 210)
#define Y_MIN_POS 0
#define Z_MAX_POS 200
#define Z_MIN_POS 0


and this;

// The position of the homing switches
#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used

//Manual homing switch locations:
// For deltabots this means top and center of the cartesian print volume.
#define MANUAL_X_HOME_POS 0
#define MANUAL_Y_HOME_POS 10 <<< (tested with 10 or -10)
#define MANUAL_Z_HOME_POS 0


I have also played with the slicer tool (Repetier) settings where homing related values are mentioned but no joy there as well.

Any input highly appreciated.

The Y-Max setting does not help, because it is the software end stop for the other end of the axis.

The Y Home position also doesn't help as it only changes the coordinate that the printer assumes for when it hits the home position. That is used for printers (like deltas) that home to the max end switches.

What could help is a little bit of G-Code right after the Homing. The Homing is a G28. Just add a G1Y10 after that. That will move your Y Axis 10 mm right after homing. So it will then be in the position that you want. If you then add a G92 then this position will become the home position for the print. So adding these two lines should fix it. Cura lets you edit these start G-Codes so that it then will automatically add the modified codes to all your prints.

You can also try a G10 (with a firmware that supports it.

For Details on G-Codes see: http://reprap.org/wiki/Gcode

• At the end, this was also my conclusion. I mean, software end stop is not really what I wanted. But, i didn't really check which G-Code can do this for me. Now, I know. – Sener Jul 6 '16 at 9:34
• I am thinking to reinstall the hardware end stop in order to home as I wanted. Although, I haven't played that much with G-Codes so far. It is also looking promising as a solution. But, What I understand from your explanation, the G-Code correction to the Y homing position is only handled when you start printing not when you powered up or reset the printer. It will still go outside of the boundaries. if this happens, some liquid chocolate drops might still fall out the perimeter. Right? – Sener Jul 6 '16 at 9:45
• Exactly the homing process will still move to the homing position defined by the hardware end stops. The G-Codes then fix that, but on every move it will move to the critical position and then back again. – Lars Pötter Jul 7 '16 at 16:26
• Thanks a lot Lars and Kamuro. This solution is definitely saved my day. But, I guess, It would better do either reinstall the Y end-stop or enlarge the bed 10 mm more on all edges. – Sener Jul 8 '16 at 7:56

Now I've finally had time to look into this, since I knew it somehow existed, but wasn't sure how it worked:

Use the M206 G-code command in Marlin, Sprinter, Smoothie, or RepRap Firmware to offset the 0,0,0 coordinate of your printbed relative to the endstops.

The reprap.org wiki page says:

The values specified are added to the endstop position when the axes are referenced. The same can be achieved with a G92 right after homing (G28, G161).

With Marlin firmware, this value can be saved to EEPROM using the M500 command.

A similar command is G10, aligning these two is subject to discussion.

With Marlin 1.0.0 RC2 a negative value for z lifts(!) your printhead.

We see, this basically is the same suggested by @LarsPoetter, but it comes with the great advantage that it can be saved to EEPROM, hence you don't need to add it every time or into every different sliccer (if I understand it correctly, - I haven't yet tried it myself)

Let us know if this works for a permanent solution.

• I am away from my setup recently but, I will definitely try saving that G-Codes in the EEPROM and see how it helps. I will then share my experience here for sure. – Sener Jul 6 '16 at 21:06
• Thanks a lot @Kamuro. It works OK. If the case is end-stops with Marlin, re-installing end-stops is the best option I believe. – Sener Jul 8 '16 at 8:00