Z probes used in FFF (FDM) 3D printers are used to determine the height of the print nozzle above the print surface during calibration or before a printing operation. The measurement obtained from a Z probe can be used to assist in the manual adjustment of bed level and nozzle height or to allow fully automatic correction for errors of bed squareness, flatness and nozzle height.
Z probes used only to determine the bed level and flatness are usualy based on some form of proximity sensor although some mechanical switches fall into this category. Z probes that determine the absolute height of the nozzle typically require the detection of the nozzle touching the bed.
Differing Z probe technologies vary in their ability to deliver reliability, simplicity, accuracy and low cost and no single type predominates.
- 1 Overview
- 2 Types of Probes
- 2.1 Microswitch
- 2.2 Inductive
- 2.3 Capacitive
- 2.4 Reflective / IR
- 2.5 Nozzle Contact Probes
- 3 Further reading
While there are many different types of probes available, the general operating principle is usually the same. Most probes act as a switch, triggering when they are near or in contact with the print surface. There are many mechanisms through which this switching is done - from simple mechanical switches to advanced reflective sensors. From the perspective of the printer's control board and firmware, the method used by the probe is irrelevant - the firmware only sees the output as a switch that is either open or closed.
The goal is to measure the distance between the printer's nozzle and the surface of the bed at various points on the bed's surface. These points are then analysed to generate a model of the print surface (to varying extents depending on the firmware and settings used). This model is then used during the print to move the nozzle up and down, in order to keep the distance between the nozzle and the print surface constant - thus compensating for any unevenness in the print surface.
Additionally, the probe may also be used for homing the Z axis. This is (depending on firmware) typically independent of the bed probing / compensation process, in that it is possible to use a probe for Z-homing without performing any bed compensation, or, alternatively, it is possible to perform the compensation but use a traditional endstop for axis homing. This is an important distinction as automatic bed levelling / compensation and homing using a probe are often confused / conflated.
Types of Probes
These probes make use of a small microswitch, as are often used in axis endstops.
The switch must make physical contact with the print surface to trigger, but during a print it will need to be situated higher than the nozzle in order to avoid colliding with the print - because of this, most microswitch-based solutions employ some mechanism to raise or lower the probe into place when required. Often small hobby servomotors are used to achieve this, though there are other approaches.
Using microswitches as probes is often one of the easiest approaches from an electronics perspective, but there is usually complexity and bulk in the mechanism involved in moving the microswitch.
Inductive sensors trigger when they are close to a metal object. The distance at which the sensor triggers depends on both the sensor in question and the properties of the metal object.
In 3D printers, these probes are typically used when printing on a metal bed. Usually the trigger distance is too small to allow for glass or any other thick surfaces over the metal bed, but thin surfaces - such as tape or other thin films - are unlikely to interfere with operation.
Most inductive sensors used in 3D printers were originally designed for larger mechatronic systems, such as automated assembly lines. Because of this, they have a largely standardised mechanical mounting design - many inductive probes are cylindrical in shape and approximately 12mm in diameter. They have an external thread and two nuts which can be tightened to secure the sensor in place. This makes it fairly easy to design and print adaptors to mount these probes into place.
Because of their intended use in larger mechatronic systems, most inductive sensors are typically designed to act as a switch for non-logic-level voltages, such as 12V. In order to interface such an inductive sensor with most RepRap electronics operating at 3.3/5V, some form of voltage-level translation is necessary.
Inductive Probe Wiring Example
A very popular model of inductive probe is the LJ12A3-4-Z/BX (blue tip), this probe is normally closed so your firmware configuration should treat this as an "inverted" endstop.
LJ12A3-4-Z/BY (brown tip) also available and is normally open.
Additionally, this probe is rated to run at 6-36V and output the same, which is not safe to directly connect to the 5V inputs on the RAMPS board.
Inductive probe LJ12A3-4-Z/BX has 10k internal pull-up resistor. For voltage divider you can choose R1 and R2 to be one of the pairs: 11k and 15k, 18k and 20k, 1.5k and 8.2k, 56k and 47k, 2.7k and 9.1k.
Please Note: If while printing you notice your z-motors oscillating a lot (depending on steps/mm) as your head travels back and forth across the bed you should probably stop the print and eyeball the nozzle height across the bed, you may need to twiddle one of the z-axis lead screws a turn or so to bring the distance closer. Having a bed which is mechanically close to level, i.e. orthogonal to your x and y axes, definitely doesn't hurt the process, the less the hardware has to compensate the better.
There is a repeatability test in Marlin available through an M48 GCode command which (if sent alone) will probe the current bed point 10x and return the standard deviation, the closer to zero the better. This is a test of your z-probe's repeatability.
Capacitive probes are similar to inductive probes. They are also commonly used in larger mechatronic systems, and usually share the same cylindrical form-factor. However, unlike inductive probes, capacitive probes are able to detect and trigger from a glass print surface.
Reflective / IR
Reflective sensors work by shining light - usually infra-red - onto the print surface, and measuring the intensity of the returned light. In this, they are similar to IR distance sensors. However, the reflective sensors designed for 3D printer use have been optimised for repeatability and precision, instead of range.
IR sensors may be either simple threshold-based sensors, which work by triggering when the reflected light is greater than some internal threshold, or more advanced differential sensors such as the original design by dc42 and derivatives from others such as aus3d. These use multiple LEDs and measures the different relative intensities reflected from each.
Simple threshold IR sensors are cheaper, but are affected by interference from background IR sources - such as daylight, incandescent light-fittings, and so on. Additionally, the output from these sensors will vary significantly with different bed surfaces. Differential sensors are not affected by interference, and provide much more consistent readings against different print surfaces.
IR probes are a popular choice as they will work with most print surfaces, such as glass, metal, or tape. Additionally, due to their small form-factor, some IR sensors - such as the Aus3D probe pictured - can mount directly to E3D HotEnds, requiring no adapters or other modifications.
Nozzle Contact Probes
Nozzle contact probes detect the nozzle coming into contact with the print surface. This has the advantage that there is no offset in X, Y or Z axes which allows nozzles and print surfaces to be changed without lengthy adjustments. Nozzle contact methods do require that the nozzle should have no plastic residue and should preferably be at working temperature. There is a risk of damage to build surfaces if the nozzle contacts the surface too violently or is in contact with the surface for too long.
Switch Nozzle Contact Probes
Mechanical switch nozzle contact probes include microswitches mounted under the bed or attached to the hotend. The most significant problem with these is that there is some pre-travel before the switch operates which needs to be compensated for in the Z off-set.
Electrical Contact Sensors
Direct electrical contact probes rely on an electrical contact being established between a conductive nozzle and a conductive surface. Although this arrangement is simple, the need for a conductive path prevents many common films and coatings being used and the nozzle should be very clean.
Puck probes are a variation on the electrical contact sensor with a switch in a puck which avoids the need for a conductive path. The puck is attached to the nozzle only when probing and this arrangement has no offset in the X and Y axes and a fixed offset in the Z axis. Puck probes are relatively immune to changes in surface hardness as the base of the puck covers a larger area than the tip of a nozzle.
Force Sensitive Resistors
The use of FSRs was pioneered by Johann and are now popular on Delta printers including some commercial ones. Although FSRs can be interfaced directly to a microcontroller, in order to get best sensitivity they need some supporting electronics.
Piezoelectric Sensors use inexpensive piezo disks and offer exceptional sensitivity. Although this is a new technology and has potential problems in mechanical noise and thermal sensitivity, none of these has been difficult to overcome. Principle versions of the piezo disk sensor include Piezo-electric Hotend Z Probe and Underbed Piezoelectric Sensors. An allied method uses a mechanical vibrator connected to the hotend and a piezo sensor connected to the build stage, the vibration being transmitted only when the nozzle contacts the build surface. Since the sensor electronics can be tuned to look only for the frequency from the vibrator this method is insensitive to mechanical noise.
Accelerometer probes are used on some commercial printers, notably the Rostock Max V3. At this time (March 2017) non-commercial makers of 3D printers have had very limited success with accelerometer probes,
- Poul-Henning Kamp. "Height probing for PCB isolation routing with Eagle/pcb-gcode".