nexus 5 is revealed in a leaked service manual Digital Electronics 3D PRINTERING: ONE BED level TO rule THEM ALL

3D PRINTERING: ONE BED level TO rule THEM ALL

In an perfect world, your FDM 3D printer’s bed would be completely parallel with the print head’s airplane of movement. We usually state that means the bed is “level”, however truly it doesn’t matter if it is level in the traditional sense, as long as the head as well as the bed are the exact same distance apart at every point. Of course, in method nothing is perfect.

The second finest circumstance is when the bed is completely flat, however tilted family member to the print head. even though this isn’t ideal, software application can move the print head up as well as down in a linear fashion to compensate for the tilt. things are significantly worse if the bed isn’t itself flat, and has irregular bumps up as well as down all over.

To battle that, some printer firmware supports probing the bed to determine its shape, as well as adjusts the print head up as well as down as it travels across the map. Of course, you can’t probe the bed at every possible point, so the printer will have to interpolate between the determined recommendation points. Marlin’s bilinear bed leveling is an example.

But if you have sufficient flash area as well as you utilize Marlin, you may want to try unified bed leveling (UBL). This is like bilinear leveling on steroids. Unfortunately, the documentation for this mode is not as ordinary as you may like. whatever is out there, however it is difficult to get started as well as info is scattered around a few pages as well as videos. Let’s repair that.

The fundamental Idea

An inductive sensor
The concept is simple. The printer probes the bed at many spots. Ideally, you utilize some sensor to do this that isn’t as well far away from your print head. You can have as much as 225 points, although 100 or 49 are typical sizes — that is, 15 x 15, 10 x 10, or 7 x 7 as well as the bed doesn’t have to be square. The firmware stores the probe values in EEPROM. In fact, it can store more than one mesh, which is useful if you have several print surfaces: you may store a fit together for a glass bed in one slot as well as one for a PEI bed in another, for example.

Once the probe data is in place, you shouldn’t have to probe it again, at least for a long time. However, there are a few possible issues. First, your bed may not probe precisely right in every spot. even more likely, your probe may not be able to reach every area on the bed that the nozzle can. Finally, things modification over time. Your bed may sink a bit on its mounts. The system can adapt to everything, however it is a bit complex up until you get utilized to it.

Everything Old is new Again

Of course, bed leveling isn’t precisely new technology. Printers have had the ability to do some version of it for a long time. If your bed is completely flat, it may be adequate to just tilt the online bed. This is typical with, say, glass surfaces, where it is feasible to just figure out the slope of the X as well as Y tilt as well as apply it linearly.

The probe hovers a bit higher than the pint nozzle.
UBL is a bit different. It utilizes many points as well as interpolates linearly between each set of points. picture each measurement point as being part of a larger grid. As the print head moves in the grid, the printer adjusts based on the slope of the imaginary lines linking the nearest grid point to its neighbors.

But it is more than just the many points that makes UBL different. First, UBL enables you to fine-tune points easily. since the correction between points is just a guess, there are situations where the assumption is wrong as well as you requirement to edit the point to provide more or less correction to a specific spot.

There are a number of ramifications to this editing that may not be obvious at very first glance. For one, you can set up UBL without any Z probe at all. Sure, it is a pain, however you can manually determine all the points as well as the printer has provisions for assisting you make that measurement. Ideally, though, you’ll have a Z probe of some sort. Inductive probes are prominent as are BL-Touch as well as its many imitators. The picture shows a typical inductive sensor.

The other thing editing can do for you is to set points that your Z probe can’t reach. most probes have some balance out from the print head as well as can’t reach every point the print head can. For example, if the probe is 10 mm to the right of the head as well as the head can only go to 0 mm, then the probe can only determine X coordinates of 10 mm or greater.

It turns out, if your bed is quite consistent, you may not have to determine these additional points, however you can if you requirement to. Marlin is quite great at guessing the missing values as well as even if it is wrong, it may be easier to begin with the assumption as well as then make adjustments.

One fascinating side impact is that when you have a mesh, there are a range of methods to visualize what your bed looks like. then you may want to change your bed to be flatter, however if you do you will have to rebuild your mesh. I’ll show you a few methods to get a plot such as this next time.

Building UBL

You should already understand exactly how to develop Marlin for your machine. If not, you’ll have to begin there. when you can get Marlin to develop normally, you’ll requirement to offer with these configuration parameters:

In configuration.h (with some added comments for clarity):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#define AUTO_BED_LEVELING_UBL  // as well as turn off or eliminate other AUTO_BED_LEVELING_* defines
#define RESTORE_LEVELING_AFTER_G28 // pick one of these if you want house to bring back level or turn it on
//#define ENABLE_LEVELING_AFTER_G28
 
//#define PREHEAT_BEFORE_LEVELING // you can allow this section or just preheat manually
#if ENABLED(PREHEAT_BEFORE_LEVELING)
#define LEVELING_NOZZLE_TEMP 120 // (°C) only applies to E0 at this time
#define LEVELING_BED_TEMP 50
#endif
 
#define MANUAL_PROBE_START_Z 0.2 // handbook probes will begin right here so if this value is large, you will squander a great deal of time
 
#define ENABLE_LEVELING_FADE_HEIGHT // When to fade leveling impact to zero (10mm is good)
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
#define DEFAULT_LEVELING_FADE_HEIGHT 10.0 // (mm) Default fade height.
#endif
 
#define SEGMENT_LEVELED_MOVES // split moves into little pieces instead of entire grid
#define LEVELED_SEGMENT_LENGTH 5.0
// This section sets the parameters for the fit together validation pattern if you want to utilize it
#define G26_MESH_VALIDATION
#if ENABLED(G26_MESH_VALIDATION)
#define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of main nozzle.
#define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for G26.
#define MESH_TEST_HOTEND_TEMP 205 // (°C) Default nozzle temperature for G26.
#define MESH_TEST_BED_TEMP 60 // (°C) Default bed temperature for G26.
#define G26_XY_FEEDRATE 20 // (mm/s) Feedrate for G26 XY moves.
#define G26_XY_FEEDRATE_TRAVEL 100 // (mm/s) Feedrate for G26 XY travel moves.
#define G26_RETRACT_MULTIPLIER 1.0 // G26 Q (retraction) utilized by default between fit together test elements.
#endif
 
#elif ENABLED(AUTO_BED_LEVELING_UBL)  // settings for UBL
//#define MESH_EDIT_GFX_OVERLAY // screen a graphics overlay while editing the mesh
#define MESH_INSET 0 // set fit together bounds as an inset region of the bed — to prevent clips or other margins
// set the # of rows/columns to use 
#define GRID_MAX_POINTS_X 7 // Don’t utilize more than 15 points per axis, application limited.
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
//#define UBL_HILBERT_CURVE // utilize Hilbert distribution for less travel when probing several points
#define UBL_MESH_EDIT_MOVES_Z // If you turn this off, the nozzle might scrape the bed while moving between edit points
#define UBL_SAVE_ACTIVE_ON_M500 // save the currently active fit together in the present slot on M500
//#define UBL_Z_RAISE_WHEN_OFF_MESH 2.5 // You can force a height when there is no data for a point
 
#define UBL_MESH_WIZARD // add a wizard for configuration to the menu
 
// more menu setup
#define LCD_BED_LEVELING
#if ENABLED(LCD_BED_LEVELING)
#define MESH_EDIT_Z_STEP 0.025 // (mm) step size while manually probing Z axis.
#define LCD_PROBE_Z_RANGE 4 // (mm) Z variety centered on Z_MIN_POS for LCD Z adjustment
#define MESH_EDIT_MENU // add a menu to edit fit together points
#endif
 
// What do do after a Z probe
#define Z_PROBE_END_SCRIPT “G1 Z10 F12000\nG1 X15 Y200\nG1 Z10”

There are likewise a few settings in configuration_adv.h if you requirement to override, for example, the three-point probe corners as well as things like that. You can usually leave these alone. If you have an 8-bit controller, you may not have sufficient memory to develop UBL. There are a few methods to reduce the memory footprint, however not by much. much better to upgrade to a larger board.

Next Time

Once you have the firmware developed as well as downloaded to your printer, you are prepared to go, right? Not exactly. even though the printer now understands about UBL, you have to set it up which includes setting a Z height as well as measuring your very first mesh. I’ll show you exactly how that works next time.

Leave a Reply

Your email address will not be published. Required fields are marked *