Sonic Pad to Ender 3v2 with Sprite Pro and CR Touch

Basic Information:

Printer Model: Ender 3V2
MCU / Printerboard: V4.2.2 Chipset GD32F303
klippy.log

Hi I’ve just received my Sonic pad and gone through the updates ready to connect to my printer.

This issue I have is that I have upgraded my Ender 3v2 with a Direct Drive Sprite Pro and a CR Touch all of which was working well. I also have replaced the standard Glass hotbed with the magnetic Creality PEI one, but for the benefit of setup I replaced the Glass bed ontop of the magnetic base as I couldn’t get the Z Offset low enough (but that’s another issue that can be ignored here)

The only options for an Ender 3V2 is with or with and CR touch, but NOTHING for a Sprite Hot end, and this is where it starts to go wrong. The setup progresses and allows me to manually set the Z Offset and then Tram the bed at the 4 corners, all good up to here. BUT the next screen is ABL and after homing the printhead moves OUTSIDE the print bed (at the front) due to the difference between the standard Ender 3V2 Hotend and location of the CR Touch and the Sprite Pro Hotend and it’s location to the CR touch. The Print head that move down and “hits” the bed freezing the setup process.

So, I think my options are

  1. Choose the Ender 3V2 without a CR Touch and get through the setup so I can hope there is the ability to tell the Sonic Pad (or Klipper) that I have the Sprite Pro and CR Touch

  2. Try to use the “Compile Firmware” option from selecting “Other” printer, but a quick looks at this doesn’t turn up anything for my V4.2.2 GD32F303 motherboard and chipset (and it definitely GD and not STM). and I have NO IDEA about the other stuff (Boot loader Offset, Clock Reference, Communications interface, USB ids, USB Vender ID and GPIO pins). So I guess that is a non-starter!!

  3. See if there is anyone with a printer.cfg file that matches my setup (or someone that can tell me how to go about creating one and where I can get the info from)

Sorry this was so long…

Regard

Simon

Hello @Mazza !

Please take note of this:

Uhhmmmmm. No looking good for a solution to this! The reply I got back from Creality support about 20 minutes ago was:-
<<< —
Adding a sprite extruder will make crtouch’s leveling point abnormal, which is not within the scope of the design. The default Ender 3v2 with crtouch firmware for the sonic pad is used without installing a Sprite extruder.
We recommend that you compile the firmware by yourself, you can refer to the custom firmware video
---->>
And I imaging that to be able to do this you need to be at a “Developer level” to understand how to do this correctly.

Any suggestion as to where my be a more appropriate forum to search for an answer?

Well, generally you have done yourself an ill favor with the Sonic Pad as can be clearly seen by
a) Your issue
b) The support by the manufacturer

Generally there should be a printer.cfg on this stupid thing. Most likely the only thing you have to correct is the mesh start and end points (min / max).
Refer to Configuration reference - Klipper documentation

I’ve got almost the same issue. Sonic pad with Ender 3 v2 and sprite pro extruder. I found under ‘Advanced options’ a listing for ‘Extrusion Configurations’. At the bottom is ‘Extruder Model’ with a drop down menu, and sure enough, Sprite Extruder is an option! However, it won’t save… I click Save, it thinks about it for a min, then goes right back to asking me to save… Frustrating!!

any fix to this ? im having the same issue where the calibration is off the bed and it wont save in settings

Hello @Trippnout !

Have you read all posts of this thread?

Hello @Mazza ,

I mean. . . Just buy a pi and be done with it. If you don’t want to pay for a pi, buy a btt pi, such as the cb1. I genuinely think that going this route will make it easier on yourself, but do what you think best. Btw I have compiled firmware many times for klipper, and it’s not hard at all. The fact that you have an ender 3 will also make it easier, because I’m 99% sure that someone else has the same setup as you; and you could just use their configuration.

Ps: It sounds like your main issue is the fact that it won’t home in the right place. This is simply your cr touch’s x and y offsets. If you can change those, that would fix the issue you seem to be having right now.

Hope This Helps,
Blake

Recently it’s not just. It is still difficult to get a Pi for a legit price.

1 Like

Maybe the right wording would have been: “Just do not buy a Sonic Pad” :wink:

1 Like

Hello,

My point exactly @Sineos. I also sort of meant buy a BTT cb1 or something of the sort. Arround 60 bucks for a BTT cb1 and it’s adapter board seems fine to me.

Hope this helps,
Blake

I have a ender 3 v2 with a sonic pad & sprite pro extruder.
I might of found a solution to your problem on reddit. you need to edit the printer.cfg file on the sonic pad with these updates (they worked for me with a bit of fine tuning)

[stepper_x]
step_pin: PC2
dir_pin: PB9
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA5
position_endstop: 0
position_max: 240
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: 236
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 #enable to use bltouch
# endstop_pin: ^PA7 #disable to use bltouch
# position_endstop: 0.0 #disable to use bltouch
position_max: 250
position_min: -10
homing_speed: 4
second_homing_speed: 1
homing_retract_dist: 2.0

[extruder]
step_pin: PB4
dir_pin: PB3
enable_pin: !PC3
microsteps: 16
gear_ratio: 42:12
rotation_distance: 26.359
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5
control: pid
pid_Kp: 23.561
pid_Ki: 1.208
pid_Kd: 114.859
min_temp: 0
max_temp: 300
[verify_heater extruder]
check_gain_time: 200
hysteresis: 5

[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: 73.008
pid_Ki: 2.421
pid_Kd: 550.294
min_temp: 0
max_temp: 130

[printer]
kinematics: cartesian
max_velocity: 500
max_accel: 3000
# max_accel_to_decel: 7000
max_z_velocity: 5
square_corner_velocity: 5.0
max_z_accel: 100

[bltouch]
sensor_pin: ^PB1
control_pin: PB0
x_offset: -32
y_offset: -41
#z_offset: 2.80
probe_with_touch_mode: true
stow_on_each_sample: false

[safe_z_home]
home_xy_position: 113,120 # Change coordinates to the center of your print bed
speed: 200
z_hop: 10 # Move up 10mm
z_hop_speed: 10

[bed_mesh]
speed: 150
mesh_min: 10,20 #need to handle head distance with bl_touch
mesh_max: 200,191 #max probe range
probe_count: 5,5
fade_start: 1
fade_end: 10
fade_target: 0
algorithm: bicubic

[bed_screws]
screw1:35,55
screw1_name:1
screw2:200,55
screw2_name:2
screw3:200,200
screw3_name:3
screw4:35,200
screw4_name:4
1 Like

Hello @p666buc !

Please: Either upload your code as file or put it between code braces:

Format

The way you did it is unfortunate because the formatting gets lost or gets weird and is of no use for other users.

1 Like

Thank you for the advise EddyMI3D. I think i’ve done it correct this time. im new to 3D printing & this is my 1st time posting on a forum.

1 Like

This is what i used to get my print up and going after reading every ones post…

4.2.2 board
Sprite Pro hot end
Home and bed probe position should be center.
Should be no boundary issues for mesh
Filament sensor was added
Using a Sonic Pad

# !Ender-3 V2 ABL
# printer_size: 220x220x250
# version: 3.6
# This file contains pin mappings for the stock 2020 Creality Ender-3 V2+CRtouch 
# 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.

###fluidd set
[virtual_sdcard]
path: ~/gcode_files



[display_status]

[pause_resume]

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


[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}

[gcode_macro CANCEL_PRINT]
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
gcode:
  TURN_OFF_HEATERS
  {% if "xyz" in printer.toolhead.homed_axes %}
    G91
    G1 Z4.5 F300
    G90
  {% else %}
    {action_respond_info("Printer not homed")}
  {% endif %}
    G28 X Y
  {% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
    G1 Y{y_park} F2000
    M84
  CANCEL_PRINT_BASE


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

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

[stepper_z]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PC3
microsteps: 16
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop  #enable to use bltouch
# endstop_pin: ^PA7   #disable to use bltouch
# position_endstop: 0.0  #disable to use bltouch
position_max: 250
position_min: -10
homing_speed: 4
second_homing_speed: 1
homing_retract_dist: 2.0

[extruder]
max_extrude_only_distance: 1000.0
step_pin: PB4
dir_pin: PB3
enable_pin: !PC3
microsteps: 16
rotation_distance: 26.359
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: 29.291
pid_Ki: 1.743
pid_Kd: 123.021
min_temp: 0
max_temp: 300

[idle_timeout]
timeout: 172800

[verify_heater extruder]
check_gain_time: 200
hysteresis: 5


[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: 67.104
pid_Ki: 0.544
pid_Kd: 2068.466
min_temp: 0
max_temp: 130

[fan]
pin: PA0

[fan_generic extruder_partfan]
# pin: PB15
pin: PC6
#max_power:
#shutdown_speed:
#cycle_time:
#hardware_pwm:
#kick_start_time:
#off_below:
#tachometer_pin:
#tachometer_ppr:
#tachometer_poll_interval:
#   See the "fan" section for a description of the above parameters.
#heater: extruder
#   Name of the config section defining the heater that this fan is
#   associated with. If a comma separated list of heater names is
#   provided here, then the fan will be enabled when any of the given
#   heaters are enabled. The default is "extruder".
#heater_temp: 50.0
#   A temperature (in Celsius) that the heater must drop below before
#   the fan is disabled. The default is 50 Celsius.
#fan_speed: 1.0
#   The fan speed (expressed as a value from 0.0 to 1.0) that the fan
#   will be set to when its associated heater is enabled. The default
#   is 1.0


[heater_fan heater_partfan]
pin: PB14
#max_power:
#shutdown_speed:
#cycle_time:
#hardware_pwm:
#kick_start_time:
#off_below:
#tachometer_pin:
#tachometer_ppr:
#tachometer_poll_interval:
#   See the "fan" section for a description of the above parameters.
#heater: extruder
#   Name of the config section defining the heater that this fan is
#   associated with. If a comma separated list of heater names is
#   provided here, then the fan will be enabled when any of the given
#   heaters are enabled. The default is "extruder".
#heater_temp: 50.0
#   A temperature (in Celsius) that the heater must drop below before
#   the fan is disabled. The default is 50 Celsius.
#fan_speed: 1.0
#   The fan speed (expressed as a value from 0.0 to 1.0) that the fan
#   will be set to when its associated heater is enabled. The default
#   is 1.0

[mcu]
serial: /dev/serial/by-id/usb_serial_1
restart_method: command

[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 5000
# max_accel_to_decel: 7000
max_z_velocity: 5
square_corner_velocity: 5.0
max_z_accel: 100

# [mcu rpi]
# serial: /tmp/klipper_host_mcu

# [adxl345]
# cs_pin: rpi:None
# spi_speed: 2000000
# spi_bus: spidev2.0

# [resonance_tester]
# accel_chip: adxl345
# accel_per_hz: 70
# probe_points:
#     117.5,117.5,10

[input_shaper]
shaper_type_x = mzv
shaper_freq_x = 89.8
shaper_type_y = mzv
shaper_freq_y = 35.2

[bltouch]
sensor_pin: ^PB1
control_pin: PB0
x_offset: -31.8
y_offset: -40.5
#z_offset: 0
speed: 20
samples: 1
sample_retract_dist: 8.0
stow_on_each_sample = false #high speed for bltoch
   
[safe_z_home]
home_xy_position: 147,154 # Change coordinates to the center of your print bed
speed: 200
z_hop: 10 # Move up 10mm
z_hop_speed: 10

[bed_mesh]
speed: 150
mesh_min: 10,20 #need to handle head distance with bl_touch
mesh_max: 200.2,191.5 #max probe range
probe_count: 5,5
fade_start: 1
fade_end: 10
fade_target: 0
algorithm: bicubic

[bed_screws]
screw1:30,25
screw1_name:1
screw2:200,25
screw2_name:2
screw3:200,195
screw3_name:3
screw4:30,195
screw4_name:4

[filament_switch_sensor filament_sensor]
pause_on_runout: True
switch_pin: !PA4

[include timelapse.cfg]

[exclude_object]


# [delayed_gcode AUTOSTART]
# initial_duration: 1
# gcode:
#   TURN_ON_MOTORS


[gcode_macro G29]				#界面中增加G29指令
gcode:
  G28
  bed_mesh_calibrate
  G1 X0 Y0 Z10 F4200
  # save_config

[gcode_arcs]
#resolution: 1.0

[gcode_macro BED_LEVEL]
gcode:
    G28
    BED_MESH_CALIBRATE


[gcode_macro Z_AXI_CALIBRATE]
gcode:
    G28
    PROBE_CALIBRATE

[gcode_macro SHAPER]
gcode:
    G28
    SHAPER_CALIBRATE

[gcode_macro PID]
gcode:
    G28
    PID_CALIBRATE HEATER=extruder TARGET=200
    PID_CALIBRATE HEATER=heater_bed TARGET=60

[gcode_macro Press_Advance_short]
gcode:
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005

[gcode_macro Press_Advance_long]
gcode:
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.020


# [output_pin my_led]
# pin: PB12
#   The pin to configure as an output. This parameter must be
#   provided.
#pwm: False
#   Set if the output pin should be capable of pulse-width-modulation.
#   If this is true, the value fields should be between 0 and 1; if it
#   is false the value fields should be either 0 or 1. The default is
#   False.
#static_value:
#   If this is set, then the pin is assigned to this value at startup
#   and the pin can not be changed during runtime. A static pin uses
#   slightly less ram in the micro-controller. The default is to use
#   runtime configuration of pins.
#value:
#   The value to initially set the pin to during MCU configuration.
#   The default is 0 (for low voltage).
#shutdown_value:
#   The value to set the pin to on an MCU shutdown event. The default
#   is 0 (for low voltage).
#maximum_mcu_duration:
#   The maximum duration a non-shutdown value may be driven by the MCU
#   without an acknowledge from the host.
#   If host can not keep up with an update, the MCU will shutdown
#   and set all pins to their respective shutdown values.
#   Default: 0 (disabled)
#   Usual values are around 5 seconds.
#cycle_time: 0.100
#   The amount of time (in seconds) per PWM cycle. It is recommended
#   this be 10 milliseconds or greater when using software based PWM.
#   The default is 0.100 seconds for pwm pins.
#hardware_pwm: False
#   Enable this to use hardware PWM instead of software PWM. When
#   using hardware PWM the actual cycle time is constrained by the
#   implementation and may be significantly different than the
#   requested cycle_time. The default is False.
#scale:
#   This parameter can be used to alter how the 'value' and
#   'shutdown_value' parameters are interpreted for pwm pins. If
#   provided, then the 'value' parameter should be between 0.0 and
#   'scale'. This may be useful when configuring a PWM pin that
#   controls a stepper voltage reference. The 'scale' can be set to
#   the equivalent stepper amperage if the PWM were fully enabled, and
#   then the 'value' parameter can be specified using the desired
#   amperage for the stepper. The default is to not scale the 'value'
#   parameter.

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 	  -0.122500, -0.017500, 0.082500, 0.180000, 0.260000
#*# 	  -0.177500, -0.057500, 0.035000, 0.117500, 0.167500
#*# 	  -0.242500, -0.105000, -0.017500, 0.055000, 0.097500
#*# 	  -0.345000, -0.185000, -0.070000, 0.015000, 0.067500
#*# 	  -0.400000, -0.232500, -0.127500, -0.032500, 0.032500
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = bicubic
#*# tension = 0.2
#*# min_x = 9.999999999999996
#*# max_x = 200.2
#*# min_y = 20.0
#*# max_y = 191.47
#*#
#*# [bltouch]
#*# z_offset = 2.850

1 Like

I’m using this custom gcode, but it’s giving me an end of filament error, what should I do because I’m not using a filament sensor on my ender 3v2

Hello @sandroforms !

Maybe you delete the filament_sensor section?

ok, now it’s normal! Can you tell me which part of this .cfg file can I change the position of the nozzle in relation to the table, using the option to manually adjust the height of the 4 points on the table? I noticed that the nozzle is a little forward in relation to the 4 screws that hold the table…

i have the same setup how would i input this code to the sonic pad