Need help creating a config for a frankensteined ender3

Basic Information:

Printer Model: Ender 3 Pro (with BLtouch)
MCU / Printerboard: Creality Ender 5 Plus Silent Mainboard, V2.2

Hi I’m new to Klipper and this board :wink:

I tried finding a solution by myself but the infos here are a bit overwhelming to be honest…
searching the forums confused me more than it was helpful because here is so much information and I can’t decide what is helpful and what not.

I was running Marlin on my modified Ender 3 Pro and now trying to switch to Klipper with Octopi…

My Problem is I don’t know how to get a working printer.cfg for my device… Years ago I compiled my own Marlin firmware and only thing I remember that I was pulling my hair out getting a working Marlin firmware.

Now I’m looking for help how to start… writing my own printer config. I think I used a modified Ramps/MKS_Gen_L firmware to get this running and adapted parts from the original Ender3 Marlin firmware.

I hope someone can explain what I should keep in mind while setting this up. What are the differences between Marlin and Klipper configs? Is it that hard to create a working Klipper config for a custom printer? Hopefully there are some experts here that can take away a bit of my fears :wink:

Is there a good starting-point to get deeper into that?

thanks,
Dan

First of all forget about Octoprint with klipper. There are 2 native UI that works better: Fluidd and MainSail.

Second, try to understand how klipper works. There are a lot of youtubes and official documentation is priceless.

Third, for a custom cfg file, start with stock ender 3 pro cfg and modify it with your hardware (change all pins based on you motherboard cfg, change termistors, heaters, extruder config, etc). All examples are here. The main advantage for klipper is that you don’t need to recompile the firmware each time you change/modify hardware like in Marlin. Just edit the cfg and restart.

1 Like

Thanks a ton George,

that makes things a bit clearer, if I got you right there’s no need to compile and flash a new image… is there a general Klipper image that has to be flashed before? And, that’s my main problem, where do I get the right pin names for my board? I already looked into the example/printer configs before posting, but haven’t found that information… I’ll look for some howto’s on youtube… the ones I looked at before didn’t cover my questions…

edit: I read a lot about the pros and cons of using Klipper with Octopi, I personally see no downsides for sticking with Octopi, I like the plugin feature and overall it’s the most customizable frontend over all…

cheers
Dan

Use https://github.com/Klipper3d/klipper/blob/master/config/printer-creality-ender5plus-2019.cfg as basis and take the printer specific items like endstop positions etc from https://github.com/Klipper3d/klipper/blob/master/config/printer-creality-ender3pro-2020.cfg

1 Like

Thank you Sineos,

that’s a good idea, there should be the right pin names already… I see how far I get with mixing up these configs :wink:

cheers

Ok I managed to merge the 2 configs into one:

# This file contains pin mappings for the Creality customized Ender 3 Pro.
# This config uses a Creality v2.2 silent board with 2 Z-motors and BLtouch.
# 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 # changed from ender 3
position_max: 235 # changed from ender 3
homing_speed: 100 # ender 3 = 50

[stepper_y]
step_pin: PF6
dir_pin: PF7
enable_pin: !PF2
microsteps: 16
rotation_distance: 40
endstop_pin: ^PJ1
position_endstop: 0 # changed from ender-3 pro
position_max: 235 # changed from ender-3 pro
homing_speed: 100 # ender-3 pro = 50

[stepper_z]
step_pin: PL3
dir_pin: PL1
enable_pin: !PK0
microsteps: 16
rotation_distance: 8 # silent board 2.2.1 uses 4 on ender-5s
endstop_pin: probe:z_virtual_endstop
position_max: 250 # changed from ender-3 pro
position_min: 0 # changed from ender 3 pro
homing_speed: 10.0

[extruder]
#max_extrude_only_distance: 100.0 # changed from ender-3 pro
step_pin: PA4
dir_pin: PA6
enable_pin: !PA2
microsteps: 16
rotation_distance: 34.406 # changed from ender-3 pro
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB4
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK5
control: pid
# tuned for stock hardware with 200 degree Celsius target
pid_Kp: 21.527 # changed from ender-3 pro
pid_Ki: 1.063 # changed from ender-3 pro
pid_Kd: 108.982 # changed from ender-3 pro
min_temp: 0
max_temp: 250 # changed from ender-3 pro

[safe_z_home]
home_xy_position: 180, 180
speed: 100
z_hop: 10
z_hop_speed: 5

[bltouch]
sensor_pin: ^PD3
control_pin: PB5
x_offset: -45
y_offset: 0
z_offset: 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: 210, 210
probe_count: 3, 3

[heater_bed]
heater_pin: PH5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK6
control: pid
# tuned for stock hardware with 50 degree Celsius target
pid_Kp: 54.027 # changed from ender-3 pro
pid_Ki: 0.770 # changed from ender-3 pro
pid_Kd: 948.182 # changed from ender-3 pro
min_temp: 0
max_temp: 130

[fan]
pin: PH6

[mcu]
serial: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AK06VNAB-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] # not used
#lcd_type: st7920
#cs_pin: PB12
#sclk_pin: PB13
#sid_pin: PB15
#encoder_pins: ^PB14, ^PB10
#click_pin: ^!PB2

After that I stopped klipper and flashed with AVR and atmega2560 selected, using:
make flash FLASH_DEVICE=/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AG0KES5M-if00-port0
and had the following console output:

Flashing out/klipper.elf.hex to /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AG0KES5M-if00-port0 via avrdude

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.04s

avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: reading input file "out/klipper.elf.hex"
avrdude: writing flash (30152 bytes):

Writing | ################################################## | 100% 7.54s

avrdude: 30152 bytes of flash written
avrdude: verifying flash memory against out/klipper.elf.hex:
avrdude: load data flash data from input file out/klipper.elf.hex:
avrdude: input file out/klipper.elf.hex contains 30152 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 6.65s

avrdude: verifying ...
avrdude: 30152 bytes of flash verified

avrdude: safemode: Fuses OK (E:FD, H:D8, L:FF)

avrdude done.  Thank you.

After restarting the Pi and selecting /tmp/printer as serial port for printer in Octopi the terminal shows that klipper firmware is connected. thanks for that!

Now I’m looking for a bed nivelling solution :wink: I’ll search the forums…

cheers
Dan

Hello,

I have seen people use the beacon probe, it only works if you have a metal printing surface though. Vez 3D uses it (I think).

Happy Printing,
Blake

1 Like

Hi Blake,

my bad, I should have mentioned that I use a BLtouch already… but I got “out of range” error when using the bed_mesh function.

My bed mesh config was looking like this:

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

but I kept getting this in Octopi console when moving to the third mesh point, although the coordinates should’ve been valid IMO…

Send: G29
Recv: // probe at 67.000,31.300 is z=3.047500
Recv: // probe at 152.000,31.300 is z=2.997500
Recv: !! Move out of range: 237.000 31.300 8.000 [0.000]
Changing monitoring state from "Operational" to "Error"
Send: M112
Send: N2 M112*35
Send: N3 M104 T0 S0*34
Send: N4 M140 S0*97
Changing monitoring state from "Error" to "Offline after error"
Connection closed, closing down monitor

…as I wrote it’s an Ender-3 Pro model with 235x235 bed. But what I haven’t realized was that Klipper adds the X offset from the probe automatically and the third bed mesh point wasn’t 195 but 237 instead after that… I changed this to 190 and now everything is fine. I realized that by looking at the klippy.log - very useful!

cheers
Dan

1 Like

3…

You forgot Klipperscreen !
(for printing, not configuring)

I got KlipperScreen running with Octopi :wink:

I posted my solution in the configs section…

Ender-3 Pro Custom with Creality 2.2 Silent Board

Have fun!
Dan

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.