Calibration¶
A multi-tool printer requires calibration. This page explains what to calibrate, and describes some of the useful tools and techniques.
Calibration Overview¶
StealthChanger requires several types of calibration:
- Probe Z Offset - Sets where Z=0 is for each tool when homing
- G-code Offsets - Aligns nozzle positions between tools (X, Y, Z)
- Tool Offset Calibration - Measure and set X, Y, and Z offsets between tools
- Dock Calibration - Sets where each tool docks when not in use
Preparing to calibrate¶
Make sure you set the preload screws on each backplate before calibrating, since this affects the Z position of each tool. If you find your Z calibration is drifting, it’s likely that one of the preload screws has come loose.
Before you start calibrating you should "break in" each tool probe. Heat-soak
your machine and run a couple PROBE_ACCURACY SAMPLES=100 per tool.
Probe Z Offset ([tool_probe] Offsets)¶
A Voron 2.4-style printer needs a bed probe in order to perform quad gantry leveling (QGL). The default on StealthChanger is to use the OptoTap board on each tool as the bed probe.
How It Works¶
With this probing method, the tool will move downward until the nozzle contacts the bed. As the gantry continues to lower, the tool will slide upwards on the shuttle until the OptoTap board no longer registers the presence of the shuttle, at which point the probe is considered triggered. This is conceptually the same as Voron Tap, with the StealthChanger pins and bushings taking the place of the Tap linear rail.
Understanding Probe Z Offset¶
- Applied only when homing with that specific tool
- X and Y probe offsets are zero - because the nozzle is the probe
- Z offset is specified by
z_offsetin[tool_probe Tn](where Tn = T0, T1, etc.) - Always a negative number - the trigger point is "below" the bed
- Each tool has its own offset - due to variation in assembly, preload screws, and OptoTap board
A more negative probe Z offset means less squish; a less negative (closer to zero) value means more squish, as the tool will not rise as far from the trigger point.
If you always home Z with your primary tool (typically T0), then other tools' probe Z offsets do not affect print height. Only the primary tool's probe Z offset determines where Z=0 is set, and then gcode_z_offset values align the other tools' nozzles to match. Non-primary tools' probe Z offsets only need to be "close enough" for any initial Z homing that might occur before picking up the primary tool.
Why do I need probe Z offset for Tn? Even though non-primary tools' probe Z offsets don't affect print height, you still need to set them. This is because tools are often left on the printer at the end of a print. When you restart the printer, it needs to home with whatever tool is currently on the shuttle before it can safely switch to T0. With the tool's X, Y, and Z offsets configured, the printer can calculate where the dock locations are relative to T0's position, allowing it to properly park the current tool and pick up T0 for the final QGL and Z homing.
Z_offset Calibration Procedure¶
- Manually put a tool on the shuttle and run
INITIALIZE_TOOLCHANGER - Warm your nozzle to 150C or clean it well.
- Run
G28to home all axes - Run
QUAD_GANTRY_LEVELto level the gantry - Run
G28again to re-home after QGL - Do a Manual Paper Test as normal (like a single toolhead printer) and adjust the Z
- Copy the offset value and save it to
z_offsetin[tool_probe Tn]of the tool config file (stealthchanger/tools/Tn.cfg) - Repeat from step 1 for all tools
- Run
FIRMWARE_RESTARTto apply changes
It is typical to set up the print start macro such that T0 is always used for the final QGL and Z homing before printing. Then it is only necessary to fine-tune the probe Z offset on T0. Other tools need only be close enough for an initial Z homing before picking up T0.
Follow Ellis's method or the paper test to get the right amount of first-layer squish.
G-code Offsets (T0 - Tn offsets)¶
G-code offsets align nozzle positions between tools so that parts of a model printed with different tools will line up correctly. This is necessary even with "identical" tools because of tolerances in parts and assembly.
Understanding G-code Offsets¶
- Applied when changing tools during printing
- Relative to your primary tool (the one you always home with, typically T0)
- Primary tool:
gcode_*_offset = 0(it's the reference) - Other tools: Set to match the primary tool's position
- Specified by:
gcode_x_offset,gcode_y_offset, andgcode_z_offsetin[tool Tn] - Stable from print to print - but may need adjustment if you rebuild a tool or have a crash
By convention, these offsets are set to 0 for T0. The offsets for other tools specify the distance that tool needs to move to place its nozzle in exactly the same position that T0's would be. This can be either positive or negative on each axis.
For Z offsets specifically, gcode_z_offset is independent of the tool's probe Z offset. If you always home Z with T0, then T0's probe Z offset sets Z=0, and T2's gcode_z_offset aligns T2's nozzle to match T0's position. T2's probe Z offset doesn't affect print height in this case - it's only used if T2 ever homes Z.
Setup Process¶
Single Tool:
- Set [tool_probe] offsets - you're done
- Can home directly with that tool
Multiple Tools:
1. Choose a primary tool (typically T0)
2. Set primary tool's [tool_probe] offsets correctly
3. Set primary tool's gcode_*_offset = 0
4. Calibrate other tools' gcode_*_offset to match primary tool position
5. Always home with the primary tool
You can setup your printer to home with Tn if you're only using that one tool during printing, but it requires a more advanced print_start macro. See the PRINT_START advanced example for reference.
G-code Z Offset Calibration Procedure¶
- Only home or probe with T0 during this calibration
gcode_z_offseton Tool 0 is always 0 (T0 is the reference tool)- Set probe Z offset for all tools first before doing G-code offsets
- Set probe Z offset for all tools first
- Make sure T0 is on the shuttle and run
INITIALIZE_TOOLCHANGER - Run
G28to home all axes - Run
QUAD_GANTRY_LEVELto level the gantry - Run
G28again to re-home after QGL - Run
G1 Z10 F600to move to a safe height - Manually remove the current tool and place the next tool (T1, T2, etc.) on the shuttle
- Do a Manual Paper Test as normal and adjust the Z
- Once done, run
M114and copy the Z value togcode_z_offsetin[tool Tn]of the tool config file (stealthchanger/tools/Tn.cfg) - Repeat from step 6 for all remaining tools
- Run
FIRMWARE_RESTARTto apply changes
Calibration Methods¶
Manual Calibration (Test Prints)¶
The simplest but most tedious method is to print test objects like this one or Nozzle Alignment Assist. For X and Y you are looking at the vernier scales; for Z you are looking to have the same amount of squish on both sides (remember, T0 squish is set by the probe Z offset, not G-code offset).
Mechanical Calibration Probes¶
A mechanical calibration probe is basically an endstop that can be triggered by the nozzle moving along any axis. By tapping the probe from ±X, ±Y and +Z directions, the position of the nozzle opening can be determined (assuming a clean nozzle that is bored concentric to its outer surfaces).
Available Probes:
- Sexball - Replaces the pin of hartk's Sexbolt endstop with a ball. LDO StealthChanger kits come with a Sexball probe and this is probably a good place to start for new users.
- Nudge - Another popular calibration probe design
- Multiple designs in the NozzleAlign repo
Mounting:
You can permanently mount any of these probes in the overtravel region at the front or rear of the bed. With Sexball it is easy to remove the ball and pin, so that tools do not collide during printing. Alternately, you can make the whole probe assembly removable, as long as you have some way to rigidly attach it on or near the bed for calibration.
Configuration:
Any of these probes is basically the same from the firmware perspective. Consult the NozzleAlign docs for information on configuration and commands.
Temperature:
Due to thermal expansion, it is best to probe as close to printing conditions as possible, though you must also ensure that the nozzle stays clean and does not ooze. 150°C is a good default.
Optical Calibration (Camera Tools)¶
Another approach for XY offsets is to use a camera looking up at the nozzle.
Hardware Options: - CXC by Ember Prototypes - DIY version using OV9726 camera module - Any USB microscope, if you can mount it rigidly
Software Options: - kTAMV - Automatically locates the nozzle using machine vision - IDEX Nozzle Calibration Tool - Another camera-based calibration tool - Axiscope - Provides a web interface for manually locating nozzles. This involves more manual effort than kTAMV, but is simpler and can be more reliable. Axiscope can also interact with a Sexbolt or other Z endstop to calculate Z offsets.
Tool Offset Calibration¶
A calibration probe (Sexball, Nudge, Axiscope, etc.) automatically measures the position differences between tools and sets the gcode_x_offset, gcode_y_offset, and gcode_z_offset values in your tool configuration files. This provides more accurate and repeatable tool alignment than manual calibration methods.
To use a calibration probe, configure the _CALIBRATION_SWITCH section in stealthchanger/toolchanger-config.cfg with your probe's endstop pin. This enables automatic calibration routines.
Example:
[_CALIBRATION_SWITCH]
pin: ^ar21 # Your calibration probe endstop pin
For information on available calibration probes and how to use them, see the Mechanical Calibration Probes section below.
Other Per-Tool Calibration¶
Additional calibration that may be needed per tool:
E-steps Calibration¶
Extruder steps per mm calibration ensures accurate filament extrusion. This should be done for each tool's extruder.
Follow Ellis's Print Tuning Guide - Extruder Rotation Distance for the calibration procedure.
Do not use SAVE_CONFIG after calibration. Instead, manually save the calculated rotation_distance value in the extruder section of each tool's configuration file:
- T0: Save to
[extruder]instealthchanger/tools/T0.cfg - T1: Save to
[extruder1]instealthchanger/tools/T1.cfg - And so on for additional tools
Example:
[extruder] # In T0.cfg
rotation_distance: <calculated_value>
[extruder1] # In T1.cfg
rotation_distance: <calculated_value>
For additional tuning including PID tuning and input shaper calibration, see Additional Tuning.
Next: Dock Calibration → Set up dock positions for reliable tool changes
FAQ¶
Do I need to calibrate offsets on every print?¶
No. Offsets remain stable unless hardware changes occur (toolhead disassembly, backplate preload screws adjustment, nozzle swap, etc.). Check periodically for drift, especially before long multicolor prints.
Can I use SAVE_CONFIG after PROBE_CALIBRATE?¶
No. SAVE_CONFIG saves z-offset at the bottom of printer.cfg, not in the tool's probe section. Z-offset is fetched from the active tool and applied in homing_override. You must manually add the probe Z offset values to your tool configuration files (e.g., stealthchanger/tools/T0.cfg).
My pressure advance doesn't work¶
Make sure to put the PA values in your filament settings in the slicer. If you have multitool ramming enabled, it will set pressure advance to 0 when ramming on the wipe tower, and if it's not in the filament settings, it can't put it back to what it's supposed to be during the print.
I'm getting a move out of range after a tool change¶
If your slicer has moves close to the edge of the allowable range, it's possible that switching tools will cause the tool to try and move out of range due to the difference in gcode offset. If T0 is at 0,0 (and that's the absolute minimum), then switching to T1 will be 0,0 + T1's gcode x and y offset. If those are negative the printer will try to go out of range. This can be the case for e.g. purge lines generated by the slicer. Make sure you have enough padding around the edges of allowable movement that accounts for the largest gcode offset of any tool.