- Frame: Ender 3 Pro (v1)
- X axis
- transmission: belt
- rail: linear rail
- Y axis
- transmission: belt
- rail: linear rail
- Z axis
- transmission: dual lead screw
- rails: triple V-Wheels on V-Slots
- X axis
- Main Board: BigTreeTech SKR v1.4 Turbo
- Stepper drivers: BigTreeTech TMC2209
- Display: Original Universal LCD 12864 Creality CR10
- Bed: Creality Glass
- Extruder:
- Type: Direct
- Hotend: Mellow BMG Aero Volcano
- Gears: Mellow BMG Aero
Klipper can be easely installed by using KIAUH linux app.
Printer configuration is located at ~/printer_data/config
.
Printer configuration can be modified in Klipper web by accessing the menu Configuration
(keyboard shortcut X
).
-
cd ~/klipper/ && make menuconfig
- Set the following:
Micro-controller Architecture (LPC176x (Smoothieboard)) Processor model (lpc1769 (120 MHz))
-
make flash
- install
crowsnest
viakiauh
- select
Y
to update moonraker configuration
- select
- copy
crowsnest.cfg
to klipper printer configuration directory - add camera in fluidd settings
- restart klipper host
The following gcodes are valid for OrcaSlicer
, PrusaSlicer
or SuperSlicer
.
START_PRINT FIRST_LAYER_BED_TEMP=[first_layer_bed_temperature] FIRST_LAYER_NOZZLE_TEMP=[first_layer_temperature]
END_PRINT
X and Y axes calibration can be achieved by using the CaliFlower calibrator. 1
- set a big
z_offset
value under[bltouch]
section, inprinter.cfg
file - restart the firmware
- make sure the nozzle is clean of plastics; also the the bed surface is flat and free of debree
- home the machine with
G28
- issue a
PROBE_CALIBRATE
command - if the nozzle does not move to a position above the automatic probe point, then issue
ABORT
and perform the XY probe offset calibration - get the returned Z position and substract or add a distance dz by issuing
TESTZ Z=-dz
- check with the thickness of a paper the distance between the nozzle and the bed
- repet substracting or adding by issuing
TESTZ
command until distance is met; by issuingTESTZ Z=+
will add (or substract ifZ=-
) half the distance last used - when accuracy is met issue a
ACCEPT
command - save the setting by issuing
SAVE_CONFIG
- restart firmware by issuing
RESTART
- home the machine with
G28
- issue a
PROBE_ACCURACY
command and wait for the results
- make sure the the bed surface free of debree
- home the machine with
G28
- issue
BED_MESH_CALIBRATE
and wait to finish - give the profile a name
BED_MESH_PROFILE SAVE=<name>
- save the setting by issuing
SAVE_CONFIG
- give the profile a name
BED_MESH_PROFILE SAVE=<name>
- save the setting by issuing
SAVE_CONFIG
- get a mesh by the profile name
BED_MESH_PROFILE LOAD=<name>
- get a mesh by the profile name
BED_MESH_PROFILE REMOVE=<name>
Issue a PID_CALIBRATE HEATER=extruder TARGET=200
command
Issue a PID_CALIBRATE HEATER=heater_bed TARGET=60
command
OrcaSlicer provides built-in calibration model 2 for temperature. See calibration menu.
OrcaSlicer provides built-in calibration model 2 for retractions. See calibration menu.
Once the proper value was calculated according the described procedure in documentation, update Klipper settings and update the slicer:
- update the tuned parameter inside
[firmware_retraction]
section - issue a
RESTART
command to restart the firmware - setup slicer:
- set 0 retraction length (PrusaSlicer/SuperSlicer:
Printer Settings -> Extruder 1 -> Retraction -> Length
) - disable wipe (PrusaSlicer/SuperSlicer:
Printer Settings -> Extruder 1 -> Retraction -> Wipe while retracting
) - enable use firmware retractions (PrusaSlicer/SuperSlicer:
Printer Settings -> General -> Advanced -> Use firmware retractions
)
- set 0 retraction length (PrusaSlicer/SuperSlicer:
Skew can be determined and corrected after determining the parameters for it.
A calibrator for Skew is the CaliFlower calibrator. 1
Commands to add skew data with determined values:
SET_SKEW XY=99.79,100.31,70.6
SKEW_PROFILE SAVE=CaliFlower
SAVE_CONFIG
SKEW_PROFILE LOAD=CaliFlower
Resonance compensation 3
-
Install needed libs
sudo apt update sudo apt install python3-numpy python3-matplotlib libatlas-base-dev libopenblas-dev
-
Install python libs
~/klippy-env/bin/pip install -v numpy /usr/bin/python3 -m pip install pyserial --break-system-packages
-
Enable the SPI on Raspberry PI
sudo raspi-config
Make the RPI a secondary MCU 4
To be able to use the SPI, I2C or any other protocol from Raspberry PI, the RPI board needs to be made a secondary MCU.
Steps below describe how to make Raspberry PI a secondary MCU.
-
Enable the klipper-mcu service
cd ~/klipper/ sudo cp ./scripts/klipper-mcu.service /etc/systemd/system/ sudo systemctl enable klipper-mcu.service
-
Change configuration to build for the Raspberry PI
cd ~/klipper/ sudo cp ./scripts/klipper-mcu.service /etc/systemd/system/ sudo systemctl enable klipper-mcu.service
Set "Microcontroller Architecture" to "Linux process," then save and exit.
-
Build and install the firmware on the Raspberry PI
sudo service klipper stop make flash sudo service klipper start
-
(Optional) If issues with permission add current user
pi
totty
groupsudo usermod -a -G tty pi
In klipper console type:
ACCELEROMETER_QUERY CHIP=adxl345
-
connect the accelerator board to the Raspberry PI 5
-
Find resonance for axis X
TEST_RESONANCES AXIS=X
this will generate a.csv
file in/tmp/
-
Find resonance for axis Y
TEST_RESONANCES AXIS=Y
this will generate a.csv
file in/tmp/
-
Analyze
.csv
files for each of the axis by using thecalibrate_shaper.py
tool~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv -o /tmp/shaper_calibrate_x.png ~/klipper/scripts/calibrate_shaper.py /tmp/resonances_y_*.csv -o /tmp/shaper_calibrate_y.png
-
The output of last step:
- the console output contains the final result with recommended shaper and the resonance frequency
- are two
.png
files which contain details about the analysis results
Travel Acceleration:
- 7000 does not skip on X but skips on Y axis
[2]: Klipper documentation overview
[3]: Build and Flash the micro controller
[4]: Pressure advance
[5]: Slicers macros
[8]: Firmware Retraction
[10]: Resonance compensation