Hi everyone,
The past two weeks I've dedicated to finishing my Delta build running RRF, and using Precision Piezo piezo's under the bed for probing. I'm using the universal v2.85 board:
https://www.precisionpiezo.co.uk/product-page/universal-piezo-z-probe-pcb-v2-x-for-1-2-3-or-more-piezos
I've been using this setup for a long time and it used to work well before. I've noticed that my old setup could be improved a bit as during probing I found the nozzle still pushed quite hard into the bed so I started tweaking the system and found out my issues work somewhat counter-intuitive.
First I raised the plunge speed which seemed to help get a harder hit which triggered better. Then I discovered that the screws that held my bed would change in tightness depending on if the bed was heated or not so I redesigned the whole bed mount system to use a three-point coupling system:
The bed has mounts that connect to the ball magnets and the white triangles have a pointy bottom that pushes in the piezo discs. If the bed heats up, the balls can move outwards, sliding over the block magnets, this makes sure the bed can freely expand while keeping the bed in place.
This is the most sensitive system I've been able to build so far, it literally triggers from the lightest taps (see https://www.youtube.com/watch?v=QssthZMF7tU). I've also been able to probe with it quite well, but still somehow the hotend pushes the bed in, making it deflect between 0.5 and 1 mm.
M558 P5 R0 C"!probe" H2 F7200 T7200 B1
G31 P100 X0 Y0 Z-0.266 S0
These settings seemed to work okay, but a lot of the time I now can't get the probe to get a good enough minimum deviation to start a print.
I am using the iterative probing script to probe the bed in the most sensitive areas possible to get the best readings. I designed a program that auto-generates points in places where the piezo probes get the strongest signal (working demo here) :
It ran alright, this is a reasonably working probing example:
https://www.youtube.com/shorts/eEXjATJ_640
Still, I couldn't get it to work as good as before. It used to be really gentle and precise, but my old machine used plastic vertexes, had delta rods with lots of play, etc. My new machine has alu vertexes, thick extrusions, precision rods, better bed mounts, etc etc. What could be the problem?
So I did some more reading, when I found this quote from a user over in the piezo probe discussion:
@BlueDust said in Precision Piezo z probes guide for duet users reference:
@en_passant
Try swapping the wires from the Piezo Sensor to the Piezo motherboard.
If the Piezo triggers on press, its correct, but if it triggers on release try swapping the sensor wires and see if that fixes it.
I did a check, and indeed, the piezo didn't register anything if I pushed in my bed gently and only triggered upon release. So I did what seemed logical and reversed the wires from each piezo disc. This resulted in a direct trigger whenever the bed was pushed in, and the system seemed even more sensitive than before.
I also tried lowering the probe speed to:
M558 P5 R0 C"!probe" H2 F500 T7200 B1
Howeverrrrrr, despite having a super sensitive probing setup and slower probing, the nozzle now literally pushes so hard into the bed that one side flips up. This takes an extreme amount of force to to by hand, so it's clear that the piezo setup is not working well.
Here's a video:
https://www.youtube.com/watch?v=QssthZMF7tU
Still from the video:
So in short:
- My new probing setup is the most sensitive I've been able to craft to this day
- With the probes in the "correct orientation" (according to another user) it works worse
- Help
Here's a link where I explain how I made the probing point cloud:
https://forum.duet3d.com/post/308768
This is my bed.g:
; Auto calibration routine for large delta printer
M561 ; clear any bed transform
; If the printer hasn't been homed, home it
if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed
G28
; Probe the bed and do auto calibration
G1 X0 Y140 Z10 F10000 ; go to just above the first probe point
while true
if iterations = 10
abort "Too many auto calibration attempts"
G30 P0 X95.26 Y12 Z-99999 H0
if result != 0
continue
G30 P1 X58.76 Y-9.93 Z-99999 H0
if result != 0
continue
G30 P2 X37.98 Y-45.93 Z-99999 H0
if result != 0
continue
G30 P3 X37.24 Y-88.5 Z-99999 H0
if result != 0
continue
G30 P4 X0 Y-67 Z-99999 H0
if result != 0
continue
G30 P5 X0 Y-24 Z-99999 H0
if result != 0
continue
G30 P6 X-20.78 Y12 Z-99999 H0
if result != 0
continue
G30 P7 X20.78 Y12 Z-99999 H0
if result != 0
continue
G30 P8 X58.02 Y33.5 Z-99999 H0
if result != 0
continue
G30 P9 X58.02 Y76.5 Z-99999 H0
if result != 0
continue
G30 P10 X20.78 Y55.85 Z-99999 H0
if result != 0
continue
G30 P11 X-20.78 Y55.85 Z-99999 H0
if result != 0
continue
G30 P12 X-58.02 Y76.5 Z-99999 H0
if result != 0
continue
G30 P13 X-58.02 Y33.5 Z-99999 H0
if result != 0
continue
G30 P14 X-95.26 Y12 Z-99999 H0
if result != 0
continue
G30 P15 X-58.76 Y-9.93 Z-99999 H0
if result != 0
continue
G30 P16 X-37.98 Y-45.93 Z-99999 H0
if result != 0
continue
G30 P17 X-37.24 Y-88.5 Z-99999 H0
if result != 0
continue
G30 P15 X0 Y0 Z-99999 S8
if result != 0
continue
if move.calibration.initial.deviation <= 0.04
break
echo "Repeating calibration because deviation is too high (" ^ move.calibration.initial.deviation ^ "mm)"
; end loop
echo "Auto calibration successful, deviation", move.calibration.final.deviation ^ "mm"
G1 X0 Y0 Z150 F10000 ; get the head out of the way
Edit:
After doing some more experimenting, I've found out that there seems to be an issue with my board not detecting a trigger correctly. The PrecisionPiezo PCB LED indicates that it is triggered but RRF doesn't stop probing movement when executing a G30.
Second edit:
This issue has been solved by switching to Digital Output on the PrecisionPiezo PCB. The Analog signal doesn't seem to work correctly and barely puts out a strong enough signal to be read.