PZ Probe
- 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.
- The heatsink is already assembled. Disassembling it will void the warranty.
- Heatsink contains a Piezoelectric element - damage to the PZ Probe by breaking the assembly
or cutting into PZ Probe can release particles containing Lead that can be hazardous to your health. - 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.
- 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
After sucessfully 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. Acclerations 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).
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.
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.
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 commuinication. This is the least preferred way of communication (UART is the recommended way).
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.
If you are mounting the PZ Probe Board to Voron, you can mount the baord on the X-carriage, using the modified 3D-printed parts:
Printables: X-Carriage Printed Parts2. 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.
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.
In Config.g add the following:
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, in a config or macro using the line below.
M118 P2 S"STATUS" L2 ; Get Status of probe
Replace STATUS with any commands from the "Commands" section.
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.
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.
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 |
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
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.
Ensure board and port are set.
You can identify the appropriate COM in tools
Set baud rate in serial monitor to 9600, and termination to newline
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.
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
Set baud rate to 9600 and termination to newline
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.
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 appripriate COM Port under PuTTY Configuration and set Baud Rate to 9600.
You can identify the appropriate COM in your device manager.
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"
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.
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
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.
Step 2: In the Config.g file or in the command line, write:
M575 P1 B9600 S1 ;Set baud rate on panel due connector
Step 3: You can now send commands via the command line, in a config or macro using the line below.
M118 P2 S"STATUS" L2 ; Get Status of probe
Replace STATUS with any commands from the "Commands" section.
This method of configurating 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:
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 particualar command you wish to use. The script will execute the command and send any replies to the terminal. The scipt will end when there are no more messages recieved 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:
Line 1: shows the command to start the python script.
Line 2: the scipt 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 recieved no further data from the Piezo Controller, so the script was terminated.
If a command didnt't have intended result because a result like "No valid command received, please try again." was provided. Then, please try to rerun the scipt 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
- “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.
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
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 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 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.
- 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.