mirror of
https://github.com/furrysalamander/rubedo.git
synced 2025-09-26 23:29:12 +08:00
247 lines
8.7 KiB
Python
247 lines
8.7 KiB
Python
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
|
|
"""
|
|
|