Revo Support: Revo Voron PZ

Warning

  • Make sure to read this guide in its entirety before using PZ Probe.
  • This product is rated to a maximum of 5V. Exceeding this voltage can lead to serious complications!
  • This product is not plug-and-play.
  • Damage to the printing bed is not included under warranty.
  • Maximum ambient printing temperature: 75°C
  • Check the back of the board for the batch number prior to installation to ensure you are setting up correctly.

Features

  • Impact trigger that simulates a switch and can replace Voron Tap and other Z-Probes.
  • LED indicators
  • Press button to select configurable presets
  • IIR filter to increase noise immunity and noise rejection
  • Support both UART and I2C communication protocol
  • Voltage range of 3.3V-5V
  • Reversed voltage protection
  • Safety trigger during communications
  • The heatsink is a drop-in-replacement for E3D Revo Voron sink.

The table below displays the minimum force (N) required to trigger the PZ Probe for the highlighted speeds.

Preset Threshold (Sensitivity) Filter (Fc=260, F_BW=50) 300 mm/min 500 mm/min 700 mm/min 900 mm/min 12000 mm/min
0 5 Off 0.005 FT FT FT FT
1 10 Off 0.005 0.005 0.015 0.020 0.130
2 15 Off 0.005 0.005 0.015 0.025 0.140
3 1 Off FT FT FT FT FT
4 5 On 0.050 0.050 0.100 0.105 0.150
5 10 On 0.050 0.080 0.115 0.140 0.225
6 15 On NT 0.080 0.115 0.110 0.280
7 1 On 0.010 0.045 0.090 0.100 0.145

FT = False Triggering

NT = Not Triggering

Setup Guide

General Notes

After successfully connecting and mounting the PZ Probe, as well as adding the code needed in the configuration, there are some important details about how the PZ Probe works and what impacts the performance:

  • The more rigid the motion system that the PZ Probe is installed on, the better it will perform. This means, lower sensitivity and probing speeds can be used. Less rigid systems are more likely to not trigger and therefore usually require higher probing speeds.
  • Vibrations from the motor and Z-axis moving is the most common cause for false triggering and so it is important to drop the motor current during probing as much as possible. This will also save damaging your bed if no triggering occurs.
  • A useful way to test the PZ Probe while changing settings is to lightly tap the tip of the nozzle with a small metal ruler or pen. A yellow light will appear on the PZ Probe Board if a trigger is outputted. If you don't observe this behaviour, please check the troubleshooting guide.
  • It is recommended when probing the bed, to probe when the nozzle temperature 50°C below the target temperature to avoid oozing. Plastic on the nozzle flat will result in poor probing repeatability and potentially result in a No Triggering failure mode.
  • Probing speed is very important. Probing too slow will result in a No Triggering failure mode. Probing too quickly will result in inconsistent and inaccurate probing. See the troubleshooting section for more details. Accelerations and Jerk also has an impact on probing.
  • The output signal (Trigger) from the PZ Probe board is an active low signal. This means that when idle it is high (5V/3.3V) and then triggered, the output signal does to 0V (GND).

Connecting PZ Probe to your printer

  • The Heatsink is mounted as with a normal Voron Heatsink.
  • The heatsink has a "wire" with a 4 pin connector coming out of the central body, this will be referred as the flat flex.
  • The flat flex can then be routed through the cable channel and then connected to the PZ Probe Board.
  • Connect the flat flex to PZ Probe Board as in the image below. Ensure the black stiffener is facing up as in the image.

Black stiffener connection

The PZ Probe Board can then be connected to the cable with the 7-pin connector as shown in the image below, To see the pinout of this connector, please see the "Pinout" tab later in the guide.

Extension cable connection

The cable has four other connectors each with their own functions:

  1. The EndStop connector - if you have an octopus board for example, this can plug straight into the endstop connector on the board.
  2. UART connector - if you have a Raspberry Pi, this can be connected directly to the pin header of the Pi.
    See the tab "Configuration" > "Raspberry Pi with a Python script".
    This is an optional connector to plug in, and is only needed when configuring the preset settings.
  3. UPDI Connector - This can be used to program the microcontroller using a UPDI programmer. In most cases, users will not use this connector.
  4. I2C Connector - This can be used to configure the Preset settings with an alternative form of communication. This is the least preferred way of communication (UART is the recommended way).

Pinout diagram

PZ Probe Board Mounting

The PZ Probe Board can be mounted in 2 different ways:

  1. It can be mounted using the mounting holes by securing it with the M2 machine screws provided, in a convenient location on the printer or setup. Since the area around the mounting holes is clear, they can also be drilled to accommodate M3 screws.

Mounting holes diagram

If you are mounting the PZ Probe Board to Voron, you can mount the board on the X-carriage, using the modified 3D-printed parts:

Stealthburner mount

2. Attach double-sided tape (not provided) to the back of the PZ Probe Board, then place it in a convenient location on your printer or setup. You can break off the PCB's part with the M2 mounting holes by breaking the mouse bites - this is particularly useful for placing the PCB in a small area.

Mouse bites diagram

Firmware - Klipper

Before you start using PZ Probe, make sure to do the following changes to avoid any damage to your setup:

1/ These settings have been tested on our setup, but they may vary slightly depending on your setup. Please use them as a starting point, and make sure to go through all the steps below.

2/ During probing, reduce the current as much as possible without causing a stall. A good starting point is 40%, but lowering it further, if possible, will reduce the risk of damaging your bed. We have set our probing speed to 5 mm/s.

3/ In our testing procedures, we used the Roto toolboard (pin: !roto_tb). Make sure to correctly name it, as well as the other pins, according to your setup.

4/ Probe and check. If you experience false or no triggering, follow the steps in the troubleshooting tab.

Klipper Config

Firmware - Duet

In Config.g add the following:

Config.g

This is for Duet 3.6.0 onwards-Note that for G31, X and Y offset may need to be changed for your hotend. Z should be kept at 0.

You can now send commands via the command line as follows:

To write: M260.2 P1 S"STATUS\n"
Replace STATUS with any commands from the "Commands" section. \n is required at the end of the command.

To read: M261.2 P1 B10
The read command is rather limited as only a set number of bytes (B) can be read at anytime. So the command will need to be repeated several times and the B value may have to be changed to read the whole data packet received. All the values are returned in Hex, so these will need to be converted to ASCII to read the data externally outside of Duet. However, this provides a method of setting and reading the PZ-Probe controller with no additional hardware.

Presets

Preset Settings

By pressing the button on the controller, you can switch between 8 pre-configured presets. Seven of these presets are configurable via UART or I2C, while the preset"0" remains as the default and cannot be configured. These can be configured by looking at the Configurations and Commands section fo this guide.

On power up, Preset 0 is used by default. If you choose to change the preset, for example, you choose Preset 2, the PZ Probe Board will power up using Preset 2.

The table below shows the default values for each of the presets:

Preset Threshold Trigger Direction Filter Active Filter Centre Frequency Filter Bandwidth Safety Trigger Active Output Polarity*
0 5 1 0 260 50 1 0
1 10 1 0 260 50 1 0
2 15 1 0 260 50 1 0
3 1 1 0 260 50 1 0
4 5 1 1 260 50 1 0
5 10 1 1 260 50 1 0
6 15 1 1 260 50 1 0
7 1 1 1 260 50 1 0
  • Preset – Which preset setting you are in. Values shown in the table to the right of Preset are associated with the preset setting The preset that is being used can be changed easily by pressing the button on the PCB. The preset state is recovered after power cycling the PCB.
  • Threshold – This sets the sensitivity of controller (smaller number is more sensitive). The threshold value directly correlates to the 12-bit ADC, so if a threshold of 10 is set, the controller waits until the ADC reads a signal that is 10 or higher to trigger.
  • Trigger direction – This determines if the trigger is a rising-edge or a falling-edge trigger. This will usually be a rising-edge trigger in this application as the PZ Probe provides a pulse in the positive direction when compressed. Note: This does not change the output polarity.
  • Filter Active – This activates the IIR filter (1) or deactivates (0) the filter. The filter has two parameters; Centre Frequency and Bandwidth which are discussed below. This is useful to activate when noise from the heatsink fan interferes with triggering.
  • Filter Centre Frequency – This stores the value of the frequency of the noise that is to be cancelled out.
  • Filter Bandwidth – This stores the value of the range of frequency away from the centre frequency that should be cancelled out.
  • Safety Trigger Active – This should always be set to 1 as it ensures that the controller outputs the trigger state during UART or I2C communications to reduce the chance with a collision with the bed. This can be switched off, if this behaviour isnt desired.
  • Output Polarity From board Batch 5792 (see back of PCB) – This determines the behaviour of the trigger signal that goes to the printer. It can be set to be either active high (1) or active low (0). Active low means that the output signal falls from from High to Low when triggered and active high means that the output signal rises from Low to High when triggered.

Controller LED & Presets

There are 5 LEDs on the PZ Probe Board:

  • One LED is labelled PWR and is always on when there is power connected.
  • Another LED is labelled TRIG, this indicates when the PZ Probe Board is triggered (usually for ~100ms). If this LED is continously on or never comes on, see the "Troubleshooting" section.
  • There are 3 LEDs on the PZ Probe Board (labelled MODE 3, 2, 1) that turn green in a binary sequence after you press the button. The figures below will guide you through the different LEDs combinations and their corresponding mode.

LED diagram

Preset LED 3 LED 2 LED 1
Default (0) Off Off Off
1 Off Off On
2 Off On Off
3 Off On On
4 On Off Off
5 On Off On
6 On On Off
7 On On On

Configuration

If the default preset settings are not suitable for you setup, you can fine-tune them by modifying the presets with custom settings. There are five different ways to configure your PZ Probe, allowing you to choose the option that best suits you. Once configured, you can choose to disconnect UART as your values will be saved in memory and will be retained on power cycle.

All the options below use UART as this is the preferred method of communication. All methods will require the following hardware connections between the PZ Probe Board and the communication device:

Comm Device PZ Probe Board

  • 5V/3V3 ----------- PWR
  • GND ------------- GND
  • RX --------------- TX
  • TX --------------- RX

Arduino Hardware with Arduino IDE

Connect the PZ Probe Board to the arduino board such as an Arduino Mega. This can be done by connecting some jumper cables between your Arduino and the PZ Probe extension cable:

Arduino Mega PZ Probe Board

  • 5V --------------- PWR
  • GND ------------- GND
  • RX1 -------------- TX
  • TX1 -------------- RX

Keep in mind that Serial1 is RX1 and TX1 and USB is on RX0, TX0

Open Arduino IDE, and then open the SerialPassthrough example.

Arduino IDE

Ensure board and port are set.

You can identify the appropriate COM in tools

COM port selection

Set baud rate in serial monitor to 9600, and termination to newline

Serial monitor settings

If you disconnect and reconnect the PZ Probe Board while the terminal is open, a message similar to the one shown in the last image will appear. The Commands that can be used to program the PZ Probe can be found under the "Commands" section of this datasheet.

USB-TTL Convertor with Arduino IDE

  • If you choose to go with this second option, you will need a USB to TTL UART Converter (Like this one here).
  • Make sure to get a USB to TTL UART Converter with the correct voltage: 5V/3.3V.
  • Ensure the board is set to some generic like a Mega or Uno and set the correct COM port for your device

USB-TTL setup

Set baud rate to 9600 and termination to newline

Baud rate settings

If you disconnect and reconnect the PZ Probe Board while the terminal is open, a message similar to the one shown in the last image will appear. The Commands that can be used to program the PZ Probe can be found under the "Commands" section of this datasheet.

USB-TTL Convertor with PUTTY

  • In this third option, you will need PuTTY. If you don't have it, you can download it here.
  • After you download it, make sure to select the appropriate COM Port under PuTTY Configuration and set Baud Rate to 9600.
  • You can identify the appropriate COM in your device manager.

PuTTY configuration

Ensure that the following changes are implemented:

  • Tick "Implicit CR in every LF"
  • Under "Line discipline options", choose "Force on" for both "Local echo" and "Local line editing"

PuTTY terminal settings

If you disconnect and reconnect the PZ Probe Board while the terminal is open, a message similar to the one shown below will appear. The Commands that can be used to program the PZ Probe can be found under the "Commands" section of this datasheet.

PuTTY terminal output

If another terminal is used, ensure that:

  • Baud Rate is 9600
  • Only use \n or Line Feed to terminate messages
  • Only send message when enter is pressed

Duet with Duet web control

Configuring the PZ Probe Board via DUET is simple.
There are only three steps:

Step 1: Connect the PZ Probe Board to the DUET via the Panel Due Connector.

This is for Duet 3.6.0 onwards-Note that for G31, X and Y offset may need to be changed for your hotend. Z should be kept at 0.

You can now send commands via the command line as follows:

To write: M260.2 P1 S"STATUS\n"
Replace STATUS with any commands from the "Commands" section. \n is required at the end of the command.

To read: M261.2 P1 B10
The read command is rather limited as only a set number of bytes (B) can be read at anytime. So the command will need to be repeated several times and the B value may have to be changed to read the whole data packet received. All the values are returned in Hex, so these will need to be converted to ASCII to read the data externally outside of Duet. However, this provides a method of setting and reading the PZ-Probe controller with no additional hardware.

Config.g

Raspberry Pi with a Python Script

This method of configuration requires the UART pins (RX/TX) to be connected to the pin header of the Raspberry Pi. When doing so, ensure that the power of PZ Probe Board is connected to the 3.3V.

If you are using the Raspberry Pi on your 3D printer and PWR, GND and TRIG are connected to the printer control board, then only RX/TX have to be connected to the Raspberry Pi. The printer control board must by 3.3V to do this method.

  1. Power up and login to your Raspberry Pi. If UART isn't already active, activate it in Raspi-config.
  2. Within the terminal, type in:
    sudo nano /boot/cmdline.txt
  3. Delete the serial console parameter, it may look something like this:
    console=serial0,115200
    Then save and exit the file.
  4. Create a python script. This can be done within the terminal by typing:
    nano piezo_config_config.py
    Copy the code from below and paste it within the piezo_config.py file:

piezo_config_config.py

5. Save the file and exit the nano editor.

6. In the terminal, ensure you are in the same directory as the python script and type:
python piezo_config.py

7. The script will then ask you to enter a command. Use the Commands tab to type in a particular command you wish to use. The script will execute the command and send any replies to the terminal. The script will end when there are no more messages received from the PZ Probe Board after 2 seconds.

In the image below, an example of communicating with the PZ Probe Board via the Raspberry Pi Terminal can be seen:

Raspberry Pi terminal

Line 1: shows the command to start the python script.
Line 2: the script asks what message to send. The message is then typed in.
Line 3-6: shows the response from the Piezo Controller confirming that the change has been made.
Line 7: shows that the script received no further data from the Piezo Controller, so the script was terminated.

If a command didn't have intended result because a result like "No valid command received, please try again." was provided. Then, please try to rerun the script or connect/disconnect the PZ Probe Board.

The script may need to be modified if UART isn't identified as Serial0, You can use ls /dev/serial* in terminal to find the appropriate serial device.

Commands

  • "SET A,BBB,C,D,EEE,FFF,G," – Set command is used to change the settings below. When using this command, make sure to fill in all values. There should be a space only between "Set" and "A," with no spaces between the commas.
  • "SET A,BBB,C,D,EEE,FFF,G,H" – From board Batch 5792 (see back of PCB) Set command is used to change the settings below. When using this command, make sure to fill in all values. There should be a space only between "Set" and "A," with no spaces between the commas.
  • A: The Preset (mode). As seven of the modes are configurable, the value of A can only be 1-7, 0 is the default mode and can't be changed.
  • BBB = Threshold
  • C = Trigger Direction
  • D = Filter Active
  • EEE = Filter Centre Frequency
  • FFF = Filter Bandwidth
  • G = Safety Trigger Active
  • H = Output Polarity From board Batch 5792 (see back of PCB)

These settings are explained in more depth after the list of commands below

  • "SET X" – This command is used to change the preset (mode), where X is a number between 0 and 7. It performs the same operation as pressing the button on the PZ Probe Board. It will also reply with all the settings being used in status.
  • "STATUS" – STATUS command is used to determine the current preset state of the PZ Probe Board. It will also reply with all the settings being used in status. This command is especially useful to use before the "SET" command when you only want to change one value.
  • "REC TRIG" – This troubleshooting command is used to record 1000 reading, among which 100 before the trigger and 900 after. The trigger output stays in a triggered state until all values are printed out over UART. Since readings are taken at approximately 7788Hz, the data can be copied to Excel and estimate a time base accordingly. Only the threshold from the current preset is used with this command, so the filter and trigger direction settings do not affect it.
  • "REPORT ADC" – This is another useful troubleshooting command, similar to "REC TRIG," but it only records 1000 readings after a 100ms delay and outputs them over UART. The readings are taken at approximately 7788Hz (From board Batch 5792 the data rate is now 3894Hz), so you can copy the data to Excel and estimate a time base accordingly. If there is a noisy fan, an oscillating signal will be visible, allowing you to determine the filter frequency needed to cancel it out. Settings from the current preset is used such as threshold, trigger direction and the filter are used during the use of this command.

Note: these commands are typed in with no quotation marks.

In depth SET Settings explained:

  • Preset – Which preset setting you are in. Preset 0 is the default state and can't be modified. Presets 1-7 can be modified by using the "SET" command.
  • Threshold (input value range: -400 to 400, integers only) – This sets the sensitivity (smaller number is more sensitive). It is recommended to beyond the range of 0-30 as it is likely something else in the system has gone wrong if a value larger than this is required.
  • Trigger direction (input value range: 0,1) – This should always be 1 (rising-edge trigger) for Revo PZ Probe Voron. However, it can also be changed to 0 (falling-edge trigger). Note: This does not change the output polarity.
  • Filter Active (input value range: 0,1) – This activates the filter (1) or deactivates (0) the filter. The filter has two parameters; Centre Frequency and Bandwidth which are discussed below. If the filter is used, it is recommended to reduce the threshold as much as possible (1-5 Threshold has worked best in testing).
  • Filter Centre Frequency (input value range: 0 to 500, units: Hz, integers only) – This should be set to the value of the frequency of the noise you wish to cancel out.
  • Filter Bandwidth (input value range: 0 to 500, units: Hz, integers only) – This should be set to the error or range of the frequencies around the Centre Frequency you wish to cancel out. For example, if you have a centre frequency of 260Hz and a bandwidth of 50Hz – then the noise between 210-310Hz will be reduced.
  • Safety Trigger Active (input value range: 0,1) – This should always be set to 1 and it ensures that the controller outputs the trigger state to reduce the chance with a collision with the bed whenever the controller is busy with communications (UART, I2C). If it is set to 0 for experimental reasons, then the printer could move the Z axis and the PZ Probe may not detect the collision.
  • Output Polarity (input value range: 0,1) From board Batch 5792 (see back of PCB)– Allows for changing the output signal behaviour. 0 indicates an active low trigger, meaning that the output is always high when idle. The output goes low momentarily when Piezo is triggered. 1 indicates an active high trigger, meaning the output is always low when idle. The output goes high momentarily when the Piezo is triggered.

Pinout

Pinout diagram

Wire colour and their function:

  • Brown - GND (0V)
  • Red - PWR (3.3V-5V)
  • Orange - Trigger
  • Yellow - RX
  • Green - TX
  • Blue - UPDI
  • Purple - SCL
  • Grey - SDA

If you wish to create a custom wiring harness to connect to the PZ Probe Board, then the following mating connector is required:

  • Housing - JST SHR-08V-S-B
  • Crimps - JST SSH-003T-P0.2-H

Dimensions

Heatsink dimensions

Reference CAD

Troubleshooting

When the triggering of the PZ Board doesn't behave as expected, it is usually down to either false triggering or no triggering.

False triggering refers to the PZ Probe Board giving an output suggesting that the bed has been contacted, even though it hasn't.

No triggering refers to the PZ Probe Board giving no output despite contacting the bed.

False Triggering

False triggering can be the result of one or both of the following:

  • Sensitivity being set too high
  • Too much noise (mechanical or electrical) from the printer

Sources of noise may come from:

  • Motor vibrations
  • Heatsink and/or part cooling fan(s)
  • PWM signal from the heater
  • Jerk/Acceleration settings that are too high for the Z-axis

We recommend the following resolutions:

  • Reduce motor current during probing. Ideally, the motor current should be as low as possible without stalling the motors.
  • Use the built-in filter - this can be particularly useful for noise from the fan or heater. Use "REPORT ADC" command via Arduino terminal to determine the frequency of the unwanted noise. Then, it can be filtered using the filtering settings. Refer to "Preset Settings" tab for more details.
  • Decouple the fan wire away from the heater wire.
  • Reduce sensitivity by increasing the threshold value - see the SET command in the Commands section for this.

Ensure that there is a short delay (around 200ms) added between X/Y movement and beginning of probing.

No Triggering

No triggering can occur when plastic buildup on the nozzle tip interferes with probing, causing bed collisions because the PZ Board didn't get triggered.

We recommend the following resolutions:

  • Make sure the black stiffener at the end of the flat flex is facing upwards.

Black stiffener orientation

  • Increase the probing speed - this may be particularly important for less rigid motion systems. Optimum probing speeds are between 3-7mm/s, it can be pushed up to 20mm/s (only if the motor current is set as low as possible to avoid damaging the bed).
  • Increase sensitivity by decreasing threshold. Refer to "Preset Settings" under "User Guide" tab for more details about the "threshold" parameter.
  • Check extension wire continuity.

Make sure there is no plastic on the nozzle tip, as this can interfere with probing. For reliable probing, clean the nozzle before printing and set the nozzle temperature to 50°C below the print temperature.

Compliance