@MaxGyver @jbjhjm @oliof
I thought I'd written about this before, but I can't find the post now. I did a lot of testing of the SZP over the summer, and have thought a lot about how contact probing would work.
Using the SZP as a contact Z probe is technically possible. From what I understand, the way Beacon does it is that every probe is calibrated at the factory, I believe at a range of temperatures, with the calibration stored on the MCU of the Beacon. This allows it to work out-of-the-box, and to be accurate over a range of temperatures. The Duet3D SZP isn't calibrated at the factory, but once calibrated after the initial setup, should be quite capable of doing contact Z probing.
I think (not tested, but I may get to it this week) the setup would be something like this:
- Install SZP, 2mm above the nozzle.
- Do the initial M558.2 calibration for drive level and reading offset, save to config.g (see https://docs.duet3d.com/en/User_manual/Tuning/scanning_z_probe_calibration#calibration)
- This should be sufficient to be able to probe the bed to set Z0. To do this we need a macro that:
- Runs G30 to bring the hot end and bed close to each other. This sets an initial Z0. This doesn't have to be accurate, just an easy way to get close to Z0.
- Move down in increments (perhaps 0.05mm), checking the current SZP reading against the previous one
- When it gets to the point where the reading doesn't change (perhaps within a certain range), mark that as Z0
- Then it should be possible to run the M558.1 reading vs height calibration. This would allow the calibration to be done at the current temperature, whatever it is.
- Once that calibration is done, the bed can be scanned.
- A final setting of Z0, and perhaps reporting the difference from the first, to check there's been no drift.
When I was doing testing over the summer, I plotted Z height against the SZP reading. The value changes by large amounts the closer the SZP is to the bed, so I think identifying the point the nozzle touches the bed would be quite easy, so long as the SZP doesn't just go to max reading.
I think I went from Z20 down to Z0.1 on the above, with the blue line being the SZP reading, and the red line is the M558.1 calibration between 3.7mm and 0.3 (M558.1 K1 S1.7 with a trigger height of 2mm), which is good fit. I need to rerun the test and go down to -0.2mm to see if/when the reading either stops increasing.
I don't know if this is how the Beacon works; I'm guessing they fully characterise the SZP coil at a range of temperatures, and have a lookup table in the MCU to provide a calibrated reading at a specific temperature.
I'll let you know if I get any more testing done this week!
Ian