M48 Measure Z Probe repeatability and print to serial output.
-
That is useful for a lot of settings.... It is good to know your probe
Now what I do is use a macro to repeat a G30 S-1 several times and calculate the standard deviation and mean value by hand .
-
Use a macro to execute repeated G30 Pn Xxx Yyy Z-9999 commands with values of n from 0 up to your chosen maximum. This is much more flexible, for example you can choose to move the head away and back between probing. You don't need to calculate the SD by hand because if you include S-1 on the last G30 command, the firmware will do it for you.
-
@dc42 I'll try it today. Thanks.
-
@dc42 said in M48 Measure Z Probe repeatability and print to serial output.:
Z-9999
Worked like a charm... so.... No need for the M48.
Maybe have a special area at the gcodes wiki page mentioning about commands alternatives - like the M109 or M48 in this case.
Thank you very much.
The macro:
M291 P"Probe will be tested 10 times and return mean and standard deviation. Ok or Cancel?" R"WARNING" S3 ; User must click OK or cancel.
G28
M401
G30 P0 X151 Y161 Z-9999
G30 P1 X151 Y161 Z-9999
G30 P2 X151 Y161 Z-9999
G30 P3 X151 Y161 Z-9999
G30 P4 X151 Y161 Z-9999
G30 P5 X151 Y161 Z-9999
G30 P6 X151 Y161 Z-9999
G30 P7 X151 Y161 Z-9999
G30 P8 X151 Y161 Z-9999
G30 P9 X151 Y161 Z-9999 S-1
M402 -
Using firmware 2.03RC3, you could put those lines of GCode in file M48.g in the /sys folder. Then you would have a working M48 command. Note, M48 already had a meaning in NIST standard GCode before Marlin hijacked it, so we won't be implementing M48 in RepRapFirmware.
-
Thanks @dc42. Just tried it and it works. Using BLTouch. Deviation from mean is 0.001.
Will it be useful to also report the span? (max - min)
-
Also note this: https://duet3d.dozuki.com/Wiki/G-Codes_not_implemented
To answer the general question about where we document gcodes that have not been implemented for whatever reason -
maybe add to that wiki the new feature where unkown g-codes will execute a macro if found, and which version that change is valid from?
-
I've added a note to https://duet3d.dozuki.com/Wiki/G-Codes_not_implemented.
-
The M48 without an X and Y location appears to simply move right to the end of travel.
Could it be changed so that without X an Y, it probes at the current location?
The intended use is:
Probe_Corners.g
; Test repeatability at mesh bed compensation locations
G1 X5 Y5
M48
G1 X300 Y5
M48
G1 X300 Y200
M48
G1 X5 Y200
M48 -
M48 in RepRapFirmware does nothing, unless you have a file called M48.g in the /sys folder (in which case, it executes that macro).
-
@dc42 I understand that. The macro early in this thread that takes 10 measurements at the point X151 Y161 works fine in the /sys folder. However, if it is edited to remove the X and Y co-ordinates like:
M291 P"Probe will be tested 10 times and return mean and standard deviation. Ok or Cancel?" R"WARNING" S3 ; User must click OK or cancel.
G28
G30 P0 Z-9999
G30 P1 Z-9999
G30 P2 Z-9999
G30 P3 Z-9999
G30 P4 Z-9999
G30 P5 Z-9999
G30 P6 Z-9999
G30 P7 Z-9999
G30 P8 Z-9999
G30 P9 Z-9999 S-1it does not stay at the current position but moves in X. I believe it should just take 10 points at the current location without moving.
-
@dc42 sorry to bring up such an old thread, but im having trouble trying to get this IR sensor to work.
ive got the macro saved, but where to do i view the SD from the probed points?
-
@joehsmash said in M48 Measure Z Probe repeatability and print to serial output.:
@dc42 sorry to bring up such an old thread, but im having trouble trying to get this IR sensor to work.
ive got the macro saved, but where to do i view the SD from the probed points?
The final G30 command (with the S-1 parameter) should display the mean and standard deviation.
-
Oh boy, this is some old thread. But... I actually tried G30 without X and Y parameters (G30 P0 Z-9999 - to be specific).
What it does it moves head according to pobe offset and basically probes in Z. However... it does not move the head back to original position. As soon as You give the X and Y this is not a problem, but probing current location few times basically requires explicitly moving head to the original position using relative move with X and Y set to Z probe offset after each G30. Is that intended behavior of G30? -
@BoA said in M48 Measure Z Probe repeatability and print to serial output.:
Is that intended behavior of G30?
That's normally how it's used in homeall. You position the probe manually with a G1 XY command to place the probe where you want, and then send G30 by itself to probe the bed, then you manually position the head where you want it with another G1 XYZ move.
-
@Phaedrux Yes. G30 without ANY parameter works fine, but as soon You use it like that: G30 P0 Z-9999 it move the head according to z probe offset.
-
@BoA https://duet3d.dozuki.com/Wiki/Gcode#Section_G30_Single_Z_Probe
Using the P parameter implies providing an X Y coordinate.
-
@Phaedrux So shoudn't it return an error if X and Y are not given?
-
@BoA I'll check.