見出し画像

printer.cfgについて

私のヘッドを使用してくださると言っていただけた方がおられたので現在設定しているKlipperのprinter.cfgを公開することに致しました。
解説を付ける予定はありませんので、必要であればその都度質問をしてください。わかる範囲でお答えさせていただきます。
Twitterの方でもOKです。
各オフセット等はこちらのモデルをKP3Sにて使用した場合の値です。


printer.cfg

# This file contains common pin mappings for MKS Robin Nano (v1.2.004)
# boards. To use this config, the firmware should be compiled for the
# STM32F103. When running "make menuconfig", enable "extra low-level
# configuration setup", select the 28KiB bootloader, disable "USB for
# communication", and select USART3 for the "Serial Port".

# Note that the "make flash" command does not work with MKS Robin
# boards. After running "make", run the following command:
#   ./scripts/update_mks_robin.py out/klipper.bin out/Robin_nano.bin
# Copy the file out/Robin_nano.bin to an SD card and then restart the
# printer with that SD card.

[include macro.cfg]
[include pa_calibrate.cfg]
[include x_3d_printer.cfg]
# [include x_laser_plotter.cfg]
# [include x_cutting_plotter.cfg]
# [include x_pen_plotter.cfg]

[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command

[force_move]
enable_force_move: False

[stepper_z]
step_pin: PB5
dir_pin: !PB4
enable_pin: !PB8
rotation_distance: 8
full_steps_per_rotation: 200
microsteps: 32
endstop_pin: probe:z_virtual_endstop
position_max: 250
position_min: -5
homing_speed: 8
second_homing_speed: 3
homing_retract_dist: 3

#[tmc2208 stepper_x]
#uart_pin: PA3
#uart_address: 0
#run_current: 0.500   # changed by homing_override
#hold_current: 0.500
#stealthchop_threshold: 9999
#interpolate: true

#[tmc2208 stepper_y]
#uart_pin: PA6
#uart_address: 0
#run_current: 0.500   # changed by homing_override
#hold_current: 0.500
#stealthchop_threshold: 9999
#interpolate: true

#[tmc2208 stepper_z]
#uart_pin: PE5
#uart_address: 0
#run_current: 0.300
#hold_current: 0.300
#stealthchop_threshold: 9999
#interpolate: true

#[tmc2208 extruder]
#uart_pin: PA1
#uart_address: 0
#run_current: 0.500
#hold_current: 0.250
#stealthchop_threshold: 9999
#interpolate: true


[extruder]
step_pin: PD6
dir_pin: PD3
enable_pin: !PB3
rotation_distance: 22.885
gear_ratio: 50:17
microsteps: 32
full_steps_per_rotation: 200
nozzle_diameter: 1
filament_diameter: 1.750
max_extrude_only_distance: 1400.0
max_extrude_only_velocity: 75.0
max_extrude_only_accel: 1500
min_temp: 1
max_temp: 300
max_power: 1.0
min_extrude_temp: 170
smooth_time: 2.0
heater_pin: PC3
sensor_type: Generic 3950
sensor_pin: PC1

[safe_z_home]
home_xy_position: 66,102
speed: 50
z_hop: 15
z_hop_speed: 5

[heater_bed]
heater_pin: PA0
sensor_pin: PC0
sensor_type: EPCOS 100K B57560G104F
control: pid
pid_Kp: 325.10
pid_Ki: 63.35
pid_Kd: 417.10
max_temp: 130
min_temp: 1
max_power: 0.8


[heater_fan hotend_fan]
pin: PB0
max_power: 1.0
fan_speed: 0.99
cycle_time: 0.12
kick_start_time: 0.5
heater: extruder
heater_temp: 45.0

[temperature_sensor chamber]
sensor_pin: PC2
sensor_type: Generic 3950

[static_digital_output display_reset]
pins: !PC6, !PD13

[gcode_button BUTTON1]
pin: ^!PB2
press_gcode:
	M701

[gcode_button BUTTON2]
pin: ^!PA4
press_gcode:
	M702

[gcode_button BUTTON3]
pin: ^!PE6
press_gcode:
	FILAMENT_PURGE

[gcode_button BUTTON4]
pin: ^!PA2
press_gcode:
	RESUME

[virtual_sdcard]
path: ~/gcode_files

[pause_resume]
recover_velocity: 50

[mcu rpi]
serial: /tmp/klipper_host_mcu

[adxl345]
cs_pin: rpi:None

[resonance_tester]
accel_chip: adxl345
probe_points:
    90,90,20

[input_shaper]
shaper_freq_x: 40.4
shaper_type_x: mzv
shaper_freq_y: 50.4
shaper_type_y: mzv

[filament_switch_sensor filament_sensor]
switch_pin:^!PA11
pause_on_runout: True #pause handled by macro
#   When set to True, a PAUSE will execute immediately after a runout
#   is detected. Note that if pause_on_runout is False and the
#   runout_gcode is omitted then runout detection is disabled. Default
#   is True.
runout_gcode:
  M600

[gcode_arcs]
resolution: 1

[display_status]

[gcode_macro POWER_OFF_PRINTER]
gcode:
  {action_call_remote_method("set_device_power",
                             device="printer",
                             state="off")}

[delayed_gcode delayed_printer_off]
initial_duration: 0.
gcode:
  {% if printer.idle_timeout.state == "Idle" %}
    POWER_OFF_PRINTER
  {% endif %}

[idle_timeout]
gcode:
  TURN_OFF_MOTORS
  TURN_OFF_HEATERS
  UPDATE_DELAYED_GCODE ID=delayed_printer_off DURATION=300
timeout: 900

x_3d_printer.cfg

[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 30000
max_accel_to_decel: 30000
max_z_velocity: 24
max_z_accel: 240
square_corner_velocity: 5

[stepper_x]
step_pin: PE3
dir_pin: !PE2
enable_pin: !PE4
microsteps: 32
rotation_distance: 40
full_steps_per_rotation: 400
endstop_pin: ^!PA15
position_max: 178
position_endstop: -8
position_min: -10
homing_speed: 50

[stepper_y]
step_pin: PE0
dir_pin: !PB9
enable_pin: !PE1
microsteps: 32
rotation_distance: 40
full_steps_per_rotation: 400
endstop_pin: ^!PA12
position_endstop: -5
position_max: 180
position_min: -7
homing_speed: 50

[bltouch]
sensor_pin: ^PC4
control_pin: PA8
stow_on_each_sample:False
x_offset: 24
y_offset: -12
#z_offset: 0
speed: 10
samples: 3

[bed_mesh]
speed: 105
horizontal_move_z: 10
mesh_min: 18,10
mesh_max: 170,160
probe_count: 5,5

[fan]
pin: PB1
kick_start_time: 0.5

XYのモーターを0.9°のものに変更をしていますので考慮ください。
純正の1.8°のままの場合は

full_steps_per_rotation: 400

full_steps_per_rotation: 200

にしてください。
モーターの動きが反転する場合は

dir_pin: !PE2
dir_pin: !PB9

の!をそれぞれ削除してください

macro.cfg

[gcode_macro PREHEATING_CHAMBER]
gcode:
    {% set TARGET_TEMP = params.TARGET_TEMP|default(100)|float %}
      SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={TARGET_TEMP}
    {% set MINUTES = params.MINUTES|default(60)|float %}
      G4 P{1000 * 60 * MINUTES}
      TURN_OFF_HEATERS
[gcode_macro RESONANCES_X]
gcode:
      G28
      TEST_RESONANCES AXIS=X
## ~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv -o /tmp/shaper_calibrate_x.png
[gcode_macro RESONANCES_Y]
gcode:
      G28
      TEST_RESONANCES AXIS=Y
## ~/klipper/scripts/calibrate_shaper.py /tmp/resonances_y_*.csv -o /tmp/shaper_calibrate_y.png
[gcode_macro LASER_HOMING]
gcode:
      G28
      G90
      G1 Z100 F3000
[gcode_macro FILAMENT_IN]
gcode:
      M701

[gcode_macro FILAMENT_OUT]
gcode:
      M702

[gcode_macro CALIBRATE]
gcode:
    G28
    PROBE_CALIBRATE
    TESTZ Z=-5


[gcode_macro PROBE_M1]
gcode:
    TESTZ Z=-1

[gcode_macro PROBE_M01]
gcode:
    TESTZ Z=-0.1

[gcode_macro PROBE_M005]
gcode:
    TESTZ Z=-0.05

[gcode_macro PROBE_M002]
gcode:
    TESTZ Z=-0.02

[gcode_macro PROBE_M001]
gcode:
    TESTZ Z=-0.01

[gcode_macro PROBE_P002]
gcode:
    TESTZ Z=0.02

[gcode_macro PROBE_P001]
gcode:
    TESTZ Z=0.01

[gcode_macro CALIBRATE_END]
gcode:
    ACCEPT
    SAVE_CONFIG

[gcode_macro NOZZLE_CHANGE]
gcode:
    M104 S250
    G28
    G1 X-5.0 F3000
    G1 Z180 F3000

[gcode_macro M900]
gcode:
    SET_PRESSURE_ADVANCE ADVANCE={params.K|default(0)|float}

[gcode_macro M125]
gcode:
    SAVE_GCODE_STATE NAME=parking
    G91
    G1 Z{params.ZLIFT|default(10)|int} F3000
    G90
    G1 X{params.XPOS|default(-2)|int} Y{params.YPOS|default(160)|int} F3000
    RESTORE_GCODE_STATE NAME=parking

[gcode_macro RESUME]
rename_existing: RESUME_OLD
gcode:
    G91
    G92 E0 ;Reset Extruder
    G1 E0.5 F300
    G90
    ;SET_FILAMENT_SENSOR SENSOR=bear_ir ENABLE=1
    RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1
    RESUME_OLD

[gcode_macro PAUSE]
rename_existing: PAUSE_OLD
gcode:
    SAVE_GCODE_STATE NAME=PAUSE_state
    PAUSE_OLD
    G91
    G92 E0 ;Reset Extruder
    G1 E-2 F300
    M125 ; parking
    ;SET_FILAMENT_SENSOR SENSOR=bear_ir ENABLE=0


[gcode_macro CANCEL_PRINT]
rename_existing: CANCEL_PRINT_OLD
gcode:
    M300
    G91 ; relative
    G1 E-2 F300 ; retract
    {% if printer.toolhead.position.z <= 60 %}
        G90
        G0 Z70 F3000
        G91
    {% else %}
        G0 Z5 F3000
    {% endif %}

    G90
    G0 X30 Y30 F3000 ; park toolhead

    CLEAR_PAUSE
    TURN_OFF_HEATERS
    M84 ; disable steppers
    M107 ; fan off
    BED_MESH_CLEAR
    ;SET_FILAMENT_SENSOR SENSOR=bear_ir ENABLE=1
    CANCEL_PRINT_OLD
    SDCARD_RESET_FILE

[gcode_macro PIDTUNE]
gcode:
    {% set TARGET_TEMP = params.TARGET_TEMP|default(210)|float %}
  PID_CALIBRATE HEATER=extruder TARGET={TARGET_TEMP}
  SAVE_CONFIG

[gcode_macro BED_MESH_CALIBRATE]
rename_existing: BED_MESH_CALIBRATE_BASE
; gcode parameters
variable_parameter_AREA_START : 0,0
variable_parameter_AREA_END : 0,0
; the clearance between print area and probe area 
variable_mesh_area_offset : 5.0
; number of sample per probe point
variable_probe_samples : 3
; minimum and maximum probe count
variable_min_probe_count : 3
; scale up the probe count, the value should be 1.0 ~ < max/min probe count
variable_probe_count_scale_factor : 1.0
gcode:
    {% if params.AREA_START and params.AREA_END %}
        {% set bedMeshConfig = printer["configfile"].config["bed_mesh"] %}
        {% set safe_min_x = bedMeshConfig.mesh_min.split(",")[0]|float %}
        {% set safe_min_y = bedMeshConfig.mesh_min.split(",")[1]|float %}
        {% set safe_max_x = bedMeshConfig.mesh_max.split(",")[0]|float %}
        {% set safe_max_y = bedMeshConfig.mesh_max.split(",")[1]|float %}

        {% set area_min_x = params.AREA_START.split(",")[0]|float %}
		{% set area_min_y = params.AREA_START.split(",")[1]|float %}
		{% set area_max_x = params.AREA_END.split(",")[0]|float %}
		{% set area_max_y = params.AREA_END.split(",")[1]|float %}

        {% set meshPointX = bedMeshConfig.probe_count.split(",")[0]|int %}
        {% set meshPointY = bedMeshConfig.probe_count.split(",")[1]|int %}

        {% set meshMaxPointX = meshPointX %}
	    {% set meshMaxPointY = meshPointY %}


        {% if (area_min_x < area_max_x) and (area_min_y < area_max_y) %}
            {% if area_min_x - mesh_area_offset >=  safe_min_x %}
                {% set area_min_x = area_min_x - mesh_area_offset %}
            {% else %}
                {% set area_min_x = safe_min_x %}
            {% endif %}

            {% if area_min_y - mesh_area_offset >=  safe_min_y %}
                {% set area_min_y = area_min_y - mesh_area_offset %}
            {% else %}
                {% set area_min_y = safe_min_y %}
            {% endif %}

            {% if area_max_x + mesh_area_offset <=  safe_max_x %}
                {% set area_max_x = area_max_x + mesh_area_offset %}
            {% else %}
                {% set area_max_x = safe_max_x %}
            {% endif %}

            {% if area_max_y + mesh_area_offset <=  safe_max_y %}
                {% set area_max_y = area_max_y + mesh_area_offset %}
            {% else %}
                {% set area_max_y = safe_max_y %}
            {% endif %}

            {% set meshPointX = (meshPointX * (area_max_x - area_min_x) / (safe_max_x - safe_min_x)  * probe_count_scale_factor|float)|round(0)|int %}
            {% if meshPointX < min_probe_count %}
                {% set meshPointX = min_probe_count %}
            {% endif %}
            {% if meshPointX > meshMaxPointX %}
                {% set meshPointX = meshMaxPointX %}
            {% endif %}

            {% set meshPointY = (meshPointY * (area_max_y -area_min_y ) / (safe_max_y - safe_min_y) * probe_count_scale_factor|float)|round(0)|int %}
            {% if meshPointY < min_probe_count %}
                {% set meshPointY = min_probe_count %}
            {% endif %}
            {% if meshPointY > meshMaxPointY %}
                {% set meshPointY = meshMaxPointY %}
            {% endif %}

            BED_MESH_CALIBRATE_BASE mesh_min={area_min_x},{area_min_y} mesh_max={area_max_x},{area_max_y} probe_count={meshPointX},{meshPointY} samples={probe_samples|int}
        {% else %}
            BED_MESH_CALIBRATE_BASE
        {% endif %}
    {% else %}
        BED_MESH_CALIBRATE_BASE
    {% endif %}



[gcode_macro G29]
gcode:
  G28
  BED_MESH_CALIBRATE

[gcode_macro M600]
gcode:
 PAUSE
 
# load filament. Slow feed filament into the gear, fast load to cold zone then slow load to nozzle.
[gcode_macro M701]
gcode:
    SAVE_GCODE_STATE NAME=loading_filament
    M83
    G92 E0.0
    G1 E{params.FEED_LENGTH|default(10)|int} F200    ; slow feed filament
    G1 E{params.FAST_LOAD_LENGTH|default(50)|int} F2000    ; Fast load to cold zone
    G1 E{params.SLOW_LOAD_LENGTH|default(50)|int} F100     ; Slow load to nozzle
    G92 E0.0
    RESTORE_GCODE_STATE NAME=loading_filament

# Unload filament. Extrude a small amount, quick pull then slow pull
[gcode_macro M702]
gcode:
    SAVE_GCODE_STATE NAME=unloading_filament
    G91 ; set relative
    G1 E{params.FEED_LENGTH|default(30)|int} F200 
    G92 E0.0
    G1 E-{params.FAST_UNLOAD_LENGTH|default(70)|int} F3000  ; fast unload
    G92 E0.0
    G1 E-{params.SLOW_UNLOAD_LENGTH|default(40)|int} F1000  ; slow unload
    G92 E0.0
    RESTORE_GCODE_STATE NAME=unloading_filament

[gcode_macro FILAMENT_PURGE]
gcode:
  G91
  G1 E20.0 F180
  G90

[gcode_macro START_PRINT]
gcode:
    CLEAR_PAUSE
    M220 S100 ; reset feedrate
    
    G28
    
    G90
    G0 X-2 Y0 Z50 F3000 

    G28 Z ;re-home Z
    ;SET_GCODE_OFFSET Z=0.525
    ;BED_MESH_CALIBRATE AREA_START={params.AREA_START|default("0,0")} AREA_END={params.AREA_END|default("0,0")}
    ;BED_MESH_CALIBRATE AREA_START={print_pos_min_x},{print_pos_min_y} AREA_END={print_pos_max_x},{print_pos_max_y} ;ideamaker
    BED_MESH_CALIBRATE AREA_START={first_layer_print_min[0]},{first_layer_print_min[1]} AREA_END={first_layer_print_max[0]},{first_layer_print_max[1]} ;PlusaSlicer
    ;BED_MESH_PROFILE LOAD="default"


    ;M221 S93 ; Tuned flow

[gcode_macro END_PRINT]
gcode:
    G91 ; relative
    G1 E-2 F300
    {% if printer.toolhead.position.z <= 30 %}
        G90
        G0 Z70 F3000
        G91
    {% else %}
        G0 Z5 F3000
    {% endif %}
    G90 ; absolute pos
    G1 X30 Y170 F3000
    TURN_OFF_HEATERS ; heaters off
    M84 ; disable steppers
    M107 ; fan off
    BED_MESH_CLEAR

pa_calibrate.cfg


[gcode_macro PRINT_START]
gcode:
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(190)|float %}
    # Start bed heating
    M140 S{BED_TEMP}
    # Use absolute coordinates
    G90
    # Home the printer
    G28
    G0 X-7 F3000
    G0 Z1
    # Move the nozzle near the bed
    G1 Z5 F3000
    # Move the nozzle very close to the bed
    G1 Z0.15 F300
    # Wait for bed to reach temperature
    M190 S{BED_TEMP}
    # Set and wait for nozzle to reach temperature
    M109 S{EXTRUDER_TEMP}
    G0 X0
    G28
    BED_MESH_CALIBRATE


[gcode_macro PA_CALIBRATE]
gcode:

    {% set nozzle_diameter = params.NOZZLE_DIAMETER|default(0.4)|float %}
    {% set bed_size_x = 180|float %}
    {% set bed_size_y = 180|float %}
    {% set retract = 0.9 | float %}
    {% set retract_speed = 60 * 60|float %}
    {% set filament_diameter = 1.75|float %}
    {% set layer_height = params.LAYER_HEIGHT|default(0.2)|float %}
    {% set nozzle_line_ratio = params.NOZZLE_LINE_RATIO|default(1.13)|float %}
    {% set extrusion_multiplier = 1.0|float %}
    {% set bed_temp = params.BED_TEMP|default(60) %}
    {% set extruder_temp = params.EXTRUDER_TEMP|default(210) %}
    {% set slow_speed = params.SLOW_SPEED|default(25)|float %}
    {% set slow_length = 20 | float %}
    {% set fast_speed = params.FAST_SPEED|default(80)| float %}
    {% set fast_length = 40| float %}
    {% set travel_speed = 105 | float %}
    {% set pa_start = params.PA_START|default(0.005) | float %}
    {% set pa_end = params.PA_END|default(0.1) | float %}
    {% set pa_step = params.PA_STEP|default(0.005) | float %}
    {% set accel = params.MAX_ACCEL|default(3000) | float %}
    {% set deaccel = params.MAX_ACCEL_TO_DECEL|default(3000) | float %}
    {% set line_spacing = 5  | float %}
    ######################################################################################
    ####                           !!! DO NOT EDIT BELOW !!!                           ###
    ######################################################################################
    {% set spacing = line_spacing                                                       %}
    {% set fd      = filament_diameter                                                  %}
    {% set nd      = nozzle_diameter                                                    %}
    {% set ew      = nozzle_diameter * nozzle_line_ratio                                %}
    {% set em      = extrusion_multiplier                                               %}
    {% set lh      = layer_height                                                       %}
    {% set pa      = pa_start                                                           %}
    ##################################[ calculations ]####################################
    {% set slow_speed           = slow_speed * 60                               | float %}
    {% set fast_speed           = fast_speed * 60                               | float %}
    {% set travel_speed         = travel_speed * 60                             | float %}
    {% set lines    = (((pa_end - pa_start) / pa_step) + 1) | round(0, 'ceil')  | int   %}
    {% set p_width  = ((2 * slow_length + fast_length))                                 %}
    {% set p_height = (lines * (spacing + (nd * ew)))                                   %}
    {% set p_width_total  = p_width + 20                                                %}
    {% set p_height_total = p_height + 40                                               %}
    {% set start_x_pos    = (bed_size_x - p_width) / 2                                  %}
    {% set end_x_pos      = (bed_size_x + p_width) / 2                                  %}
    {% set start_y_pos    = (bed_size_y - p_height) / 2                                 %}
    {% set end_y_pos      = (bed_size_y + p_height) / 2                                 %}
    {% set x_pos          = start_x_pos                                                 %}
    {% set y_pos          = start_y_pos                                                 %}
    ########################[ check if test patter fits on bed ]##########################
    {% if p_height_total > bed_size_y or p_width_total > bed_size_x %}
      {% set exceeds_bed_area = true  %}
    {% else %}
      {% set exceeds_bed_area = false %}
    {% endif %}
    ######################################################################################
    ### Using Slic3r flow math to calculate extrusion amounts:                         ###
    ######################################################################################
    ### V_in  = (pi * fd ** 2) / 4 * E                                                 ###
    ### V_out = A * L * em                                                             ###
    ### V_in  = V_out                                                                  ###
    ### A     = (ew - lh) * lh + pi * (lh / 2) ** 2                                    ###
    ### E     = ((A * L * 4) / (pi * fd ** 2)) * em                                    ###
    ######################################################################################
    {% set pi      = 3.141592654                                     | float            %}
    {% set A       = (ew - lh) * lh + pi * (lh / 2) ** 2             | float            %}
    {% set E_prime = (((A * p_height * 4) / (pi * fd ** 2)) * 1.6)   | round(6, 'ceil') %}
    {% set E_frame = (((A * ( p_height+ 2 ) * 4) / (pi * fd ** 2)) * 1.6)   | round(6, 'ceil') %}
    {% set E_slow  = (((A * slow_length * 4) / (pi * fd ** 2)) * em) | round(6, 'ceil') %}
    {% set E_fast  = (((A * fast_length * 4) / (pi * fd ** 2)) * em) | round(6, 'ceil') %}
    {% set E_mark  = (((A * 20 * 4) / (pi * fd ** 2)) * em)          | round(6, 'ceil') %}
    ######################################################################################
    ### START CALIBRATION ###
    PRINT_START BED_TEMP={bed_temp} EXTRUDER_TEMP={extruder_temp}
    SET_VELOCITY_LIMIT ACCEL={accel} ACCEL_TO_DECEL={deaccel}
    ### PRIME NOZZLE ###
    M83 ; set relative extrusion mode
    G1 X{ x_pos - 10 } Y{ y_pos } F{ travel_speed } ; move to prime line start
    G1 Z{ layer_height } ; move Z down
    G1 Y{ y_pos + p_height } E{ E_prime } F { slow_speed } ; print first prime line
    G1 X{ x_pos - 5 } F{ travel_speed } ; move to second prime line start
    G1 Y{ y_pos } E{ E_prime } F { slow_speed } ; print second prime line
    G1 Z{ layer_height + 0.3 } ; move Z up
    ### FRAME ###
    G1 X{ x_pos } Y{ y_pos - 1 } F{ travel_speed }
    G1 Z{ layer_height } ; move Z down
    G1 Y{ y_pos + p_height + 1 } E{ E_frame } F { slow_speed } ; frame left 
    G1 X{ end_x_pos } Y{ y_pos - 1 } F{ travel_speed }
    G1 Z{ layer_height } ; move Z down
    G1 Y{ y_pos + p_height + 1 } E{ E_frame } F { slow_speed } ; frame right
    G1 E-{ retract } F{ retract_speed } ; retract
    G1 Z{ layer_height + 0.3 } ; move Z up
    G92 E0
    ### START TEST PATTERN ###
    SET_PRESSURE_ADVANCE EXTRUDER=extruder ADVANCE={ pa }
    {% for i in range(lines) %}
        {% if not loop.first %}
            {% set y_pos = y_pos + (i * (spacing + ew)) %}
            {% set pa = pa + (i * pa_step) %}
            SET_PRESSURE_ADVANCE EXTRUDER=extruder ADVANCE={ pa }
        {% endif %}
        M117 PA={ pa }
        ### move to line starting postion
        G1 X{ x_pos } Y{ y_pos } F{ travel_speed }
        G1 E{ retract } F{ retract_speed } ; un-retract
        G1 Z{ layer_height } ; move Z down
        ### print first slow part
        {% set x_pos = x_pos + slow_length %}
        G1 X{ x_pos } Y{ y_pos } E{ E_slow } F{ slow_speed }
        ### print fast part
        {% set x_pos = x_pos + fast_length %}
        G1 X{ x_pos } Y{ y_pos } E{ E_fast } F{ fast_speed }
        ### print second slow part
        {% set x_pos = x_pos + slow_length %}
        G1 X{ x_pos } Y{ y_pos } E{ E_slow } F{ slow_speed }
        G1 E-{ retract } F{ retract_speed } ; retract
        G1 Z{ layer_height + 0.3 } ; move Z up
        ### reset x position
        {% set x_pos = start_x_pos %}
    {% endfor %}

    END_PRINT

PrusaSlicer設定
開始Gcode

G90 ; use absolute coordinates
M83 ; extruder relative mode
M104 S[first_layer_temperature] ; set extruder temp
M140 S[first_layer_bed_temperature] ; set bed temp
M190 S[first_layer_bed_temperature] ; wait for bed temp
M109 S[first_layer_temperature] ; wait for extruder temp
G28
BED_MESH_CALIBRATE AREA_START={first_layer_print_min[0]},{first_layer_print_min[1]} AREA_END={first_layer_print_max[0]},{first_layer_print_max[1]} 
G1 Y3.0 X20 F3000
G1 Z3 F720
G1 Z0.2 F240
G1 X70.0 E4.0 F900
G1 X140.0 E10.0 F700
G1 X40.0 E3.0 F900
M221 S{if layer_height<0.075}100{else}95{endif}
G92 E0.0

終了Gcode

END_PRINT


この記事が気に入ったらサポートをしてみませんか?