Auto Tool Height Measurement
-
For clarity, I home in the positive direction (but physically downwards) for my axis and reference this as the highest axis distance. I then swap out the high end endstop for the low end endstop and probe in the negative direction (physically upwards) until the switch hits the tool.
This recalibrates the axis position to the target value that was in the move command, losing the information about how far I have actually moved in the original coordinate system.
-
Ideally, what is needed is a generic probing command that supports motion on any axis. This would be necessary for a 3 degrees of freedom probe mounted in a spindle if you wanted to touch off on a workpiece in X, Y and Z, in any case.
-
@Terry said in Auto Tool Height Measurement:
This will only be visible if you are testing against an endstop that is different to the one you referenced from in your homing move...
Different in what way?
I don't think it is possible to have more than one end stop configured at the same time for a given axis - aside from the situation where you have multiple Z steppers with an end stop for each.
I did this:
I moved Z down to 100 and issued G91 G1 H3 Z-150.
I waited a bit and triggered the end stop - it was around 47.
M208 now reported min of 47. I reset Z min with M208 Z0:240 which is correct for my printer.
Moving to 0 and the end stop was just triggered as it should be.
This I did this:
I moved Z down to 100 and issued G91 G1 H4 Z-150.
I waited a bit and triggered the end stop - it was around 53.
Moving to 0 and the end stop was just triggered as it should be.
Nothing else appears to have changed.
Frederick
-
Just found G38.2, which appears to be more suitable.
After testing with
M558 K1 P8 C"!1.io2.in" F1000 G38.2 V1 P1
I get the same problem! There appears to be a bug where the machine and user positions are always updated to be equal to the requested destination move, even though the move was interrupted by an endstop or probe trigger.
-
@Terry said in Auto Tool Height Measurement:
Just found G38.2, which appears to be more suitable.
After testing with
M558 K1 P8 C"!1.io2.in" F1000 G38.2 V1 P1
I get the same problem! There appears to be a bug where the machine and user positions are always updated to be equal to the requested destination move, even though the move was interrupted by an endstop or probe trigger.
Perhaps so - because it did not happen in my testing - and the "home" position (which for my testing was 0) remained unchanged.
I know that 3.2.0 had a bug which prevented my 3 Z stepper printer (each stepper had its own end stop) from homing.
Frederick
-
Same bug is present on 3.2.2
-
@Terry said in Auto Tool Height Measurement:
Same bug is present on 3.2.2
I wonder why you are seeing that and I'm not.
What do your end stop configuration look like for the normal axis end stop and this switch end stop.
Thanks.
Frederick
-
Axis setup is:
M569 P1.1 S0 M584 V1.1 M208 V0:100 M92 V400 M350 V16 I1 M566 V400 M203 V10000 M201 V6000 M906 V1500 M574 V2 S1 P"1.io1.in"
Test macro is:
M558 K1 P8 C"!1.io2.in" F1000 G38.2 V1 P1 M117 {move.axes[4].userPosition}
-
@Terry said in Auto Tool Height Measurement:
Axis setup is:
M569 P1.1 S0 M584 V1.1 M208 V0:100 M92 V400 M350 V16 I1 M566 V400 M203 V10000 M201 V6000 M906 V1500 M574 V2 S1 P"1.io1.in"
Test macro is:
M558 K1 P8 C"!1.io2.in" F1000 G38.2 V1 P1 M117 {move.axes[4].userPosition}
I will have to test using a probe.
Why are you echoing the userPosition instead of the machinePosition?
Frederick
-
Just as a legacy of testing that machinePosition and userPosition were the same, which they are in this instance.
-
To test G1 H4 I created the following macros:
Macro to configure for normal Z end stop:
M574 Z1 S1 P"nil" M574 Z1 S1 P"io3.in"
Macro to configure for temporary Z end stop:
M574 Z1 S1 P"nil" M574 Z1 S1 P"^!io4.in"
Macro to test G1 H4
G90 G1 Z100 F600 echo "POST G90 G1 Z100 F600: machinePosition = " ^ move.axes[2].machinePosition ^ " === userPosition = " ^ move.axes[2].userPosition G60 S0 G91 G1 H4 Z50 F300 echo "POST G91 G1 H4 Z50 F300: machinePosition = " ^ move.axes[2].machinePosition ^ " === userPosition = " ^ move.axes[2].userPosition G90 G1 R0 Z0 echo "POST G90 G1 R0 Z0: machinePosition = " ^ move.axes[2].machinePosition ^ " === userPosition = " ^ move.axes[2].userPosition
I ran the macro to configure for the temporary Z end stop
I ran the macro to test G1 H4
I waited a bit and triggered the temporary Z end stop
I ran the macro to configure for the normal Z end stopHere are the echo outputs:
POST G90 G1 Z100 F600: machinePosition = 100.000 === userPosition = 100.000
POST G91 G1 H4 Z50 F300: machinePosition = 129.786 === userPosition = 129.786
POST G90 G1 R0 Z0: machinePosition = 129.786 === userPosition = 100.000
The homed status of Z was not changed.
Frederick
-
Good, that seems to confirm that it's an issue with the 3HC firmware.
-
did this ever get resolved? looking to do the exact same thing.....
-
it may be worth looking into
https://jubilee3d.com/index.php?title=ZTATP