bigtreetech / Eddy

103 stars 21 forks source link

probe_eddy_current sensor not in valid range #83

Open dravida77 opened 21 hours ago

dravida77 commented 21 hours ago

I have issues getting my Btt Eddy (USB) to work. Ive made a fresh install of DietPi and Klipper, Moonraker, Fluidd, Klipperscreen, Crowsnest (via kiauh) to make sure my Virtual Enviroment runs within python3. i updated the Firmware of the 2040. The Sensor is mounted exactly 2mm above the Nozzle Tip. I followed the Manual (https://github.com/krautech/btt-eddy-guide) very carefully without any luck.

The automated calibration kinda works but after a completed Bed Scan it drops the following error and wont create a Mesh. "probe_eddy_current sensor not in valid range"

So i tried to go for the manual route but ive noticed that im unable to perform a "PROBE_EDDY_CURRENT_CALIBRATE CHIP=btt_eddy" wiothout homing Z, so i tried to work arround the issue. I homed every axis, moved everything to the needed position, turned the printer off and on again, and tried to run the commands with fixed locations like this:

SET_KINEMATIC_POSITION z=20 SET_KINEMATIC_POSITION x=165 SET_KINEMATIC_POSITION y=105 LDC_CALIBRATE_DRIVE_CURRENT CHIP=btt_eddy SAVE_CONFIG

after this i moved the nozzle 5mm above the bed, turned the machine off and on again.

BED_MESH_CLEAR SET_KINEMATIC_POSITION z=5 SET_KINEMATIC_POSITION x=165 SET_KINEMATIC_POSITION y=105 PROBE_EDDY_CURRENT_CALIBRATE CHIP=btt_eddy SAVE_CONFIG G28 BED_MESH_CALIBRATE METHOD=rapid_scan

The Machine will go for a complete Bed Scan, after the scanning is done i receive the same error again: "probe_eddy_current sensor not in valid range"

You can find my eddy.cfg, printer.cfg and klippy.log here: https://pastebin.com/x327WZ6j https://pastebin.com/NYqt24CH https://pastebin.com/295pRrvQ

Ive tried setting the drive current to 16ma instead of 15ma, ran everything several times again, and tried literally everything i was able to find online (which is not much) without any luck and gave up after 10h of trouble shooting.

Schmudus commented 18 hours ago

Hi, I had similar issues. My Problem was that the bed was not leveled (Quad gantry level), so the distance was little too much on one corner. Also you can try to play with the reg_drive_current. I set mine to 16, but be carefuily. If you do so, you need to do the complete calibration again!!! Also you can play with the distance. I have a Eddy_Z_Offset of 1.5 and use in [bed_mesh] a horizontal_move_z: 2 Always take care that you don't cvrash your nozzle inside the bed. I destroyed one plate during adjustment and playing :-(

Schmudus commented 18 hours ago

Here's my eddy config parts. I put them in my printer.cfg

[probe_eddy_current btt_eddy] sensor_type: ldc1612 i2c_mcu: eddy i2c_bus: i2c0f x_offset: -17 y_offset: 10 z_offset: 1.5 speed: 5.0 lift_speed: 20

[temperature_sensor btt_eddy_mcu] sensor_type: temperature_mcu sensor_mcu: eddy min_temp: 10 max_temp: 100

[temperature_probe btt_eddy] sensor_type: Generic 3950 sensor_pin: eddy:gpio26 horizontal_move_z: 2

[bed_mesh] speed: 200 horizontal_move_z: 2 mesh_min: 10,10 mesh_max: 333,340 probe_count: 15,15 #12,12 #9,9 algorithm: bicubic bicubic_tension: 0.2 #0.3 move_check_distance: 5 split_delta_z: 0.02 mesh_pps:2,2 adaptive_margin: 5 fade_start: 0.6 #0 fade_end: 10 fade_target: 0

*# <---------------------- SAVE_CONFIG ---------------------->

*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.

*

*# [probe_eddy_current btt_eddy]

*# reg_drive_current = 16

Schmudus commented 18 hours ago

And here the part from macro.cfg

[gcode_macro G28] rename_existing: G28.1 gcode: G28.1 {rawparams} {% if not rawparams or (rawparams and 'Z' in rawparams) %} PROBE SET_Z_FROM_PROBE {% endif %} G0 Z30 F3600

[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}

[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 }

[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 }

[delayed_gcode RESTORE_PROBE_OFFSET] initial_duration: 1.0 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 %}

[gcode_macro PROBE_EDDY_CURRENT_CALIBRATE_AUTO] gcode: BED_MESH_CLEAR G28 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 QUAD_GANTRY_LEVEL] rename_existing:QUAD_GANTRY_LEVEL_BASE gcode: {% set mesh_name = "default" %} {% set mesh_calibrate_temp = printer['gcode_macro _global_var'].bed_mesh_calibrate_target_temp|int %} {% set current_target_temp = printer.heater_bed.target|int %}

{% if printer.heater_bed.temperature < mesh_calibrate_temp %}
    M140 S{mesh_calibrate_temp}
    {action_respond_info("Bed heating...")}
    M190 S{mesh_calibrate_temp}
{% endif %}

{% if printer.toolhead.homed_axes|lower != "xyz" %}
    G28
{% endif %}

QUAD_GANTRY_LEVEL_BASE

{% if current_target_temp == 0 %}
    M140 S0
{% endif %}
G0 X175 Y175 Z30 F3600

[gcode_macro BED_MESH_CALIBRATE] rename_existing: BTT_BED_MESH_CALIBRATE gcode: BTT_BED_MESH_CALIBRATE METHOD=rapid_scan