diff --git a/meta-opencentauri/recipes-apps/klipper/files/machine.cfg b/meta-opencentauri/recipes-apps/klipper/files/machine.cfg index 625e94ec..18354024 100644 --- a/meta-opencentauri/recipes-apps/klipper/files/machine.cfg +++ b/meta-opencentauri/recipes-apps/klipper/files/machine.cfg @@ -376,7 +376,6 @@ pid_Kp: 2 pid_Ki: 5 pid_Kd: 0.5 - [screws_tilt_adjust] screw1: 231, 25 screw1_name: front right screw @@ -388,4 +387,4 @@ screw4: 31, 25 screw4_name: front left screw horizontal_move_z: 5 speed: 300 -screw_thread: CCW-M3 +screw_thread: CCW-M4 \ No newline at end of file diff --git a/meta-opencentauri/recipes-apps/klipper/files/macros.cfg b/meta-opencentauri/recipes-apps/klipper/files/macros.cfg index 46a9eced..b7094afe 100644 --- a/meta-opencentauri/recipes-apps/klipper/files/macros.cfg +++ b/meta-opencentauri/recipes-apps/klipper/files/macros.cfg @@ -10,6 +10,7 @@ variable_extruder_temp:{'probing': 140, 'cleaning': 190, 'loading': 230, 'purgin variable_fan_state:{'p1': 0.0, 'p2': 0.0, 'p3': 0.0} variable_z_maximum_lifting_distance: 256 variable_pause_resume_travel_speed: 150 +variable_z_bed_level: -2 gcode: [gcode_macro PRINT_START] @@ -686,24 +687,121 @@ gcode: CALIBRATE_Z_OFFSET {% endif %} -[gcode_macro SCREWS_TILT_CALCULATE] -rename_existing: SCREWS_TILT_CALCULATE_BASE +[gcode_macro PROBE] +rename_existing: PROBE_BASE +gcode: + LOAD_CELL_CALIBRATE TARE=TRUE + PROBE_BASE {rawparams} + +[gcode_macro MANUAL_LEVELING] gcode: {% set global = printer['gcode_macro _global_var'] %} {% set bed_temp = params.BED_TEMP|default(60)|int %} + {% set calibration = params.CALIBRATION|default(false)|lower == "true" %} + {% set settings = printer['gcode_macro _COSMOS_SETTINGS']|default({}) %} + {% set heatsoak = settings.heatsoak|default(1)|float %} + + M140 S{bed_temp} + M104 S{global.extruder_temp.probing} {% if "xyz" not in printer.toolhead.homed_axes %} G28 ; Home if necessary {% endif %} - + BED_MESH_CLEAR - M190 S{bed_temp} - M109 S{global.extruder_temp.probing} M400 - G28 - CLEAN_NOZZLE + {% if calibration %} + TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={bed_temp-2} MAXIMUM={bed_temp+5} + {% else %} + CLEAN_NOZZLE + TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={bed_temp-2} MAXIMUM={bed_temp+5} + SET_DISPLAY_TEXT MSG="Heatsoak: {heatsoak}m" + G4 P{(heatsoak * 60 * 1000)|int} + {% endif %} + + SCREWS_TILT_CALCULATE {rawparams} + +[gcode_macro SCREWS_TILT_CALCULATE] +rename_existing: SCREWS_TILT_CALCULATE_BASE +gcode: + {% set calibration = params.CALIBRATION|default(false)|lower == "true" %} + {% set bed_temp = params.BED_TEMP|default(60)|int %} + + _CLOSE_PROMPT + LOAD_CELL_CALIBRATE TARE=TRUE SAVE=TRUE SCREWS_TILT_CALCULATE_BASE + G1 X128 Y220 Z20 F6000 + + _SCREWS_TILT_PROMPT {rawparams} + +[gcode_macro _SCREWS_TILT_PROMPT] +gcode: + {% set stc = printer['screws_tilt_adjust'] %} + {% set calibration = params.CALIBRATION|default(false)|lower == "true" %} + {% set global = printer['gcode_macro _global_var'] %} + {% set bed_z = global.z_bed_level|float %} + {% set settings = printer['gcode_macro _COSMOS_SETTINGS']|default({}) %} + {% set endstop_z = printer.configfile.settings['stepper_z'].position_endstop|default(4)|float %} + {% set target_z = bed_z + endstop_z - 4 %} + {% set bed_temp = params.BED_TEMP|default(60)|int %} + + {% set pitch = 0.7 %} + {% set cw_raises_bed = false %} + + {% set s1 = stc.results.screw1 %}{% set d1 = s1.z - target_z %} + {% set s2 = stc.results.screw2 %}{% set d2 = s2.z - target_z %} + {% set s3 = stc.results.screw3 %}{% set d3 = s3.z - target_z %} + {% set s4 = stc.results.screw4 %}{% set d4 = s4.z - target_z %} + + {%- macro adjust(diff) -%} + {%- set need_raise = diff < 0 -%} + {%- set dir = "CW" if (need_raise == cw_raises_bed) else "CCW" -%} + {%- set turns = (diff|abs) / pitch -%} + {%- set full = turns|int -%} + {%- set mins = ((turns - full) * 60)|round|int -%} + {dir} {"%02d:%02d"|format(full, mins)} + {%- endmacro -%} + + RESPOND TYPE=command MSG="action:prompt_begin Manual Leveling" + RESPOND TYPE=command MSG="action:prompt_text Adjust screws from the top while holding the bottom with 2.5mm hex, then retry. 01:20 means 1 full turn and 20 minutes, CW=clockwise, CCW=counter-clockwise." + RESPOND TYPE=command MSG="action:prompt_text Front right screw : adjust {adjust(d1)}, z = {s1.z|round(3)}" + RESPOND TYPE=command MSG="action:prompt_text Rear right screw : adjust {adjust(d2)}, z = {s2.z|round(3)}" + RESPOND TYPE=command MSG="action:prompt_text Rear left screw : adjust {adjust(d3)}, z = {s3.z|round(3)}" + RESPOND TYPE=command MSG="action:prompt_text Front left screw : adjust {adjust(d4)}, z = {s4.z|round(3)}" + {% if calibration %} + RESPOND TYPE=command MSG="action:prompt_footer_button Done|_CLOSE_PROMPT" + {% else %} + RESPOND TYPE=command MSG="action:prompt_footer_button Done|_SCREWS_TILT_MESH BED_TEMP={bed_temp}" + {% endif %} + RESPOND TYPE=command MSG="action:prompt_footer_button Retry|SCREWS_TILT_CALCULATE {rawparams}|warning" + RESPOND TYPE=command MSG="action:prompt_show" + +[gcode_macro _SCREWS_TILT_MESH] +gcode: + {% set bed_temp = params.BED_TEMP|default(60)|int %} + + _CLOSE_PROMPT + LOAD_CELL_CALIBRATE TARE=TRUE SAVE=TRUE + + RESPOND TYPE=command MSG="action:prompt_begin Done Leveling" + RESPOND TYPE=command MSG="action:prompt_text With the bed now manually leveled, the printer needs to make a new bed mesh in order to print correctly." + RESPOND TYPE=command MSG="action:prompt_footer_button Skip|_SCREWS_TILT_CLOSE" + RESPOND TYPE=command MSG="action:prompt_footer_button Bed Mesh|_SCREWS_TILT_CLOSE BED_TEMP={bed_temp} MESH=TRUE|warning" + RESPOND TYPE=command MSG="action:prompt_show" + +[gcode_macro _SCREWS_TILT_CLOSE] +gcode: + {% set bed_temp = params.BED_TEMP|default(60)|int %} + {% set mesh = params.MESH|default(false)|lower == "true" %} + + _CLOSE_PROMPT + {% if mesh %} + SET_DISPLAY_TEXT MSG="Performing probe z-offset & bed mesh calibration" + BED_MESH_CALIBRATE BED_TEMP={bed_temp} + {% endif %} + TURN_OFF_HEATERS + _SAVE_CONFIG_PROMPT [gcode_macro _IDLE_TIMEOUT] gcode: