RevoPZ on Vorons
Having crashed my nozzle a few times and creating a massive blob of death (and reprinting the Stealthburner carriage parts several times) I stumpled across Revo Voron PZ - a coldside for Revo that included a piezo sensor and an external amplifier board.
Reading the instructions, it was fairly clear that this could replace my working induction probe, while also eliminating bed zeroing faults.
To install this, I would be better off installing CANbus to the toolhead and cleaning up the whole situation that was bugging me after having to rebuild several times.
I printed a new X-carriage E3D PZ Board Mount Voron Stealthburner and set about fitting things.
I had already planned to upgrade to an EBB2209 CAN RP2040 and looking at the Build Manual the Endstop and Probe ports offered the 5v output necessary for the PZ Board.
Trimming the wiring down to pick out the three pins necessary for the sensing to work, I soon made a plug for the GND, gpio22 and 5V pins of the probe port (keeping the endstop port open for an X-carriage mounted X Endstop) and tested that things all worked.
printer.cfg
Editing the printer.cfg file, I was able to add the probe pin out
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
...
[probe]
pin: !EBBCan:gpio22
x_offset: 0.0
y_offset: 0.0
z_offset: 0.0
speed: 5.0
samples: 2
sample_retract_dist: 3.0
samples_tolerance_retries: 1
lift_speed: 10
activate_gcode:
G4 P200
SET_TMC_CURRENT STEPPER=stepper_z CURRENT=0.4
SET_TMC_CURRENT STEPPER=stepper_z1 CURRENT=0.4
SET_TMC_CURRENT STEPPER=stepper_z2 CURRENT=0.4
deactivate_gcode:
{% set run_current = printer.configfile.config['tmc2209 stepper_z'].run_current | float %}
SET_TMC_CURRENT STEPPER=stepper_z CURRENT={run_current}
SET_TMC_CURRENT STEPPER=stepper_z1 CURRENT={run_current}
SET_TMC_CURRENT STEPPER=stepper_z2 CURRENT={run_current}
...
As I’m going to use the probe as a zero reference, I can eliminate the Z home after z-tilt adjustment and bed meshing
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
...
[gcode_macro PRINT_START]
# Use PRINT_START for the slicer starting script - PLEASE CUSTOMISE THE SCRIPT
gcode:
{% set BED_TEMP = params.BED|float %}
{% set EXTRUDER_TEMP = params.EXTRUDER|float %}
SET_PIN PIN=caselight VALUE=1
SET_NOZZLE_LEDS_ON
M117 Homing... ; display message
G28
M117 Z-Tilt... ; display message
Z_TILT_ADJUST
# G28
G90
G0 X150 Y150 Z30 F3600
PROBE ; Work out where the bed surface is
M190 S{BED_TEMP} ; set and wait for bed to reach temp
M109 S{EXTRUDER_TEMP} ; set and wait for hot end to reach temp
...
Learnings
A couple of things I learnt along the way
Hot vs Cold probing
Cold Probing
Pro’s
- No waiting for heat up
- consistent behaviour
Con’s
- Have to allow for nozzle expansion due to heat
- Expansion may vary due to differing filament temperature requirements
- Cold end may have debris/cold plastic from previous prints
Hot Probing
Pro’s
- Hot nozzle can be cleaned automatically before probing
- Nozzle length always correct for the filament/temperature
Con’s
- Have to wait for heatup
- Oozing may lead to inconsistent behaviour
Conclusion
I discovered that a few minutes of heat-soak for the hot end was sufficient to get stable results and mitigate any issue with nozzle length changes.
Oozing can cause some inconsistency of measurement, but that can be managed by retracting a fairly significant amount (5mm or so) at the end of a print to reduce the material in the nozzle. After warm up, any debris/ooze leftover can be brushed away with something like the Nozzle Scrubber
In the end, I’ve decided to go with Hot-probing, as cold-probing (for me) seems to be at a mild disadvantage