Creality Ender-3 Pro Custom with Creality 2.2 Silent Board + second Z motor and BLtouch

thanks to jamonterrell

# This file contains pin mappings for a customized Creality Ender 3 Pro.
# This config uses a Creality v2.2 Silent Board with second Z-motor and BLtouch.
# The heatbreak cooling fan is connected to the pins for the second extruder
# and starts automatically when the nozzle heats up and is powered off when the
# nozzle-temp is below 40°C.

# NOTE the BLtouch z offset is set to 0.0 to avoid any errors! please measure your
# z offset before use and update the config with your value.

# Aditionally added PRINT_START and PRINT_END macros to use with slicers
# just add these instead of start and end GCODE.

# To use this config, the firmware should be compiled for the AVR
# atmega2560.

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

[stepper_x]
step_pin: PF0
dir_pin: PF1
enable_pin: !PD7
microsteps: 16
rotation_distance: 40
endstop_pin: ^PE5
position_endstop: 0
position_max: 235
homing_speed: 100

[stepper_y]
step_pin: PF6
dir_pin: PF7
enable_pin: !PF2
microsteps: 16
rotation_distance: 40
endstop_pin: ^PJ1
position_endstop: 0
position_max: 235
homing_speed: 100

[stepper_z]
step_pin: PL3
dir_pin: PL1
enable_pin: !PK0
microsteps: 16
rotation_distance: 8 # silent board 2.2: 4
endstop_pin: probe:z_virtual_endstop
position_max: 250
position_min: 0
homing_speed: 10.0

[extruder]
#max_extrude_only_distance: 100.0 # ender3pro.cfg
step_pin: PA4
dir_pin: PA6
enable_pin: !PA2
microsteps: 16
rotation_distance: 34.406
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB4
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK5
control: pid
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 250

[safe_z_home]
home_xy_position: 160, 124
speed: 100
z_hop: 10
z_hop_speed: 10
move_to_previous: True

[bltouch]
sensor_pin: ^PD3
control_pin: PB5
x_offset: -42
y_offset: -6.3
z_offset: 0.0
speed: 3.0
pin_up_touch_mode_reports_triggered: False

[bed_mesh]
speed: 100
horizontal_move_z: 8
mesh_min: 25, 25
mesh_max: 190, 203
probe_count: 3, 3

[heater_bed]
heater_pin: PH5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK6
control: pid
pid_Kp: 54.027
pid_Ki: 0.770
pid_Kd: 948.182
min_temp: 0
max_temp: 130

[fan]
pin: PH6



[heater_fan heatbreak_cooling_fan]
pin: PH4
max_power: 1.0
shutdown_speed: 0.0
off_below: 0.3
heater: extruder
heater_temp: 40.0
fan_speed: 1.0

[mcu]
serial: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AG0KES5M-if00-port0

#[filament_switch_sensor filament_sensor] # not available
#switch_pin:PE4

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

#[display]
#lcd_type: st7920
#cs_pin: PB12
#sclk_pin: PB13
#sid_pin: PB15
#encoder_pins: ^PB14, ^PB10
#click_pin: ^!PB2

[gcode_macro PRINT_START]
gcode:
    #Get Printer built volume dimensions
    {% set X_MAX = printer.toolhead.axis_maximum.x|default(100)|float %}
    {% set Y_MAX = printer.toolhead.axis_maximum.y|default(100)|float %}
    {% set Z_MAX = printer.toolhead.axis_maximum.z|default(100)|float %}
    #Get Nozzle diameter and filament width for conditioning
    {% set NOZZLE = printer.extruder.nozzle_diameter|default(0.4)|float %}
    {% set FILADIA = printer.extruder.filament_diameter|default(1.75)|float %}

    #Set Start coordinates of priming lines (enable / disable for your chosen bed)
    #{% set X_START = 25.0|default(10.0)|float %} # for glass-bed with clamps
    #{% set Y_START = 35.0|default(20.0)|float %} # for glass-bed with clamps
    {% set X_START = 10.0|default(10.0)|float %} # for regular magnetic bed
    {% set Y_START = 15.0|default(20.0)|float %} # for regular magnetic bed

    #Calculate Primer line extrusion volume and filament length
    {% set PRIMER_WIDTH = 0.75 * NOZZLE %}                    
    {% set PRIMER_HEIGHT = 0.70 * NOZZLE %}           
    {% set PRIMER_SECT = PRIMER_WIDTH * PRIMER_HEIGHT %}    
    {% set PRIMER_VOL = PRIMER_SECT * (X_MAX - 3 * X_START) %}    
    {% set FILA_SECT = 3.1415 * ( FILADIA / 2.0)**2 %}          
    {% set FILA_LENGTH = 1.55 * PRIMER_VOL / FILA_SECT %}      

    #Get Bed and Extruder temperature from Slicer GCode
    {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(190)|float %}
    #Preheat nozzle and bed
    M104 S{EXTRUDER_TEMP} T0                        
    M140 S{BED_TEMP}                                

    #Home
    #G28

    #Move up to clean bed
    G1 Y{Y_MAX - 25} Z{Z_MAX/4.0} F6000                

    #Heat nozzle and bed
    M190 S{BED_TEMP}                               
    M109 S{EXTRUDER_TEMP} T0                       

    #Precondition extruder
    G92 E0     
    G1 X{X_START} Y{Y_START} Z{PRIMER_HEIGHT} F6000.0     
    G1 X{X_MAX - 2 * X_START} Y{Y_START} Z{PRIMER_HEIGHT} E{FILA_LENGTH} F2000.0 
    G1 X{X_MAX - 2 * X_START} Y{Y_START + PRIMER_WIDTH} Z{PRIMER_HEIGHT} E{FILA_LENGTH}
    G1 X{X_START} Y{Y_START + PRIMER_WIDTH} Z{PRIMER_HEIGHT} E{FILA_LENGTH} F2000.0 
    G92 E0            
    G1 Z10.0 F600        
    G1 Z0.2 F600        
    G1 Z10.0 F600
    
[gcode_macro PRINT_END]
gcode:
    G91 # Relative Move
    G1 E-2 Z0.2 F2400 # Retract and Raise
    M104 S0 T0 # Nozzle Temp 0
    M140 S0 # Bed Temp 0
    M400
    G1 Z30
    M400
    G90 # Absolute Move
    G0 X0
    M400
    G0 Y220
    
[gcode_macro G29]
gcode: 
  G28
  BED_MESH_CALIBRATE
  BED_MESH_PROFILE SAVE=p1
  G1 X0 Y0 Z5 F4000

Have fun!
Dan

Is v2.2 silent board compatible with klipper?I read that it isnt compatible because tmc 2208 drivers doesnt have uart connection with the mcu?Please give some information about this.I want to use klipper with my ender5 plus.

Hi Hypercube…

unfortunately for me everything is running great with my frankensteined Ender 3 Pro…
But to be honest never heard of any mcu problems - so I can’t say anything about problems with the tmc 2208 motor drivers.

So decide for yourself if you wanna risk any problems…

IMO you can do nothing wrong, if you save your actual firmware before trying a new one… if you can’t get it running, revert it back.

Good luck!

I dont have any actual firmware file since i bought it second hand and it came with insanity automation firmware but i think i could find the firmware from somewhere on the internet.When i look at your config file i cant see any special command line that specifies the drivers are tmc2208.As far as i know we would need to specify what stepper drivers we have,but the situation might be different than motherboards with individual step sticks.Thanks for your attention

Hola! Esta plantilla me serviría para mí Ender 3 Pro con la MB 2.2.1 atmega2560, CR-Touch y doble motor en Z? Compré el Creality Sonic Pad y la MB que le puse a mi impresora corresponde con la de una Ender 5, pero no puedo utilizar ese perfil claramente, para hacer uno custom me pide que introduzca un printer.cfg y no sé cómo generarlo!

Hello @GoDRush !

Please write in English.

Sorry, I’m going to use the google translator to transcribe it into English.

Hello! Would this template serve me Ender 3 Pro with the MB 2.2.1 atmega2560, CR-Touch and dual engine in Z? I bought the Creality Sonic Pad and the MB I put on my printer corresponds to that of an Ender 5, but I can’t use that profile clearly, to make one custom asks me to enter a printer.cfg and I don’t know how to generate it!

I think this should work… I created this for the 2.2.1 board and dual-Z…

The printer version itself seems unnecessary to me as long it’s an Ender3 with dual-Z…

I don’t remember but maybe you have to disable auto-levelling function if you don’t have any.

cheers Dan

1 Like

I have problems with the endstop of the Z axis, the X and the Y work perfectly, but when doing home in Z it lowers the axis a little and considers the operation to be unsuccessful.
I have it configured as follows:

[stepper_z]
step_pin: PL3
dir_pin: PL1
enable_pin: !PK0
microsteps: 16
rotation_distance: 4
endstop_pin: ^PC4
position_endstop: 0
position_max: 250
position_min: 0
homing_speed: 10.0

maybe someone else can help… I use BLTouch for Z endstop… have you deactivated bltouch in the code?

I have the CR-Touch disabled because I haven’t put it in the printer yet, or at least I think I will disable it by putting # at the beginning. Is that what causes the problem?

If I put the # here, the font size increases, but that would be the configuration

disabling with # is the right way to comment out code in that case… :wink:

I don’t remember the process of writing this config anymore, but may you have to change YOUR Z-stop control_pin to the one I set up for the bltouch??? Just a guess…

but don’t rely on my thoughts…

[stepper_z]
...
endstop_pin: probe:z_virtual_endstop

to

endstop_pin: PB5

not sure if this is right…

the pin-names are all in the attached picture above.

It improved but did not solve it, but it was moving backwards, I solved it by putting ! to the dir_pin.
Now it goes all the way in the right direction, but when I touch the swtich at the end of the stroke it doesn’t stop.

At the end I put the endstop_pin PD3 and it worked, it brakes when playing the endstop switch, but it throws another error at me:

!! Move out of range: -0.013 -0.013 10,000 [0.000]

Foy you have not uploaded a klippy.log up to now, it’s hard to say.

But have a look on the bed_mesh coordinates.

klippy.log (20.3 KB)

Sorry, I didn’t know I had to upload that, and I didn’t understand about the bed_mesh

Out Of Range means you have defined values (maybe for your bed levelling) which are out of bounds… this tells you to adjust some settings to the bedsize and also Z shouldn’t be below “0”… except you defined that.

Hope you figured it out by yourself now… it’s no rocketscience, maybe try to read the docs about the configuration options.

Uhhh! Sonic Pad. And without the config.

printer.cfg (5.0 KB)

Attached is my printer.cfg for you to review.
EddyMI3D, this Klipper stuff is very new to me, what are you trying to say with the Sonic Pad message?
With the help of chatGPT, I managed to set the “endstop_pin: PD3”, which I assume is the correct one because when using the “QUERY_ENDSTOPS” command, it shows OPEN when not triggered and TRIGGERED when activated.
The X and Y axes perform homing well, whether done separately or together, the issue arises when homing the Z axis, so I don’t understand the error because, as I understand it, those two negative numbers correspond to X and Y.
I want to clarify again that I created the profile based on the standard for an Ender 5 because I installed that other printer’s motherboard on my Ender 3 Pro, I bought a second Z-axis motor and the CR-Touch, but I haven’t installed them yet… I’m not sure what other information might be helpful.
Sorry for being so bothersome, I know you’re putting in a lot of effort and dedicating a lot of time to help me, I really appreciate it!

hmm I think what the error is trying to tell you is that your Z axxis is running below 0 or above 250…

in your case I assume below 0.

you can try setting -1 instead of 0, to see if that changes the behavior. But it’s not recommended while printing because of the possibility that you run the nozzle right down into your bed…

In other words: the motor avoids to drive to a position which is not in the defined Z range.