Configuring a Creality CR Touch for Universal Bed Levelling (UBL) on a Creality 4.x.x board.

After struggling to help a friend set up a Creality CR Touch on a Creality silent board, I purchased my own - in a sale- to spend some more time working on it. After spending a day or so experimenting I cracked it. This guide also presumes you know how to download and set up Visual Studio Code with the Platformio plugin, and download the Marlin 2.1.x Patched Source and the example configurations from the 2.1.x "bugfix" snapshot.

This is also for a CR Touch connected via the 5pin socket on the board. The standard z-stop can be left connected without any issue. This also allows you to flash firmware onto the board that doesn't use a z-probe if for some reason you want to stop using the probe.

Start by extracting the patched source. Find the appropriate example config for your board and copy the files into the Marlin directory (over writing the generic files already there).

Open platformio.ini and change the default environment to match your board.

For the Creality 4.2.2 board this is default_envs = STM32F103RE_creality. This environment variable will likely work for the majority of the Creality 4.x.x boards. If you have a third party board you will need to work out the appropriate variable and also find the pins_BOARDNAME.h file for the board.

Then move on to config.h where the bulk of the changes are.

In the preamble section uncomment and set #define STRING_CONFIG_H_AUTHOR to something meaningful. Then uncomment #define CUSTOM_MACHINE_NAME and give your machine a name (This displays on the screen after boot up).

In the PID > Bed Temperature Control section uncomment #define PIDTEMPBED as the Creality board supports it.

In the Movement Settings section change #define DEFAULT_MAX_FEEDRATE to { 500, 500, 10, 25 } to support faster homing and probing. Uncomment #define S_CURVE_ACCELERATION for smoother acceleration.

In the Z Probe Options section comment out #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN and uncomment #define USE_PROBE_FOR_Z_HOMING. Uncommnent and set #define Z_MIN_PROBE_PIN to PB1 (from pins_CREALITY_V4.h). If you are using a different board you will need to find the pin value for the probe port (limit switch).

Uncomment #define BLTOUCH.

Measure the offset of your probe from the nozzle and put the values in #define NOZZLE_TO_PROBE_OFFSET. Mine on an Ender 3 Pro were { -47, -8, 0}. I left the z-offset at zero so I could use the wizard to set it after any hot end maintenance. Remember the biggest value for later.

Change #define XY_PROBE_FEEDRATEfrom (50*60) to (150*60). Change #Z_PROBE_FEEDRATE_FAST from (4*60) to (10*60). Check that #define MULTIPLE_PROBING is commented out. Change #define Z_CLEARANCE_BETWEEN_PROBES from 5 to 3.

In the Bed Leveling section uncomment #define AUTO_BED_LEVELING_UBL, #define RESTORE_LEVELING_AFTER_G28, and #define PREHEAT_BEFORE_LEVELING. Uncomment and set #define LEVELING_BED_TEMP to your normal bed temperature.

In the Unified Bed Leveling section set #define MESH_INSET to one higher than the largest number from your probe offset.

Set #define GRID_MAX_POINTS_X intially to 3 while you are testing and recomile later to a higher value when you are happy with the configuration.

Uncomment #define UBL_MESH_WIZARD .

In the mesh section uncomment #define LCD_BED_TRAMMING to add a handy tramming menu. All ABL/UBL works best with a well trammed bed. Uncomment #define Z_SAFE_HOMING and set #define HOMING_FEEDRATE_MM_M to (10*60).

I also recommend you define your Preheat Constants for your normal filaments In the Addtional section, and replace #define INDIVIDUAL_AXIS_HOMING_MENU with #define INDIVIDUAL_AXIS_HOMING_SUBMENU to make the menu structure tidier.

Moving on to Configuration_adv.h look for @section bltouch change #define BLTOUCH_DELAY to 300 from 500. Uncomment #define BLTOUCH_HS_Mode true.

In the Addtional features section, uncomment #define PROBE_OFFSET_WIZARD and set #define PROBE_OFFSET_WIZARD_START_Z to -4.0.

In @section lcd uncomment #define BABYSTEP_DISPLAY_TOTAL and #define BABYSTEP_ZPROBE_OFFSET.

And finally if you are a user of Octoprint in the @section host uncomment #define HOST_ACTION_COMMANDS so that Octoprint doesn't complain when connecting to the printer.

And then all that is left is to compile and flash the firmware to your board. And to define your first mesh.

If you use Cura's post-procesing scripts or Octiprint plugins that update progress you will also need to uncomment #define SET_PROGRESS_MANUALLY.

Comments

Popular posts from this blog

Things to complete my collections

Dragon Rampant - Black Powder Weapons Fantastical Rule