-
Notifications
You must be signed in to change notification settings - Fork 7
K1 Bltouch
Although the following instructions will allow you to use a BlTouch, 3DTouch or CrTouch with a K1 and Helper Script, its not an ideal situation trying to use a non creality probe with creality version of klipper and firmware. I encourage you to consider freeing your printer from the shackles of Creality and trying Simple AF
This guide is only for use with the Helper Script, it is not to be used with Simple AF.
The K1 has a cr touch mount point and a lidar mount point and a port on the nozzle pcb for a touch probe. With a 3d print you can mount a crtouch or a bltouch on the back, there is also a mount point to mount a crtouch on the side, I am sure the existing model could be remixed for bltouch as well.
If you have physically installed your probe already and its not mounted on the side, if the printer insists on doing homing at any point, its very likely you will crash your probe into the z screw at the back, this is very very bad, you can skip the first time setup that sometimes seems to be forced upon a factory reset, but other than that be sure you do NOT do any homing of the printer until after the installation is complete and the probe is configured.
At least for the case where a first time setup process may be forced after a factory reset, you can skip this with a USB key trick, as documented here:
If you are on a recent version of the firmware there is actually a limitation (aka bug) in the service that drives the K1 display, it will crash if you have a mesh named 'default', with a mesh larger than 6x6, you can work around this by naming your mesh something other than default.
Or you can install guppyscreen :-)
By default on a k1, the nozzle and strain guages are used for leveling. In order to do accurate leveling, you need to heat the nozzle up, wipe the nozzle, cool the nozzle down so it does not ooze and then do the leveling. This process takes a long time, and I suspect the cooler nozzle might actually lead to some discrepancies in the leveling data too.
Much of the prtouch code in the creality klipper fork is not open source so we can't modify and tweak it. The binary blob also seems to rely on a specific order of gcode commands too, so trying to modify the custom macros and gcode_macro.cfg files is very frustrating.
- 1 x Mounting Adapter
- 2 x M2 * 12mm screws
- 1 x CR Touch cable or custom-made cable: https://www.amazon.com/dp/B0BKPFY24M
- 1 x bltouch or crtouch and mounting screws
Even though throughout the config we reference bltouch, the config is almost exactly the same for a crtouch. The only things that will differ are the model and some offsets.
This is not the guide you are looking for, you need to refer to https://github.com/pellcorp/creality/wiki/BIQU-MicroProbe-v2
The probe and the TOUCH port on the Nozzle MCU board both mate with a 5-pin Molex Picoblade connector. A 5-pin cable is needed to connect the probe to the TOUCH port.
Some sellers may call the connector "Micro JST SH 1.25" but that is incorrect. Several premade cables are compatible. Most notably the Creality cable for their CR Touch probe:
- https://www.aliexpress.us/item/1005004960067376.html
- https://www.amazon.com/dp/B0BKPFY24M/
- https://www.bastelgarage.ch/0-1m-creality-cr-touch-bl-touch-adapterkabel-sprite-extruder
Alternatively, two pre-crimped cables can be soldered together:
Or a cable built from pre-crimped wires and connector housings:
Connect to TOUCH port on the nozzle MCU. it is accessible from the side left (LIDAR) side of the printhead and only the external cover of the printhead has to be removed.
There are a few to choose from, I have used this one successfully:
I printed the model in ABS, according to the instructions on the printables page without supports. I do not know if ABS is required, but I have a printer setup for abs so it was easy to do.
I have not tried this one as yet: https://makerworld.com/en/models/403351
Full disclosure I have not tried any of these as I don't have a spare cr-touch
- https://www.printables.com/model/717434-cr-touch-creality-k1
- https://www.printables.com/model/777638-cr-touch-mount-k1
Rooting your K1 is a prerequisite:
In order to make it possible to print from orcaslicer and edit printer.cfg files from a browser you need to install moonraker and fluidd or mainsail, you can do this via the Guilouz Helper script, check it out:
https://guilouz.github.io/Creality-K1-Series/helper-script/helper-script-installation/
There are a bunch of changes required for klipper, both config but also adding a couple of new python files and modifying one python file.
You need the bltouch.py and probe.py at least, the screws_tilt_adjust.py is needed to use the very helpful screw tilt adjust diagnostic tool to check your bed is trammed, but it's not compulsory. Because the Bltouch is mounted with a y offset, it is important to take advantage of the klipper axis twist compensation to help fix any issues with axis twist and bed meshes.
cd /usr/share/klipper/klippy/extras/
wget --no-check-certificate "https://raw.githubusercontent.com/Klipper3d/klipper/v0.12.0/klippy/extras/bltouch.py" -O /usr/share/klipper/klippy/extras/bltouch.py
wget --no-check-certificate "https://raw.githubusercontent.com/Klipper3d/klipper/v0.12.0/klippy/extras/probe.py" -O /usr/share/klipper/klippy/extras/probe.py
wget --no-check-certificate "https://raw.githubusercontent.com/Klipper3d/klipper/v0.12.0/klippy/extras/screws_tilt_adjust.py" -O /usr/share/klipper/klippy/extras/screws_tilt_adjust.py
wget --no-check-certificate "https://raw.githubusercontent.com/Klipper3d/klipper/v0.12.0/klippy/extras/axis_twist_compensation.py" -O /usr/share/klipper/klippy/extras/axis_twist_compensation.py
mv /usr/share/klipper/klippy/extras/custom_macro.py /usr/share/klipper/klippy/extras/custom_macro.py.orig
wget --no-check-certificate "https://raw.githubusercontent.com/pellcorp/creality/main/guide/klippy/extras/custom_macro.py" -O /usr/share/klipper/klippy/extras/custom_macro.py
Note: We are replacing the creality provided custom_macro.py
file as this allows us to redefine some creality macros without prtouch so that existing start print macros should work out of the box.
Due to the fact the bltouch / crtouch is connected to the tool head pcb, there is the potential for a timeout to occur, its easy enough to fix this with the following command, unfortunately klipper does not expose this as a config property!
sed -i 's/TRSYNC_TIMEOUT = 0.025/TRSYNC_TIMEOUT = 0.050/g' /usr/share/klipper/klippy/mcu.py
You need to restart klipper for the python changes to take affect:
/etc/init.d/S55klipper_service restart
Some changes are required to printer.cfg, this can be done from mainsail or fluidd, or if you are inclined from the command line.
Comment out or delete the [prtouch_v2] and [bedmesh] sections
Add [bltouch]:
[bltouch]
sensor_pin: ^nozzle_mcu: PA9
control_pin: nozzle_mcu: PA8
pin_move_time: 0.500
x_offset: 0.0
y_offset: 25.25
z_offset: 1.925
speed: 10
lift_speed: 20
samples: 3
probe_with_touch_mode: true
samples_result: average
stow_on_each_sample: false
samples_tolerance: 0.1
samples_tolerance_retries: 5
sample_retract_dist: 3
Important: The exact y_offset you need to use might be slightly different depending on the combination of crtouch or bltouch and the model you choose to use. Most of the models should include this information so you should refer to that. The y_offset will affect your max and min mesh in the bed mesh section too!!!
Warning: The y_offset is only relevant for a rear mounted probe, if you have using a side mounted cr-touch you will need to define a x_offset instead and make changes to your bed_mesh min and max mesh setting.
Add [bedmesh]:
[bed_mesh]
speed: 100
horizontal_move_z: 8
mesh_min: 5,30
mesh_max: 210,209
probe_count: 12,12
algorithm: bicubic
bicubic_tension: 0.1
Note: These are the defaults as taken from the discord, but if you need to do a large print probing the bed, even with adaptive bed mesh is going to take longer than the old prtouch code, so you should experiment with probe_count, speed, lift_speed and samples. There is a trade off between speed and accuracy, I actually have changed the speed and lift_speed to 10, samples to 2, and probe count to 6,6, but you need to experiment to find the optimal combination for your use case.
In the [stepper_z], you need to replace the endstop_pin: tmc2209_stepper_z:virtual_endstop
with endstop_pin: probe:z_virtual_endstop
and disable the position_endstop:
, so it should look like this:
[stepper_z]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PC3
microsteps: 16
rotation_distance:8
gear_ratio: 64:20
#endstop_pin: tmc2209_stepper_z:virtual_endstop
endstop_pin: probe:z_virtual_endstop
#position_endstop: 0
position_max: 255
position_min: -5
In the [stepper_y] section I modified the position_max to avoid the probe crashing into the z-rod, I actually reduced the area I can print by 4mm, is a reasonable trade off, I figured this out by slowly, 1mm at a time moving the print head back towards the back, while having it positioned in the middle of the x axis, and I arrived at a change of:
position_max: 215
The variable_z_safe_g28 variable needs to be changed in the PRINTER_PARAM gcode section
From: variable_z_safe_g28: 8.0
to variable_z_safe_g28: 10.0
As a diagnostic, I added screw tilt adjust config so I can easily determine if my z axis is skewed, you need to add a config section:
[screws_tilt_adjust]
screw1: 25,-5
screw1_name: front left screw
screw2: 195,-5
screw2_name: front right screw
screw3: 195,165
screw3_name: rear right screw
screw4: 25,165
screw4_name: rear left screw
speed: 100
horizontal_move_z: 5
screw_thread: CW-M4
Warning: This configuration is specific to the bltouch rear mounted which has a 25.25 y offset, it's of utmost importance that you tweak the screw tilt adjust configuration to match the offset of your probe.
if you applied the fan control feature from Guilouz script, you now need to comment it out :-)
https://guilouz.github.io/Creality-K1-Series/helper-script/nozzle-cleaning-fan-control/
You need to disable the [prtouch_v2_fan] section
Restart klipper from fluidd or mainsail for all these changes
If you absolutely must have ADAPTIVE=1 klipper support, you will need to copy the bed_mesh.py onto your K1, be aware that this will conflict with Guilouz KAMP, so do NOT try and enable both at once.
You can enable access to klipper adaptive mesh with this command:
mv bed_mesh.py bed_mesh.py.orig
wget --no-check-certificate "https://raw.githubusercontent.com/Klipper3d/klipper/v0.12.0/klippy/extras/bed_mesh.py" -O /usr/share/klipper/klippy/extras/bed_mesh.py
You will then need to restart klipper again, you can do this via fluidd or mainsail.
To make use of the adaptive meshing for all prints a parameter needs to be provided to the BED_MESH_CALIBRATE command. Look for the BED_MESH_CALIBRATE command in the START_PRINT g-code macro:
BED_MESH_CALIBRATE
and append the ADAPTIVE=1 parameter:
BED_MESH_CALIBRATE ADAPTIVE=1
You need to do z offset, use the Calibrate Probe tool from Fluidd or Mainsail for this and make sure it gets saved to the bottom of the printer.cfg file.
-
All the information for this mod, I got from the D3Vil Design Discord, which you can get an invite to https://discord.gg/mr5JcCE5, and the bltouch mod topic is https://discord.com/channels/1154500511777693819/1181890048933773312
-
There is a separate helpful topic on the crtouch which can also be referenced: https://discord.com/channels/1154500511777693819/1225738605914226718
-
On the D3vil Design discord, there is a document by Fernando titled instructions_for_connecting_the_bl_2.docx
Special thanks to everyone in the mod discord, but special thanks to Mr.Ferro, Fernando, StarCom, Dramler and ZeyHex for their investigation of pins and recommended config.
Mr.Ferro (aka as StarCom) also provided the bltouch images I have used in this guide.
Simple AF Beacon EXPERIMENTAL
Simple AF Bltouch, CrTouch and 3dTouch
If you are looking for a way to support the project, and its entirely optional, this is my preferred approach. I am conducting a fundraiser to purchase a K1M printer, just so I can push out fixes and new features a bit faster, but also specifically test the K1M as well as the K1.
If you can't donate via go fund me directly, I have also added a kofi account.