Re: Banach-Trinity
: 30 gru 2023, 23:05
A mogę wrzucić publicznie. Wprawdzie to moje dzieło, ale może ktoś z twórców Klippera namierzy i wesprze taki tryb pracy
Kod: Zaznacz cały
[extruder]
heater_pin: PE3 # HE0
sensor_pin: PA1 # T0
sensor_type: PT1000
pullup_resistor: 2200
nozzle_diameter: 0.400
filament_diameter: 1.750
# rotation_distance: 7.710843373493976
control: pid
pid_Kp: 17.604
pid_Ki: 0.659
pid_Kd: 117.506
min_temp: 5
max_temp: 250
max_extrude_only_distance: 200.0
[extruder_stepper e1Niebieski]
dir_pin: PA14
step_pin: PA10
enable_pin: !PA15
microsteps: 16
extruder:
rotation_distance: 8
[extruder_stepper e2Czerwony]
dir_pin: PD9
step_pin: PD11
enable_pin: !PD15
microsteps: 16
extruder:
rotation_distance: 8
[extruder_stepper e3Czarny]
dir_pin: PC6
step_pin: PD8
enable_pin: !PC7
microsteps: 16
extruder:
rotation_distance: 8
Kod: Zaznacz cały
[gcode_macro _LOW_TEMP_CHECK]
description: Rozgrzej głowicę jesli jest zimna
gcode:
{% if printer.extruder.target >= 200 %} # if there is a setpoint for extruder
{% if printer.extruder.temperature < printer.extruder.target %} # if not reached, heat
# RESPOND PREFIX="info:" MSG="Heating from {printer.extruder.temperature} to {printer.extruder.target}."
M109 S{printer.extruder.target|float}
{% endif %}
{% else %} # if no setpoint for extruder
{% if printer.extruder.target < 200 %} # heat to T.
# RESPOND PREFIX="info:" MSG="No setpoint, heating to 180."
M109 S210
{% endif %}
{% endif %}
[gcode_macro _TOOL_CHANGE]
gcode:
# {% set tools = ['e1Niebieski', 'e2Czerwony', 'e3Czarny'] %}
# {% set oldtool = printer["gcode_macro _TOOL_CHANGE"].current|int %}
# {% if oldtool == 3 %}
{% if (params.TOOL|int)%2 == 1 %}
SYNC_EXTRUDER_MOTION EXTRUDER=e1Niebieski MOTION_QUEUE=extruder
SET_GCODE_VARIABLE MACRO=SET_PRESSURE_ADVANCE VARIABLE=current VALUE='-"e1Niebieski"-' # wartość ma być postaci: apostrof, cudzysłów, treść, cudzysłów, apostrof - bez kreseczek
{% if not printer.stepper_enable["extruder_stepper e1Niebieski"] %}
SET_STEPPER_ENABLE STEPPER="extruder_stepper e1Niebieski" ENABLE=1
{% endif %}
{% else %}
SYNC_EXTRUDER_MOTION EXTRUDER=e1Niebieski MOTION_QUEUE=
{% endif %}
{% if ((params.TOOL|int)//2)%2 == 1 %}
SYNC_EXTRUDER_MOTION EXTRUDER=e2Czerwony MOTION_QUEUE=extruder
SET_GCODE_VARIABLE MACRO=SET_PRESSURE_ADVANCE VARIABLE=current VALUE='-"e2Czerwony"-' # wartość ma być postaci: apostrof, cudzysłów, treść, cudzysłów, apostrof - bez kreseczek
{% if not printer.stepper_enable["extruder_stepper e2Czerwony"] %}
SET_STEPPER_ENABLE STEPPER="extruder_stepper e2Czerwony" ENABLE=1
{% endif %}
{% else %}
SYNC_EXTRUDER_MOTION EXTRUDER=e2Czerwony MOTION_QUEUE=
{% endif %}
{% if ((params.TOOL|int)//4)%2 == 1 %}
SYNC_EXTRUDER_MOTION EXTRUDER=e3Czarny MOTION_QUEUE=extruder
SET_GCODE_VARIABLE MACRO=SET_PRESSURE_ADVANCE VARIABLE=current VALUE='-"e3Czarny"-' # wartość ma być postaci: apostrof, cudzysłów, treść, cudzysłów, apostrof - bez kreseczek
{% if not printer.stepper_enable["extruder_stepper e3Czarny"] %}
SET_STEPPER_ENABLE STEPPER="extruder_stepper e3Czarny" ENABLE=1
{% endif %}
{% else %}
SYNC_EXTRUDER_MOTION EXTRUDER=e3Czarny MOTION_QUEUE=
{% endif %}
ACTIVATE_EXTRUDER EXTRUDER=extruder
[gcode_macro SET_PRESSURE_ADVANCE]
variable_current: "e1Niebieski"
rename_existing: SET_PRESSURE_ADVANCE_BASE
gcode:
SET_PRESSURE_ADVANCE_BASE ADVANCE={params.ADVANCE} EXTRUDER="{current}"
[gcode_macro _WYSUN]
gcode:
_LOW_TEMP_CHECK
SAVE_GCODE_STATE NAME=wymiana
M83
G1 E-45 F4000
[gcode_macro _WSUN]
gcode:
_LOW_TEMP_CHECK
M83
G1 E45 F4000
RESTORE_GCODE_STATE NAME=wymiana MOVE=0
[gcode_macro T0]
gcode:
_TOOL_CHANGE TOOL=1
[gcode_macro T1]
gcode:
_TOOL_CHANGE TOOL=2
[gcode_macro T2]
gcode:
_TOOL_CHANGE TOOL=4
Kod: Zaznacz cały
_WYSUN
T[next_extruder]
_WSUN
Kod: Zaznacz cały
_TOOL_CHANGE TOOL=7
Właśnie będę maił czujniki, i się nad tym zastanawiam jak to ugryźć by w fazie włączenia klipper wiedział który extruder jest aktywny.Rozarh pisze: ↑31 gru 2023, 00:27
Niestety robiłem testy z zapamiętywaniem stanu drukarki - który filament "w dyszy" a który niezaładowany, ale wychodzi na to, że najlepszy jest kontroler "białkowy" - czyli operator drukarki. Przy obecnym poziomie rozwoju systemu żaden kod Klippera nie uwzględni wszystkich możliwych stanów początkowych drukarki - zwłaszcza bez czujników filamentu.