Eddy Usage
info
- 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, at a distance of
2mm-3mm
from the nozzle - Do not turn on the heated bed during testing
Notes
- 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: i2c1e
x_offset: 0 # Remember to set x offset
y_offset: 21.42 # Remember to set y offset
z_offset: 2.5 # 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...
Calculate XY Offset Value
- After downloading the model, please calculate the XY offset value according to the actual situation of the printer
- Modify the
x_offset
andy_offset
values in the configuration after measurement

Please help me check this tutorial for any areas that can be optimized
Eddy Calibration
Notes
- Please make sure that there is no configuration for
Probe
,BL-Touch
, or related configurations - Multi-Z-axis machines need to be manually leveled once
- Check that the heated bed has no debris and the nozzle is clean before calibration
Add Configuration
Note
⚠️ Important Notice:
- The following configuration is a temporary configuration, it must be deleted or commented out after use
- After adding, click
Save & Restart
to save and restart - It must be added to the top of the
printer.cfg
file, do not add it 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 Z20 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 process
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 first") }
{% endif %}
# Step 1: Homing 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 printing temperature (modify as needed)
STATUS_MESSAGE="Setting working temperature..."
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={bed_temp}
SET_HEATER_TEMPERATURE HEATER=extruder TARGET={nozzle_temp}
# Completion message
STATUS_MESSAGE="Temperature compensation process complete!"
description: G-Code macro
Drive Current Calibration
- Enter the following command in the web console
_LDC_CALIBRATE_DRIVE_CURRENT
- At this time, the printer will move to the center position and move the print head away from the heated bed
- Then it will start automatic drive current calibration and automatically save after calibration
- Finally, it will restart Klipper
Calibration Height
tip
- Multi-Z-axis machines need to be manually leveled once, then proceed with calibration height
- After calibrating the height of multi-Z-axis machines, perform a leveling and then recalibrate the height (recommended)
- Check that the heated bed has no debris and the nozzle is clean before calibration
- Enter the following command in the web console
PROBE_EDDY_CURRENT_CALIBRATE_AUTO CHIP=fly_eddy_probe
- At this time, the printer will move to the center position and a dialog box will pop up
- Follow the instructions on the
Klipper UI
, 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.
- After completion, click the
ACCEPT
button in the dialog box, and the system will start calibrating the EDDY's height - After calibration is complete, click the
SAVE_CONFIG & Restart
button in the upper right corner of the web page. After clicking, the configuration will be saved and Klipper will restart
Temperature Compensation
tip
- When Eddy performs temperature compensation, the maximum temperature of the heated bed is very high, be careful to avoid burns
- Do not heat the heated bed and nozzle before performing temperature compensation
- Do not touch the surface of the heated bed during operation
- It is recommended to wear heat-resistant gloves when operating
- After executing this operation, the UI will display the Z-axis adjustment box. Use the manual Z-axis offset calibration (Paper Test) mentioned above to clamp the paper between the nozzle and the bed, then confirm the value.
- After accepting the value, the heated bed temperature will automatically be set to 80°C, and the nozzle temperature will be set to 250°C.
- If you are in a room with air conditioning or open windows, it is recommended to close the air conditioning or windows to ensure that Eddy's temperature rises, as wind can affect the temperature rise.
- As Eddy's temperature rises, the system will automatically prompt you to perform manual Z offset calibration every 3°C. The heated bed temperature is very high, be careful to avoid burns!!!
- Repeat the manual Z offset calibration (Paper Test) until the calibration is complete. If you find that Eddy's temperature no longer rises, you can use the following commands to end the calibration early.
- Additional gcode commands available during drift calibration include: TEMPERATURE_PROBE_NEXT
TEMPERATURE_PROBE_NEXT
is used to force EDDy to sample new data before reaching the target temperature80°C
set by EDDy.TEMPERATURE_PROBE_COMPLETE
is used to complete the calibration before EDDy reaches the set temperature80°C
.ABORT
can be used to terminate the calibration and ignore the results.- Use
SAVE_CONFIG
to save the temperature offset settings after the calibration is complete! - In summary, compared to most other programs, the calibration process described above 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
Fast Bed Leveling
- The following macro will raise the nozzle to
10mm
during leveling, then quickly scan the bed, and after the bed scanning is completed, 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.005 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.005 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
Heated Bed
- The following macro will make the bed movement become a fast 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 use a high-power
AC
heated bed, it is recommended to configure - This configuration will reduce the impact of the high-power heated bed on EDDY
- Automatically turn off the heated 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}
Loading...