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] Make `LEVEL_CORNERS_HEIGHT` be defineable by the end-user #23482

Open steve-zero opened 2 years ago

steve-zero commented 2 years ago

Is your feature request related to a problem? Please describe.

Bed leveling is always problematic for those without an automated system. The "Level corners" assistant tries to help but somehow fails, because the assistant sets the nozzle to z=0,0mm, therefore touching the bed. Under this circumstance, there is no proper way to actually calibrate the bed-nozzle distance. Putting a pice of paper in between as a gauge only works if you create so much pressure by the bed leveling screws that the hotend actually bends upwards by the thickness of said paper. Many end-users struggle here, as it feels wrong to tighten the screws so hard that you can hardly move the paper. It is also inprecise. When using a feeler gauge, you could calibrate the nozzle-bed distance very exactly - if the z-position during calibration would actually equal said gauge. So you have to either calibrate the bed manually (move z to 0,1 and then move around) or to create a custom firmware with the parameter LEVEL_CORNERS_HEIGHT set to the thickness of your feeler gauge.

But from a end-users perspective, this is not an ideal solution. Using LEVEL_CORNERS_HEIGHT is only available for customized builds of the firmware and hence not a solution for the masses. (Currently no printer out there seems to use anything but the default of 0,0mm.) Someone would have to provide a firmware-variant build to allow pure end-users to use it. Also, everybody would have to use the same feeler gauge thickness when using the same firmware binary. And you have to install a non-vendor firmware.

Are you looking for hardware support?

All printers without automatic bed leveling currently have no reliable way to calibrate the bed level. These are typical entry models not capable to do MBL, ABL or UBL, but rely on tramming as the only means of bed calibration.

Describe the feature you want

I would like to propose to make the parameter LEVEL_CORNERS_HEIGHT user definable via gcode or the GUI. That would actually solve some leveling problems for many end-users out there. It should be possible to provide a user-friendly and reliable way to perform manual bed leveling.

Additional context

Could an existing gcode such as M851 used for this purpose?

Seelenkind commented 2 years ago

Good IDEA