Skip to content

BIQU MicroProbe v2

Jason Pell edited this page Oct 21, 2024 · 40 revisions

Although the following instructions will allow you to use a Microprobe 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

image

Important

This guide is only for use with the Helper Script, it is not to be used with Simple AF.

Before you begin

This guide is a work in progress and tries to account for many variations in configuration files and printer hardware. Since you may have already installed other mods or have a different firmware version installed, keep in mind that your configuration files may not be exactly as this guide expects them to be.

Please be aware that while this guide aims to provide assistance, it does not offer any guarantees. Any configuration modifications should be approached with caution, as improper implementation may result in damage to your printer. We do not accept responsibility for any errors. By using this guide, you accept full responsibility for any modifications you choose to make. It's recommended to thoroughly read both the Klipper and manufacturer documentation to make informed decisions on integrating your BIQU MicroProbe.

Objectives, prerequisites and assumptions

This is a barebones guide focused on how to install a BIQU MicroProbe on a Creality K1 series printer. Other topics like adaptive meshing are deliberately excluded to make the guide easier to follow. For reasons of simplicity, this guide also focuses on the side mount by Mr. Ferro. Side mounts that keep the probing pin in line with the nozzle are warmly recommended since they keep the probe cooler, eliminate the need for axis twist compensation as well as protect the probe from mechanical damage after a potential future factory reset.

The factory Creality PRTouch v2 implementation provides a probing accuracy of about 0.02mm. A MicroProbe has shown a probe accuracy of 0.0003mm at temperatures below 60C and 0.002mm at 100C.

Your printer will need to be rooted. This guide works best for a clean factory configuration. It can be applied to modded configurations but will require a more skilled and informed operator.

Probe information

Manufacturer's product listing:

https://biqu.equipment/products/microprobe-v1-0-for-b1-printers-h2-extruders-ender-3

It is not important which MicroProbe package you purchase. The provided mounting kits cannot be used on the K1 series of printers. Please note that the package usually does not include the 150mm cable listed as part of the delivery, with the correct connectors needed for the K1 installation.

Brackets

Manuals

Cable / connectors

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:

Alternatively, two pre-crimped cables can be soldered together:

Or a cable built from pre-crimped wires and connector housings:

image-1.png

image.png

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.

image-2.png

IMG_6839

Installation

  • Make sure the build plate is at a low position, to allow a safe probe trigger test after installation of the probe.

  • Add/update Klippy modules. Some of them may already be present in the Creality firmware. Updating them will give you the latest functionality.

    Files:

    • probe.py Needed for BIQU Microprobe and other z-height probes
    • screws_tilt_adjust.py Tool to help adjust bed screws tilt using Z probe
    • axis_twist_compensation.py If your probe has a y-offset from the nozzle this will help correct for a twist in the x-axis
    • custom_macro.py - custom version of creality custom_macro.py to remove prtouch references to allow use of stock start print macro and guilouz kamp.
    • safe_z_home Can be used to define how to use the probe for z-homing
cd /usr/share/klipper/klippy/extras/
mv probe.py probe.py.orig 
wget --no-check-certificate https://raw.githubusercontent.com/Klipper3d/klipper/v0.12.0/klippy/extras/probe.py -O probe.py
mv screws_tilt_adjust.py screws_tilt_adjust.py.orig
wget --no-check-certificate https://raw.githubusercontent.com/Klipper3d/klipper/v0.12.0/klippy/extras/screws_tilt_adjust.py -O screws_tilt_adjust.py
mv axis_twist_compensation.py axis_twist_compensation.py.orig
wget --no-check-certificate https://raw.githubusercontent.com/Klipper3d/klipper/v0.12.0/klippy/extras/axis_twist_compensation.py -O axis_twist_compensation.py
mv custom_macro.py 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.

  • Remove/comment out [prtouch_v2] and [bed_mesh] config sections in printer.cfg
  • Add the following config sections to printer.cfg. A copy-paste of this config should work for a Microprobe v2 on a Creality K1 Series motherboard. Please note that only one probe device can be configured at a time (remove any other bltouch, probe, cartographer, ... configurations).

Probe and mesh configuration for all K1 series printers:

# Hardware declaration and initialisation of the initial state: probe pin up

[gcode_macro PROBE_DOWN]
gcode:
  SET_PIN PIN=probe_enable VALUE=1

[gcode_macro PROBE_UP]
gcode:
  SET_PIN PIN=probe_enable VALUE=0

[output_pin probe_enable]
pin: nozzle_mcu: PA8  # Set to the control pin on your board
value: 0

[probe]
# Use only one pin line and comment out the other one
#pin: ^nozzle_mcu: PA9  # MicroProbe V1 users should use this line to trigger on high
pin: ^!nozzle_mcu: PA9  # MicroProbe V2 users should use this line to trigger on low
deactivate_on_each_sample: False
x_offset: -33.0   # microprobe is 33mm to the left from the nozzle in the original bracket remixed by Pellcorp
y_offset: 0.0
z_offset: 0.0
speed: 1        # Speed (in mm/s) of the Z axis when probing. The default is 5mm/s.
lift_speed: 20  # Speed (in mm/s) of the Z axis when lifting the probe between samples. The default is to use the same value as the 'speed' parameter.
#sample_retract_dist: 2.0   # Not defined by default. The distance (in mm) to lift the toolhead between each sample (if sampling more than once). The default is 2mm.
samples: 3
samples_tolerance: 0.05
samples_tolerance_retries: 3
activate_gcode:
  PROBE_DOWN
  G4 P500
deactivate_gcode:
  PROBE_UP
  • Replace/update the mesh config sections in printer.cfg.

Mesh configuration for K1 printers with bed size 220x220:

[bed_mesh]
#speed: 150
speed: 20
mesh_min: 5,5
mesh_max: 184,215
probe_count: 10,10
fade_start: 1.0
fade_end: 10.0
horizontal_move_z: 5   # how high will the head rise between probing points
algorithm: bicubic
bicubic_tension: 0.5

Mesh configuration for K1 Max with bed size 300x300mm:

[bed_mesh]
#speed: 150
speed: 20
mesh_min: 5,5
mesh_max: 262,295
probe_count: 15,15
fade_start: 1.0
fade_end: 10.0
horizontal_move_z: 5   # how high will the head rise between probing points
algorithm: bicubic
bicubic_tension: 0.5

Other reference configurations.

  • Modify [stepper_z] config section
[stepper_z]
#position_endstop: 0
endstop_pin: probe:z_virtual_endstop
  • Comment out the nozzle-cleaning-fan-control.cfg include
#[include Helper-Script/nozzle-cleaning-fan-control.cfg]
  • Modify gcode_macro.cfg
[gcode_macro PRINTER_PARAM]
variable_z_safe_g28: 10.0   # original value: 3.0
  • To prevent the error "Communication timeout during homing z" run the following command to update the /usr/share/klipper/klippy/mcu.py and change the value of TRSYNC_TIMEOUT from 0.025 to 0.050.
sed -i 's/TRSYNC_TIMEOUT = 0.025/TRSYNC_TIMEOUT = 0.050/g' /usr/share/klipper/klippy/mcu.py
  • Restart Klipper for the changes to take effect:
/etc/init.d/S55klipper_service restart
  • Issue G28 command to home Z-axis and when the build plate starts moving, trigger the probe with a finger. If the build plate doesn't stop moving turn off power!
  • Calibrate Z-offset:
    • Issue G28 command and make sure the plate stops at the probe. Be ready to cut power in case it doesn't.
    • Lower the build plate by a few cm, and issue the PROBE_CALIBRATE command. The probe will deploy, do a few sample detects and then retract the probe tip and raise the nozzle a bit.
    • Place an A4 sheet or a PostIt under the nozzle
    • Use Mainsail UI (on your phone/tablet for convenience) to control the nozzle height using negative values to lower the nozzle or positive values to raise it.
    • Move the nozzle down until it just presses against the paper with some friction but does not damage the paper.
    • Click ACCEPT then issue the command SAVE_CONFIG.
  • Calibrate (measure) the X and Y offset using a PostIt (its glue strip helps prevent it from moving around the plate) and update x_offset and y_offset values

Tuning

  • Probing speed

On a K1/Max a faster lift_speed may counter the backlash on the Z-axis belts. Going too fast is likely making the bed bounce back in the opposite direction. Find the best speeds for probing by varying the probe_speed and lift_speed parameters. BIQU Microprobe is an optical probe and as a rule slow probe_speed will give better results. Start with probe_speed=1 and vary the lift_speed values to find the optimal lift_speed first.

PROBE_ACCURACY probe_speed=1 lift_speed=15

In this case, lift_speed of 15mm/s seems optimal. WhatsApp_Image_2024-04-04_at_22-21-48_3611af7a.jpg

After determining the optimal lift_speed, different probe_speed values can be tested until the sweet spot is found. Here 1.0mm/s works most reliably, however, the slow speed will make the meshing process take longer. WhatsApp_Image_2024-04-04_at_22-21-33_41db855b.jpg

  • Probing and heat saturation

The standard K1/Max bed is made of relatively thin aluminium and may have internal stress from the manufacturing process. This means that during heating the bed will change shape as the material adjusts to the new temperature. The K1 Max bed has been shown to take about 10 minutes to settle after it has reached the print temperature. After 8 minutes the centre of the bed can still fluctuate by as much as 0.5mm. Probing a bed that has not settled will yield a poor bed mesh that does not reflect the actual state of the bed during printing. This will cause the first layer to not have a well controlled flow and will yield unstable first layer results. It is recommended to let the bed settle for about 15 minutes.

Troubleshooting

  • msg: "Probe triggered prior to movement"

lower the bed by 1mm before probing. Note: probably can be fixed by configuring safe_homing or some other probe parameter - not sure which one.

  • msg: "Move out of range: 237.000 5.000 5.000 [0.000]"

The mesh_max parameter in the [bed_mesh] config must be adjusted to your bed size and probe x and y-offset. See: bed_mesh

  • msg: "Communication timeout during homing z"

Increase the timeout in /usr/share/klipper/klippy/mcu.py as per installation instructions and restart the printer (not just klippy).

  • msg:"Internal error during ready callback: 'ProbeEndstopWrapper' object has no attribute 'set_fan_speed"

Comment out the nozzle-cleaning-fan-control.cfg include from printer.cfg according to installation instructions.

  • "msg":"Internal error on command:CX_ROUGH_G28"

When the prtouch_v2 section is removed from the printer.cfg this also makes some Creality provided macros like the CX_ROUGH_G28 not available. Please replace your START_PRINT and END_PRINT macros in gcode_macro.cfg according to installation instructions.

  • Large prints that include the edge of the bed have holes / waves in the first layer

Make sure the bed_mesh is configured to use the bicubic algorithm and try increasing the bicubic_tension up to 0.5. Higher values will make the mesh more flat, lower values will better follow a very irregular (not flat) print surface.

  • Can I have a bltouch or another probe configured at the same time as well

Unfortunately, bltouch is a type of probe, and Klipper can only make use of one probe at a time. The same holds true for any other probe (prtouch, crtouch, cartographer 3D, ...) Please leave only one probe configuration in your printer.cfg and comment out any other probe configurations.

Adaptive meshing

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 ADAPTIVE_MARGIN=5

Credits

This guide was provided by Ales Omahen (@Havoc on discord). With many thanks to the guys Dramler, Mr.Ferro (aka StarCom) and ZeyHex as pioneers of this topic! This guide and media are based on the original instructions provided by Mr.Ferro.

Simple AF

Simple AF Cartographer

Simple AF Beacon EXPERIMENTAL

Simple AF BTT Eddy

Simple AF Microprobe

Simple AF Bltouch, CrTouch and 3dTouch

Donations

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.

Clone this wiki locally