Skip to content

asnajder/sv08-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 

Repository files navigation

Sovol Eddy on a mainlined SV08 with native Klipper tap and scan correction

Disclaimer

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

Prereq

  • 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, run SAVE_CONFIG afer you do it)
  • Tap requires scipy, so install it: ~/klippy-env/bin/pip install scipy

1. Edit ldc1612.py

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.service

If 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.


2. Update config

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):

In the [probe_eddy_current my_eddy_probe] section, comment out the following line:

tap_threshold: 140

3. Home and set kinematic position

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.


4. Run calibration

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

5. Tap calibration

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.


6. Test

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.

7. How to use it

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):

START_PRINT

  1. Preheat bed
  2. QGL, re-home Z
  3. Heat hotend to 150C, clean nozzle
  4. Go somewhere (center or SMART_PARK from KAMP)
  5. Tap + Bed Mesh with SET_SCAN_FROM_TAP
  6. 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:

  1. First pass with horizontal_move_z=5 retry_tolerance=1
  2. 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.

8. First layer corrections

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

9. Credit and sources

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)

10. Questions or comments?

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

About

Config from my Sovol SV08

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors