BL Touch Sensor Positioning and Parameters in Marlin

In this article we will explain some Marlin configuration parameters that you need to set when you add a BL Touch or its clones like 3D Touch. This may apply to some other sensors as well.

Probe positioning is defined in the Marlin configuration (in configuration.h) as:

*      +-- BACK ---+
 *      |           |
 *    L |    (+) P  | R -- probe (20,20)
 *    E |           | I
 *    F | (-) N (+) | G -- nozzle (10,10)
 *    T |           | H
 *      |    (-)    | T
 *      |           |
 *      O-- FRONT --+
 *    (0,0)

N is extruder nozzle and P is sensor probe.

This implies that your sensor is located on the back-right when facing the machine and need to have the following parameters set:

#define X_PROBE_OFFSET_FROM_EXTRUDER 0   // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0   // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]

Lets explain these parameters with an example. If you mount the BL Touch sensor behind (+) and right (+) of the nozzle as following we need to measure the distance.

In above picture we measure the distance +20mm in X and +30mm in Y. Then lets set these values to configuration constants. 

#define X_PROBE_OFFSET_FROM_EXTRUDER 20   // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 30   // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0    // Z offset: -below +above  [the nozzle]

In order to calculate the correct limits of travel for the BL Touch sensor, we need to subtract the offset values from the bed size at the max limits.

As the BL sensor is off-center with respect to your nozzle, one can only assume that we have no extra space to move the whole extruder and therefore need to confine the extruder within the limits of the max/min bed size.

There should be some extra space, this can be seen from the offsets for the origin as in values for X_MIN_POS and Y_MIN_POS, but for the sake of simplicity these will not be taken into account.

Basically, positive Y and positive X offset result in the following picture. 

An additional offset may be required for some sensors, so please add an additional offset in the configuration by defining:

#define MIN_PROBE_EDGE <t value>

Bed limits for the sensor then will need to be calculated based on the values of your offset of the sensor. E.g. when your nozzle is at (X=0, Y-0), or (0, 0), your sensor is at (20, 30). If you don’t want to move the extruder further left and forward (to respect to origin as limit!), this is the minimum position of the sensor. When the sensor is at the back-right position of (220, 220), the actual head is at (220-20=20, 220-30=190).

This means that the limits for the sensor without a minimum offset are (20, 30) and (220, 220):

#define LEFT_PROBE_BED_POSITION (X_PROBE_OFFSET_FROM_EXTRUDER + MIN_PROBE_EDGE)
#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE - MIN_PROBE_EDGE)
#define FRONT_PROBE_BED_POSITION (Y_PROBE_OFFSET_FROM_EXTRUDER + MIN_PROBE_EDGE)
#define BACK_PROBE_BED_POSITION (Y_BED_SIZE - MIN_PROBE_EDGE)

would translate with a MIN_PROBE_EDGE = 0 to:

#define LEFT_PROBE_BED_POSITION 20
#define RIGHT_PROBE_BED_POSITION 220 
#define FRONT_PROBE_BED_POSITION 30
#define BACK_PROBE_BED_POSITION 220

Too bad you broke the acrylic plate (nice temporary fix though), but you can easily print a replacement part once your machine is up and running.

In order to calculate the correct limits of travel for the sensor, you need to subtract the offset values from the bed size at the max limits.

An additional offset may be required for some sensors, so please add an additional offset in the configuration by defining:

#define MIN_PROBE_EDGE 10

As the sensor is off-center with respect to your nozzle, one can only assume that you have no extra space to move the whole printhead and therefore need to confine the head within the limits of the max/min bed size (there should be some extra space, this can be seen from the offsets for the origin as in values for X_MIN_POS and Y_MIN_POS, but for the sake of simplicity these will not be taken into account).

Basically, your positive Y and positive X offset result in the following schematic. 

Or, if you include the #define MIN_PROBE_EDGE <value>

Bed limits for the sensor then will need to be calculated based on the values of your offset of the sensor. E.g. when your nozzle is at (X=0, Y-0), or (0, 0), your sensor is at (20, 30). If you don’t want to move the head further left and forward (to respect to origin as limit!), this is the minimum position of the sensor. When the sensor is at the back-right position of (220, 220), the actual head is at (220-20=200, 220-30=190).

This means that the limits for the sensor without a minimum offset are (20, 30) and (220, 220):

#define LEFT_PROBE_BED_POSITION (X_PROBE_OFFSET_FROM_EXTRUDER + MIN_PROBE_EDGE)
#define RIGHT_PROBE_BED_POSITION (X_BED_SIZE - MIN_PROBE_EDGE)
#define FRONT_PROBE_BED_POSITION (Y_PROBE_OFFSET_FROM_EXTRUDER + MIN_PROBE_EDGE)
#define BACK_PROBE_BED_POSITION (Y_BED_SIZE - MIN_PROBE_EDGE)

If you set value in MIN_PROBE_EDGE = 0 then config values should set:

#define LEFT_PROBE_BED_POSITION 20
#define RIGHT_PROBE_BED_POSITION 220 
#define FRONT_PROBE_BED_POSITION 30
#define BACK_PROBE_BED_POSITION 220

If you set value in MIN_PROBE_EDGE = 10 then config values should set:

#define LEFT_PROBE_BED_POSITION 30
#define RIGHT_PROBE_BED_POSITION 210 
#define FRONT_PROBE_BED_POSITION 40
#define BACK_PROBE_BED_POSITION 210

If you want to be the first to know about 3D articles, join my Facebook group


Source: https://3dprinting.stackexchange.com