Voron 0 ZeroClick back servo docker with a1 silicone nozzle cleaner/wiper

A servo docker for zero click probe with bambu lab A1 nozzle cleaner/wiper
23
41
0
628
updated March 14, 2025

Description

PDF

 

Please carefully adjust the height of the mount, test it step by step and make sure it is not crashing the toolhead and nozzle.

 

Credit

This model remix different great designs

 

Description

I want to use ZeroClick while keeping my current nozzle cleaner setup, at the same time not sacrificing print area. So I modify based on KlickSwipe design, and replacing the klicky dock to my own remix.

 

BOM

  • MG90s Servo
  • 2 x M3 nut
  • 5 x BHCS M3x8mm
  • 4 x Threaded Insert M3x5x4
  • 2 x BHSC M3x6
  • 4mm OD PTFE Tube 49mm total 14mm x 3, 7mm x 1 cutting jig included
    • please refer to KlickSwipe for the jig and how to preparing the PTFE tube
  • 6mm x 3mm magnets (voron standard size)
  • Silicon brush
    • cut it to the right size
  • M2x8mm Self Tapping Screw (Optional)
    • I do not use it, but keeping the hole on the docker model

 

Adjustment

I have added few layer of blue taps as the probe was sticking to the docker too well that i am not able to attach it.

I have also adjust some of the parts so that it fit my case, if it is too loose for you, please check out the original model from KlickSwipe.

 

Assembly

please refer to KlickSwipe

 

Gcode

 

Servo arm on/off

[gcode_macro NOZZLE_UTIL_ON] # Deploy Arm
  gcode:
     SET_SERVO SERVO=nozzle_cleaner ANGLE=95

[gcode_macro NOZZLE_UTIL_OFF] # Retract Arm
  gcode:
     SET_SERVO SERVO=nozzle_cleaner ANGLE=2.5

 

Cleaning the nozzle

[gcode_macro CLEAN_NOZZLE]
  gcode:
      # Standby POS
      {% set STANDBY_X = params.STANDBY_X|default(8)|float %}
      {% set STANDBY_Y = params.STANDBY_Y|default(50)|float %}

      # Vertical, Along y
      {% set VERTICAL_X = params.VERTICAL_X|default(8)|float %}
      {% set VERTICAL_Y_MIN = params.VERTICAL_Y_MIN|default(70)|float %}
      {% set VERTICAL_Y_MAX = params.VERTICAL_Y_MAX|default(97)|float %}

      # Horizontal, Along x
      {% set HORIZONTAL_Y = params.HORIZONTAL_Y|default(85)|float %}
      {% set HORIZONTAL_X_MIN = params.HORIZONTAL_X_MIN|default(2)|float %}
      {% set HORIZONTAL_X_MAX = params.HORIZONTAL_X_MAX|default(16)|float %}

      SAVE_GCODE_STATE                                  # Save toolhead position

      G90
      G0 X{STANDBY_X} Y{STANDBY_Y} F5000                                 # Move the print head near the servo

      NOZZLE_UTIL_ON                                 # Brush Out
      # Wait for 1 seconds
      G4 P1000

      # Vertical
      G0 X{VERTICAL_X} Y{VERTICAL_Y_MAX} F5000
      G0 X{VERTICAL_X} Y{VERTICAL_Y_MIN} F5000
      G0 X{VERTICAL_X} Y{VERTICAL_Y_MAX} F5000
      G0 X{VERTICAL_X} Y{VERTICAL_Y_MIN} F3600 # speed decrease
      G0 X{VERTICAL_X} Y{VERTICAL_Y_MAX} F3600
      G0 X{VERTICAL_X} Y{VERTICAL_Y_MIN} F3600

      # Horizontal
      G0 X{HORIZONTAL_X_MAX} Y{HORIZONTAL_Y} F5000
      G0 X{HORIZONTAL_X_MIN} Y{HORIZONTAL_Y} F5000
      G0 X{HORIZONTAL_X_MAX} Y{HORIZONTAL_Y} F5000
      G0 X{HORIZONTAL_X_MIN} Y{HORIZONTAL_Y} F3600 # speed decrease
      G0 X{HORIZONTAL_X_MAX} Y{HORIZONTAL_Y} F3600
      G0 X{HORIZONTAL_X_MIN} Y{HORIZONTAL_Y} F3600

      # Return to standby pos to avoid moving the probe
      G0 X{STANDBY_X} Y{STANDBY_Y} F5000
      
      NOZZLE_UTIL_OFF                               # set brush servo to down position
      # Wait for 1 seconds
      G4 P1000

      RESTORE_GCODE_STATE MOVE=1 MOVE_SPEED=3000       # return to saved toolhead  position

 

Attach/Dock Probe

[gcode_macro ATTACH_PROBE]
  gcode:
      {% set F = 4000 %}

      SAVE_GCODE_STATE NAME=attach_probe_state

      G90
      G0 Z30
      G0 X35 Y60 F{F}

      NOZZLE_UTIL_ON
      # Wait for 1 seconds
      G4 P1000

      # attach
      G0 X35 Y96 F{F}
      # Wait for 1 seconds
      G4 P1000

      G0 X70 Y96 F{F}

      NOZZLE_UTIL_OFF
      # Wait for 1 seconds
      G4 P1000

      RESTORE_GCODE_STATE NAME=attach_probe_state    # return to saved toolhead  position

[gcode_macro DOCK_PROBE]
  gcode:
      {% set F = 4000 %}

      SAVE_GCODE_STATE NAME=dock_probe_state

      G90
      G0 Z30
      G0 X70 Y96 F{F}

      NOZZLE_UTIL_ON
      # Wait for 1 seconds
      G4 P1000

      # dock
      G0 X35 Y96 F{F}
      # Wait for 1 seconds
      G4 P1000

      G0 X35 Y50 F{F}

      NOZZLE_UTIL_OFF
      # Wait for 1 seconds
      G4 P1000

      RESTORE_GCODE_STATE NAME=dock_probe_state    # return to saved toolhead  position

 

And if you want the bed mesh calibrate auto run attach/dock probe

[gcode_macro BED_MESH_CALIBRATE]
  rename_existing: _BED_MESH_CALIBRATE
  description: Perform Mesh Bed Leveling with klicky automount
  gcode:
      ATTACH_PROBE

      #_BED_MESH_CALIBRATE {% for p in params %}{'%s=%s ' % (p, params[p])}{% endfor %}
      _BED_MESH_CALIBRATE

      DOCK_PROBE

 

Tags



Model origin

The author remixed this model.

Differences of the remix compared to the original

Mechanism from KlickSwipe

Mount by mixing voron-v01-nozzle-brush and KlickSwipe

Dock by mixing ZeroClick and v0-servo-arm-for-silicone-brush

License