diff --git a/klipper/gcode.py b/klipper/gcode.py index c012286..e867047 100644 --- a/klipper/gcode.py +++ b/klipper/gcode.py @@ -3,7 +3,7 @@ import requests # HOST = 'fluiddpi.local' -HOST = 'http://192.168.1.64' +HOST = 'http://192.168.1.113' GCODE_ENDPOINT = '/printer/gcode/script' OBJECTS_ENDPOINT = '/printer/objects/query' @@ -56,11 +56,11 @@ def has_homed(): return result["status"]["toolhead"]["homed_axes"] == "xyz" def do_initialization_routine(): - if not has_homed(): - print("Homing") - home() - print("Quad Gantry Level") - send_gcode("QUAD_GANTRY_LEVEL") + # if not has_homed(): + # print("Homing") + # home() + # print("Quad Gantry Level") + # send_gcode("QUAD_GANTRY_LEVEL") print("Rehoming Z") send_gcode("G28 Z") diff --git a/pa.py b/pa.py new file mode 100644 index 0000000..7b25e5d --- /dev/null +++ b/pa.py @@ -0,0 +1,246 @@ +import numpy as np +import klipper.gcode as g + +# TODO: Populate all of these and place them in an appropriate file +CAMERA_OFFSET_X = 0 +CAMERA_OFFSET_Y = 0 + +CAMERA_FOV_X = 0 +CAMERA_FOV_Y = 0 + +BUILD_PLATE_TEMPERATURE = 110 +HOTEND_TEMPERATURE = 255 + +def generate_pa_tune_gcode(start_value, stop_value, start_x, start_y, num_lines, line_length, spacing): + Z_HOP_HEIGHT = 0.75 + LAYER_HEIGHT = 0.25 + RETRACTION_DISTANCE = 0.5 + EXTRUSION_DISTANCE_PER_MM = 0.045899 + + gcode = f""" + G21 ; Millimeter units + G90 ; Absolute XYZ + M83 ; Relative E + SET_VELOCITY_LIMIT ACCEL=3000 ACCEL_TO_DECEL=1500 + G92 E0 ; + M106 S0 ; set fan speed to 0 + + G1 X{start_x} Y{start_y} F30000 ; move to start position + G1 Z{LAYER_HEIGHT} F300 ; move to layer height + G91 ; switch to relative movements + ; Print a bounding box to aid with removal and prime the extruder. + G1 Y{(num_lines + 1) * spacing} E{((num_lines + 1) * spacing) * EXTRUSION_DISTANCE_PER_MM} F3000; + G1 X{line_length} E{line_length * EXTRUSION_DISTANCE_PER_MM}; + G1 Y{-(num_lines + 1) * spacing} E{((num_lines + 1) * spacing) * EXTRUSION_DISTANCE_PER_MM}; + G1 Z{Z_HOP_HEIGHT} Y{-spacing} E{-RETRACTION_DISTANCE} F300; retract and prepare to hop to first line location. + """ + + for pa_value in np.linspace(start_value, stop_value, num_lines): + # TODO: parameterize the extrusion values based on the layer height + gcode += f""" + SET_PRESSURE_ADVANCE ADVANCE={pa_value} ; set Pressure Advance + M117 Testing Pressure Advance at: {pa_value} + G1 X-{line_length} Y{spacing} F30000 ; move to start position + G1 Z{-Z_HOP_HEIGHT} F300 ; move to layer height + G1 E{RETRACTION_DISTANCE} F1800 ; un-retract + G1 X{line_length / 4} E{(line_length / 4) * EXTRUSION_DISTANCE_PER_MM} F300 ; print line part one + G1 X{line_length / 2} E{(line_length / 2) * EXTRUSION_DISTANCE_PER_MM} F9000 ; print line part two + G1 X{line_length / 4} E{(line_length / 4) * EXTRUSION_DISTANCE_PER_MM} F300 ; print line part three + G1 E{-RETRACTION_DISTANCE} F1800 ; retract + G1 Z{Z_HOP_HEIGHT} F300 ; Move above layer height + """ + gcode += """ + M117 ; clear LCD message + """ + return gcode + +if __name__=="__main__": + g.do_initialization_routine() + g.send_gcode(f""" + M104 S180; preheat nozzle while waiting for build plate to get to temp + M190 S{BUILD_PLATE_TEMPERATURE}; + M109 S{HOTEND_TEMPERATURE}; + """) + g.send_gcode("CLEAN_NOZZLE") + g.send_gcode( + generate_pa_tune_gcode( + 0, 0.1, + 30, 30, + 20, + 40, 4 + ) + ) + + +# {% set BED = params.BED|default(99)|float %} +# {% set EXTRUDER = params.EXTRUDER|default(239)|float %} +# PRINT_START BED_TEMP={BED} EXTRUDER_TEMP={EXTRUDER} + +# G21 ; Millimeter units +# G90 ; Absolute XYZ +# M83 ; Relative E +# SET_VELOCITY_LIMIT ACCEL=3000 ACCEL_TO_DECEL=1500 +# G92 E0 ; +# M106 S0 ; set fan speed to 0 + +# G1 X{start_x} Y{start_y} F30000 ; move to start position +# G1 Z0.25 F300 ; move to layer height + +# G91 ; switch to relative movements +# G1 E0.75 F1800 ; un-retract +# G1 X10 E0.45899 F300 ; print line part one +# G1 X20 E0.91798 F9000 ; print line part two +# G1 X10 E0.45899 F300 ; print line part three +# G1 E-0.75 F1800 ; retract +# G1 Z0.75 F300 + +# {% for i in range(0, 20) %} +# SET_PRESSURE_ADVANCE ADVANCE={i*0.005} ; set Pressure Advance +# M117 Testing Pressure Advance at: {i*0.005} +# G1 X-40 Y4 F30000 ; move to start position +# G1 Z-0.75 F300 ; move to layer height +# G1 E0.75 F1800 ; un-retract +# G1 X10 E0.45899 F300 ; print line part one +# G1 X20 E0.91798 F9000 ; print line part two +# G1 X10 E0.45899 F300 ; print line part three +# G1 E-0.75 F1800 ; retract +# G1 Z0.75 F300 ; Move above layer height +# {% endfor %} + +# PRINT_END + +""" +[gcode_macro PA_CAL] +# Pressure Advance Simple Test macro, using .4mm nozzle. +# Usage: PA_CAL BED=100 EXTRUDER=240 +# First prints a line with current set PA, then prints 20 line segments +# starting with 0 PA, increasing each line by 0.005. + +# [gcode_macro CLEAN_NOZZLE] +# variable_start_x: 130 +# variable_start_y: 350 +# variable_start_z: 2 +# variable_wipe_dist: -50 +# variable_wipe_qty: 5 +# variable_wipe_spd: 200 +# variable_raise_distance: 10 + +# gcode: +# {% if "xyz" not in printer.toolhead.homed_axes %} +# G28 +# {% endif %} + +# G90 ; absolute positioning +# ## Move nozzle to start position +# G1 X{start_x} Y{start_y} F6000 +# G1 Z{start_z} F1500 +variable_start_x: 10 +variable_start_y: 200 + +gcode: + {% set BED = params.BED|default(99)|float %} + {% set EXTRUDER = params.EXTRUDER|default(239)|float %} + PRINT_START BED_TEMP={BED} EXTRUDER_TEMP={EXTRUDER} + + G21 ; Millimeter units + G90 ; Absolute XYZ + M83 ; Relative E + SET_VELOCITY_LIMIT ACCEL=3000 ACCEL_TO_DECEL=1500 + G92 E0 ; + M106 S0 ; set fan speed to 0 + + G1 X{start_x} Y{start_y} F30000 ; move to start position + G1 Z0.25 F300 ; move to layer height + + G91 ; switch to relative movements + G1 E0.75 F1800 ; un-retract + G1 X10 E0.45899 F300 ; print line part one + G1 X20 E0.91798 F9000 ; print line part two + G1 X10 E0.45899 F300 ; print line part three + G1 E-0.75 F1800 ; retract + G1 Z0.75 F300 + + {% for i in range(0, 20) %} + SET_PRESSURE_ADVANCE ADVANCE={i*0.005} ; set Pressure Advance + M117 Testing Pressure Advance at: {i*0.005} + G1 X-40 Y4 F30000 ; move to start position + G1 Z-0.75 F300 ; move to layer height + G1 E0.75 F1800 ; un-retract + G1 X10 E0.45899 F300 ; print line part one + G1 X20 E0.91798 F9000 ; print line part two + G1 X10 E0.45899 F300 ; print line part three + G1 E-0.75 F1800 ; retract + G1 Z0.75 F300 ; Move above layer height + {% endfor %} + + PRINT_END + + +# gcode: +# {% set BED = params.BED|default(99)|float %} +# {% set EXTRUDER = params.EXTRUDER|default(239)|float %} +# PRINT_START BED_TEMP={BED} EXTRUDER_TEMP={EXTRUDER} + +# G21 ; Millimeter units +# G90 ; Absolute XYZ +# M83 ; Relative E +# SET_VELOCITY_LIMIT ACCEL=3000 ACCEL_TO_DECEL=1500 +# G92 E0 ; +# M106 S0 ; set fan speed to 0 + +# G1 X{start_x} Y{start_y} F30000 ; move to start position +# G1 Z0.25 F300 ; move to layer height + +# G91 ; switch to relative movements +# G1 E0.75 F1800 ; un-retract +# G1 X20 E0.91798 F300 ; print line part one +# G1 X40 E1.83596 F9000 ; print line part two +# G1 X20 E0.91798 F300 ; print line part three +# G1 E-0.75 F1800 ; retract +# G1 Z0.75 F300 + +# {% for i in range(0, 20) %} +# SET_PRESSURE_ADVANCE ADVANCE={i*0.005} ; set Pressure Advance +# M117 Testing Pressure Advance at: {i*0.005} +# G1 X-80 Y5 F30000 ; move to start position +# G1 Z-0.75 F300 ; move to layer height +# G1 E0.75 F1800 ; un-retract +# G1 X20 E0.91798 F300 ; print line part one +# G1 X40 E1.83596 F9000 ; print line part two +# G1 X20 E0.91798 F300 ; print line part three +# G1 E-0.75 F1800 ; retract +# G1 Z0.75 F300 ; Move above layer height +# {% endfor %} + +# PRINT_END + + + # SET_VELOCITY_LIMIT ACCEL=3000 ACCEL_TO_DECEL=1500 + # G92 E0 ; + # M106 S0 ; set fan speed to 0 + + # G1 X120 Y70 F30000 ; move to start position + # G1 Z0.25 F300 ; move to layer height + # G1 E0.75 F1800 ; un-retract + # G1 X140 Y70 E0.91798 F300 ; print line part one + # G1 X180 Y70 E1.83596 F9000 ; print line part two + # G1 X200 Y70 E0.91798 F300 ; print line part three + # G1 E-0.75 F1800 ; retract + # G1 Z1 F300 ; Move above layer height + + # {% for i in range(0, 20) %} + # SET_PRESSURE_ADVANCE ADVANCE={i*0.005} ; set Pressure Advance + # M117 Testing Pressure Advance at: {i*0.005} + # G1 X120 Y{100+(5*i)} F30000 ; move to start position + # G1 Z0.25 F300 ; move to layer height + # G1 E0.75 F1800 ; un-retract + # G1 X140 Y{100+(5*i)} E0.91798 F300 ; print line part one + # G1 X180 Y{100+(5*i)} E1.83596 F9000 ; print line part two + # G1 X200 Y{100+(5*i)} E0.91798 F300 ; print line part three + # G1 E-0.75 F1800 ; retract + # G1 Z1 F300 ; Move above layer height + # {% endfor %} + + # PRINT_END +""" +