Skip to content

Commit

Permalink
v2.0 release with a full rework as a generic config
Browse files Browse the repository at this point in the history
full config rework and release as a v2.0 with optional ERCF support
  • Loading branch information
Frix-x authored Nov 22, 2022
2 parents 783df20 + 265081a commit 1ba5a38
Show file tree
Hide file tree
Showing 100 changed files with 2,580 additions and 732 deletions.
88 changes: 38 additions & 50 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,68 +1,56 @@
# Voron V2.1237 config
# Generic Klipper configuration

This is my actual config folder for my Voron v2.4 printer.
This is a global generic Klipper config dedicated to be used on CoreXY printers (and perhaps others with some minor modifications). It's currently used on all my own machines: a Voron V2.4 (V2.1237), a Voron Trident, a custom TriZero, and a heavily modified Prusa i3 MK3s. Other Voron owners have also reported using this config as-is without any problems.

Please mind this is a WIP and the config files are beeing updated very frequently depending of the mods I add to the machine or just if I want to. **Do not** take it as a fully compliant config : think and adapt to your own machine.
I also try to put all possible setting and customizations in the Klipper config as my ultimate goal would be to use the same Gcode file (sliced generically) with multiple materials or even share it across multiple printers. That's why I'm using firmware retraction, and I set Pressure Advance, etc... in my config.
Please keep in mind this is a WIP and the files are beeing updated frequently with new custom features, PRs merged from users or just if I want to. **Do not** take it as a fully compliant config for every machines: look, think, understand and adapt it to your own.

You can reach out in Voron Discord: i'm **Frix_x#0161**
You can reach out in the Voron Discord: i'm **Frix_x#0161**.

## Mods and hardware changes

I ended up modifying lots of components on this machine:
- Removables doors with new hinges
- Voron v2.2 style panels clip
- Handles 2x on top and 2x at bottom sides (This beast is 30Kg...)
- LDO 1.8° on Z axis (4) & LDO 0.9° on X/Y axis (2)
- LGX extruder
- Custom Galileo Z blocks and skirts from oc_geek
- Klicky probe (instead of the inductive Z sensor) for bed leveling and final Z0 setting
- AB-BN-30 tool body with 5015 part cooling fan CFD optimized
- MGN12H single rail on X axis
- MGC5 spherical Z joints
- FCOB light bars on top
- X/Y endstop PCB
- Chamber and electrical cabinet temperature sensors
- Nevermore Duo v5 filter
- Purge bucket with scrub for quick nozzle cleaning
- Magnetic steel flex plate with PEI and quick align stand
## Features

## Specific features & config
This config is designed to be generic. You can use it on a lot of machines by selecting and enabling the hardware options you need. This also activate automatically the associated macros and process under the hood.

Config is divided in two folders : one for the hardware declarations and the other for all the macros. In this folders I tried to cut everything in files to be able to find and modify everything easily.
I tried to push the speed a little bit now I now my machines limits.
I also tried, when possible, to put all the print settings directly in the Klipper config. My utlimate goal would be to be able to use the same Gcode file (sliced generically) with multiple materials or even share it across multiple printers. That's why I'm use and set firmware retraction in the macros, set pressure advance in the macros, etc...

#### Z calibration
This config is also known for the **adaptive bed mesh** functionnality that I wrote some time ago, the **custom calibrations macros** for pressure advance, flow, etc..., the **automated input shaper workflow**, and the **vibrations measurements** macros and scripts.

I'm running the klipper Z calibration plugin to compute automaticaly a correct Z offset at each beginning of the print, even if I change the nozzle, the hotend, the toolhead, the PEI, etc... This thing is wonderfull !
This plugin let you call the ```[z_calibration]``` config section and add some system macros as ```Z_CALIBRATE```. It need to be installed manually on top of klipper. Updates are done by Moonraker/Fluidd as well.
To get more info, you can find a [list with the details and usage instruction for all the features](./doc/features.md) in the doc folder. There is also for each, some custom install instructions if you want to install them as standalone in your own config and don't want to use this full generic config folder.

#### Klicky probe

To be able to use the automatic Z calibration process, I replaced the inductive probe by a touch probe. A BLTouch could work but not a good idea in an enclosed atmosphere and the Klicky probe is the way to go : it's very cheap and very precise.
A lot of macros are needed for this one to work and it could be a little tricky at first. All the system macros that use the probe are overiden to be able to attach or dock the Klicky probe accordingly.
## Installation

#### Purge bucket
The install of this config folder should not be too complicated if you are already familiar with the klipper configuration system. Here are the steps:
1. Use an SSH connection to connect to your printer
1. Check if you already have a `config` folder in the `~/printer_data` directory and remove it (or rename it to keep a backup).
2. Clone this config in the `~/printer_data/config` directory. You can use the following command:

There is a purge bucket at the back of the machine with a brush to purge and clean the nozzle tip just before calibrating the Z offset. This ensure repeatability and consistency in the measurements.
```
git clone https://github.com/Frix-x/klipper-voron-V2.git ~/printer_data/config
```
3. Open and configure the `printer.cfg` file: you just need to uncomment the lines that suit your printer hardware configuration. Basically start by selecting the board_pins coresponding to your MCU, then select the components used and software config needed (such as extruder type, XY motors, Z motors, QGL vs Z_TILT, etc...).
4. Then, open the selected `board_pins` file in the `config/mcus` folder and add your MCU(s) serial port(s). Please follow the [official klipper documentation](https://www.klipper3d.org/FAQ.html#wheres-my-serial-port) to find it.
5. Check your wiring and verify that the selected `board_pins` file is correct.
6. Now, open all the selected files in your `printer.cfg` and check that the pins are ok for your machine (regarding the board prefix name, the direction `!`, the pull-ups `^` or pull-downs `~`). Note: this step is necessary because of a current Klipper limitation that doesn't allow me to put these symbols directly in the board_pins files... I'm still looking for alternatives.
7. Also, in the same way, open all the selected files in your `printer.cfg` and check the dimensions, the limits, the currents, and all the other values in every config sections. **Pay a special attention to the axis limits** in the `[stepper_...]` sections from the files located in [config/hardware/base/XY](./config/hardware/base/XY/) or [config/hardware/base/Z](./config/hardware/base/Z/). Also check the thermistor types in `[extruder]` and `[heated_bed]`, size of the plate in `[bed_mesh]`, etc... Note: this step is necessary because of a current Klipper limitation that doesn't allow the use of variables in the config files... I'm still looking for alternatives.
8. Modify and adapt the `variables.cfg` file to suit the configuration of your machine. This file helps to configure and customize how all the macros should behave (coordinates of everythings, enabling/disabling software features, etc...).
9. **Check very carefully all the features! This step is very important to avoid any problem on your machine.** You can start by following the [config checks from the official Klipper documentation](https://www.klipper3d.org/Config_checks.html). Then also verify that you are able to attach/detach the mechanical probe, do the QGL/Z_TILT, have the correct coordinates for all the used components (purge bucket, physical Z endstop, etc...). You should also verify your first layer calibration (and the `switch_offset` parameter from the automatic z calibration plugin if using it), etc...
10. Finally when everything looks to be working, you need to add the custom print start gcode in 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]}
```
Also add to your custom print end gcode in your slicer:
#### Nevermore and chamber heating
```
END_PRINT
```
Under the bed is a Nevermore duo v5 recirculating active carbon filter. This filter the VOCs generated during printing but the dual 5015 fans also serves as a quick chamber heat distribution system during the pre-print phase.
#### Adaptive bed mesh
## Sponsor the work
Only do a bed mesh if it's needed (ie. no mesh if there is only a small single part in the center of the bed, and/or only mesh around the parts with a small margin).
To be able to use it, you need to add in SuperSlicer custom g_code :
```
PRINT_START [...common args...] SIZE={first_layer_print_min[0]}_{first_layer_print_min[1]}_{first_layer_print_max[0]}_{first_layer_print_max[1]}
```
I try to stay open to any user needs if it suit and fit this config design. Please open an issue or a PR if you want a specific hardware device or new functionnalities to be supported.
#### Pre-print phase

The macro ```PRINT_START``` is dedicated to prepare the machine to print:
1. First this macro manage the heatsoak of the bed when needed. If I put the bed at temperature manually before starting a print, the macro will take care of that and will not do the heatsoak.
2. Then, there is a chamber heating phase using the nevermore fans at full power. This phase is customizable: it follow the chamber temperature setting from the slicer and there is also a timeout if the temperature is not reached in time. This phase ensure the chamber of the machine is at a good temperature for critical material like ABS that is very prone to warping and layer adhesion problems.
3. When the bed and chamber are at temperature, the machine goes for a quad gantry leveling, a purge of the hotend/nozzle, cleaning of the nozzle tip and auto Z calibration.
4. Then the macro apply custom material parameters like PA, nevermore filtering, retraction settings, etc...
5. At the end, an adaptive bed mesh is recorded before starting the print
Also, feel free to buy me a coffee or help me buy new hardware to support them in this config :)
44 changes: 0 additions & 44 deletions config/board_pins.cfg

This file was deleted.

15 changes: 15 additions & 0 deletions config/hardware/addons/accelerometers/adxl345.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[adxl345]
spi_bus: ssp1
cs_pin: z:ADXL_CS
axes_map: -z,y,x

[resonance_tester]
accel_chip: adxl345
probe_points:
150,150,20


# Include the vibr_calibrat_xx macros to unlock them when
# an accelerometer is installed on the machine
[include ../../../../macros/addons/calibration/vibr_calibrate_01.cfg]
[include ../../../../macros/addons/calibration/vibr_calibrate_02.cfg]
Loading

0 comments on commit 1ba5a38

Please sign in to comment.