Cartographer to Survey Touch mode

※What is: Survey Touch Mode

The cartographer in the SIBOOR KIT defaults to using the Classic mode, while the new Survey Touch mode improves accuracy and offers enhanced reliability. The main differences between the two modes are:

  • Classic Mode: It uses the traditional scanning method as the Z-axis endstop, determining the nozzle's position by reading frequency changes. However, the frequency is affected by both the bed distance and the coil temperature, requiring temperature compensation.

  • Survey Touch Mode: It doesn’t focus on absolute frequency values but detects when the rate of frequency change occurs, indicating that the nozzle has touched the bed. This method doesn’t require temperature compensation and ensures a more accurate first layer each time you print.

The advantage of switching to Survey Touch mode is that it eliminates the need for frequent adjustments or calibrations during printing, ensuring that the nozzle accurately touches the bed every time, thus improving print precision and consistency.

This guide provides detailed steps on how to update the Cartographer software via Git, flash the firmware using scripts, and modify the configuration files.

Update Cartographer Software

Use SSH tools to connect to the device. The method can be found in the link below:

Ssh Quick Guide
  1. Navigate to the Cartographer folder: Switch to the cartographer-klipper folder:

    cd ./cartographer-klipper
  2. Pull the latest updates: Use the command to pull the latest version of the software:

    git pull
  3. Rerun the installation script: After pulling the latest updates, run the installation script to ensure that all dependencies and settings are correctly installed:

    ./install.sh

Refresh Cartographer Firmware

  1. Access the device and run the installation program: SSH into the device and run the following command to start the firmware update:

    bash <(wget -qO - firmware.cartographer3d.com/firmware.sh)

Type "yes" and press Enter, then wait for the katapult toolkit to download.

  1. Choose to flash the firmware: After the installation program runs, the following message will appear,Enter 6 to select the option to flash the firmware via CANBUS.

  1. Select Survey Touch functionality: The system will prompt you to choose whether to include Survey Touch functionality,Enter 1 to select "with Survey Touch.":

  1. Select the firmware file: The system will then prompt you to choose the firmware file to flash,Enter 1 to select the Survey_Cartographer_CAN_1000000_8kib_offset.bin file for flashing.:

  1. Firmware flashing process: The flashing process will display the following output,Press Enter to continue:

In certain situations, you will be prompted to enter a password. Please enter 'biqu' and press Enter to send.

  1. Reboot the device: To ensure proper operation, type "r" and press Enter to restart the system.

Modify printer.cfg Configuration File

Open the web interface. Since the printer.cfg hasn't been updated yet, an error will appear. Once the configuration is modified, it will return to normal.

  1. Delete Cartographer-related sections: Open the printer.cfg configuration file, locate the existing [cartographer] section, and record the canbus_uuid before deleting it. Then, replace the section with the following configuration, and insert the recorded UUID into the new configuration:

When using the CNC metal X bracket, please change the y_offset from 21.1 to 23.

[scanner]
canbus_uuid:
#    Fill in the UUID that was just recorded           
x_offset: 0                          
#    adjust for your cartographers offset from nozzle to middle of coil
y_offset: 21.1                         
#    adjust for your cartographers offset from nozzle to middle of coil
backlash_comp: 0.5
#   Backlash compensation distance for removing Z backlash before measuring
#   the sensor response.
# 
#   Offsets are measured from the centre of your coil, to the tip of your nozzle 
#   on a level axis. It is vital that this is accurate. 
calibration_method: touch
#    leave this as touch unless you want to use scan only for everything. 
sensor: cartographer
#    this must be set as cartographer unless using IDM etc.
sensor_alt: carto
#    alternate name to call commands. CARTO_TOUCH etc
scanner_touch_z_offset: 0.05         
#    This is the default and will be overwritten and added to the DO NOT SAVE area by using UI to save z offset
mesh_runs: 2
#    Number of passes to make during mesh scan.
  1. Replace [bed_mesh] configuration:

Locate the existing [bed_mesh] section and replace it with the following:

for the 300 model:

[bed_mesh]
zero_reference_position: 150,150  
#    This option is suitable for the 300 model. 
#    set this to the middle of your bed
speed: 200
#    movement speed of toolhead during bed mesh
horizontal_move_z: 5
#    height of scanner during bed mesh scan
mesh_min: 30, 30
#    start point of bed mesh [X, Y]
mesh_max: 270, 270
#    end point of bed mesh [X, Y]
probe_count: 30, 30
algorithm: bicubic

for the 350 model:

[bed_mesh]
zero_reference_position: 175,175  
#    This option is suitable for the 350 model. 
#    set this to the middle of your bed
speed: 200
#    movement speed of toolhead during bed mesh
horizontal_move_z: 5
#    height of scanner during bed mesh scan
mesh_min: 30, 30
#    start point of bed mesh [X, Y]
mesh_max: 320, 320
#    end point of bed mesh [X, Y]
probe_count: 30, 30
algorithm: bicubic

Here’s the translation:


  1. Update ADXL345 Configuration

Please locate the existing [adxl345] section in your printer.cfg configuration file and replace it with the following content:

[adxl345]
cs_pin: scanner:PA3
spi_bus: spi1
  1. Replace [gcode_macro PRINT_START] configuration

Locate the existing [gcode_macro PRINT_START] section and replace it with the following:

[gcode_macro PRINT_START]
gcode:
  # This part fetches data from your slicer. Such as bed, extruder, and chamber temps and size of your printer.
  {% set target_bed = params.BED|int %}
  {% set target_extruder = params.EXTRUDER|int %}
  {% set target_chamber = params.CHAMBER|default("45")|int %}
  {% set x_wait = printer.toolhead.axis_maximum.x|float / 2 %}
  {% set y_wait = printer.toolhead.axis_maximum.y|float / 2 %}

  SET_GCODE_OFFSET Z=0                                 # Set offset to 0

  # Home the printer, set absolute positioning and update the Stealthburner LEDs.
  STATUS_HOMING                                         # Set LEDs to homing-mode
  G28                                                   # Full home (XYZ)
  G90                                                   # Absolute position

  ##  Uncomment for bed mesh (1 of 2 for bed mesh)
  #BED_MESH_CLEAR                                       # Clear old saved bed mesh (if any)

  # Check if the bed temp is higher than 90c - if so then trigger a heatsoak.
  {% if params.BED|int > 90 %}
    SET_DISPLAY_TEXT MSG="Bed: {target_bed}c"           # Display info on display
    STATUS_HEATING                                      # Set LEDs to heating-mode
    M106 S255                                           # Turn on the PT-fan

    ##  Uncomment if you have a Nevermore.
    #SET_PIN PIN=nevermore VALUE=1                      # Turn on the nevermore

    G1 X{x_wait} Y{y_wait} Z15 F9000                    # Go to center of the bed
    M190 S{target_bed}                                  # Set the target temp for the bed
    SET_DISPLAY_TEXT MSG="Heatsoak: {target_chamber}c"  # Display info on display
    TEMPERATURE_WAIT SENSOR="temperature_sensor chamber" MINIMUM={target_chamber}   # Waits for chamber temp

  # If the bed temp is not over 90c, then skip the heatsoak and just heat up to set temp with a 5 min soak
  {% else %}
    SET_DISPLAY_TEXT MSG="Bed: {target_bed}c"           # Display info on display
    STATUS_HEATING                                      # Set LEDs to heating-mode
    G1 X{x_wait} Y{y_wait} Z15 F9000                    # Go to center of the bed
    M190 S{target_bed}                                  # Set the target temp for the bed
    SET_DISPLAY_TEXT MSG="Soak for 5 min"               # Display info on display
    G4 P300000                                          # Wait 5 min for the bedtemp to stabilize
  {% endif %}

  # Heat hotend to 150c. This helps with getting a correct Z-home.
  SET_DISPLAY_TEXT MSG="Hotend: 150c"                   # Display info on display
  M109 S150                                             # Heat hotend to 150c

  ##  Uncomment for Trident (Z_TILT_ADJUST)
  SET_DISPLAY_TEXT MSG="Leveling"                      # Display info on display
  STATUS_LEVELING                                      # Set LEDs to leveling-mode
  Z_TILT_ADJUST                                        # Level the printer via Z_TILT_ADJUST
  G28 Z                                                # Home Z again after Z_TILT_ADJUST                                

  ##  Uncomment for bed mesh (2 of 2 for bed mesh)
  SET_DISPLAY_TEXT MSG="Bed mesh"                      # Display info on display
  STATUS_MESHING                                       # Set LEDs to bed mesh-mode
  BED_MESH_CALIBRATE                                   # Start the bed mesh (add ADAPTIVE=1) for adaptive bed mesh

  CARTOGRAPHER_TOUCH                                    # Calibrate z offset only with hot nozzle

  # Heat up the hotend up to target via data from slicer
  SET_DISPLAY_TEXT MSG="Hotend: {target_extruder}c"     # Display info on display
  STATUS_HEATING                                        # Set LEDs to heating-mode
  G1 X{x_wait} Y{y_wait} Z15 F9000                      # Go to center of the bed
  M107                                                  # Turn off partcooling fan
  M109 S{target_extruder}                               # Heat the hotend to set temp

  # Get ready to print by doing a primeline and updating the LEDs
  SET_DISPLAY_TEXT MSG="Printer goes brr"               # Display info on display
  STATUS_PRINTING                                       # Set LEDs to printing-mode
  G0 X{x_wait - 50} Y4 F10000                           # Go to starting point
  G0 Z0.4                                               # Raise Z to 0.4
  G91                                                   # Incremental positioning 
  G1 X100 E20 F1000                                     # Primeline
  G90                                                   # Absolute position
  1. Remove any Cartographer-related settings, usually found towards the end of the file.

#*# [cartographer model default]
#*# model_coef = 1.426862614716632,
#*# 	1.8558255558426364,
#*# 	0.7742018059868012,
#*# 	0.3252655520447722,
#*# 	0.2776569553460886,
#*# 	0.42881253282479914,
#*# 	-0.06594607453793942,
#*# 	-0.38061868932287996,
#*# 	0.13779563913383894,
#*# 	0.22375434813301365
#*# model_domain = 3.2444340079592527e-07,3.3462365477294063e-07
#*# model_range = 0.100000,5.000000
#*# model_temp = 41.740129
#*# model_offset = -0.11500
#*#
  1. Example macro definition to delete:

[gcode_macro PROBE_CALIBRATE]
gcode:     CARTOGRAPHER_CALIBRATE  # Command for calibration
  • Save and restart Klipper: After modifying the configuration file, save the changes and restart the Klipper service to apply the updates.

Restart and Calibration

  1. Check firmware version: After successfully connecting, verify whether the firmware has been updated to the Cartographer V5 version. You can check the firmware information in the Klipper web interface .

    Ensure the displayed version is CARTOGRAPHER 5.0.0.

In the next calibration process, we will switch to the Cartographer documentation for a more comprehensive experience.

Last updated