-
Notifications
You must be signed in to change notification settings - Fork 9
K1 Bltouch
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.
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 and mounting screws
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.
There are a few to choose from, I have used this one successfully: : https://www.printables.com/model/666186-creality-k1-bltouch-adapter
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 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. The axis_twist_compensation.py is required to fix any issues on the x axis due to the offset of the probe, I myself have not had a chance to run it, I don't know what is involved.
https://www.klipper3d.org/Axis_Twist_Compensation.html
wget --no-check-certificate "https://github.com/Klipper3d/klipper/tree/master/klippy/extras/bltouch.py" -O /usr/share/klipper/klippy/extras/bltouch.py
wget --no-check-certificate "https://github.com/Klipper3d/klipper/tree/master/klippy/extras/screws_tilt_adjust.py" -O /usr/share/klipper/klippy/extras/screws_tilt_adjust.py
wget --no-check-certificate "https://github.com/Klipper3d/klipper/tree/master/klippy/extras/axis_twist_compensation.py" -O /usr/share/klipper/klippy/extras/axis_twist_compensation.py
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 stop
/etc/init.d/S55klipper_service start
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: 5
lift_speed: 5
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: 500
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.
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
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
Comment out the CX_NOZZLE_CLEAR in the START_PRINT gcode macro.
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
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
-
https://github.com/pellcorp/printers/tree/master/k1
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.
This is left intentionally blank