These steps are all fresh, and this area of Klipper is advancing/changing quite frequently, so steps are subject to change.
For example, some of the macros we use now may have actual commands built in when some PRs go through (#7179 for example), however, their functionality now should remain the same
For the record, everything I have here is working perfectly as of Version v0.13.0-563-gf1fb5756 of Klipper
- SV08 mainlined with the Sovol Eddy kit installed as outlined in their docs, but do not flash their software as that would ruin mainline
- Ensure you are on the latest version of Klipper
- Remove any previous Eddy config (as great as Eddy-NG is, you will need to uninstall it for this to work, if doing so, don't forget to reflash all MCUs)
- Ensure the full section
[probe]is commented out in your printer.cfg (if it was not, runSAVE_CONFIGafer you do it) - Tap requires scipy, so install it:
~/klippy-env/bin/pip install scipy
First step is editing ldc1612.py to edit an else statement that helps Klipper use the right values for the frequency of the coil. In future updates of Klipper this will be done automatically.
For now:
cd ~
cd klipper/klippy/extras/
edit ldc1612.py with your fav editor (vi/vim/nano etc)
go to line 94 (or if that changes, the line with: self.sensor_div = 1 if self.clock_freq != DEFAULT_LDC1612_FREQ else 2)
change else 2 to else 4
save the file
sudo systemctl restart klipper.serviceIf this is not done, the calibration step will not work correctly.
NOTE: If you automatically update Klipper and this file changes, you will need to redo this step until it is added in via an official commit eventually.
Copy my sovol-eddy-cfg from config/options/probe/sovol-eddy.cfg here and reference it in your printer.cfg, however, it's a good idea to change the following for now (we will update/change it later):
tap_threshold: 140
Home the printer, since we have not run the next calibration steps, it should not home Z and give you an error (but it homes X and Y ok):
Must home axis first: 172.000 172.000 9.000 [0.000]
We can overcome this my tricking the printer into thinking Z is known:
SET_KINEMATIC_POSITION X=177.50 Y=177.5 Z=10
The value of Z does not matter here, since we're doing the "paper test" next and Z will be overwritten. If you used my homing_override the values of X and Y should match.
Run:
PROBE_EDDY_CURRENT_CALIBRATE CHIP=my_eddy_probe
(Note this next section was taken from the official guide https://www.klipper3d.org/Eddy_Probe.html word for word)
"Once the tool starts, follow the steps described at "the paper test" (https://www.klipper3d.org/Bed_Level.html#the-paper-test) to determine the actual distance between the nozzle and bed at the given location.
Once 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 it will output the sensor performance data"
You should see something similar (but not the same):
4:25 p.m.
The SAVE_CONFIG command will update the printer config file
and restart the printer.
4:25 p.m.
z: 3.010 # noise 0.000620mm, MAD_Hz=7.560
4:25 p.m.
z: 2.010 # noise 0.000688mm, MAD_Hz=13.898
4:25 p.m.
z: 1.010 # noise 0.002728mm, MAD_Hz=80.280
4:25 p.m.
z: 0.530 # noise 0.000495mm, MAD_Hz=21.043
4:25 p.m.
z: 0.290 # noise 0.001228mm, MAD_Hz=57.892
4:25 p.m.
Total frequency range: 92849.729 Hz
4:25 p.m.
probe_eddy_current: noise 0.001685mm, MAD_Hz=36.296 in 2525 queries
Issue:
SAVE_CONFIG
Now, for your own tap calibration you can follow https://www.klipper3d.org/Eddy_Probe.html#tap-calibration
Note, that if you are upgrading from an older Klipper that also had tap_threshold defined, you will need to comment it out before doing the above.
Test it all out, if you run (hover your hand over your emergency stop button in the GUI or on your printer!!!):
PROBE METHOD=tap
nothing should blow up, and as the official guide suggests, running (after a Z home):
PROBE_ACCURACY METHOD=tap
should give you a range: output of around ~0.02mm, here was mine:
probe accuracy results: maximum 0.005618, minimum -0.001772, range 0.007391, average 0.002776, median 0.002923, standard deviation 0.002006
So I got a range of range 0.007391, which is REALLY good.
If you got outside of ~0.02, update your tap_threshold value using the tests outlined in the guide. I personally just took the value I showed you in my example and it was great out of the box.
The included macros in my config/options/probe/sovol-eddy.cfg can be used like this, for example (see my macros.cfg file for how I use them):
- Preheat bed
- QGL, re-home Z
- Heat hotend to 150C, clean nozzle
- Go somewhere (center or SMART_PARK from KAMP)
- Tap + Bed Mesh with
SET_SCAN_FROM_TAP - Start print!
Notes / updates on your QGL macro:
I learned from eddy-ng it is a good idea to run two QGLs when you have a nozzle tap. One a bit higher in case of a racked gantry, then next one lower.
So perhaps you'll want to update your QGL to use do something like:
- First pass with
horizontal_move_z=5 retry_tolerance=1 - Second pass with
horizontal_move_z=2
To use step 7.5's tap, use the macro SET_Z_FROM_PROBE METHOD=tap
To use step 7.6's bed mesh macro use:
SET_SCAN_FROM_TAP
# For best results should match the previous command "scan" height
{% set scan_height = printer.configfile.settings["probe_eddy_current my_eddy_probe"].descend_z %}
BED_MESH_CALIBRATE ADAPTIVE=1 METHOD=scan HORIZONTAL_MOVE_Z={scan_height}
NOTE: You can change METHOD=scan to METHOD=rapid_scan if you want
This bed mesh macro creates another offset from the scan that is unique from your Z offset tap.
If you notice your first layer needs to be a bit higher or lower, you can baby step your Z down or up, then run Z_OFFSET_APPLY_PROBE METHOD=tap and SAVE_CONFIG, the value will be stored as tap_z_offset under your #*# <---------------------- SAVE_CONFIG ----------------------> section
Thanks especially to Timofey Titavets (https://klipper.discourse.group/u/nefelim4ag/summary) for their help setting this up and for implementing this code into Klipper!
All Z offset and bed mesh calibration macros credited to Timofey as well
Relevant links: Z offset macros: https://www.klipper3d.org/Eddy_Probe.html#homing-correction-macros
Bed mesh calibration macros: Klipper3d/klipper#7179 (comment)
Happy to help here for any questions related directly to my config, but probably better for everyone if the greater discussion for mainline Klipper using Sovol's Eddy probe is had on:
https://klipper.discourse.group/t/sovols-eddy-hardware-info/25610