mirror of
https://github.com/furrysalamander/rubedo.git
synced 2025-11-04 15:49:40 +08:00
First attempt at Python implementation of PA gcode
This commit is contained in:
parent
7cabd9107a
commit
2b44662261
@ -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")
|
||||
|
||||
|
||||
246
pa.py
Normal file
246
pa.py
Normal file
@ -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
|
||||
"""
|
||||
|
||||
Loading…
Reference in New Issue
Block a user