Adding the E3D PZ probe to a Voron V0.2
Over a year ago i built and LDO Voron V0.2 sold to me by 3djake.uk. It was my first venture into the Voron world although not my first time with a premium DIY kit. I have built and use a RatRig Vcore3 and have upgraded it to a 3.1 with every upgrade RatRig released.
I really enjoyed building the V0.2, all the printed parts was printed on a BambuLabs X1C which i bought through the kickstarter when it was first announced. Bit of a funny contrast here really, building a fully opensource 3D printer on what is probably the most propriety consumer 3D printer available today. But its all i had to print ABS with, so thats what i used. Besides, its a great tool.
What is the PZ Probe?
To quote E3D:
PZ Probe™ is E3D’s compact bed levelling system that comes equipped with a compatible PZ Board to allow users to integrate contact probing into existing setups beyond the Revo ecosystem.
So its a little piezoelectric sensor which sits on the Voron heatsink.
Why the PZ Probe for bed levelling
In short, space. The V0.2 has a tiny build volume. It has a 120 x 120 x 120mm build volume with enclosure not much bigger. This means the usual way of adding a sensor to the side of the hotend wouldnt work, there just isnt enough space. I also wanted to try and keep as close to the original LDO / Voron design as possible, so that meant keeping the Voron Revo hotend. I also have lots of spares for this hotend so it made sense to keep using it.
Differences
One of the bigger differences between an original Voron design plan and the LDO kit is the addition of the Picobilical PCB Mod this also plays a big part in what we are changing here to mount the PZ Probes PCB. This is also the part that i amended to get this working.
What i changed
There isnt a massive change here, ive just added a PCB mount to toolhead_spacer_v02.stl which you can see here:
This was done in tinkercad. Im really not a 3D designer and the most i can do really is joining bits together. So im really happy this did work. The file is available here:
This should be a drop in replacement for the original part making install nice and easy.
This is the part in place:
Configuration
This bit took me a little longer to figure out but this does seem to be working.
Firstly, i used the original motherboard that came with my LDO kit which is the Bigtreetech SKR Pico.
The port i used on the mainboard was E0-STOP shown here:
You must use 5v power for it!
printer.cfg
This is the relevant section from my printer.cfg:
#####################################################################
# CUSTOM!!!!!
# PZ Probe
[probe] ## Other parameters in config.cfg
pin: !gpio16
x_offset: 0.0
y_offset: 0.0
#z_offset: 0.0
speed: 5.0 # Speed (in mm/s) of the Z axis when probing. The default is 5mm/s.
samples: 2
sample_retract_dist: 3.0
samples_tolerance_retries: 1
lift_speed: 10
activate_gcode:
G4 P200 ;Wait 200ms
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
# SET_TMC_CURRENT STEPPER=stepper_z3 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}
# SET_TMC_CURRENT STEPPER=stepper_z3 CURRENT={run_current}
[bed_mesh]
speed: 30
horizontal_move_z: 5
mesh_min: 1, 1
mesh_max: 110, 110
probe_count: 5, 5
[delayed_gcode bed_mesh_init]
initial_duration: .01
gcode:
BED_MESH_PROFILE LOAD=default
You will need to check what config is loaded on the PZ when running it. From what i understand its related to the sensitivity of the PZ sensor. Im pretty sure im using the second preset.
Testing
Make sure you testing this before just cracking on and printing. Its simple to check, just do the endstop tests in mainsail while tapping the end of the hotend to make sure it triggers. As this is all happens really quick i kept tapping it while rechecking the endstop status.
End
You should be good to try running a bed mesh now. The printer config provided also tells the printer to load the bed mesh “default”. You can just change the name if you want or name your bed mesh “default”. I am by no means an expert on this, in fact ive just muddled my way through this. Any criticism welcome!