I had a question about homing.

I had a question about homing. After I complete a homing routine all of the axis go to zero. They go the amount I put in from the home switch to zero. That’s good except for the Z axis. I wanted it to go to around 20mm above zero. So far the only way I could get it work was to have my Z zero set about 20mm away from the true zero (bed face). I found a place farther down in the config file that looks like I can tell the axis where to go after homing but it doesn’t seem to follow that part? Any suggestions?

I should add that I have a Cartesian printer.

What does home_z say? Try to check M114 after you have done a homing. If it is not 0, 0, 0 you should check home_*

I’ll check what the home_z says when I get home but I had it set to .2346. That is the distance from the z endstop switch to Z zero (face of bed). On my machine it is 234.6mm of Z travel. So I set the home_z to .200 and after homing the table stops 34.6mm away from the nozzle. That ok but then I have to G92 my Z another 34.6 mm to get my zero where I need it to be.

I guess my question is can I set my z zero in the correct location (home_z .2346) but only have the z actually move to about 20mm away from the nozzle? Meaning move to Z 20.0. Or how do I have the Z not move at all after homing? The problem comes if I change a nozzle or switch to my volcano hot end I risk the nozzle crashing into the bed after homing if the length is different.

I did do a M114 check and the zero’s were all set where they should be, ie middle of the table in X and Y.

My goal is to add a switch on the bed to probe with the nozzle and have it set the z zero automatically. That way I can switch nozzles and not worry about crashes…

Could it be the soft end stops messing with you? I don’t think it is, but you could check it.

I will post my config file later tonight to see if you can help me sort this homing out. It works great other than the Z axis.

Check your offset_* settings also.

When I first brought up my system, I was trying to set this parameter. When I had it set and it was in conflict with your z_home setting I saw “weird” homing effects. I also had the side effect of not being able to utilize my entire print bed.

[System]

CRITICAL=50, # ERROR=40, # WARNING=30, INFO=20, DEBUG=10, NOTSET=0

loglevel = 20

Plugin to load for redeem, comma separated (i.e. HPX2Max,plugin2,plugin3)

plugins =

Machine type is used by M115

to identify the machine connected.

machine_type = Genesis 250

[Geometry]

0 - Cartesian

1 - H-belt

2 - Core XY

3 - Delta

axis_config = 0

Set the total length each axis can travel

travel_x = 0.252
travel_y = 0.170
travel_z = 0.200

This affects the homing endstop searching length.

travel_* can be left undefined.

It will be determined by soft_end_stop_min/max_

# …

# Define the origin in relation to the endstops
offset_x = 0.126
offset_y = 0.085
offset_z = 0.2

# It will be determined by home_speed and soft_end_stop_min/max_

offset_x = 0.0

bed_compensation_matrix =
1.0, 0.0, 0.0,
0.0, 1.0, 0.0,
0.0, 0.0, 1.0

Stepper e is ext 1, h is ext 2

[Steppers]

microstepping_x = 7
microstepping_y = 7
microstepping_z = 7
microstepping_e = 5
microstepping_h = 5
microstepping_a = 3
microstepping_b = 3
microstepping_c = 3

current_x = 0.75
current_y = 0.75
current_z = 0.75
current_e = 0.5
current_h = 0.5
current_a = 0.5
current_b = 0.5
current_c = 0.5

steps per mm:

Defined how many stepper full steps needed to move 1mm.

Do not factor in microstepping settings.

For example: If the axis will travel 10mm in one revolution and

angle per step in 1.8deg (200step/rev), steps_pr_mm is 20.

steps_pr_mm_x = 3.921569
steps_pr_mm_y = 3.921569
steps_pr_mm_z = 50.0
steps_pr_mm_e = 2.6813
steps_pr_mm_h = 2.6813
steps_pr_mm_a = 6.0
steps_pr_mm_b = 6.0
steps_pr_mm_c = 6.0

backlash_x = 0.0
backlash_y = 0.0
backlash_z = 0.0
backlash_e = 0.0
backlash_h = 0.0
backlash_a = 0.0
backlash_b = 0.0
backlash_c = 0.0

Which steppers are enabled

in_use_x = True
in_use_y = True
in_use_z = True
in_use_e = True
in_use_h = True
in_use_a = False
in_use_b = False
in_use_c = False

Set to -1 if axis is inverted

direction_x = 1
direction_y = 1
direction_z = 1
direction_e = 1
direction_h = 1
direction_a = 1
direction_b = 1
direction_c = 1

Set to True if slow decay mode is needed 0 = False

slow_decay_x = 0
slow_decay_y = 0
slow_decay_z = 0
slow_decay_e = 0
slow_decay_h = 0
slow_decay_a = 0
slow_decay_b = 0
slow_decay_c = 0

dac_channel_x =

[Planner]

size of the path planning cache

move_cache_size = 1024

time to wait for buffer to fill, (ms)

print_move_buffer_wait = 250

if total buffered time gets below (min_buffered_move_time) then wait for (print_move_buffer_wait) before moving again, (ms)

min_buffered_move_time = 100

total buffered move time should not exceed this much (ms)

max_buffered_move_time = 1000

acceleration_x = 0.2
acceleration_y = 0.2
acceleration_z = 0.1
acceleration_e = 0.5
acceleration_h = 0.5
acceleration_a = 0.5
acceleration_b = 0.5
acceleration_c = 0.5

maxjerk_xy = 15
maxjerk_z = 2
maxjerk_eh = 5

Max speed for the steppers in m/s

max_speed_x = 1.0
max_speed_y = 1.0
max_speed_z = 0.5
max_speed_e = 1.0
max_speed_h = 1.0
max_speed_a = 0.2
max_speed_b = 0.2
max_speed_c = 0.2

e_axis_active = True

[Cold-ends]
path = /sys/bus/w1/devices/28-000002e34b73/w1_slave
connect-therm-E-fan-0 = False
connect-therm-E-fan-1 = False
connect-therm-E-fan-2 = False
connect-therm-E-fan-3 = False
connect-therm-H-fan-0 = False
connect-therm-H-fan-1 = False
connect-therm-H-fan-2 = False
connect-therm-H-fan-3 = False
connect-therm-HBP-fan-0 = False
connect-therm-HBP-fan-1 = False
connect-therm-HBP-fan-2 = False
connect-therm-HBP-fan-3 = False

add-fan-0-to-M106 = True
add-fan-1-to-M106 = True
add-fan-2-to-M106 = True
add-fan-3-to-M106 = True

[Heaters]

For list of available temp charts, look in temp_chart.py

temp_chart_E = SEMITEC-104GT-2
pid_p_E = 0.0383
pid_i_E = 71.3004
pid_d_E = 5.1443
ok_range_E = 4.0
path_adc_E = /sys/bus/iio/devices/iio:device0/in_voltage4_raw
mosfet_E = 5
onoff_E = False
prefix_E = T0

temp_chart_H = SEMITEC-104GT-2
pid_p_H = 0.0383
pid_i_H = 71.3004
pid_d_H = 5.1443
ok_range_H = 4.0
path_adc_H = /sys/bus/iio/devices/iio:device0/in_voltage5_raw
mosfet_H = 3
onoff_H = False
prefix_H = T1

temp_chart_A = B57560G104F
pid_p_A = 283.37
pid_i_A = 55.0
pid_d_A = 366.26
ok_range_A = 4.0
path_adc_A = /sys/bus/iio/devices/iio:device0/in_voltage1_raw
mosfet_A = 11
onoff_A = False
prefix_A = T2

temp_chart_B = B57560G104F
pid_p_B = 0.1
pid_i_B = 0.3
pid_d_B = 0.0
ok_range_B = 4.0
path_adc_B = /sys/bus/iio/devices/iio:device0/in_voltage2_raw
mosfet_B = 12
onoff_B = False
prefix_B = T3

temp_chart_C = B57560G104F
pid_p_C = 0.1
pid_i_C = 0.3
pid_d_C = 0.0
ok_range_C = 4.0
path_adc_C = /sys/bus/iio/devices/iio:device0/in_voltage3_raw
mosfet_C = 13
onoff_C = False
prefix_C = T4

temp_chart_HBP = B57560G104F
pid_p_HBP = 0.1024
pid_i_HBP = 71.7485
pid_d_HBP = 5.1911
ok_range_HBP = 4.0
path_adc_HBP = /sys/bus/iio/devices/iio:device0/in_voltage6_raw
mosfet_HBP = 4
onoff_HBP = False
prefix_HBP = B

[Endstops]

Which axis should be homed.

has_x = True
has_y = True
has_z = True
has_e = False
has_h = False
has_a = False
has_b = False
has_c = False

inputdev = /dev/input/event0

Invert =

True means endstop is connected as Normally Open (NO) or not connected

False means endstop is connected as Normally Closed (NC)

invert_X1 = True
invert_X2 = False
invert_Y1 = True
invert_Y2 = False
invert_Z1 = True
invert_Z2 = False

pin_X1 = GPIO3_21
pin_X2 = GPIO0_30
pin_Y1 = GPIO1_17
pin_Y2 = GPIO1_19
pin_Z1 = GPIO0_31
pin_Z2 = GPIO0_4

keycode_X1 = 112
keycode_X2 = 113
keycode_Y1 = 114
keycode_Y2 = 115
keycode_Z1 = 116
keycode_Z2 = 117

If one endstop is hit, which steppers and directions are masked.

The list is comma separated and has format

x_cw = stepper x clockwise (independent of direction_x)

x_ccw = stepper x counter clockwise (independent of direction_x)

x_neg = setpper x negative direction (affected by direction_x)

x_pos = setpper x positive direction (affected by direction_x)

Steppers e and h (and a, b, c for reach) can also be masked.

For a list of steppers to stop, use this format: x_cw, y_ccw

For Simple XYZ bot, the usual practice would be

end_stop_X1_stops = x_neg, end_stop_X2_stops = x_pos, …

For CoreXY and similar, two steppers should be stopped if an end stop is hit.

similarly for a delta probe should stop x, y and z.

end_stop_X1_stops = x_ccw
end_stop_Y1_stops = y_ccw
end_stop_Z1_stops = z_ccw
end_stop_X2_stops =
end_stop_Y2_stops =
end_stop_Z2_stops =

soft_end_stop_min_x = -0.126
soft_end_stop_min_y = -0.085
soft_end_stop_min_z = 0.0

soft_end_stop_max_x = 0.126
soft_end_stop_max_y = 0.085
soft_end_stop_max_z = 0.2346

[Homing]

Homing speed for the steppers in m/s

Search to minimum ends by default. Negative value for searching to maximum ends.

home_speed_x = -0.1
home_speed_y = -0.1
home_speed_z = -0.02
home_speed_e = 0.01
home_speed_h = 0.01
home_speed_a = 0.01
home_speed_b = 0.01
home_speed_c = 0.01

homing backoff speed

home_backoff_speed_x = 0.01
home_backoff_speed_y = 0.01
home_backoff_speed_z = 0.01
home_backoff_speed_e = 0.01
home_backoff_speed_h = 0.01
home_backoff_speed_a = 0.01
home_backoff_speed_b = 0.01
home_backoff_speed_c = 0.01

homing backoff dist

home_backoff_offset_x = 0.01
home_backoff_offset_y = 0.01
home_backoff_offset_z = 0.01
home_backoff_offset_e = 0.01
home_backoff_offset_h = 0.01
home_backoff_offset_a = 0.01
home_backoff_offset_b = 0.01
home_backoff_offset_c = 0.01

Where should the printer goes after homing

home_* can be left undefined. It will stay at the end stop.

That is my config file.
Down at the bottom it says “# home_* can be left undefined. It will stay at the end stop.”

I don’t have anything defined in that section but the printer still moves to XYZ zero after homing?

It moves whatever I put in the “define origin after end stops section.”