protoloft / klipper_z_calibration

Klipper plugin for self-calibrating z-offset
GNU General Public License v3.0
1.06k stars 152 forks source link

Z Calibration Off, Printing Above plate #127

Closed PresleyHudson closed 5 months ago

PresleyHudson commented 1 year ago
image

I recently got Klicky and an endstop pin setup to get z calibration set up. I spent the day working though it to get everything I needed, I went to start a print and it is printing way above my build plate it thinks its at 0.2 but it is not and when only homing it is correct.

when manually measuring the z offset it was closer to the Probe value, or the formula alone without subtracting from Probe. one thing I was wondering was where the Probe value was pulled from?

the position of my z endstop is 4.1 and like i had said before when i home and move it to z 0.2 its measured correct with feeler gauge

Asiak3 commented 1 year ago

Im having the same issue, i think the solution is to have the start gcode like this: SET_GCODE_OFFSET Z=0 # I dont know if this is needed BED_MESH_CLEAR # I dont know if this is needed

M117 Homing
G90 # use Absolute Positioning 
SMARTHOME # Home neded axes, Z allways

Attach_Probe
Z_TILT_ADJUST
Dock_Probe

CLEAN_NOZZLE #run clean nozzle macro

Attach_Probe

CALIBRATE_Z

Dock_Probe   # before i´ve done the mesh directly without docking the probe and now docking all works fine for me

BED_MESH_CALIBRATE    
BED_MESH_PROFILE Load=default

M117 Purge

LINE_PURGE

For me the solution was to Dock the probe after CALIBRATE_Z and pickup again for BED_MESH_CALIBRATE.

TitusLabs commented 1 year ago

Did you test the offset before starting a print? Was that correct? Otherwise, I would check the PRINT_START macro as @Asiak3 suggested. The reset of the offset is not needed, as the plugin does this anyway. But clearing any mesh, calculating the z offset and probing a new mesh (if needed).

PresleyHudson commented 1 year ago

If I understand correctly, yes I believe I tested the offset before starting a print using a 0.2mm feeler gauge and I believe it was fine.

in the mean time I have just been running with the offset that was calibrated not running it every print, it has been great. once I get the revo and im swapping nozzles I will look into this again.

Asiak3 commented 1 year ago

i also forgot to mention that i since i added to the bed_mesh section the zero_reference_position: # (An optional X,Y coordinate that specifies the location on the bed where Z = 0. When this option is specified the mesh will be offset so that zero Z adjustment occurs at this location. The default is no zero reference.)

it seams to have improved. i dont know if it was the store probe action in between or the zero_reference_position

Asiak3 commented 1 year ago

[bed_mesh] speed: 150 horizontal_move_z: 6 mesh_min: 10, 10 #45, 10 #25, 10 mesh_max: 220, 199 #205, 217 probe_count: 7, 7 mesh_pps: 2,2 algorithm: bicubic fade_start: 0.8 fade_end: 10 fade_target: 0 zero_reference_position: 117, 117

Rhodani commented 1 year ago

I have the same problem. I am using KAMP and a klicky probe. I just swapped to another buildplate and now it is 0.4 to high. If I do a z_calibrate it is spot on. So there has to be something wrong in my config. Has anyone found the problem?

Here is my PRINT_START

[gcode_macro PRINT_START]
gcode:
  # This part fetches data from your slicer. Such as bed temp, extruder temp, chamber temp and size of your printer.
  {% set target_bed = params.BED|int %}
  {% set target_extruder = params.EXTRUDER|int %}
  {% set target_chamber = params.CHAMBER|default("40")|int %}
  {% set x_wait = printer.toolhead.axis_maximum.x|float / 2 %}
  {% set y_wait = printer.toolhead.axis_maximum.y|float / 2 %}

  # Homes the printer, sets absolute positioning and updates the Stealthburner leds.
  STATUS_HOMING         # Sets SB-leds to homing-mode
  G28                   # Full home (XYZ)
  G90                   # Absolut position

  ##  Uncomment for bed mesh (1 of 2)
  BED_MESH_CLEAR       # Clears old saved bed mesh (if any)

  # Checks if the bed temp is higher than 90c - if so then trigger a heatsoak.
  {% if params.BED|int > 90 %}
    SET_DISPLAY_TEXT MSG="Bed: {target_bed}c"           # Displays info
    STATUS_HEATING                                      # Sets SB-leds to heating-mode
    M106 S255                                           # Turns on the PT-fan

    ##  Uncomment if you have a Nevermore.
    SET_FAN_SPEED FAN=Nevermore SPEED=1                       # Turns on the nevermore

    G1 X{x_wait} Y{y_wait} Z15 F9000                    # Goes to center of the bed
    M190 S{target_bed}                                  # Sets the target temp for the bed
    SET_DISPLAY_TEXT MSG="Heatsoak: {target_chamber}c"  # Displays info
    #TEMPERATURE_WAIT SENSOR="temperature_sensor chamber" MINIMUM={target_chamber}   # Waits for chamber to reach desired temp

  # If the bed temp is not over 90c, then it skips the heatsoak and just heats up to set temp with a 5min soak
  {% else %}
    SET_DISPLAY_TEXT MSG="Bed: {target_bed}c"           # Displays info
    STATUS_HEATING                                      # Sets SB-leds to heating-mode
    G1 X{x_wait} Y{y_wait} Z15 F9000                    # Goes to center of the bed
    M190 S{target_bed}                                  # Sets the target temp for the bed
    #SET_DISPLAY_TEXT MSG="Soak for 5min"                # Displays info
    #G4 P300000                                          # Waits 5 min for the bedtemp to stabilize
  {% endif %}

  # Heating nozzle to 150 degrees. This helps with getting a correct Z-home
  SET_DISPLAY_TEXT MSG="Hotend: 150c"          # Displays info
  M109 S150                                    # Heats the nozzle to 150c

  ##  Uncomment for V2 (Quad gantry level AKA QGL)
  Attach_Probe_Lock
  SET_DISPLAY_TEXT MSG="QGL"      # Displays info
  STATUS_LEVELING                 # Sets SB-leds to leveling-mode
  quad_gantry_level               # Levels the buildplate via QGL
  G28 Z                           # Homes Z again after QGL

  ##  Uncomment for Klicky auto-z
  CALIBRATE_Z                                 # Calibrates Z-offset with klicky
  SET_DISPLAY_TEXT MSG="Z-offset"             # Displays info

  #Uncomment for bed mesh (2 of 2)
  SET_DISPLAY_TEXT MSG="Bed mesh"    # Displays info
  STATUS_MESHING                     # Sets SB-leds to bed mesh-mode
  bed_mesh_calibrate                 # Starts bed mesh
  Dock_Probe_Unlock

  # Heats up the nozzle up to target via data from slicer
  SET_DISPLAY_TEXT MSG="Hotend: {target_extruder}c"             # Displays info
  STATUS_HEATING                                                # Sets SB-leds to heating-mode
  SMART_PARK
  #G1 X{x_wait} Y{y_wait} Z15 F9000                              # Goes to center of the bed
  M107                                                          # Turns off partcooling fan
  M109 S{target_extruder}                                       # Heats the nozzle to printing temp

  # Gets ready to print by doing a purge line and updating the SB-leds
  SET_DISPLAY_TEXT MSG="Printer goes brr"          # Displays info
  STATUS_PRINTING      
  VORON_PURGE
  # Sets SB-leds to printing-mode
  #G0 X{x_wait - 50} Y4 F10000                      # Moves to starting point
  #G0 Z0.4                                          # Raises Z to 0.4
  #G91                                              # Incremental positioning 
  #G1 X100 E20 F1000                                # Purge line
  #CLEAN_NOZZLE
  G90       
TitusLabs commented 1 year ago

The PRINT_START macro seems to be ok.

It's important to define the zero_reference_position in your mesh configuration (e.g. the middle of the bed).

But, if you use KAMP or any other adaptive bed mesh, then you need to call the CALIBRATE_Z with the BED_POSITION parameter with the current zero_reference_position used by the adaptive mesh.

Rhodani commented 1 year ago

Could you please give me an example? I am using KAMP with adaptive bed mesh. I have no idea how to do what you wrote, but it seems like it is something that is fast to implement.

tir. 21. nov. 2023, 20:36 skrev Titus Meyer @.***>:

The PRINT_START macro seems to be ok.

It's important to define the zero_reference_position in your mesh configuration (e.g. the middle of the bed).

But, if you use KAMP or any other adaptive bed mesh, then you need to call the CALIBRATE_Z with the BED_POSITION parameter with the current zero_reference_position used by the adaptive mesh.

— Reply to this email directly, view it on GitHub https://github.com/protoloft/klipper_z_calibration/issues/127#issuecomment-1821564313, or unsubscribe https://github.com/notifications/unsubscribe-auth/A7EXWVLHOZYHYVX5QLMRZ53YFT7ETAVCNFSM6AAAAAA7IRD5P2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMRRGU3DIMZRGM . You are receiving this because you commented.Message ID: @.***>

TitusLabs commented 1 year ago

I have never dealt with KAMP or adaptive mesh. I even don't use mesh at all. But, this should be documented in KAMP. You will see that it works correctly if the z calibration is always done in the center of the current (smaller) mesh.

PresleyHudson commented 1 year ago

I was not aware of this zero_reference_position option I needed to set for use of probe and endstop for z. I will get this added and test again.

Edit after adding zero_reference_position it is no longer printing way above the build plate. thank you for your help. though one more question, does the calibration change anything in the config? or does it set the offset, per print?

TitusLabs commented 12 months ago

I'm glad it's working now. The calibration adds a gcode offset. It's nothing permanent.

PresleyHudson commented 8 months ago

Sorry to bring this back up again, been having trouble getting it to be consistent it seems to keep raising up on me even when I make adjustments I believe should lower it.

I did miss the part about using BED_POSITION, should the CALIBRATE_Z be ran after making the bed mesh with bed_position?

I have thought I have followed all the tutorials I've found but not getting the same results...

PresleyHudson commented 8 months ago

I think I've got it working more consistently now,

I'm running my Bed Mesh (KAMP) before the Calibrate Z and have added the BED_POSITION Param with the same cords as the zero reference point like you had said before (and in the documentation) but I had missed