OpenNeptune3D / OpenNept4une

Transform your Neptune 4 3D printer with OpenNept4une, a collection of scripts designed to replace the manufacturer's software, reverting to the original open-source projects for enhanced performance, reliability, and features.
GNU General Public License v3.0
344 stars 40 forks source link

Klipper Bed Leveling Bug Fix #224

Open jKawka-ITV opened 1 week ago

jKawka-ITV commented 1 week ago

https://github.com/Klipper3d/klipper/issues/6711

The key take away from the comments/discussion is that the drift is caused by multiple probes and reducing microsteps to 16 eliminates the issue when probing at 3 mm/s. This may potentially reduce or completely eliminate the need for Axis Twist Compensation.

Alternatively you can set it to only probe once instead.

I've not tried printing yet, but I've set my Z stepper to 16 microsteps + home/probe speed to 3.0 and ran a few bed meshes. The result spreads look a lot more tight.

miklschmidt commented 1 week ago

Hey! Issue author here, it's really dependent on the steps pr second generated during a probing move for the probed axis, which depends on a range of settings. It's correct that reducing the amount of probe operations reduces the amount of drift, but it does not get rid of it. The main take away should be: the lower the rate of steps, the less error. Aim for something in the range of 1 step per 400 us.

Currently, your z axis is running:

microsteps: 32
rotation_distance: 8
full_steps_per_rotation: 200

And you're probing at 10 mm/s.

That works out to 8/200/32 = 0,00125mm per step, and since you're probing at 10 mm/s that means you're generating 10 / 0,00125 = 8000 steps per second. resulting in a step interval of 1 / 8000 = 0,000125 or 125us, which definitely will be affected by the bug.

Ie. If you just reduce your probe speed to 3 mm/s, the chance of a step being generated within the 45us endstop oversampling delay is greatly reduced. I haven't been able to detect consistent real world drift at a step interval > 400us.

Alternatively, you could do 16 microsteps and 6 mm/s probe speed, which would result in the same step rate, but much faster bed meshes.

This way you gain accuracy from the additional samples, instead of loosing it :) Hope that helps!

cogswirth commented 1 week ago

Alternatively you can set it to only probe once instead.

I'm just a hobbyist who has this exact problem on a Neptune 4 Pro. My bed is level per screws_tilt, and my z offset is bang on... in the middle of my bed. In the front right corner, my z-offset gap is too large, and in my back left corner it is too narrow. I have to manually correct with my bed knobs after taking a mesh, and my probe takes two measurements per data point.

Can you point me in the right direction for taking single data points, or for changing the microsteps and probing speed?

dvystrcil commented 1 week ago

You can read up on the settings here: https://github.com/Klipper3d/klipper/blob/master/docs/Config_Reference.md#probe

But do the math first. I thought I was experiencing this problem, but when I ran the math a few times, the numbers came out incredibly small.

halfmanbear commented 1 week ago

Thankyou all, in Dev branch I've updated the base.cfg. Note: The E Microstep reduction is unrelated (just testing extruder torque).

https://github.com/OpenNeptune3D/OpenNept4une/commit/d6782a366fbc3622d694bc09801e73c5c9bd287e

miklschmidt commented 1 week ago

Thankyou all, in Dev branch I've updated the base.cfg. Note: The E Microstep reduction is unrelated (just testing extruder torque).

d6782a3

That commit should reduce the worst case bed mesh drift by 11 x 11 x 3 x 0.00125mm = 0.45mm

miklschmidt commented 1 week ago

I wonder how many people intentionally skewed their frame because they thought the bed mesh reported the truth.