Software Stops

I have a primo controlled by a rambo 1.4. The machine is working great. I have the dual end stop feature. Is there any way I can set the size of the machine in the firmware so that I can’t crash the machine if I try to move it beyond its physical size?

There are “soft stops” in the firmware.

  1. You can change the bed size, but only in the configuration.h, so you have to recompile.
  2. We usually use G92 and only one coordinate frame. I am sure that will not work with soft stops.
  3. It may be possible to use machine and workspace coordinates (G54) and limit the machine coordinates, but still work in workspace. This is a pretty little used feature. So YMMV.

If you get it working, let us know. Maybe one day, with this, and the bed size set by gcode/eeprom, we could have this in our default configs.

1 Like

Setting up soft stops and bed size requires you to modify values in configuration.h, recompile, and reflash the firmware.

The bed size is set here:

// The size of the printable area
#define X_BED_SIZE 1220 // 200
#define Y_BED_SIZE 2440 // 200

The soft stops are enabled in this section:

// Max software endstops constrain movement within maximum coordinate bounds
//#define MAX_SOFTWARE_ENDSTOPS
#if ENABLED(MAX_SOFTWARE_ENDSTOPS)
  #define MAX_SOFTWARE_ENDSTOP_X
  #define MAX_SOFTWARE_ENDSTOP_Y
  #define MAX_SOFTWARE_ENDSTOP_Z
  #define MAX_SOFTWARE_ENDSTOP_I
  #define MAX_SOFTWARE_ENDSTOP_J
  #define MAX_SOFTWARE_ENDSTOP_K
  #define MAX_SOFTWARE_ENDSTOP_U
  #define MAX_SOFTWARE_ENDSTOP_V
  #define MAX_SOFTWARE_ENDSTOP_W
#endif

These values will only be used after you have homed the machine, and before you execute a G92 in machine space.

As indicated by Jeff, you might be able to have soft stops working during your jobs by using workspaces coordinates. If you want to go down the workspace rabbit hole, let me know, and I can point you at some forum topics.

Be very careful with soft stops, they generally prevent you from going to negative X and Y. Estlcam likes to set the lower left corner as the 0, 0 point, and the problem is that in order to cut that, it has to go 1/2 the tool diameter into negative X and Y.

The other problem is that it will stop the high side 1220/2440mm from the zero point you set with G92, and not the end stops unless you enable work coordinates as well.

I use soft stops with RepRap firmware, and set work coordinates, so I do not use G92 in my gcode. This means that I don’t run my machine into hard limits.

The other problem is that it will stop the high side 1220/2440mm from the zero point you set with G92, and not the end stops unless you enable work coordinates as well.

On Marlin, if a G92 is executed in machine space, the machine no longer considers itself homed and therefore ignores soft stops…both min and max.