Ender 5 S1 - Bed-Mesh: Nozzle crashing into bed

Basic Information:

Printer Model: Ender 5 S1 (Without Z Limit Switch)
MCU / Printerboard: RPI Zero 2 W
klippy.log (3.4 MB)

Hi all,

i have just setup my Ender 5 S1 with Klipper and adjusted the
printer.cfg (6.1 KB).

After a manual Bed-Leveling, i wanted to level bed with the auto leveling.
But now the second time when i click ob calibrate (directly in fluidd or via macro) the nozzle crashes into the bed and stops after the bed gets pressed down 2 cm at that point.
I think the printer is still ok but do you guys can help me with the settings i need for auto bed mesh calibration?

BR

Daniel

If that’s the most recent printer.cfg you’ve posted here, it looks like you didn’t enter SAVE_CONFG into the console when the calibrate was complete (You should have gotten a message telling you to do that).

Hi,

i cant enter save_config, when there is nothing to save.
After I start the calibration, the Print head crashes into the Bed. After the first probe, my bed is pushed down ca. 2 cm and the calibration stops.

I’m wondering why this happens.

Rereading what you’ve wrote.

Could you explicitly explain what you’ve done here? I’m not sure what you mean by a “manual Bed-Leveling” - could you please explain?

A few other things:

  1. Is this a genuine BL Touch or from another manufacturer?
  2. Before trying to the calibration with the BL Touch, did you test the operation of the BL Touch by following the instructions found here:

https://www.klipper3d.org/BLTouch.html#initial-tests

  1. In your printer.cfg, you have the coordinates for your BL Touch 45mm away from the nozzle. Is this correct? I’m asking because that’s a pretty good distance - I don’t think that is the problem here but I’m curious.

You always can enter save_config - even on a freshly started system.

To the mesh min/max values. Better leave a margin of 5 mm for safety, so:

...
mesh_min = 5, 50
mesh_max = 205,205
...
1 Like

Hi all,

thank you for your help.
I copied a leveling Macro from an Ender 3 S1 and it worked.
Now the Bed mesh ist working.

For those who care:

[gcode_macro BED_MESH_CALIBRATE]
rename_existing: BED_MESH_CALIBRATE_BASE
; gcode parameters
variable_parameter_AREA_START : 0,0
variable_parameter_AREA_END : 0,0
; the clearance between print area and probe area 
variable_mesh_area_offset : 5.0
; number of sample per probe point
variable_probe_samples : 2
; minimum and maximum probe count
variable_min_probe_count : 3
; scale up the probe count, the vlaue should be 1.0 ~ < max/min probe count
variable_probe_count_scale_factor : 1.0
gcode:
    {% if params.AREA_START and params.AREA_END %}
        {% set bedMeshConfig = printer["configfile"].config["bed_mesh"] %}
        {% set safe_min_x = bedMeshConfig.mesh_min.split(",")[0]|float %}
        {% set safe_min_y = bedMeshConfig.mesh_min.split(",")[1]|float %}
        {% set safe_max_x = bedMeshConfig.mesh_max.split(",")[0]|float %}
        {% set safe_max_y = bedMeshConfig.mesh_max.split(",")[1]|float %}

        {% set area_min_x = params.AREA_START.split(",")[0]|float %}
		{% set area_min_y = params.AREA_START.split(",")[1]|float %}
		{% set area_max_x = params.AREA_END.split(",")[0]|float %}
		{% set area_max_y = params.AREA_END.split(",")[1]|float %}

        {% set meshPointX = bedMeshConfig.probe_count.split(",")[0]|int %}
        {% set meshPointY = bedMeshConfig.probe_count.split(",")[1]|int %}

        {% set meshMaxPointX = meshPointX %}
	    {% set meshMaxPointY = meshPointY %}


        {% if (area_min_x < area_max_x) and (area_min_y < area_max_y) %}
            {% if area_min_x - mesh_area_offset >=  safe_min_x %}
                {% set area_min_x = area_min_x - mesh_area_offset %}
            {% else %}
                {% set area_min_x = safe_min_x %}
            {% endif %}

            {% if area_min_y - mesh_area_offset >=  safe_min_y %}
                {% set area_min_y = area_min_y - mesh_area_offset %}
            {% else %}
                {% set area_min_y = safe_min_y %}
            {% endif %}

            {% if area_max_x + mesh_area_offset <=  safe_max_x %}
                {% set area_max_x = area_max_x + mesh_area_offset %}
            {% else %}
                {% set area_max_x = safe_max_x %}
            {% endif %}

            {% if area_max_y + mesh_area_offset <=  safe_max_y %}
                {% set area_max_y = area_max_y + mesh_area_offset %}
            {% else %}
                {% set area_max_y = safe_max_y %}
            {% endif %}

            PRINT MSG="Set custom mesh area to ({area_min_x},{area_min_y}),({area_max_x},{area_max_y})" OUTPUT_TARGET=1

            {% set meshPointX = (meshPointX * (area_max_x - area_min_x) / (safe_max_x - safe_min_x)  * probe_count_scale_factor|float)|round(0)|int %}
            {% if meshPointX < min_probe_count %}
                {% set meshPointX = min_probe_count %}
            {% endif %}
            {% if meshPointX > meshMaxPointX %}
                {% set meshPointX = meshMaxPointX %}
            {% endif %}

            {% set meshPointY = (meshPointY * (area_max_y -area_min_y ) / (safe_max_y - safe_min_y) * probe_count_scale_factor|float)|round(0)|int %}
            {% if meshPointY < min_probe_count %}
                {% set meshPointY = min_probe_count %}
            {% endif %}
            {% if meshPointY > meshMaxPointY %}
                {% set meshPointY = meshMaxPointY %}
            {% endif %}

            PRINT MSG="Set custom mesh matrix to {meshPointX}x{meshPointY}" OUTPUT_TARGET=1
            PRINT MSG="Mesh: {meshPointX}x{meshPointY}" OUTPUT_TARGET=2

            BED_MESH_CALIBRATE_BASE mesh_min={area_min_x},{area_min_y} mesh_max={area_max_x},{area_max_y} probe_count={meshPointX},{meshPointY} samples={probe_samples|int}
        {% else %}
            PRINT MSG="Invalid custom mesh parameters, probe using default setting" OUTPUT_TARGET=1
            PRINT MSG="Mesh: default" OUTPUT_TARGET=2
            BED_MESH_CALIBRATE_BASE
        {% endif %}
    {% else %}
        PRINT MSG="Invalid custom mesh parameters, probe using default setting" OUTPUT_TARGET=1
        PRINT MSG="Mesh: default" OUTPUT_TARGET=2
        BED_MESH_CALIBRATE_BASE
    {% endif %}
1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.