What's new
VORON Design

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members!

Solved Print fails to start after configuring sensorless homing

Upperbottom

Active member
Solved!
Discord to the rescue! Probable cause was a rounding error. Setting position_min: -1 at [stepper_x] in printer.cfg solved the problem.
Thanks @Hagbard V2.1070 !

Well, in prepration to install a Canbus toolhead, I decided to switch to sensorless homing.
I followed the guide by Eric Zimmermann, and got the homing working*
Homing works in hot and cold state (when hot bed 110, nozzle 240, chamber temp about 50C )
BUT
When I start a print, it heats as expected and when it comes to start the print it fails with:

"Move out of range: -0.000 175.000 4.000 [0.000]"
Followed by an abort.

My machine is mostly standard with a stealthburner toolhead and it uses tap. I use orca-slicer and KAMP and the script work(ed) reliably.
Has anyone an idea where to start looking for a solution?
EDIT: upon closer analysis, something seems to be wrong in the g28 command. G28 X/Y/Z respectively work as intended, G28 by itself throws a "Move out of range" error.
EDIT2: I replaced my startup G28 with a G28 X G28 Y and G28Z...Then the print starts as expected...
EDIT3: But not really.. even after lowering the sensitivity of the x-axis, no reliable print start.. However when first doing G28 Y then G28 X it works....

this is my start script:
Code:
[gcode_macro PRINT_START]
#   Use PRINT_START for the slicer starting script - please customise for your slicer of choice
gcode:   
    # Parameters
    {% set bedtemp = params.BED|float %}
    {% set hotendtemp = params.EXTRUDER|float %}
   ; {% set chambertemp = params.CHAMBER|default(0)|float %}
    M118 Set bedtemp ;checkmessage
    M190 S{bedtemp}     ;checkmessage
    M118 set nozzle 150;checkmessage
    M109 S150                      ; set hotend to 150 for TAP
    SKEW_PROFILE LOAD=CaliFlower ;skew compensation
    G32 ; home all axes, QGL, MESH
    G28 Z ;rehome z so mesh is on 0
    STATUS_MESHING
    BED_MESH_CLEAR
    BED_MESH_CALIBRATE
    M109 S{hotendtemp}     
    G90                            ; absolute positioning
    G1 Z20 F3000                   ; move nozzle away from bed
    VORON_PURGE
  # BED_MESH_PROFILE LOAD=default
    STATUS_BUSY

This is my G32
Code:
[gcode_macro G32]
gcode:
    SAVE_GCODE_STATE NAME=STATE_G32
    G90
    G28
    QUAD_GANTRY_LEVEL
    PARK
    RESTORE_GCODE_STATE NAME=STATE_G32

This is my Home.cfg
Code:
# Note you may need to add the following to your printer.cfg somewhere (without the comments of course) for the Kinematic position stuff below to work.
#[force_move]
#enable_force_move: True

[gcode_macro _HOME_X]
gcode:
    # Home
    {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %}
    {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %}
    {% set HOME_CURRENT = 0.49 %}
    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT}
    SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT}
 
    SET_KINEMATIC_POSITION X=15
    G91
    G1 X-15 F1200
 
    #G4 P2000
    #M400 to finish all pending moves/process the buffer
    M400
    G28 X
 
    # Move away
    G91
    G1 X-15 F1200
 
    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X}
    SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y}

[gcode_macro _HOME_Y]
gcode:
    {% set RUN_CURRENT_X = printer.configfile.settings['tmc2209 stepper_x'].run_current|float %}
    {% set RUN_CURRENT_Y = printer.configfile.settings['tmc2209 stepper_y'].run_current|float %}
    {% set HOME_CURRENT = 0.49 %}
    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={HOME_CURRENT}
    SET_TMC_CURRENT STEPPER=stepper_y CURRENT={HOME_CURRENT}
 
    SET_KINEMATIC_POSITION Y=15
    G91
    G1 Y-15 F1200
 
    #G4 P2000
    #M400 to finish all pending moves/process the buffer
    M400
 
    # Home
    G28 Y
    # Move away
    G91
    G1 Y-15 F1200

    # Wait just a second… (give StallGuard registers time to clear)
    SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X}
    SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y}

[homing_override]
axes: xyz
gcode:
  {% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %}

  SET_KINEMATIC_POSITION Z=1
  G1 Z4 F1200

  {% if home_all or 'X' in params %}
    _HOME_X
  {% endif %}
 
  {% if home_all or 'Y' in params %}
    _HOME_Y
  {% endif %}
 
  {% if home_all or 'Z' in params %}

    G90
    G1 X175 Y175 F15000

    G28 Z

    G1 Z10 F1500
  {% endif %}


[gcode_macro _CG28]
description: Homing only if necessary
gcode:
    {% if "xyz" not in printer.toolhead.homed_axes %}
        G28
    {% endif %}

*I have almost the same config, so it was easy to follow,once I get prints working, I probably will have to fiddle with the stallcurrent settings, I used a "chicken" value which may be too sensitive.
 
Last edited:
Top