Closed Mordi1984 closed 1 month ago
Thanks for reaching out. Our support team does not operate using the GitHub platform but we would be happy to help you via email based ticketing system. Please visit https://biqu.equipment/pages/technical-support and submit a ticket and we will be in touch with you soon.
Hello.
After installing and flashing my Eddy USB and build up my printer i want to Calibrate the EDDY and got this error: "Error on 'PROBE_EDDY_CURRENT_CALIBRATE': missing CHIP"
My config file from Eddy is:
The MCU section only applies to the Eddy USB. For Eddy Coil you will use the MCU name of the toolboard that you connected the Eddy Coil to.
[mcu eddy] serial: /dev/serial/by-id/usb-Klipper_rp2040_45474E621B05E5AA-if00 # This is the serial address of your eddy probe. This can be found by using the terminal of your klipper instance (typically through SSH) and using the command
ls /dev/serial/by-id
This is the serial address of your eddy probe. This can be found by using the terminal of your klipper instance (typically through SSH) and using the command
ls /dev/serial/by-id
restart_method: command
Did you read all of the comments before the macros? Make sure that you do and then uncomment the ones that you need. Remove this line when you are done.
[temperature_sensor btt_eddy_mcu] sensor_type: temperature_mcu # Sets the type of sensor for Klipper to read sensor_mcu: eddy # Sets the MCU of the eddy probe tempereature sensor min_temp: 10 # Sets the minimum tempereature for eddys tempereature sensor to operate max_temp: 100 # Sets the maximum tempereature for eddys tempereature sensor to operate
[probe_eddy_current btt_eddy] sensor_type: ldc1612 z_offset: 1.5
i2c_address:
i2c_mcu: eddy # This value is good for the Eddy USB but would need to be adjusted for the Eddy Coil according to the MCU you have used. i2c_bus: i2c0f # This value is good for the Eddy USB but would need to be adjusted for the Eddy Coil according to the I2C bus you have used.
Measure the offsets below using the method described here: https://www.klipper3d.org/Probe_Calibrate.html#calibrating-probe-x-and-y-offsets
For a standard Voron stealthburner X carriage mount there should be no need to change the defaults below.
x_offset: 0 y_offset: 21.42
This section is only relevant for Eddy USB. Comment it out for Eddy Coil.
[temperature_probe btt_eddy] sensor_type: Generic 3950 sensor_pin: eddy:gpio26 horizontal_move_z: 2
[bed_mesh] horizontal_move_z: 2 speed: 200
For the mesh dimensions below, the coordinates need to be reachable by the center of the probe. To calculate coordinates that will work, use the formula below:
mesh x min = position_min_x + greater_of (15mm or x_offset) <--- in this term, only consider the x offset if it is positive, ignore if negative.
mesh y min = position_min_y + greater_of (15mm or y_offset) <--- in this term, only consider the y offset if it is positive, ignore if negative.
mesh x max = position_max_x - greater_of (15mm or |x_offset|) <--- in this term, only consider the x offset if it is negative, ignore if positive.
mesh y max = position_max_y - greater_of (15mm or |y_offset|) <--- in this term, only consider the y offset if it is negative, ignore if positive.
Example: Consider that you have a 300 x 300 bed with the max x and y positions being 300 and the min being 0. Your probe offsets are -20 for X and 10 for Y
For mesh x min we ignore the x offset term because it is negative. Therefore mesh x min = 15
For mesh y min we do not ignore the y offset term because it is positive but it is less than 15 so we use 15. Therefore mesh y min = 15
For mesh x max we do not ignore the x offset term because it is negative. It is also greater than 15. Therefore mesh x max = 280
For mesh y max we ignore the y offset term because it is positive but it is less than 15 so we use 15. Therefore mesh y max = 285
The final result would be mesh_min: 15, 15 mesh_max: 280, 285
mesh_min: 10, 10 # modify these according to the above guide. If the probe cannot reach then you will get a klipper error when trying to scan a bed mesh. mesh_max: 390, 390 # modify these according to the above guide. If the probe cannot reach then you will get a klipper error when trying to scan a bed mesh. probe_count: 9, 9 algorithm: bicubic
scan_overshoot: 8 #uncomment this section if you still have room left over on the X axis for some scan overshoot to product smoother movements and more accurate scanning. Uncommenting this should be fine if you are using a standard voron mount.
Uncomment this if you are using Eddy as the probe AND the homing endstop
[safe_z_home] home_xy_position: 200, 200 # Choose an X,Y position that is in the center of your bed. For a 300x300 machine that will be 150, 150. Use the same principle to calculate your bed center. z_hop: 10 z_hop_speed: 25 speed: 200
###############################Macros and related################################
This secton contains macros and related config sections. Some should be used, others are optional. Read the comment above each one to find out whether or not to uncomment it for your installation.
Uncomment this if you are using Eddy as the probe AND the homing endstop AND would like to use the beta z-offset control
[save_variables] filename: ~/printer_data/config/variables.cfg
Uncomment this if you are using Eddy as the probe AND the homing endstop
[force_move] enable_force_move: True # Allows a user to move the z axis down if they have no other means of homing Z and need to calibrate the Eddy.
Uncomment this if you are using Eddy as the probe AND the homing endstop AND would like to use the beta z-offset control
[delayed_gcode RESTORE_PROBE_OFFSET] initial_duration: 1. gcode: {% set svv = printer.save_variables.variables %} {% if not printer["gcode_macro SET_GCODE_OFFSET"].restored %} SET_GCODE_VARIABLE MACRO=SET_GCODE_OFFSET VARIABLE=runtime_offset VALUE={ svv.nvm_offset|default(0) } SET_GCODE_VARIABLE MACRO=SET_GCODE_OFFSET VARIABLE=restored VALUE=True {% endif %}
Uncomment this if you are using Eddy as the probe AND the homing endstop
Take note of the lines that should only be used if you have a KNOMI installed.
[gcode_macro G28] rename_existing: G28.1 gcode:
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=homing VALUE=True # Uncomment this if using a KNOMI and then remove the G28 macro from the KNOMI.cfg
G28.1 {rawparams} {% if not rawparams or (rawparams and 'Z' in rawparams) %} PROBE SET_Z_FROM_PROBE {% endif %}
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=homing VALUE=False # Uncomment this if using a KNOMI and then remove the G28 macro from the KNOMI.cfg
Uncomment this if you are using Eddy as the probe AND the homing endstop
[gcode_macro SET_Z_FROM_PROBE] gcode: {% set cf = printer.configfile.settings %} SET_GCODE_OFFSET_ORIG Z={printer.probe.last_z_result - cf['probe_eddy_current btt_eddy'].z_offset + printer["gcode_macro SET_GCODE_OFFSET"].runtime_offset}
Uncomment this if you are using Eddy as the probe AND the homing endstop AND would like to use the beta z-offset control
[gcode_macro Z_OFFSET_APPLY_PROBE] rename_existing: Z_OFFSET_APPLY_PROBE_ORIG gcode: SAVE_VARIABLE VARIABLE=nvm_offset VALUE={ printer["gcode_macro SET_GCODE_OFFSET"].runtime_offset }
Uncomment the lines in this macro if you are using Eddy as the probe AND the homing endstop AND would like to use the beta z-offset control
[gcode_macro SET_GCODE_OFFSET] rename_existing: SET_GCODE_OFFSET_ORIG variable_restored: False # Mark whether the var has been restored from NVM variable_runtime_offset: 0 gcode: {% if params.Z_ADJUST %} SET_GCODE_VARIABLE MACRO=SET_GCODE_OFFSET VARIABLE=runtime_offset VALUE={ printer["gcode_macro SET_GCODE_OFFSET"].runtime_offset + params.Z_ADJUST|float } {% endif %} {% if params.Z %} {% set paramList = rawparams.split() %} {% for i in range(paramList|length) %} {% if paramList[i]=="Z=0" %} {% set temp=paramList.pop(i) %} {% set temp="Z_ADJUST=" + (-printer["gcode_macro SET_GCODE_OFFSET"].runtime_offset)|string %} {% if paramList.append(temp) %}{% endif %} {% endif %} {% endfor %} {% set rawparams=paramList|join(' ') %} SET_GCODE_VARIABLE MACRO=SET_GCODE_OFFSET VARIABLE=runtime_offset VALUE=0 {% endif %} SET_GCODE_OFFSET_ORIG { rawparams }
This macro automates a lot of the frequency mapping process and simplifies the steps significantly.
[gcode_macro PROBE_EDDY_CURRENT_CALIBRATE_AUTO] gcode: BED_MESH_CLEAR G28 X Y 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}
This macro is optional but useful if you want to run a rapid scan before each print. Simply uncomment it and add BED_MESH_SCAN to your print start code.
[gcode_macro BED_MESH_CALIBRATE] rename_existing: BTT_BED_MESH_CALIBRATE gcode:
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=True #Only uncomment this line if using a KNOMI and then remove the BED_MESH_CALIBRATE macro from KNOMI.cfg
BTT_BED_MESH_CALIBRATE METHOD=rapid_scan
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=False #Only uncomment this line if using a KNOMI and then remove the BED_MESH_CALIBRATE macro from KNOMI.cfg"
Is that right, or is there any foult for example here: i2c_mcu: eddy # This value is good for the Eddy USB but would need to be adjusted for the Eddy Coil according to the MCU you have used. i2c_bus: i2c0f # This value is good for the Eddy USB but would need to be adjusted for the Eddy Coil according to the I2C bus you have used.?
Kind regards