Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions meta-opencentauri/recipes-apps/klipper/files/machine.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
112 changes: 105 additions & 7 deletions meta-opencentauri/recipes-apps/klipper/files/macros.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down Expand Up @@ -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:
Expand Down
Loading