Post

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

This post is licensed under CC BY 4.0 by the author.