Ender 3 V2 + CR-Touch

Hi guys, here is my config.

I’m using the original nozzle, CR-touch, CR-touch bracket.

printer.cfg

# This file contains pin mappings for the stock 2020 Creality Ender 3
# V2. To use this config, during "make menuconfig" select the
# STM32F103 with a "28KiB bootloader" and serial (on USART1 PA10/PA9)
# communication.

# If you prefer a direct serial connection, in "make menuconfig"
# select "Enable extra low-level configuration options" and select
# serial (on USART3 PB11/PB10), which is broken out on the 10 pin IDC
# cable used for the LCD module as follows:
# 3: Tx, 4: Rx, 9: GND, 10: VCC

# Flash this firmware by copying "out/klipper.bin" to a SD card and
# turning on the printer with the card inserted. The firmware
# filename must end in ".bin" and must not match the last filename
# that was flashed.

# See docs/Config_Reference.md for a description of parameters.

[include fluidd.cfg]
[include macro.cfg]

[stepper_x]
step_pin: PC2
dir_pin: PB9
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA5
position_endstop: 0
position_max: 255
homing_speed: 50

[stepper_y]
step_pin: PB8
dir_pin: PB7
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA6
position_endstop: 0
position_max: 235
homing_speed: 50

[stepper_z]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PC3
microsteps: 16
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop #^PA7
#position_endstop: 0.0
position_max: 250
position_min: -3

[extruder]
max_extrude_only_distance: 100.0
step_pin: PB4
dir_pin: PB3
enable_pin: !PC3
microsteps: 16
rotation_distance: 32.0 #34.406
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5
#control: pid
# tuned for stock hardware with 200 degree Celsius target
#pid_Kp: 21.527
#pid_Ki: 1.063
#pid_Kd: 108.982
min_temp: 0
max_temp: 270
min_extrude_temp: 0
pressure_advance: 0.274

[heater_bed]
heater_pin: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
#control: pid
# tuned for stock hardware with 50 degree Celsius target
#pid_Kp: 54.027
#pid_Ki: 0.770
#pid_Kd: 948.182
min_temp: 0
max_temp: 130

[fan]
pin: PA0

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

[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100

[bltouch]
sensor_pin: ^PB1
control_pin: PB0
x_offset: -45.5
y_offset: -6
#z_offset: 1.35 #1.40

[safe_z_home]
home_xy_position: 117.5,117.5 # Change coordinates to the center of your print bed
z_hop: 10                 # Move up 10mm z_hop_speed: 5

[bed_mesh]
speed: 120
horizontal_move_z: 5
mesh_min: 5, 5
mesh_max: 200, 200
probe_count: 5,5
algorithm: bicubic
fade_start: 1
fade_end: 10
fade_target: 0

[screws_tilt_adjust]
screw1_name: Middle
screw1: 155,122.5
screw2: 70.5,37.5
screw2_name: front left screw
screw3: 235,37.5
screw3_name: front right screw
screw4: 235,207.5
screw4_name: rear right screw
screw5: 70.5,207.5
screw5_name: rear left screw
horizontal_move_z: 10
speed: 50
screw_thread: CW-M4

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 26.196
#*# pid_ki = 1.648
#*# pid_kd = 104.130
#*#
#*# [bltouch]
#*# z_offset = 1.430
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 	  0.162500, 0.155000, 0.145000, 0.100000, 0.075000
#*# 	  0.137500, 0.167500, 0.165000, 0.097500, 0.047500
#*# 	  0.190000, 0.185000, 0.177500, 0.192500, 0.112500
#*# 	  0.207500, 0.245000, 0.242500, 0.192500, 0.120000
#*# 	  0.202500, 0.160000, 0.165000, 0.235000, 0.125000
#*# tension = 0.2
#*# min_x = 5.0
#*# algo = bicubic
#*# y_count = 5
#*# mesh_y_pps = 2
#*# min_y = 5.0
#*# x_count = 5
#*# max_y = 200.0
#*# mesh_x_pps = 2
#*# max_x = 200.0
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 74.295
#*# pid_ki = 1.457
#*# pid_kd = 947.264

macro.cfg

# ABL
[gcode_macro G29]
variable_parameter_AREA_START : 0,0
variable_parameter_AREA_END : 0,0
gcode:
    BED_MESH_CLEAR
    BED_MESH_CALIBRATE AREA_START={params.AREA_START} AREA_END={params.AREA_END}
    G0 X150 Y150 Z150 F6000

# level gantry
[gcode_macro G34]
gcode:
    Z_TILT_ADJUST

# Park toolhead
[gcode_macro M125]
gcode:
    SAVE_GCODE_STATE NAME=parking
    PLAY_SINGLE_FEEDBACK_SOUND
    G91
    G1 Z{params.ZLIFT|default(10)|int} F3000
    G90
    G1 X{params.XPOS|default(15)|int} Y{params.YPOS|default(15)|int} F3000
    RESTORE_GCODE_STATE NAME=parking


# 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
    PLAY_SINGLE_FEEDBACK_SOUND
    PRINT MSG="Loading Fil."
    M83
    G92 E0.0
    MIN_TEMP_CHECK
    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
    PLAY_SINGLE_FEEDBACK_SOUND
    PRINT MSG="Ready"
    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
    PLAY_SINGLE_FEEDBACK_SOUND
    PRINT MSG="Unloading Fil."
    MIN_TEMP_CHECK
    G91 ; set relative
    G1 E{params.FEED_LENGTH|default(10)|int} F100 
    G92 E0.0
    G1 E-{params.FAST_UNLOAD_LENGTH|default(70)|int} F2000  ; fast unload
    G92 E0.0
    G1 E-{params.SLOW_UNLOAD_LENGTH|default(40)|int} F1000  ; slow unload
    G92 E0.0
    PLAY_SINGLE_FEEDBACK_SOUND
    PRINT MSG="Ready"
    RESTORE_GCODE_STATE NAME=unloading_filament

# filament change 
[gcode_macro M600]
gcode:
    PAUSE
    PRINT MSG="Filament change!"

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


[gcode_macro MIN_TEMP_CHECK]
gcode: 
    {% if printer.extruder.target != 0 %} # if there is a setpoint for extruder
        {% if printer.extruder.temperature < printer.extruder.target %} # if not reached, heat
            PLAY_LONG_FEEDBACK_SOUND
            M109 S{printer.extruder.target|float}
        {% endif %}
    {% else %} # if no setpoint for extruder
        PLAY_LONG_FEEDBACK_SOUND
        M109 S{params.T|default(200)|float}
    {% endif %}
    PLAY_DOUBLE_FEEDBACK_SOUND
    
# START_PRINT EXTRUDER_TEMP={material_print_temperature_layer_0} BED_TEMP={material_bed_temperature_layer_0} AREA_START=%MINX%,%MINY% AREA_END=%MAXX%,%MAXY% FILAMENT_TYPE={material_type}
[gcode_macro START_PRINT]
variable_parameter_EXTRUDER_TEMP: 190
variable_parameter_BED_TEMP: 60
; gcode parameters for area bed mesh
variable_parameter_AREA_START : 0,0
variable_parameter_AREA_END : 0,0
variable_parameter_FILAMENT_TYPE : "PLA"
gcode:
    CLEAR_PAUSE
    M220 S100 ; reset feedrate
    ;SET_FILAMENT_SENSOR SENSOR=bear_ir ENABLE=1
    
    {% if printer.homed_axes != "XYZ" %}
        PRINT MSG="Homing..."
        G28
        PRINT MSG="Aligning Z..."
        G34 ; level gantry
    {% else %}
        PRINT MSG="Homing..."
        G28
    {% endif %}
    
    G90
    G0 X90 Y90 Z50 F3000 

    SET_FAN_SPEED FAN=filter_fan SPEED=0.5 ; filter fan slow mode
    SET_FAN_SPEED FAN=bed_fan SPEED=1.0 ; turn on bed fan

    PRINT MSG="Waiting for temperature"

    ; preheat temp
    M140 S{params.BED_TEMP|default(60)|float - 10}
    M104 S150

    ; wait
    M190 S{params.BED_TEMP|default(60)|float - 10}

    ; set real temp
    M140 S{params.BED_TEMP|default(60)|float}
    M104 S{params.EXTRUDER_TEMP|default(200)|float}

    ; wait
    M190 S{params.BED_TEMP|default(60)|float}
    M109 S{params.EXTRUDER_TEMP|default(200)|float}

    M300
    PRINT MSG="Homing Z..."
    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_PROFILE LOAD="default"

    SET_FILAMENT_PROFILE TYPE={params.FILAMENT_TYPE|default("PLA")}

    PRINT MSG="Prime Line"
    G92 E0 ;Reset Extruder
    G0 X-3 Y180 F3000 ; move outside print area
    G1 Z0.2 F1000 ;Move to start position
    G1 Y95 E9 F1000 ;Draw the first line
    G1 Y85 F3000 ;Move to side a little
    G1 Y0 E21 F1500.0 ;Draw the second line
    G92 E0 ;Reset Extruder
    G1 Z2.0 F1000 ;Move Z Axis up

    M221 S93 ; Tunned flow
    PRINT MSG="{printer.print_stats.filename}"

[gcode_macro END_PRINT]
gcode:
    PRINT MSG="Done printing!"
    M300
    G91 ; relative
    G1 E-2 F300
    {% if printer.toolhead.position.z <= 60 %}
        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
    SET_FAN_SPEED FAN=filter_fan SPEED=1.0 ; filter fan max speed
    UPDATE_DELAYED_GCODE ID=TURN_OFF_FILTER_FAN_TIMER DURATION=600 ; set timer to turn off after 10 mins

[gcode_macro CANCEL_PRINT]
rename_existing: CANCEL_PRINT_OLD
gcode:
    PRINT MSG="Aborted!"
    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 Y170 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
    SET_FAN_SPEED FAN=filter_fan SPEED=1.0 ; filter fan max speed
    UPDATE_DELAYED_GCODE ID=TURN_OFF_FILTER_FAN_TIMER DURATION=600 ; set timer to turn off after 10 mins

[gcode_macro DISABLE_XY_MOTOR]
gcode:
	SET_STEPPER_ENABLE STEPPER=stepper_x ENABLE=0
	SET_STEPPER_ENABLE STEPPER=stepper_y ENABLE=0

[gcode_macro M300]
gcode:
    SET_PIN PIN=BEEPER_pin VALUE={params.S|default(100)|int}
    G4 P{params.P|default(1000)|int}
    SET_PIN PIN=BEEPER_pin VALUE=0

[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
    PRINT MSG="{printer.print_stats.filename}"
    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
    PRINT MSG="Paused!"

[gcode_macro PLAY_SINGLE_FEEDBACK_SOUND]
gcode:
    M300 S100 P100
    M300 S1 P100

[gcode_macro PLAY_DOUBLE_FEEDBACK_SOUND]
gcode:
    M300 S100 P100
    M300 S1 P100
    M300 S100 P100
    M300 S1 P100

[gcode_macro PLAY_LONG_FEEDBACK_SOUND]
gcode:
    M300 S100 P1000
    M300 S1 P100

[gcode_macro UPDATE_BED_MESH]
gcode:
    PRINT MSG="Homing..."
    G28
    PRINT MSG="Aligning Z..."
    G34
    PRINT MSG="Probing..."
    BED_MESH_CLEAR
    BED_MESH_CALIBRATE
    PRINT MSG="Saving..."
    SAVE_CONFIG
    
[delayed_gcode TURN_OFF_PSU]
initial_duration: 0.
gcode:
    {% if printer.idle_timeout.state == "Idle" or printer.idle_timeout.state == "Ready" %}
        {% if printer.extruder.temperature < 50 %}
            M84 ; disable steppers
            {action_call_remote_method("set_device_power", device="PSU", state="off")}
        {% else %}
            UPDATE_DELAYED_GCODE ID=TURN_OFF_PSU DURATION=300
        {% endif %}
    {% endif %}


# run on startup
[delayed_gcode INIT]
initial_duration: 1
gcode:
    PRINT MSG="Init..."
    ; enable auto power off
    UPDATE_DELAYED_GCODE ID=TURN_OFF_PSU DURATION=1200
    ; set deault state of enclosure led
    SAVE_VARIABLE VARIABLE=led_status VALUE=1
    PRINT MSG="Ready"

# send custom msg
# OUTPUT_TARGET 0 : Both LCD and terminal , 1 : Terminal only , 2 : LCD only
[gcode_macro PRINT]
variable_parameter_MSG : ''
variable_parameter_OUTPUT_TARGET : 0
gcode:
    {% if params.OUTPUT_TARGET|default(0)|int == 0 %}
        M117 {params.MSG | string}
        { action_respond_info((params.MSG) | string)}
    {% elif params.OUTPUT_TARGET|default(0)|int == 1 %}
        { action_respond_info((params.MSG) | string)}
    {% else %}
         M117 {params.MSG | string}
    {% endif %}


[delayed_gcode TURN_OFF_FILTER_FAN_TIMER]
gcode:
    {% if printer.idle_timeout.state == "Idle" %}
        SET_FAN_SPEED FAN=filter_fan SPEED=0.0 ; turn off filter fan
    {% endif %}

[gcode_macro DUMP_VARS]
gcode:
   {% for name1 in printer %}
      {% for name2 in printer[name1] %}
        {% if (name1 != "configfile") and (name1 != "bed_mesh" and name2!="mesh_matrix") and (name1 != "mcu" and name2!="mcu_constants") and (name1 != "mcu" and name2!="last_stats") and (name2 != "color_data") and (andm1 != "gcode_macro") %}
            { action_respond_info("printer['%s'].%s = %s" % (name1, name2, printer[name1][name2])) }
        {% else %}
            { action_respond_info("printer['%s'].%s = %s" % (name1, name2, "...")) }
        {% endif %}
      {% endfor %}
   {% endfor %}

[gcode_macro AUTO_SAVE_CONFIG]
gcode:
    {% if printer.configfile.save_config_pending %}
        PRINT MSG="Saving config"
        SAVE_CONFIG
    {% endif %}

[gcode_macro TOGGLE_LED]
gcode:
    {% if printer.save_variables.variables.led_status|int == 1 %}
        SAVE_VARIABLE VARIABLE=led_status VALUE=0
        SET_LED LED=led RED=0.13 GREEN=0.23 BLUE=0.23
    {% else %}
        SAVE_VARIABLE VARIABLE=led_status VALUE=1
        SET_LED LED=led RED=0.58 GREEN=1 BLUE=1
    {% endif %}
    { action_respond_info("Toggle led.")}


[gcode_macro CHECK_MESH]
gcode:
    {% set ns = namespace(min_point = printer.bed_mesh.probed_matrix[0][0] ,max_point = printer.bed_mesh.probed_matrix[0][0]) %}

    {% for data_row in printer.bed_mesh.probed_matrix %}
        {% for probe_point in data_row %}
            {% if ns.min_point > probe_point %}
                {% set ns.min_point =  probe_point %}
            {% endif %}
            {% if ns.max_point < probe_point %}
                {% set ns.max_point =  probe_point %}
            {% endif %}
        {% endfor %}
    {% endfor %}

    { action_respond_info( "Mesh delta : " + (ns.max_point - ns.min_point) | string)}
    {% if ns.max_point - ns.min_point > params.THRESHOLD|default(0.3)|float %}
        { action_respond_info("Mesh Error!")}
        ;CANCEL_PRINT
    {% else %}
        { action_respond_info("Mesh OK!")}
    {% endif %}

[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 : 2
; minimum and maximum probe count
variable_min_probe_count : 3
; scale up the probe count, the vlaue 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 %}

            PRINT MSG="Set custom mesh area to ({area_min_x},{area_min_y}),({area_max_x},{area_max_y})" OUTPUT_TARGET=1

            {% 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 %}

            PRINT MSG="Set custom mesh matrix to {meshPointX}x{meshPointY}" OUTPUT_TARGET=1
            PRINT MSG="Mesh: {meshPointX}x{meshPointY}" OUTPUT_TARGET=2

            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 %}
            PRINT MSG="Invalid custom mesh parameters, probe using default setting" OUTPUT_TARGET=1
            PRINT MSG="Mesh: default" OUTPUT_TARGET=2
            BED_MESH_CALIBRATE_BASE
        {% endif %}
    {% else %}
        PRINT MSG="Invalid custom mesh parameters, probe using default setting" OUTPUT_TARGET=1
        PRINT MSG="Mesh: default" OUTPUT_TARGET=2
        BED_MESH_CALIBRATE_BASE
    {% endif %}


[gcode_macro DISPLAY_GCODE_PROGRESS]
variable_parameter_TOTAL_LAYER : 0
variable_parameter_CURRENT_LAYER : 0
variable_parameter_PROGRESS : 0
variable_parameter_REMAIN : 0
gcode:
    #PRINT MSG="Layer:{params.CURRENT_LAYER}/{params.TOTAL_LAYER}  Progress:{params.PROGRESS}%  Remain:{params.REMAIN}" OUTPUT_TARGET=1
    PRINT MSG="GCODE_PROGRESS,{params.CURRENT_LAYER}/{params.TOTAL_LAYER},{params.PROGRESS},{params.REMAIN}" OUTPUT_TARGET=2

[gcode_macro SET_FILAMENT_PROFILE]
gcode:
  {% if params.TYPE|default("PLA") == "PLA" %}
    PRINT MSG="Set filament profile : PLA" OUTPUT_TARGET=1
    # M221 S91 ; Tunned flow
    SET_PRESSURE_ADVANCE ADVANCE=0.05
  {% elif params.TYPE|default("PLA") == "PETG" %}
    PRINT MSG="Set filament profile : PETG" OUTPUT_TARGET=1
    # M221 S91 ; Tunned flow
    SET_PRESSURE_ADVANCE ADVANCE=0.08
  {% elif params.TYPE|default("PLA") == "ABS" %}
    PRINT MSG="Set filament profile : ABS" OUTPUT_TARGET=1
    # M221 S91 ; Tunned flow
    SET_PRESSURE_ADVANCE ADVANCE=0.04
  {% elif params.TYPE|default("PLA") == "PC" %}
    PRINT MSG="Set filament profile : PC" OUTPUT_TARGET=1
    # M221 S91 ; Tunned flow
    SET_PRESSURE_ADVANCE ADVANCE=0.07
  {% elif params.TYPE|default("PLA") == "CFPC" %}
    PRINT MSG="Set filament profile : CFPC" OUTPUT_TARGET=1
    # M221 S91 ; Tunned flow
    SET_PRESSURE_ADVANCE ADVANCE=0.05
  {% else %}
    PRINT MSG="Set filament profile : Defalut" OUTPUT_TARGET=1
    # M221 S91 ; Tunned flow
    SET_PRESSURE_ADVANCE ADVANCE=0.00
  {% endif %}


[gcode_macro DEBUG]
gcode:
    {% set tmp = "this is test" %}
    PRINT MSG="{tmp.split(',')|length}"