Eddy usage
- Ensure your printer is not leaking electricity before use
- If you have previously configured
eddy
,Probe
, orBL-Touch
, please delete them - When installing Eddy, the coil should be above the nozzle, and at a distance of
2mm-3mm
from the nozzle - Do not turn on the heated bed during testing
- Machines with multiple Z-axes need to be manually leveled once
Wiring diagram
- Install with the logo facing the heated bed
Reference configuration
- The
XY
offset value needs to be calculated based on the bed scanning module and the nozzle itself, then modified to the offset value below
[probe_eddy_current fly_eddy_probe]
sensor_type: ldc1612
i2c_address: 43
i2c_mcu: SB2040
i2c_bus: i2c1b
x_offset: 0 # Remember to set x offset
y_offset: 21.42 # Remember to set y offset
z_offset: 2 # Remember to set z offset
i2c_speed: 4000000
[temperature_probe fly_eddy_probe]
sensor_type: Generic 3950
sensor_pin:SB2040:gpio28
horizontal_move_z: 2
Coil Model Download Links
- Click the download link below
-
Loading...
Calculating XY Offset Values
- After downloading the model, calculate the XY offset values based on the actual printer
- Modify the
x_offset
andy_offset
values in the configuration after measurement

Please help me check what parts of this tutorial can be optimized
Eddy Calibration
Precautions
- Please ensure that no
Probe
,BL-Touch
, or related configurations are set - Machines with multiple Z axes need to be manually leveled once
- Check that the heat bed is free of debris and the nozzle is clean before calibration
Adding Configuration
⚠️ Important Notes:
- The configuration below is temporary and must be deleted or commented out after use
- Click
Save & Restart
after adding to save and restart - Must be added to the very top of the
printer.cfg
file; do not add to the bottom
[force_move]
enable_force_move: true
[gcode_macro _LDC_CALIBRATE_DRIVE_CURRENT]
gcode:
BED_MESH_CLEAR
SET_KINEMATIC_POSITION x=100 y=100 z=10
G28 X Y
M104 S0
M140 S0
M106 S0
G0 X{printer.toolhead.axis_maximum.x / 2} Y{printer.toolhead.axis_maximum.y / 2} F6000
G0 Z30 F600
G4 P1000
LDC_CALIBRATE_DRIVE_CURRENT CHIP=fly_eddy_probe
G4 P1000
SAVE_CONFIG
[gcode_macro PROBE_EDDY_CURRENT_CALIBRATE_AUTO]
gcode:
BED_MESH_CLEAR
G28 X Y
M104 S0
M140 S0
M106 S0
G90 # Abs positioning
G1 X{ printer.toolhead.axis_maximum.x/2 } Y{ printer.toolhead.axis_maximum.y/2 } F6000
{% if 'z' not in printer.toolhead.homed_axes %}
SET_KINEMATIC_POSITION Z={ printer.toolhead.axis_maximum.z-1 } # Allows the user to work it down until it touches.
{% endif %}
PROBE_EDDY_CURRENT_CALIBRATE {rawparams}
[gcode_macro TEMP_COMPENSATION]
description: Temperature compensation calibration procedure
gcode:
{% set bed_temp = params.BED_TEMP|default(90)|int %}
{% set nozzle_temp = params.NOZZLE_TEMP|default(250)|int %}
{% set temperature_range_value = params.TEMPERATURE_RANGE_VALUE|default(3)|int %}
{% set desired_temperature = params.DESIRED_TEMPERATURE|default(80)|int %}
{% set Temperature_Timeout_Duration = params.TEMPERATURE_TIMEOUT_DURATION|default(6500000000)|int %}
# Safety check: Ensure all axes are not locked
{% if printer.pause_resume.is_paused %}
{ action_raise_error("Error: Printer is paused, please resume to enable") }
{% endif %}
# Step 1: Home all axes
STATUS_MESSAGE="Homing all axes..."
G28
STATUS_MESSAGE="Homing completed"
# Step 2: Auto leveling
Z_TILT_ADJUST
# Step 3: Safe Z-axis lift
STATUS_MESSAGE="Lifting Z-axis..."
G90
G0 Z5 F2000 # Lift slowly to prevent collision
# Step 4: Set timeout and temperature calibration
SET_IDLE_TIMEOUT TIMEOUT={Temperature_Timeout_Duration}
STATUS_MESSAGE="Starting temperature probe calibration..."
TEMPERATURE_PROBE_CALIBRATE PROBE=fly_eddy_probe TARGET={desired_temperature} STEP={temperature_range_value}
# Step 5: Set print temperature (modify according to actual needs)
STATUS_MESSAGE="Setting working temperature..."
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={bed_temp}
SET_HEATER_TEMPERATURE HEATER=extruder TARGET={nozzle_temp}
# Completion prompt
STATUS_MESSAGE="Temperature compensation process completed!"
description: G-Code macro
Drive Current Calibration
- Enter the following command in the web interface console
_LDC_CALIBRATE_DRIVE_CURRENT
- The printer will move to the center position and move the print head away from the heat bed
- It will then start automatic drive current calibration and save the results automatically after completion
- Finally, it will restart Klipper
Calibrating Height
- Machines with multiple Z axes need to be manually leveled once before calibrating height
- After calibrating height for machines with multiple Z axes, perform a leveling operation and recalibrate height (recommended)
- Check that the heat bed is free of debris and the nozzle is clean before calibration
-
Enter the following command in the web interface console
PROBE_EDDY_CURRENT_CALIBRATE_AUTO CHIP=fly_eddy_probe
-
The printer will move to the center position and a dialog box will pop up
-
After executing this command, the
Z
height displayed byKlipper
is not important; you only need to adjust the nozzle height to an appropriate height -
Follow the prompts in the
Klipper UI
to gradually lower the nozzle until it touches the paper placed on the print bed. Ensure the paper can move smoothly under appropriate pressure while feeling slight friction -
Note that during this process, avoid applying excessive pressure or damaging the print bed with the nozzle
-
After completion, click the
ACCEPT
button in the dialog box; the system will start calibrating the EDDY height -
After calibration, click the
SAVE_CONFIG & Restart
button in the upper right corner of the web interface. This will save the configuration and restart Klipper
Temperature Compensation
- When Eddy performs temperature compensation, the heat bed's maximum temperature is very high; avoid burns
- Do not heat the heat bed and nozzle before performing temperature compensation
- Do not touch the heat bed surface during the process
- It is recommended to wear heat-resistant gloves during operation
- Click the
TEMP_COMPENSATION
macro button, a dialog box will pop up - In the dialog box, you can set the heat bed temperature, nozzle temperature, temperature range value, and desired temperature
- Click the
START
button; the system will start the temperature compensation calibration - During the temperature compensation process, the system will automatically adjust the temperature of the heat bed and nozzle and prompt you to perform a manual Z-offset calibration every 3℃

- After performing this operation, the UI will display the Z-axis adjustment box. Please use the manual Z-axis offset calibration (Paper Test) method mentioned above, place a piece of paper between the nozzle and the bed surface, and then confirm the value.
- After accepting the value, the system will automatically set the heat bed temperature to 80℃ and the nozzle temperature to 250℃.
- If you are in a room with air conditioning or open windows, to ensure Eddy's temperature rise, it is recommended to turn off the air conditioning or close the windows, as wind can affect temperature increase.
- As Eddy's temperature rises, the system will automatically prompt you to perform a manual Z-offset calibration every 3℃. The heat bed temperature is very high; be careful to avoid burns!!!
- Repeat the manual Z-offset calibration (Paper Test) until calibration is complete. If you find that Eddy's temperature no longer rises, you can use the relevant commands below to end the calibration early.
- Additional G-code commands available during drift calibration include: TEMPERATURE_PROBE_NEXT
TEMPERATURE_PROBE_NEXT
Used to force Eddy to sample new data before reaching the target temperature of80℃
TEMPERATURE_PROBE_COMPLETE
Used to complete calibration before Eddy reaches the set temperature of80℃
ABORT
Used to terminate calibration and ignore the results- When the calibration is complete, use
SAVE_CONFIG
to save the temperature offset settings! - In summary, compared to most other procedures, the above calibration process is more challenging and time-consuming. It may require practice and multiple attempts to achieve excellent first layer printing results over a wide temperature range!
Usage Optimization
Quick Bed Leveling
- The macro below will raise the nozzle to
10mm
before performing leveling, then quickly level the bed, and after leveling is complete, raise the nozzle to2mm
for fine leveling
- Z_TILT_ADJUST
- QUAD_GANTRY_LEVEL
[gcode_macro Z_TILT_ADJUST]
rename_existing: _Z_TILT_ADJUST
gcode:
# ========== State Save ==========
SAVE_GCODE_STATE NAME=STATE_Z_TILT
# ========== Environment Preparation ==========
BED_MESH_CLEAR # Clear existing bed mesh data
# ========== Main Leveling Process ==========
{% if not printer.z_tilt.applied %}
# Initial coarse adjustment
_Z_TILT_ADJUST horizontal_move_z=10 retry_tolerance=1
{% endif %}
# Fine secondary leveling
_Z_TILT_ADJUST horizontal_move_z=2 retry_tolerance=0.075 retries=20 METHOD=rapid_scan ADAPTIVE=1
G0 Z10 F6000 # Use standard G-code commands instead of HORIZONTAL_MOVE_Z
# ========== Post-Processing ==========
G90 # Force absolute coordinate mode
G0 Z10 F6000 # Raise Z axis to safe height
M117 Z_tilt Completed # Display completion status
G28 # Return to origin
# ========== State Restore ==========
RESTORE_GCODE_STATE NAME=STATE_Z_TILT
M400
[gcode_macro QUAD_GANTRY_LEVEL]
rename_existing: _QUAD_GANTRY_LEVEL
gcode:
# ========== State Save ==========
SAVE_GCODE_STATE NAME=STATE_QGL
# ========== Environment Preparation ==========
BED_MESH_CLEAR # Clear existing bed mesh data
# ========== Main Leveling Process ==========
{% if not printer.quad_gantry_level.applied %}
# Initial coarse adjustment
_QUAD_GANTRY_LEVEL horizontal_move_z=10 retry_tolerance=1
{% endif %}
# Fine secondary leveling
_QUAD_GANTRY_LEVEL horizontal_move_z=2 retry_tolerance=0.075 retries=20 METHOD=rapid_scan ADAPTIVE=1
G0 Z10 F6000 # Use standard G-code commands instead of HORIZONTAL_MOVE_Z
# ========== Post-Processing ==========
G90 # Force absolute coordinate mode
G0 Z10 F6000 # Raise Z axis to safe height
M117 QGL Completed # Display completion status
G28 # Return to origin
# ========== State Restore ==========
RESTORE_GCODE_STATE NAME=STATE_QGL
M400
Heat Bed
- The macro below will make the mesh bed action become a quick mesh bed
[gcode_macro BED_MESH_CALIBRATE]
rename_existing: _BED_MESH_CALIBRATE
gcode:
_BED_MESH_CALIBRATE horizontal_move_z=2 METHOD=rapid_scan {rawparams}
# G28 X Y
- If you are using a high-power
AC
heat bed, it is recommended to configure the following - This configuration will reduce the impact of the high-power heat bed on EDDY
- Automatically turn off the heat bed when using EDDY and restore the temperature after use
[gcode_macro BED_MESH_CALIBRATE]
rename_existing: _BED_MESH_CALIBRATE
gcode:
{% set TARGET_TEMP = printer.heater_bed.target %}
M140 S0
_BED_MESH_CALIBRATE {rawparams}
M140 S{TARGET_TEMP}
Using Z-Axis Offset Function with EDDY
Download EDDY
Optimization Configuration
- Click the download link below
- Please note there are two files named
eddy.cfg
andvariables.cfg
that need to be added to the same directory asprinter.cfg
-
Loading...
Add eddy.cfg
Configuration
- If you want Eddy to function as both an auto-leveling sensor and a Z-axis limit switch, and wish to use the
Z
axis offset feature - Please add the following configuration at the very top of the
printer.cfg
file
[include eddy.cfg]
Modify Path
- Open the
eddy.cfg
file and locate the[save_variables]
configuration section - Modify the
filename
path to match your system's corresponding path
- Below is a reference
- Path to the
variables.cfg
file, which you need to modify according to your system
|
|
Z-Offset Description
- For Z-offset calibration, first print a model with a large enough area; printing just one layer is sufficient
|
|
- After calibration, click Save. Note that the save confirmation will only appear in the console!!!!
- Also, there is no need to restart
klipper
after saving!
- Repeat the Z-offset tutorial several times
- To achieve a perfect first layer