Skip to content

Commit

Permalink
Merge pull request #188 from Frix-x/develop
Browse files Browse the repository at this point in the history
Klippain v4.0.0
  • Loading branch information
Frix-x authored Jun 11, 2023
2 parents 52632ec + f4ce997 commit 4baf0ea
Show file tree
Hide file tree
Showing 185 changed files with 2,818 additions and 1,388 deletions.
65 changes: 18 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,71 +1,42 @@
# Klippain

> Klippain - the pain-free recipe for (french)bread and butter Klipper configuration!
> Klippain - The pain-free recipe for (french)bread and butter Klipper configuration!
![Klippain](./docs/klippain.png)
Klippain is a generic, modular, and highly customizable Klipper configuration for CoreXY 3D printers. Designed for use on various machines, it has been reported working correctly on Voron V2.4, Voron Trident, Voron V0, TriZero, VZbot, Ender5, etc... I even use it myself on an heavily modified Prusa i3 MK3s.

Klippain is a generic and modular Klipper configuration for CoreXY 3D printers. I use it on my Voron V2.4 (V2.1237), my Voron Trident, my custom TriZero, and my heavily modified Prusa i3 MK3s. Other CoreXY printer owners (Voron, VZbot, Ender5, ...) have also reported no issues using it.
![Klippain](./docs/klippain.png)

The files are frequently updated with new features that I create, but also with merged PRs from users. **Always** look, think, understand, and adjust to your own. But that should work in most cases. You can reach me in the Voron Discord: I'm **Frix_x#0161**.
The configuration is regularly updated with new features and merged PRs from users. You can reach me on the Voron Discord as **Frix_x#0161**.

Yes, "pain" \pɛ̃\ is the french word for bread: there is no pain in pain, only joy. Thanks to the french channel "honhonhonbaguette-FR" on the Voron Discord for this joke and name suggestion!
Fun fact: "pain" \pɛ̃\ is the French word for bread, so there's no pain in this pain—only joy! Thanks to the French channel "honhonhonbaguette-FR" on the Voron Discord for the joke and name suggestion!


## Features

Klippain is designed to be generic: you can use it on a wide variety of machines by simply selecting and enabling the hardware and software options that you need.

The **adaptive bed mesh** functionality I wrote some time ago, the **custom calibration macros** for pressure advance & flow, the **automated input shaper workflows**, and the **vibrations measurement** macros and scripts are among the custom features available out of the box.
Klippain is designed for versatility. By selecting and enabling the desired hardware and software options, it can be used on a wide range of machines.

Here is a [list with the details and usage instruction for all the features](./docs/features.md). There are also some installation instructions in their documentation if you want to use them standalone in your own personal configuration.
Custom features available out of the box include **adaptive bed mesh**, **custom printer calibration macros**, **automated input shaper workflows**, and **vibration measurement** macros and scripts, ... Refer to the [features documentation](./docs/features.md) for a detailed list and usage instructions.


## Installation

Installing Klippain should not be too complicated if you are already familiar with the Klipper ecosystem. Make sure you already have Klipper, Moonraker, and a WebUI is installed on your printer. You can use [KIAUH](https://github.com/th33xitus/kiauh) if you don't.

Then, to run the installation script, connect to your printer using SSH and type the following command:
```
wget -O - https://raw.githubusercontent.com/Frix-x/klippain/main/install.sh | bash
```

This script will backup your old configuration, download this GitHub repository into your RaspberryPi home directory and setup the entire environment in `~/printer_data/config`. You'll also be asked if you want to select and install some MCU board_pins templates. This is recommended as it will allow a very fast filling of your `mcu.cfg` user file, but you can always do it manually afterwards if you prefer.


## Configuration

To configure and customize everything for your printer, there are some additional steps required. Please follow them carefully!
To install Klippain, first ensure you have already Klipper, Moonraker, and a WebUI installed on your printer. If not, use [KIAUH](https://github.com/th33xitus/kiauh).

#### 1. MCUs settings
If you didn't install any MCU templates during the installation (or want to customize the default wiring), you will need to modify your `mcu.cfg` file by following the [MCU pinout and wiring documentation](./docs/pinout.md).
Then, run the installation script using the following command over SSH. This script will backup your old configuration, download this GitHub repository to your RaspberryPi home directory, and set up Klippain in `~/printer_data/config`. You will also be prompted to select and install MCU board_pins templates. This is recommended for faster `mcu.cfg` setup, but you can do it manually later if you prefer.

Also, do not forget to fill in the serial_port or can_uuid of your MCUs. If needed, you can refer to the [official klipper documentation](https://www.klipper3d.org/FAQ.html#wheres-my-serial-port) to find them.

#### 2. Printer settings, overrides and variables
Open the `printer.cfg` file and uncomment the lines that correspond to your printer hardware or software components in order to enable them (such as extruder type, XY motors, Z motors, QGL vs Z_TILT, etc...). This will customize the behavior of this generic Klipper configuration and will also enable the corresponding macros.

Then it's time to customize the configuration by editing the `overrides.cfg` user file by following the [overrides documentation and examples](./docs/overrides.md). You can tweak the machine dimensions, limits, currents, and everything else in all this config sections. You can also use the overrides to invert motor directions, etc...

When Klipper is able to boot, modify and adapt the `variables.cfg` file to suit the configuration of your machine. This file adds additional customization to how all the macros will behave (coordinates of everything, enable/disable some software features, etc...).

#### 3. Initial startup of the machine
Before printing for the first time, you will need to **check all the features very carefully to avoid any problems on your machine!** You can start by following the [config checks section from the official Klipper documentation](https://www.klipper3d.org/Config_checks.html).
Then, also check that you are able to attach/detach the mechanical probe (if you use one), do a QGL/Z_TILT, have correct coordinates for all the used components (purge bucket, physical Z endstop, etc...). You should also check your first layer calibration (and the `switch_offset` parameter of the automatic z calibration plugin if you use it), etc...

Finally when everything seems to work, you need to add the custom print start gcode to your slicer. Here is an example for SuperSlicer:
```
START_PRINT EXTRUDER_TEMP={first_layer_temperature[initial_extruder] + extruder_temperature_offset[initial_extruder]} BED_TEMP=[first_layer_bed_temperature] MATERIAL=[filament_type] CHAMBER=[chamber_temperature] SIZE={first_layer_print_min[0]}_{first_layer_print_min[1]}_{first_layer_print_max[0]}_{first_layer_print_max[1]}
```bash
wget -O - https://raw.githubusercontent.com/Frix-x/klippain/main/install.sh | bash
```

Also add the custom print end gcode to your slicer:
Finally, Klippain requires a few simple steps to configure and customize it for your printer: please follow the [configuration guide](./docs/configuration.md).

```
END_PRINT
```
> **Warning**
>
> General rule to keep the auto-update feature working: **never modify Klippain files directly**, but instead add overrides as per the documentation! To proceed, you can modify all the pre-installed templates in your config root folder (`printer.cfg`, `mcu.cfg`, `variables.cfg` and `overrides.cfg`) as they will be preserved on update.

## Sponsor the work
## Support the Project

I try to be open to any user request if it fits into this configuration design. So feel free to open an issue or a PR if you want your specific hardware device or new feature to be supported.
I strive to accommodate user requests that align with this configuration's design. Feel free to open an issue or a PR for specific hardware device support or new features.

Alternatively, you can also buy me a coffee or help me buy new hardware to support my work :)
Alternatively, consider buying me a coffee or contributing to new hardware purchases to support my work!
8 changes: 8 additions & 0 deletions config/hardware/axis/X/0.9deg.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[stepper_x]
rotation_distance: 40
microsteps: 64
full_steps_per_rotation: 400

# We also include the default wiring and speeds from here to avoid duplicating
[include default_wiring.cfg]
[include default_speed.cfg]
8 changes: 8 additions & 0 deletions config/hardware/axis/X/1.8deg.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[stepper_x]
rotation_distance: 40
microsteps: 64
full_steps_per_rotation: 200

# We also include the default wiring and speeds from here to avoid duplicating
[include default_wiring.cfg]
[include default_speed.cfg]
12 changes: 12 additions & 0 deletions config/hardware/axis/X/TMC/TMC2209.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# X TMC2209 definition

[gcode_macro _USER_VARIABLES]
variable_x_driver: "TMC2209"
gcode:

[tmc2209 stepper_x]
uart_pin: X_TMCUART
interpolate: False
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0
19 changes: 19 additions & 0 deletions config/hardware/axis/X/TMC/TMC2209_V0specific.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# X TMC2209 definition with some custom TMC parameters to reduce the
# VFAs (Vertical Fine Artifacts) produced by the first V0 LDO motors kit


# Including first the default X TMC2209 file
[include TMC2209.cfg]

# Then applying overrides for specific V0 parameters from LDO
[tmc2209 stepper_x]
run_current: 0.7
# stealthchop_threshold: 999999
driver_TBL: 2
driver_TOFF: 2
driver_HEND: 1
driver_HSTRT: 4
driver_PWM_LIM: 8
driver_PWM_GRAD: 8
driver_PWM_FREQ: 1
driver_PWM_REG: 4
4 changes: 4 additions & 0 deletions config/hardware/axis/X/default_speed.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[stepper_x]
homing_speed: 60
homing_retract_dist: 0
homing_positive_dir: true
5 changes: 5 additions & 0 deletions config/hardware/axis/X/default_wiring.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[stepper_x]
step_pin: X_STEP
dir_pin: X_DIR
enable_pin: !X_ENABLE
endstop_pin: X_STOP
26 changes: 0 additions & 26 deletions config/hardware/axis/XY/0.9d_xy.cfg

This file was deleted.

26 changes: 0 additions & 26 deletions config/hardware/axis/XY/1.8d_xy.cfg

This file was deleted.

42 changes: 0 additions & 42 deletions config/hardware/axis/XY/1.8d_xy_V0specific.cfg

This file was deleted.

9 changes: 0 additions & 9 deletions config/hardware/axis/XY/default_speed.cfg

This file was deleted.

17 changes: 0 additions & 17 deletions config/hardware/axis/XY/default_wiring.cfg

This file was deleted.

8 changes: 8 additions & 0 deletions config/hardware/axis/Y/0.9deg.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[stepper_y]
rotation_distance: 40
microsteps: 64
full_steps_per_rotation: 400

# We also include the default wiring and speeds from here to avoid duplicating
[include default_wiring.cfg]
[include default_speed.cfg]
8 changes: 8 additions & 0 deletions config/hardware/axis/Y/1.8deg.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[stepper_y]
rotation_distance: 40
microsteps: 64
full_steps_per_rotation: 200

# We also include the default wiring and speeds from here to avoid duplicating
[include default_wiring.cfg]
[include default_speed.cfg]
12 changes: 12 additions & 0 deletions config/hardware/axis/Y/TMC/TMC2209.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Y TMC2209 definition

[gcode_macro _USER_VARIABLES]
variable_y_driver: "TMC2209"
gcode:

[tmc2209 stepper_y]
uart_pin: Y_TMCUART
interpolate: False
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0
19 changes: 19 additions & 0 deletions config/hardware/axis/Y/TMC/TMC2209_V0specific.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Y TMC2209 definition with some custom TMC parameters to reduce the
# VFAs (Vertical Fine Artifacts) produced by the first V0 LDO motors kit


# Including first the default Y TMC2209 file
[include TMC2209.cfg]

# Then applying overrides for specific V0 parameters from LDO
[tmc2209 stepper_y]
run_current: 0.7
# stealthchop_threshold: 999999
driver_TBL: 2
driver_TOFF: 2
driver_HEND: 1
driver_HSTRT: 4
driver_PWM_LIM: 8
driver_PWM_GRAD: 8
driver_PWM_FREQ: 1
driver_PWM_REG: 4
4 changes: 4 additions & 0 deletions config/hardware/axis/Y/default_speed.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[stepper_y]
homing_speed: 60
homing_retract_dist: 0
homing_positive_dir: true
5 changes: 5 additions & 0 deletions config/hardware/axis/Y/default_wiring.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
[stepper_y]
step_pin: Y_STEP
dir_pin: Y_DIR
enable_pin: !Y_ENABLE
endstop_pin: Y_STOP
14 changes: 14 additions & 0 deletions config/hardware/axis/Z/TMC/TMC2209_1-Motor.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Z TMC2209 definition

# User variable only needed here as they are called recursively
[gcode_macro _USER_VARIABLES]
variable_z_driver: "TMC2209"
gcode:


[tmc2209 stepper_z]
uart_pin: Z_TMCUART
interpolate: False
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0
15 changes: 15 additions & 0 deletions config/hardware/axis/Z/TMC/TMC2209_3-Motors.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[include TMC2209_1-Motor.cfg]

[tmc2209 stepper_z1]
uart_pin: Z1_TMCUART
interpolate: False
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

[tmc2209 stepper_z2]
uart_pin: Z2_TMCUART
interpolate: False
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0
8 changes: 8 additions & 0 deletions config/hardware/axis/Z/TMC/TMC2209_4-Motors.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[include TMC2209_3-Motors.cfg]

[tmc2209 stepper_z3]
uart_pin: Z3_TMCUART
interpolate: False
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0
Loading

0 comments on commit 4baf0ea

Please sign in to comment.