3D Printer Bed Leveling: Difference between revisions

From Open Source Ecology
Jump to navigation Jump to search
Line 119: Line 119:
| Mechanical tramming, manual fixation
| Mechanical tramming, manual fixation
| Yes
| Yes
| No
| Yes
| No
| Yes
| No
| No
| CC BY SA
| CC BY SA

Revision as of 12:14, 3 February 2016

This wiki page collects OSE's understanding of bed leveling, tramming and compensation mechanisms of FFF 3D printers. It is intended for use when assessing other's bed leveling mechanisms as well as serving as a design rationale for various bed leveling mechanism developments (see for example Prusa_i3_Development and D3D_Printer_Design_Process).

Introduction

All common FFF 3D printers needs a constant distance between nozzle and print or print bed during all print layers. This is critical when first/bottom layers are put down, since bed adherence is what keeps the figure fixed during print. All common gcode (move-instructions for printer) assumes a flat print bed in the models XY-plane. A flat print bed is also the printers default model of the physical print bed, before any sensing or compensation. Two fundamentally different approaches are used to handle differences between assumed coordinate system and actual printer shape: mechanical bed leveling/tramming and software bed compensation.

Bed leveling/tramming

Simply pushing three points of the print bed into place with the print head. This procedure is conceptually simple, but it requires a rigid and flat print bed as well as a mechanism for fixing the print bed once pushed into place. This fixation mechanism involves some specialized firmware code and manual intervention or two extra motors.

One (non-libre) solution has been announced in a Google group and mentioned by Hackaday.

Bed Compensation

This is short for "automatic bed shape irregularity compensation i software". Introduces the sub-problems of height sensing and geometric transformations of gcode.

Sensor placement, sensor fixation and sensing mechanism limits the possible sensing area and number of sensing points. Number and precision of sensed points sets fixed limits on compensation quality based on simple geometry. Each sensed point allows removing implicit assumptions about physical bed shape. Sensor precision determines compensation repeatability.

Zero Data Points

This means the printer user has to manually set first layer height before print. No common designs does this due to the time consumption of the procedure. For one printer that actually does this, see Clerck.

One Data Point

This allows automatic bed height adaption. The printer's modeled Z-axis and the Z-axis assumed by the gcode will be completely parallel. Early RepRap designs such as Darwin and Mendel used this. They both had bad sensor placement (fixed to frame, not to bed or print head) and bad sensor fixation (manually placed along smooth rod, held in place by friction alone) made re-calibration a frequent and time consuming issue for these designs.

Two Data Points

This allows compensating for bed tilt around one axis. No common design does this.

Three Data Points

This allows compensating for tilt around two axes. This is the most common number of data points. Compensation is achieved by applying a rotational matrix to every gcode line.

A video showing the tilt compensation made possible with three data points is shown here.

More Data points

...

Assessment Matrix

The following matrix doesn't fit nicely into Google Sheets because it doesn't allow multiple links per cell. It was developed in ods format, source file with links here: File:Bed leveling and compensation comparison.ods. The following wikitable is missing all links due to format converting issues.

Column descriptions

Precision is not mentioned in its own column because meaningful numbers cannot exist without taking many factors into account, such as:

  • Bed material
  • Ambient light
  • Temperature
  • Electrostatic noise

In a shielded environment, all presented solutions perform good enough.

Usage repeatability column describes experienced repeatability from actually implemented solutions when possible.

Most rows refer to an actual implementation, and hence licenses are included. Proprietary solutions are included for demonstrating useful general approaches. The reason why there's a “surface dependence” column and not a “print head dependence” column is that no found solutions are adapting hot end design to facilitate bed probing. It is always the hot end mount that is adapted.

The “Bed/Head Contact?” column tells us if re-calibration is needed on tool change.

Build complexity is guessed by Tobben and assumes building upon previous work as much as possible.

Possible placements of sensors are:

  • Frame
  • Near print head
  • Across/through print head (print head acts as part of the sensor)
  • In print bed

Matrix

Name Bed/Head Contact? Re-calibration on glass sheet change? Re-calibration on tool change? Dedicated motor needed? Licenses and patents of implementations Files Price Build Complexity 1 – 10 Usage Repeatability Bed weight/g Head weight/g HW Sources Example Usage Surface dependence Developer Instructions available? Notes
Mechanical tramming, motorized fixation Yes No No Yes Patent application for gimbal and lock system 6.0 Very good > 100 0.0 Video by Kühling&Kühling Spring-loaded surface and with variable height fixation No
Mechanical tramming, manual fixation Yes Yes Yes No CC BY SA jonaskuehling's Github repo 1.0 1.0 Very good ~20.0 0.0 Video by Scott Booker Spring-loaded surface and with variable height fixation Kühling&Kühling No
Microswitch near hot end No No Yes Yes Video by Smartfriendz None
Microswitch across print head Yes No No No 1.0 5.0 Good 0.0 ~10 Video by Smartfriendz, Video by Tom, Image of Robox connection None Smartfriendz first used microswitch near head, then changed to microswitch across head to ease installation and save a servo. CEL Robox also uses microswitch across print head.
Microswitches in bed Yes No No No 1.0 4.0 Good enough for layer heights > ~0.05 mm ~10 0.0 Cheap Ebay source Video by Prusa Research, Fisher uses �this bed resting on these spring loaded corners. Resting on microswitches Prusa and others Some microswitches are heat sensitive. Home made switches are easily constructed. Reprappro did not reuse modulation IR probe from Ormerod design in its newer Fisher design. Suggests overall benefits.
Ultrasonic source+sensor near print head No No? Yes No GPL, CC0 dc42's Github repo (experimental support) ~$15? 5.0 Low due to temperature dependence 0.0 ~8 Reading forum thread required Depends on air temperature between bed and sensor. Hard to control/predict. Dc42 and Radian on RepRap forums No
Modulated IR sensor near print head No No Yes No MIT Reprappro's Github repo 22.0 4.0 Needs recalibration when ambient light or bed reflectivity changes 0.0 ~5 Emakershop Ormerod II Relies on IR reflection (color/transparency sensitive) Reprappro (Bowyer et al) Yes Linked goes to specialized breakout board. Modulated refers to switching light source on and off, and using diffed values.
Differential IR sensor near print head No No Yes No GPL, CC0 dc42's Github repo 40.0 4.0 Saturates in direct sunlight at shallow angle [1] 0.0 ~7 Filastruder.com See pic here Relies on IR reflection (color/transparency sensitive) Escher 3d (dc42 on RepRap forums) Yes Linked goes to specialized breakout board. Differential refers to usage of two light sources. Also called three-way modulation.
Capacitive proximity sensor near print head No Yes Yes No 3.0 6.0 Sensitive to electrical noise, temperature (air humidity) and any irregularity between metal sheet and head. Very high theoretical precision. 0.0 ~20 Chip used by Radian. Ebay Video by Radian, Video explaining basic concept Needs extremely regular bed, as air, paper, dust, glue etc affects measurments. Radian on RepRap forums No Developer Radian prefers capacitive sensing after extensive experimentation with IR and ultrasonic. Equally experienced developer dc42 prefers differential IR sensing.
Inductive proximity sensor near print head No Yes Yes No 3.0 3.0 Good 0.0 ~45 Sensor used by Folgertech Explanation by Radian, Video by AIRCONROB, Video by Richrap Works with aluminum bed without glass (too low sensing range). Ferrous metal bed gives good enough sensing range for having glass bed above it. [1, 2] Radian on RepRap forums (and others) Yes Used by �Smartfriendz, Printrbot and bq. Smartfriendz used microswitch near and through print head in previous designs. Less sensitive to bed irregularities than capacitive sensing. bq uses steel plate behind glass sheet.
Piezo elements in bed Yes No No No CC BY SA elenhinan's Thingiverse repo, Inornate's remix on Thingiverse 15.0 7.0 Very good in theory but needs controlled environment (sensitive to vibration and electrical noise). ~15 0.0 See Inornate's repo for BOM Video by elenhinan Resting on piezo elements elenhinan and inornate on thingiverse Some here, some here See developer thread (inactive since spring 2015).
Voltage across bed/head No Yes Requires voltage in head. Otherwise no. No CC BY SA 1.0 3.0 Requires nozzle cleaning, otherwise very good. ~3 ~1 Yommy Rawr's video of Lulzbot Mini One separated conductive area per data point Lulzbot Only Lulzbot Mini in known to use this solution. Reported to work very reliably.
Force sensitive resistors in bed Yes No No No 18.0 Sparkfun Requires ca 1 N to acticate, which some find too much to be reliable [1]
Force sensitive resistors across print head Yes No No No 6.0 Sparkfun
Accelerometer in print head Yes No No No 8.0 Unknown 0.0 ~5.0 Seems like the promised Kickstarted Tiko will use it... None Tiko team No Very little known about accelerometer solution

Researched Sources

http://www.protoparadigm.com/news-updates/3screw-bed-leveling-and-the-importance-of-a-level-print-bed-on-a-3d-printer/
http://www.tridimake.com/2015/12/bed-leveling-tramming-sensors.html Steps through entire state of the art/tech tree of choices. Ends up recommending using three Force Sensing Resistors.
http://www.tridimake.com/2015/12/tribed-fully-automatic-bed-leveling-and-z-offset-adjustment.html
http://forums.reprap.org/read.php?14,605317 Forum thread announcing load cell z-probe design.
http://www.instructables.com/id/Reprap-Load-Cell-Z-Probe/ Instructable for load cell based bed level system announced in above link.
http://hackaday.com/2014/04/15/automated-bed-leveling-for-3d-printers-is-now-solved/
http://www.instructables.com/id/Mach3-Zero-Probe-Tool/
http://forums.reprap.org/read.php?151,246132,362843#msg-362843 Posted list of threads relevant to height sensing
http://reprap.org/wiki/Auto_Bed_Leveling RepRap Wiki Article on bed compensation

Collection of links suggesting a need for automatic bed leveling or compensation

forum thread 2013, status of firmware work on bed compensation in 2012, Lulzbot's thread on bed compensation started in 2013 was active until mid 2015, bed leveling question from 2012, Print Bed Leveling procedure on RepRap Wiki

Relevant Meeting Protocols