Skip to main content

This is mostly for my own reference but it may help someone in need. The 3D Touch finally works after a lot of trial and error.

Important settings:

stow_on_each_sample: True
probe_with_touch_mode: False
pin_up_touch_mode_reports_triggered: False

The last line is set to false even though the Klipper test reports true!
You may need to try a combo of true and false of these settings.
I’ve seen other threads set pin_up_touch_mode_reports_triggered to true to get it working depending on the model.
stow_on_each_sample is slower but it doesn’t work as well otherwise.

Here’s what it looks like when NOT working:

Some keywords: 3D Touch not working, blinking fast. BL Touch Clone (3D Touch) fails calibration. Red Blink. Blue Blink.

Here’s my entire printer.cfg  — keep in mind it has pressure advance, bed leveling, etc. custom settings.

# 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.

 

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

 

[stepper_y]
step_pin: PB8
dir_pin: PB7
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA6
position_endstop: 5 #End-stop is not at 0
position_max: 235 #If endstop is 0 235 will grind
position_min: 5 #Prevents moving to 0 and griding in this direction
homing_speed: 65

 

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

 

#################################
########### LEVELING ############
#################################

 

[bltouch]
sensor_pin: ^PB1
control_pin: PB0
# x_offset -44, y_offset -7 for CR Touch, verified by measurement (same as used in marlin also)
x_offset: -38.5
y_offset: -10.5
speed:60 #z-hop speed while probing – 30
stow_on_each_sample: true
z_offset = 2.01 #2.10 #2.29 #Higher numbers = closer to bed
probe_with_touch_mode: False
#pin_up_reports_not_triggered: False
pin_up_touch_mode_reports_triggered: False

 

[bed_mesh]
speed: 350 #80
horizontal_move_z: 3.5 #z-hop height while probing
mesh_min: 20, 20
mesh_max: 200, 200
probe_count: 3,3
algorithm: bicubic
fade_start: 1
fade_end: 10
fade_target: 0

 

#Only used during homing
[safe_z_home]
home_xy_position: 117.5,117.5 # Change coordinates to the center of your print bed
#home_xy_position: 50,50
z_hop: 5 # Move up mm
z_hop_speed: 60

 

#################################
###########   OTHER  ############
#################################

 

[extruder]
pressure_advance: 0.66
pressure_advance_smooth_time: 0.08 #Default 0.04
step_pin: PB4
dir_pin: PB3
enable_pin: !PC3
microsteps: 16
#rotation_distance: 33.24 #34.406 #Default (200*16/93)
rotation_distance:  34.406 #Default (200*16/93)
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 215 degree Celsius target # PID_CALIBRATE HEATER=extruder TARGET=215
pid_Kp=28.938
pid_Ki=2.031
pid_Kd=103.092
min_temp: 0
max_temp: 250

 

[input_shaper]
shaper_freq_x: 40.42
shaper_freq_y: 33.90
shaper_type: mzv

 

[heater_bed]
heater_pin: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
control: pid
# tuned for stock hardware with 60 degree Celsius target # PID_CALIBRATE HEATER=heater_bed TARGET=60
#pid_Kp: 54.027
#pid_Ki: 0.770
#Wpid_Kd: 970 #948.182
pid_Kp=67.455
pid_Ki=0.963
pid_Kd=1181.314
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: 4500 #3000 – Default
max_accel_to_decel: 4500 #3000 – Default
max_z_velocity: 5
max_z_accel: 100
square_corner_velocity: 5

 

[virtual_sdcard]
path: ~/gcode_files

 

[display_status]

 

[pause_resume]

 

#PAUSE
[gcode_macro PAUSE]
description: Pause the actual running print
rename_existing: PAUSE_BASE
# change this if you need more or less extrusion
variable_extrude: 1.0
gcode:
  ##### read E from pause macro #####
  {% set E = printer[“gcode_macro PAUSE”].extrude|float %}
  ##### set park positon for x and y #####
  # default is your max posion from your printer.cfg
  {% set x_park = printer.toolhead.axis_maximum.x|float – 5.0 %}
  {% set y_park = printer.toolhead.axis_maximum.y|float – 5.0 %}
  ##### calculate save lift position #####
  {% set max_z = printer.toolhead.axis_maximum.z|float %}
  {% set act_z = printer.toolhead.position.z|float %}
  {% if act_z < (max_z – 2.0) %}
      {% set z_safe = 2.0 %}
  {% else %}
      {% set z_safe = max_z – act_z %}
  {% endif %}
  ##### end of definitions #####
  PAUSE_BASE
  G91
  {% if printer.extruder.can_extrude|lower == ‘true’ %}
    G1 E{E} F2100
  {% else %}
    {action_respond_info(“Extruder not hot enough”)}
  {% endif %}
  {% if “xyz” in printer.toolhead.homed_axes %}
    G1 Z{z_safe} F900
    G90
    G1 X{x_park} Y{y_park} F6000
  {% else %}
    {action_respond_info(“Printer not homed”)}
  {% endif %}

 

#RESUME
[gcode_macro RESUME]
description: Resume the actual running print
rename_existing: RESUME_BASE
gcode:
  ##### read E from pause macro #####
  {% set E = printer[“gcode_macro PAUSE”].extrude|float %}
  #### get VELOCITY parameter if specified ####
  {% if ‘VELOCITY’ in params|upper %}
    {% set get_params = (‘VELOCITY=’ + params.VELOCITY)  %}
  {%else %}
    {% set get_params = “” %}
  {% endif %}
  ##### end of definitions #####
  {% if printer.extruder.can_extrude|lower == ‘true’ %}
    G91
    G1 E{E} F2100
  {% else %}
    {action_respond_info(“Extruder not hot enough”)}
  {% endif %}
  RESUME_BASE {get_params}

 

#CANCEL_PRINT
[gcode_macro CANCEL_PRINT]
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
gcode:
  G1 Z10 F3600 #move up
  M18 #disable steppers
  #TURN_OFF_HEATERS
  CANCEL_PRINT_BASE

 

#Disable Steppers
[gcode_macro DISABLE_STEPPERS]
gcode:
  M18

 

#*# <———————- SAVE_CONFIG ———————->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*#     0.055000, 0.022500, 0.047500
#*#     0.002500, -0.047500, 0.010000
#*#     -0.022500, -0.055000, -0.082500
#*# tension = 0.2
#*# min_x = 20.0
#*# algo = bicubic
#*# y_count = 3
#*# mesh_y_pps = 2
#*# min_y = 20.0
#*# x_count = 3
#*# max_y = 200.0
#*# mesh_x_pps = 2
#*# max_x = 200.0

 

Leave a Reply