MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.23k stars 19.22k forks source link

[FR] disable MIN_STEPS_PER_SEGMENT when calibrating #8606

Open rszasz opened 6 years ago

rszasz commented 6 years ago

I have a delta printer, and manual calibration was working except for a weird issue where it would jump every few requested steps rather than moving at each requested change in position.

I finally realized it was the MIN_STEPS_PER_SEGMENT waiting for 6 steps before moving.

Would it be possible to disable step combining during calibration? And would it be possible to check that the PROBE_MANUALLY_STEP variable is an integer multiple (or a 2^n multiple) of actual stepper motor steps?

thinkyhead commented 6 years ago

In which procedure does this show up?

Please fill out this template:


Thank you for submitting your feedback to the Marlin project. Please use one of the templates below to fill out this box.


Feature Request

Please put [FR] in the issue title: [FR] Add-on that goes 'ping'


Compile Error

When I compile with FEATURE_X I get an error:

Paste_the_error_text_here

Bug Report

Attach a ZIP of Configuration.h and Configuration_adv.h by dropping here.


Bug Report Tips

thinkyhead commented 6 years ago

Note that segments refers to the movement of the steppers, so on delta, SCARA, and CoreXY the value can't be predicted without first doing kinematics. Otherwise, we could easily make sure the minimum manual movement distance is at least MIN_STEPS_PER_SEGMENT. Not a problem with Cartesian.

We can address this by placing MIN_STEPS_PER_SEGMENT into a variable and setting it to 0 temporarily. The tricky part is that we don't always know that we are "in a print job" so it may end up being left at 0 in some instances, such as when the nozzle is cold. Also note that this will add slight overhead to the planner.

rszasz commented 6 years ago

I noticed that it occurred when doing manual bed leveling. It may have been doing the same during automatic leveling as well. While printing/extruding having a modest value is great, but during all calibration stages it prevents single step adjustments. I just turned it to 0 and lived with the suboptimal printing.

thinkyhead commented 6 years ago

It's tricky at the current time to modify the min-steps-per-segment value only for certain LCD screens because the LCD code is written in such a way that we don't have "only on entry" and "only on exit" screen behaviors. If we had those then we could set planner.min_steps_per_segment to 0 on entry to a screen and then back to MIN_STEPS_PER_SEGMENT on exit.

Likewise, if we want to check whether a print job is in progress, we now test that an SD file is open, or that the nozzle has been heated. Since many of us do our bed calibration with a heated nozzle, behavior will be as if a print job is active. The one thing we can do is set it to 0 when inside of blocking procedures like G29. Unfortunately that doesn't help with your need to have it set during a certain LCD screen.

When we overhaul the LCD code this is something we want to address. A menu screen should be able to have a behavior that only occurs on first entry, and another when it is exited. Expect us to get into that more after the 2.0 release.

charakaSamawry commented 4 years ago

Noob here but doing manual ubl and wondering do people just set MIN_STEPS_PER_SEGMENT to 1?? Since this FR is getting on. Sorry if this isn't the place for such queries