1. About
  2. Features
  3. Explore

I had a Z probe installed but the wires came out of the header so I am trying to use software endstops, but any time I G28 the nozzle will always ram into the bed. I am using Marlin Firmware. Which I am relatively new with. I'm used to having hardware endstops, but,

I don't have a hardware endstop currently (no probe/no switch).

  • Is it possible to do this with software?

  • I took out G28/G29 in my G-code and it shows that it is going to z0.2 and working upward (but it still hits the bed). If the bed is level do I need a G28?

  • Should Z probe offset be 0?

 #define USE_XMIN_PLUG #define USE_YMIN_PLUG #define USE_ZMIN_PLUG //#define USE_XMAX_PLUG //#define USE_YMAX_PLUG //#define USE_ZMAX_PLUG #if DISABLED(ENDSTOPPULLUPS) // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined //#define ENDSTOPPULLUP_XMAX //#define ENDSTOPPULLUP_YMAX //#define ENDSTOPPULLUP_ZMAX //#define ENDSTOPPULLUP_XMIN //#define ENDSTOPPULLUP_YMIN //#define ENDSTOPPULLUP_ZMIN //#define ENDSTOPPULLUP_ZMIN_PROBE #endif #define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. #define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. #define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. #define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Z_MIN_PROBE_ENDSTOP_INVERTING true // set to true to invert the logic of the probe. // Enable this feature if all enabled endstop pins are interrupt-capable. // This will remove the need to poll the interrupt pins, saving many CPU cycles. #define ENDSTOP_INTERRUPTS_FEATURE #define PROBE_MANUALLY #define X_PROBE_OFFSET_FROM_EXTRUDER 1 // X offset: -left +right [of the nozzle] #define Y_PROBE_OFFSET_FROM_EXTRUDER -55 // Y offset: -front +behind [the nozzle] #define Z_PROBE_OFFSET_FROM_EXTRUDER -3.4 #define MULTIPLE_PROBING 2 #define Z_CLEARANCE_DEPLOY_PROBE 0 // Z Clearance for Deploy/Stow #define Z_CLEARANCE_BETWEEN_PROBES 3 // Z Clearance between probe points // For M851 give a range for adjusting the Z probe offset #define Z_PROBE_OFFSET_RANGE_MIN -20 #define Z_PROBE_OFFSET_RANGE_MAX 20 #define INVERT_Z_DIR true #define Z_MIN_POS 0 #if ENABLED(MIN_SOFTWARE_ENDSTOPS) //#define MIN_SOFTWARE_ENDSTOP_X //#define MIN_SOFTWARE_ENDSTOP_Y #define MIN_SOFTWARE_ENDSTOP_Z #endif #define AUTO_BED_LEVELING_BILINEAR #define MANUAL_Z_HOME_POS 0 #define Z_SAFE_HOMING #if ENABLED(Z_SAFE_HOMING) #define Z_SAFE_HOMING_X_POINT ((X_BED_SIZE) / 2) // X point for Z homing when homing all axes (G28). #define Z_SAFE_HOMING_Y_POINT ((Y_BED_SIZE) / 2) // Y point for Z homing when homing all axes (G28). #endif 

1 Answer 1

There is no such thing as a software endstop for the 3D printer. When you power a printer the print head can be located at every X, Y, Z position (usually, Z is at the print height of your last print, X is at the minimum X, and Y is at an arbitrary location determined by the last print).

This is exactly why we need endstops, either mechanical, optical or electronic (inductive or capacitive) end stop switches or sensors. You instruct the printer to home by using a known fixed location of the printer; this is the hitting of all endstops. The origin of the printer may have offsets, as the origin of the printer may not coincide with the endstop location. For the Anet A6 this is a few millimeters, e.g. for Marlin firmware this is defined in the configuration by:

 #define X_MIN_POS -3 #define Y_MIN_POS -5 

The answer to your question: "Is it possible to do this with software?" is therefore, no, you cannot do this solely with software.