TransWikia.com

Switch nozzle contact probe auto leveling with Marlin 2.0

3D Printing Asked by henradrie on August 26, 2021

I have a Robo R1+ which uses the nozzle contacting the glass print bed to level the printer. When the print head strikes the bed the Z-min endstops open signaling that the bed is touched.

I recently upgraded from an Arduino to an SKR 1.3 running Marlin 2.0 and have been trying to make the printer auto level. However all the examples I can find involve a probe. I’m not even sure what this kind of autoleveling is called.

Is there a way to configure Marlin 2.0 to perform this kind of autoleveling. And if so what lines should I comment and un-comment?

One Answer

Basically, you are also using a probe, the nozzle is the probe. So this is very similar to an auto levelling setup using a capacitive or inductive sensor, the difference is that your M851 nozzle to probe distance is zero, and may receive a positive value to slightly raise it to get a sheet of paper in between the nozzle and printing surface.

Please note that below only changes for levelling are addressed, not other specifics in Marlin 2.x for the Robo R1+!

First you define the nozzle offset in Configuration.h, which is exactly at the nozzle, so X and Y (and Z) are zero.

#define NOZZLE_TO_PROBE_OFFSET { 0, 0, 0 }

You can also set:

define NOZZLE_AS_PROBE

Furthermore, you need to define a levelling method in the same configuration file:

//#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR
#define AUTO_BED_LEVELING_BILINEAR
//#define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING

For safety, we usually home Z at the center of the printing surface:

#define Z_SAFE_HOMING

Also be sure the following statement is active:

#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

Next, you need to define the boundaries of the "probe", which is exactly where the nozzle may come (apart from a small safety offset at all edges called MIN_PROBE_EDGE); how you do that is described in question "How to set Z-probe boundary limits in firmware when using automatic bed leveling?", in Marlin 2.x this needs to be set in Configuration_adv.h:

#if PROBE_SELECTED && !IS_KINEMATIC
  #define MIN_PROBE_EDGE_LEFT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_RIGHT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_FRONT MIN_PROBE_EDGE
  #define MIN_PROBE_EDGE_BACK MIN_PROBE_EDGE
#endif

Correct answer by 0scar on August 26, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP