Site Navigation

Your Account

Choose Language

Connecting a Z probe

Overview ¶ 

The Duet 2s (Duet WiFi and Duet Ethernet) and Duet 0.8.5 provide a dedicated 4-pin connector for connecting a Z probe. The Duet 0.6 does not have the Z-probe connector, but you can use some pins on the expansion connector for the same purpose.

For a comparison of advantages and disadvantages for various Z probe options see Choosing a Z probe.

If you don;lt have a Z probe, you can still use delta auto calibration, mesh bed compensation and other features normally associated with a Z probe. See Mode 0 below.

Once you have the probe connected, see how to Test and calibrate a Z probe and Setting up automatic probing of the print bed.

Z Probe Header/ Expansion header pins ¶ 

These are the pins provided on the 4-pin connector, and the corresponding pins on the Duet 0.6 expansion connector:

Duet WiFi/Ethernet pin markingDuet 0.8.5 pin markingDuet 0.6 expansion connector pinPurpose
INAD1239 (AD12)Input from Z probe
GNDGND2 (or use the GND pin on E0 endstop connector)Ground
MODPC1041 (AD14)Control signal for some types of Z probe
3.3V3.3V3 (or use the 3V3 pin on E0 endstop connector)Power to Z probe

You can use a Z probe with either an analog or a digital output. The advantage of an analog output is that the firmware will slow down the probe speed when it is getting close to trigger height. Some types of Z probe with digital output should be connected to the E0 endstop connector instead of ot the Z probe connector.

To configure the firmware to recognise the output mode of the Z probe you are using and which pin it is connected to, use the P parameter of the the M558 command in config.g. For example, M558 P1 selects Z probe mode 1.

Z probe modes selectable in firmware ¶ 

Mode 0 ¶ 

Select this mode if you have no Z probe. When the firmware tries to execute a command to probe the bed, it will instead show a dialogue in Duet Weh Control, and also on Panel Due if you are running recent Panel Due firmware, asking you to jog the head down until the nozzle just touches the bed and then press the OK button.

Mode 1 ¶ 

This is a probe with an analog output connected to the Z probe connector. The probe output must rise as it gets closer to the bed, unless you use parameter I1 in the M558 command to indicate that the probe output falls as it gets closer to the bed (the I1 parameter is supported in firmware 1.16 and later). The control signal is driven HIGH.

Mode 2 ¶ 

This is a probe with an analog output that requires the Duet to provide modulation signal and demodulate the returned signal. The probe output rises as it gets closer to the bed. The Duet drives the control signal with a 500Hz square wave. The firmware extracts that part of the analog signal received on the IN pin that is in phase with the modulation.

Mode 3 ¶ 

As mode 1 except that the control signal is driven LOW.

Mode 4 ¶ 

The trigger signal is read from the E0 endstop circuit. You can choose whether the signal is high or low when triggered. In firmware 1.15 and earlier this is done by using M574 E0 S1 to select active high, or M574 E0 S0 to select active low. In firmware 1.16 and later, use I1 in the M558 command to select active low, otherwise it defaults to active high.The device connected to the E0 STP pin must be able to sink 1.5mA for the Duet 2 WiFi and Duet 2 Ethernet, 0.3mA for the Duet 2 Maestro, or 2.1mA for the Duet 0.6 or 0.8.5.

Mode 5 ¶ 

A switch or digital output device connected between the IN and GND terminals of the Z probe connector. Similar to mode 4 except that the Z probe connector is used. The input must be active high when triggered, or in firmware 1.16 and later you can use the I1 parameter in the M558 command to select active low. The only pullup resistor is the 100K nominal pullup in the microcontroller so the sink current requirement is tiny.

Mode 6 ¶ 

Similar to mode 4 except that the E1 endstop input is used.

Mode 7 ¶ 

Similar to mode 4 except that the Z endstop input is used.

Mode 8 ¶ 

Similar to mode 5 except that the input is not filtered, for slightly faster response. Supported in firmare 1.20 and later.

Mode 9 ¶ 

Special mode for BLTouch probe. Supported in firmware 1.21 and later.

Connecting different types of Z probe ¶ 

Mini differential IR sensor by dc42 ¶ 

Connect the VCC, GND and OUT pins of the sensor to 3.3V, GND and IN respectively on the Z probe connector, and select mode 1 in the M558 command. See also DC42's web page on the IR sensor for more on setting up this probe.

RepRapPro 3-wire IR sensor (as shipped with Ormerod 1) ¶ 

Connect as shown in the RepRapPro Ormerod 1 wiring instructions, using the table above to translate between expansion connector pins and Z probe connector pins if necessary, and select mode 1.

RepRapPro 4-wire IR sensor (as shipped with Ormerod 2, Huxley Duo and Mendel) ¶ 

Connect as shown in the RepRapPro Ormerod 2/Huxley Duo/Mendel wiring instructions, using the table above to translate between expansion connector pins and Z probe connector pins if necessary, and select mode 2.

Force sensitive resistor(s) ¶ 

If not using JohnSL's trinket board: Connect the FSR(s) in parallel, between +3.3V and the IN pin of the Z-probe connector, and connect a fixed resistor between the IN pin and the GND pin. Select mode 1. Choose the value of the fixed resistor to give reliable triggering. With firmware 1.16 and later it is possible to connect the FSRs between IN and ground instead, and the fixed resistor between IN and +3.3V, if you use the I1 parameter in the M558 command.

If using JohnSL's trinket board: Connect its Vcc, Output and Ground pins to 3V3, STP and GND respectively on the E0 endstop connector, and select mode 4. Alternatively, connect them to 3.3V, IN and GND on the Z-probe connector and select mode 5.

Microswitch ¶ 

Connect it between the STP and GND pins of the E0 connector and select mode 4. If it is a normally-closed microswitch, then with version 1.15 or earlier firmware use M574 E0 S1 to select active high trigger level. For normally-open contacts (not recommended), send M574 E0 S0 instead. With 1.16 or later firmware, include parameter I1 in the M558 command if you are using a normally-open switch.

NPN output normally-open inductive or capacitive sensor ¶ 

Duet 2 Maestro only: you can connect the output of the sensor directly to the E0 STP pin.

Other Duets: Connect the output wire of the sensor to the cathode of a diode, and the anode of the diode to the E0 STP pin. The diode should preferably be a small-signal Schottky diode such as BAT43 or BAT85, but a small signal silicon diode such as 1N4148 works for some people.

All Duets: Connect the sensor ground wire to a ground pin on the Duet, and the sensor's + power wire to a suitable voltage (typically to VIN because these sensors usually need between 6 and 30V power).

Select mode 4 in the M558 command. If using firmware 1.15e or earlier, include M574 E0 S0 in config.g to select active low logic level for the Z probe. If using firmware 1.16 or later, include parameter I1 in the M558 command instead.

PNP output normally-open inductive or capacitive sensor ¶ 

Duet 2 Maestro only: you can connect the output of the sensor directly to the IN pin of the Z probe connector.

Other Duets: Connect the sensor output wire to one end of a resistor (call this R1), and connect one end of another resistor (call this R2) to GND on the Z-probe connector. Connect the free ends of R1 and R2 together and to the IN pin of the Z-probe connector. The values of R1 and R2 should be chosen so that about +3V appears at their junction when triggered. If R2 is 10K, then suitable values of R1 are 30K if the sensor is powered from +12V, and 68K if it is powered from +24V.

All Duets: Connect the sensor ground wire to Duet ground, and the sensor's + power wire to a suitable voltage (typically to VIN because these sensors usually need between 6 and 30V).

Select mode 5 in the M558 command.

BLTouch ¶ 

These instructions are provisional. For more information, see this thread https://www.duet3d.com/forum/thread.php?....

BeTrue3d.dk Has a very detailed tutorial on using a BL touch, including how to setup bed leveling an bed compensation here:

https://betrue3d.dk/bltouch-on-duet-wifi...

If you don't have a DueX2 or DueX5 expansion board ¶ 

Connect the BLTouch as follows:

Duet ZProbe connector pinDuet expansion connector pinBLTouch pinColour
GNDGNDBlack
INOutWhite
+5V (pin 1)+5VRed
Heater3 (pin 8)ControlOrange
GND (pin 2)GNDBrown
Block Image

For all Duets except the Duet 2 Maestro:

If you have the older BLTouch, also connect the 240 ohm resistor between Probe GND and Probe IN. On the newer BLTouch, cut the PCB trace on the BLTouch to reduce the output to 3.3V as described in the BLTouch instructions.

The Z probe input on the Duet 2 Maestro is 30V tolerant, so it doesn't matter whether you reduce the output of the BLTouch rto 3.3V or leave it at 5V.

Software setup ¶ 

1. In your software config.g file input the following G-Code commands to allow the setup to work:

M307 H3 A-1 C-1 D-1 ;

M558 P9 X0 Y0 Z1 H5 F100 T2000

G31 X0 Y0 Z0 P25

  • Important: mode 9 is supported in firmware 1.21 and later only. If you are using earlier firmware, replace P9 in the M558 command by P5.
  • In the G31 command the X and Y are the offset of the sensor in relation to the nozzle (so input your own) the number for Z is the trigger height (read on for this). This is the height that is obtained from reading the height the nozzle is from the bed when the sensor pin contacts the bed and retracts, P is the signal threshold.
  • It is required to invert the signal “I1” when using the expansion header pins and not the Duex to connect the BLTouch.

2. Create a deployprobe.g file (in the /sys folder of the SD card) it should contain the following single command:

M280 P3 S10 I1

3. Create a retractprobe.g file (in the /sys folder of the SD card) it should contain the following single command:

M280 P3 S90 I1

Commissioning & Testing ¶ 

To test the setup with the nozzle maybe a 100mm up from the bed you can check if the trigger signal is reaching the Duet by attempting to extend the pin by using the following command:

M280 P3 S10 I1

Then put the Sensor in to test mode by inputting the following command:

M280 P3 S120 I1

If all is well the web interface should report a value of ” 0” in the Z probe column when the pin is extended. You can then lightly touch the extended probe pin to check that the pin retracts, the value in the Z probe Column should change to “1000”

If all is good It is at this point that you can deploy the probe using the M280 P3 S10 I1 command and slowly lower the nozzle to the bed and find out your own Z trigger height, when the probe touches the bed and the pin retracts you can take a reading of the Z height and use that to input into the G31 command in the config.g file

If you do have a DueX2 or DueX5 expansion board ¶ 

First you need to allocate an unused heater expansion channel to reconfigure as the servo control for the BLTouch. For example, if the E3Heat output is unused, you can use heater 4 which corresponds to the PWM2 connector.

Connect the BLTouch as follows:

Duet ZProbe connector pinDueXn PWM connector pinBLTouch pinColour
GNDGNDBlack
INOutWhite
+5V+5VRed
PWMControlOrange
GNDGNDBrown

Put this command in your config.g file to disable the heater, where # is the heater number (this makes it available for use to control the BLTouch):

M307 H# A-1 C-1 D-1

Your deployprobe.g file (in the /sys folder of the SD card) should contain just this command:

M280 P# S10

Your retractprobe.g file (in the /sys folder of the SD card) should contain just this command:

M280 P# S90

In both cases ¶ 

Select probe type 9 (the P parameter in your M558 command) if you are using firmware 1.21 or later, and type 5 otherwise. Set the G31 P parameter to a low value, because the BLTouch produces only a short output pulse, which may be filtered out if you use a higher threshold.

7 Comments

Must invert the signal “i1” when using the pins and not the Duex to connect the BLTouch.

The test signal is S120 and not S60

Morten Nielsen - Reply

I was wondering why the test code wasn’t working for me

Vance Howard -

Thanks, I have updated the page

Tony -

Can we add in the new Mode 9 support for BLTouch?

Sean Moe - Reply

Just done that! - DC

David Crocker -

This comment is reall reall really misleading …. please update your text

It is required to invert the signal “I1” when using the expansion header pins and not the Duex to connect the BLTouch.

put WHICH command you need to apply the I1 to !!! I’m assuming that it is the M280.

But it causes confusion and wastes time forcing people to look up the GCODE commands to see which commands support that function, if you new to reprap this is confusing.

simon foley - Reply

for some reason somebody decided that when I posted that there is some missing information in this post that it was removed as spam with no explanation. If people go out the way to help others avoid problems and fix mistakes people have made i think that is poor.

What I found missing here is the need to configure the end stops specifically for the probe to get it working;

e.g. for a CR10s with Normally High End stops at the low Position

M574 X1 Y1 Z0 S1 ; Set active high endstops (Z0 can be omitted)

M574 Z1 S2 ; Set z probe endstop

simon foley - Reply

View Statistics:

Past 24 Hours: 78

Past 7 Days: 387

Past 30 Days: 1,859

All Time: 3,857