diff --git a/Config_Reference.html b/Config_Reference.html index ce6b87539..b5ae57c0f 100644 --- a/Config_Reference.html +++ b/Config_Reference.html @@ -6097,6 +6097,9 @@ sensor_type: ldc1612 #samples_tolerance: #samples_tolerance_retries: # See the "probe" section for information on these parameters. +#tap_threshold: 0 +# Noise cutoff/stop trigger threshold delta Hz per sample +# See the Eddy_Probe.md for explanation
[probe_eddy_current my_eddy_probe] then one would run
LDC_CALIBRATE_DRIVE_CURRENT CHIP=my_eddy_probe. This command should
complete in a few seconds. After it completes, issue a SAVE_CONFIG
command to save the results to the printer.cfg and restart.
-The second step in calibration is to correlate the sensor readings to +
Eddy current is used as a proximity/distance sensor (similar to a laser ruler).
+The second step in calibration is to correlate the sensor readings to
the corresponding Z heights. Home the printer and navigate the
toolhead so that the nozzle is near the center of the bed. Then run a
PROBE_EDDY_CURRENT_CALIBRATE CHIP=my_eddy_probe command. Once the
@@ -1454,7 +1469,17 @@ those steps are complete one can ACCEPT the position. The tool will
then move the toolhead so that the sensor is above the point where the
nozzle used to be and run a series of movements to correlate the
sensor to Z positions. This will take a couple of minutes. After the
-tool completes, issue a SAVE_CONFIG command to save the results to
+tool completes it will output the sensor performance data:
probe_eddy_current: noise 0.000642mm, MAD_Hz=11.314 in 2525 queries
+Total frequency range: 45000.012 Hz
+z_offset: 0.250 # noise 0.000200mm, MAD_Hz=11.000
+z_offset: 0.530 # noise 0.000300mm, MAD_Hz=12.000
+z_offset: 1.010 # noise 0.000400mm, MAD_Hz=14.000
+z_offset: 2.010 # noise 0.000600mm, MAD_Hz=12.000
+z_offset: 3.010 # noise 0.000700mm, MAD_Hz=9.000
+issue a SAVE_CONFIG command to save the results to
the printer.cfg and restart.
After initial calibration it is a good idea to verify that the
x_offset and y_offset are accurate. Follow the steps to
@@ -1470,6 +1495,81 @@ result in changes in reported Z height. Changes in either the bed
surface temperature or sensor hardware temperature can skew the
results. It is important that calibration and probing is only done
when the printer is at a stable temperature.
The Eddy probe measures the resonance frequency of the coil.
+By the absolute value of the frequency and the calibration curve from
+PROBE_EDDY_CURRENT_CALIBRATE, it is therefore possible to detect
+where the bed is without physical contact.
By use of the same knowledge, we know that frequency changes with +the distance. It is possible to track that change in real time and +detect the time/position where contact happens - a change of frequency +starts to change in a different way. +For example, stopped to change because of the collision.
+Because eddy output is not perfect: there is sensor noise, +mechanical oscillation, thermal expansion and other discrepancies, +it is required to calibrate the stop threshold for your machine. +Practically, it ensures that the Eddy's output data absolute value +change per second (velocity) is high enough - higher than the noise level, +and that upon collision it always decreases by at least this value.
+[probe_eddy_current my_probe]
+# eddy probe configuration...
+tap_threshold: 0
+The suggested calibration routine works as follows:
+PROBE METHOD=taptap_threshold.Repeat until the nozzle softly touches the bed. +This is easier to do with a clean nozzle and +by visually inspecting the process.
+You can streamline the process by placing the toolhead in the center once. +Then, upon config restart, trick the machine into thinking that Z is homed.
+SET_KINEMATIC_POSITION X=<middle> Y=<middle> Z=0
+G0 Z5 # Optional retract
+PROBE METHOD=tap
+Here is an example sequence of threshold values to test:
+1 -> 5 -> 10 -> 20 -> 40 -> 80 -> 160
+160 -> 120 -> 100
+Your value will normally be between those.
+You can estimate the initial threshold value by analyzing your own +calibration routine output:
+probe_eddy_current: noise 0.000642mm, MAD_Hz=11.314
+...
+z_offset: 1.010 # noise 0.000400mm, MAD_Hz=14.000
+The estimation will be:
+MAD_Hz * 2
+11.314 * 2 = 22.628
+You can validate the tap precision by measuring the paper thickness +from the initial calibration guide. It is expected to be ~0.1mm.
+Tap precision is limited by the sampling frequency and +the speed of the descent. +If you take 24 photos per second of the moving train, you can only estimate +where the train was between photos.
+It is possible to reduce the descending speed. It may require decrease of
+absolute tap_threshold value.
It is possible to tap over non-conductive surfaces as long as there is metal +behind it within the sensor's sensitivity range. +Max distance can be approximated to be about 1.5x of the coil's narrowest part.
As with all inductive probes, eddy current probes are subject to significant thermal drift. If the eddy probe has a temperature diff --git a/G-Codes.html b/G-Codes.html index 5cb19a755..333f10db3 100644 --- a/G-Codes.html +++ b/G-Codes.html @@ -5900,21 +5900,23 @@ information from your slicer to Klipper.
bltouch config section is enabled (also see the probe calibrate guide).PROBE [PROBE_SPEED=<mm/s>] [LIFT_SPEED=<mm/s>] [SAMPLES=<count>]
-[SAMPLE_RETRACT_DIST=<mm>] [SAMPLES_TOLERANCE=<mm>]
+PROBE [METHOD=<value>] [PROBE_SPEED=<mm/s>] [LIFT_SPEED=<mm/s>]
+[SAMPLES=<count>] [SAMPLE_RETRACT_DIST=<mm>] [SAMPLES_TOLERANCE=<mm>]
[SAMPLES_TOLERANCE_RETRIES=<count>] [SAMPLES_RESULT=median|average]:
Move the nozzle downwards until the probe triggers. If any of the
optional parameters are provided they override their equivalent
-setting in the probe config section.METHOD is probe-specific.
QUERY_PROBE: Report the current status of the probe ("triggered" or
"open").
PROBE_ACCURACY [PROBE_SPEED=<mm/s>] [SAMPLES=<count>]
+PROBE_ACCURACY [METHOD=<value>] [PROBE_SPEED=<mm/s>] [SAMPLES=<count>]
[SAMPLE_RETRACT_DIST=<mm>]: Calculate the maximum, minimum, average,
median, and standard deviation of multiple probe samples. By default,
10 SAMPLES are taken. Otherwise the optional parameters default to
-their equivalent setting in the probe config section.METHOD is probe-specific.
PROBE_CALIBRATE [SPEED=<speed>] [<probe_parameter>=<value>]: Run a
helper script useful for calibrating the probe's z_offset. See the
@@ -5963,13 +5965,14 @@ SET_PIN command without an explicit CYCLE_TIME parameter will use the
quad_gantry_level config section
is enabled.
QUAD_GANTRY_LEVEL [RETRIES=<value>] [RETRY_TOLERANCE=<value>]
+QUAD_GANTRY_LEVEL [METHOD=<value>] [RETRIES=<value>] [RETRY_TOLERANCE=<value>]
[HORIZONTAL_MOVE_Z=<value>] [<probe_parameter>=<value>]: This command
will probe the points specified in the config and then make
independent adjustments to each Z stepper to compensate for tilt. See
the PROBE command for details on the optional probe parameters. The
optional RETRIES, RETRY_TOLERANCE, and HORIZONTAL_MOVE_Z values
-override those options specified in the config file.METHOD is probe-specific.
The query_adc module is automatically loaded.
The following commands are available when the z_tilt config section is enabled.
Z_TILT_ADJUST [RETRIES=<value>] [RETRY_TOLERANCE=<value>]
+Z_TILT_ADJUST [METHOD=<value>] [RETRIES=<value>] [RETRY_TOLERANCE=<value>]
[HORIZONTAL_MOVE_Z=<value>] [<probe_parameter>=<value>]: This command
will probe the points specified in the config and then make
independent adjustments to each Z stepper to compensate for tilt. See
the PROBE command for details on the optional probe parameters. The
optional RETRIES, RETRY_TOLERANCE, and HORIZONTAL_MOVE_Z values
-override those options specified in the config file.METHOD is probe-specific.