Ender 5 Plus + Klipper

From munkjensen.net/wiki

Purpose

I would like to unleash the power of my Ender 5 Plus(here after referenced as E5+) by removing the "bottleneck" that the weak mainboard processing power introduce. I also need to keep the cost as low as possible. Klipper supposedly should do just this, by moving all data processing from the E5+ mainboard on to the Raspberry Pi 4 i got connected already anyway.

First try/step will be a combo of Klipper and Octoprint. This makes it easy to flash the Klipper firmware onth the E5+ and I already got OctoPrint running at a Raspberry Pi 4 connected to my E5+ so...

Later i might try the Klipper + Moonraker + MainSail combo.

Klipper + OctoPrint combo

An installation guide is avilable on the Klipper website. I will follow that now.

make menuconfig will ask for microcontroller - the E5+ uses atmega2560. See printer-creality-ender5plus-2019.cfg

You(and I) MUST read, understand and perform the Config checks - Manual Leveling - Probe Calibration & Bed Leveling BEFORE trying to print!!

The overview page is a valuable resource of information so i got a lot of reading to do ;-)

Depending on the result of the first Benchy test print I believe that the next tuning should be done in this order:

  1. Resonance compensation: A tool to reduce ringing in prints. This was a challenge to my 50 year old eyes but it actuallt helped a lot so do not skip this - find a magnifying glass ;-)
  2. Extruder E steps - I skipped this because the test prints didn't show _any_ signs of over- or under-extrution. I made this calculator for Klipper tuning 10/11-2020.
  3. Extruder nozzle temperature - I skipped this because i already know what temperature the PLA i use need to be printed at on my E5+
  4. Pressure advance: Calibrate extruder pressure.
My printer.cfg looks like this -->
# This file contains pin mappings for the Creality Ender 5 Plus.
# Ender 5 Plus stock uses a Creality v2.2 board, similar to CR-20 Pro.
# To use this config, the firmware should be compiled for the AVR
# atmega2560.

# See the example.cfg file for a description of available parameters.

#[display]
#lcd_type: st7920
#cs_pin: PA3
#sclk_pin: PA1
#sid_pin: PC1
#encoder_pins: ^PD2, ^PD3
#click_pin: ^!PC0

[stepper_x]
step_pin: PF0
dir_pin: PF1
enable_pin: !PD7
step_distance: .0125
endstop_pin: ^PE5
position_endstop: 350
position_max: 350
homing_speed: 100

[stepper_y]
step_pin: PF6
dir_pin: PF7
enable_pin: !PF2
step_distance: .0125
endstop_pin: ^PJ1
position_endstop: 350
position_max: 350
homing_speed: 100

[stepper_z]
step_pin: PL3
dir_pin: PL1
enable_pin: !PK0
step_distance: .001266
endstop_pin: probe:z_virtual_endstop
position_max: 400
position_min: 0
homing_speed: 10.0

[extruder]
step_pin: PA4
dir_pin: PA6
enable_pin: !PA2
step_distance: .010526
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB4
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK5
#control: pid
#pid_Kp: 22.2
#pid_Ki: 1.08
#pid_Kd: 114
min_temp: 0
max_temp: 260
pressure_advance: 0.74
pressure_advance_smooth_time: 0.040

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

[bltouch]
sensor_pin: ^PD3
control_pin: PB5
x_offset: -41.5
y_offset: -5.8
#z_offset: 5
speed: 3.0
pin_up_touch_mode_reports_triggered: False

[bed_mesh]
speed: 100
horizontal_move_z: 8
mesh_min: 50, 50
mesh_max: 300,300
probe_count: 3,3

[heater_bed]
heater_pin: PH5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK6
#control: pid
#pid_Kp: 690.34
#pid_Ki: 111.47
#pid_Kd: 1068.83
min_temp: 0
max_temp: 130

[bed_screws]
screw1: 68,298
screw1_name: rear left screw
screw2: 349,298
screw2_name: rear right screw
screw3: 68,54
screw3_name: front left screw
screw4: 349,54
screw4_name: front right screw

[fan]
pin: PH6

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

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

[input_shaper]
shaper_freq_x: 57.7
shaper_freq_y: 67.5
shaper_type: mzv

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 22.391
#*# pid_ki = 1.044
#*# pid_kd = 120.070
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 64.458
#*# pid_ki = 0.820
#*# pid_kd = 1266.594
#*#
#*# [bltouch]
#*# z_offset = 2.299

Klipper + OctoPrint problems I ran into

  • The touch display on the printer does not work with Klipper and some search results suggests that the display on E5+ is not supported by Klipper :-/... i will keep look for solutions, but it is not essential to me because I use the OctoPrint webinterface. The stock 4.3 inch TFT LCD display is marked "DMT48270C043_06WT". Maybe that can help in the searce for solutions.
  • OctoPrint reported errors in the Gcode that turned out beeing related to hidden ascii codes in the start_gcode. Solution was found somewhere on the Intarwebs i cannot recall. I copied the Start and End G-code from Cura int Notepad++ and manually replaced all spaces with new ones. I could not see any difference on the spaces before and after BUT it worked so who cares ;-)
  • I lost http and ssh connection to the Raspberry Pi 3/4 into the Pressure Advance cube test print. The test print finished anyway so it was only network connections that died. I powercycled the Pi and everything seemed okay again!? It happened again and i suspect it is the WiFi connection that somehow locks up so I disabled the WiFi interface and connected the Raspberry Pi with an ethernet cable.

Klipper + Moonraker + MainSail combo

will be addressed later... if i see any advantages in it ;-)

Things to check B4 we ditch OctoPrint

  • Can Cura interact with Mailsail?

Reference pages

  • My cry for help in the Danish Facebook group Den seriøse Ender-3/Ender-5 gruppe
  • Klipper is a 3d-Printer firmware. It combines the power of a general purpose computer with one or more micro-controllers.
  • OctoPrint provides a snappy web interface for controlling consumer 3D printers.
  • Moonraker is a Python 3 based web server that exposes APIs with which client applications may use to interact with Klipper.
  • Mainsail is a lightweight & responsive web interface for the Klipper 3D printer firmware.

Notes for the future