Ender 5 Plus + Klipper
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:
- 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 ;-)
- 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.
- Extruder nozzle temperature - I skipped this because i already know what temperature the PLA i use need to be printed at on my E5+
- 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?
- 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
- Important considerations when using slicers!
- Probe calibration
- Adjusting bed leveling screws will also be nessesary to do now and then ;-)
- Calibrating PID settings is a wise thing to do everytime the environment around the printer changes 'significantly'.
- Calibrate KLipper extruder step-distance.
- Pressure advance: Calibrate extruder pressure.
- REMEMBER to slice as described in the tips for configuring a “slicer” application for use with Klipper.