result of G30
-
M558 P1 C"!zprobe.in" R2 H5 F950 T3000 A3 S0.03 K0 G31 X0 Y0 Z0 P780 G0X0Y0 M566 Z0 G30 M409 K"move.calibration" F"v,n,d4"
First, the !zprobe.in makes the probe trigger when value > G31P780? and if there is no ! then it would trigger if value is < G31P780 ?
Anyhow, the real question, why does M409 always return 0 for all values here?
{"key":"move.calibration","flags":"v,n,d4","result":{"final":{"deviation":0,"mean":0},"initial":{"deviation":0,"mean":0},"numFactors":0}}
Also, the A3 is "do a max of 3 touches", if it does 2 what does that mean? that between 1st and 2nd difference is below
M558 S0.03
? -
@arhi said in result of G30:
that between 1st and 2nd difference is below M558 S0.03 ?
Yes. If the difference were greater, it would probe again, up to the value of A.
I'm not sure about your first questions.
-
@arhi said in result of G30:
First, the !zprobe.in makes the probe trigger when value > G31P780? and if there is no ! then it would trigger if value is < G31P780 ?
Sort of. The ! inverts the pin that follows, if it is a digital pin. It will have no effect on analog (0 to 1000) pins.
@arhi said in result of G30:
Anyhow, the real question, why does M409 always return 0 for all values here?
I am about 90% sure that "move.calibration" will only have values when a G29 or G32 is in the middle of execution, or has finished. That's the part where I'm not absolutely sure.
@arhi said in result of G30:
Also, the A3 is "do a max of 3 touches", if it does 2 what does that mean? that between 1st and 2nd difference is below M558 S0.03 ?
Yes, when two touches are within the threshold, the probe is done. A single probe will end, a level or mesh probe will move to the next step.
-
@Danal said in result of G30:
Sort of. The ! inverts the pin that follows. Therefore more clear phrasing would be: Example: the probe returns a value of 100, this value is inverted on a scale of 1 to 1000, and therefore becomes 900. This value is compared with the P780 on the probe definition and, in this example, a trigger occurs.
That is what I expected but ! does not have that effect here, the readout is same no matter if there is ! or not. I also had ^ (copy/paste from somewhere) that I removed as also had no effect and IIRC you can't configure ADC input with pullup.
G29 or G32 is in the middle of execution
Makes sense, initial before G29/32 and final after. I assume I can read the G30 too but looks like I'm out of luck. Not that I will need it in future, would be interesting to debug something tonight.
echo {return}
also returns 0 whatever happens with G30 (success, failure no matter). -
Hmmm... I may have been mistaken about inverting an analog reading. Perhaps ! is really intended for digital inversion... I'll have to play around a little and see how it really works.
-
@Danal I expected the same but it is totally misleading TBH
2/28/2020, 4:56:07 AM M558 P1 C"!zprobe.in" R2 H5 F3000 T3000 A3 S0.03 K0 2/28/2020, 4:56:17 AM G31 Current reading 777, threshold 500, trigger height 0.700, offsets X0.0 Y0.0 2/28/2020, 4:56:28 AM M558 P1 C"zprobe.in" R2 H5 F3000 T3000 A3 S0.03 K0 2/28/2020, 4:56:32 AM G31 Current reading 777, threshold 500, trigger height 0.700, offsets X0.0 Y0.0
Would be cool I can get it to probe faster than 10mm/sec
it's ignoring my F value
-
The F is in mm/min. So you should be seeing 50mm/sec. If your axis jerk/accel/speed allow that.
-
@Danal hm, I might put a limit on Z max speed somewhere! Must check, I remembered it slows down when it is close to triggering and with piezo you are always close to triggering till it happens so I was thinking that's the problem. It's possible I limited Z speed to 10mm/sec. I must stop debugging stuff at 5am
I'm not 30 anymore
M203 X60000.00 Y60000.00 Z600.00 E2400.00
Thanks, good catch
-
@arhi Any reason you're defining your probe as P1, but then using K0? Do you already have a probe defined as P0? Maybe K0 doesn't works if you already do, so you're just seeing however P0 is defined (I haven't tested this theory). From https://duet3d.dozuki.com/Wiki/Gcode#Section_M558_in_RepRapFirmware_Num_3
New optional parameter K selects the Z probe number. If there is no K parameter then the current Z probe number is used. The current Z probe number is 0 at startup. You can ignore this parameter if you have only one Z probe.
Ian
-
@droftarts I had K0 and K1, K0 was this piezo orion and the K1 was bltouch, but since chosing what probe is active and since I removed bltouch from the printer as orion got stable enough I could drop K0 but it's default value so it's not changing anything.
Maybe you mixed something, P is a probe type it has nothing to do with K (probe number), P0 is type "not existing", P1 is "analog input" (probe output is an analog signal that rises with decreasing nozzle height above the bed)
-
@arhi said in result of G30:
Maybe you mixed something, P is a probe type
Doh! You're right. Just used to seeing P used to define the each iteration of a type of thing, eg M569 (Drive mapping), M106 (fans), M563 (Tools). Perhaps K should come first!
Ian
-
@arhi said in result of G30:
M558 P1 C"!zprobe.in" R2 H5 F950 T3000 A3 S0.03 K0 G31 X0 Y0 Z0 P780 G0X0Y0 M566 Z0 G30 M409 K"move.calibration" F"v,n,d4"
First, the !zprobe.in makes the probe trigger when value > G31P780? and if there is no ! then it would trigger if value is < G31P780 ?
The other way round: with no ! in the pin name, the reading needs to be at least the G31 P value to trigger.
Anyhow, the real question, why does M409 always return 0 for all values here?
{"key":"move.calibration","flags":"v,n,d4","result":{"final":{"deviation":0,"mean":0},"initial":{"deviation":0,"mean":0},"numFactors":0}}
Because you haven't done any auto calibration yet (i.e. delta calibration or true bed levelling).
Also, the A3 is "do a max of 3 touches", if it does 2 what does that mean? that between 1st and 2nd difference is below
M558 S0.03
?Yes.
-
@dc42 said in result of G30:
The other way round: with no ! in the pin name, the reading needs to be at least the G31 P value to trigger.
Now I'm wondering how my setup works at all
(and it works reliably
)
Need to extend the question then. DWC:
What is the color coding here
- gray -> not triggered
- yellow / orange -> ?!
- red -> triggered
cause I have trashold configured as +5 from what I read and !zprobe.in
so that means that I'm already triggered ?!so treshold is 900
reading is 777
"gray" show it is not triggered (I can't see in G31 result if it's triggered or not)
M558 show it is defined as !zprobe.inso according to
with no ! in the pin name, the reading needs to be at least the G31 P value to trigger.
I have ! in the pin name so I should trigger below the P value, I am below the P value why is it not "triggered" ? and how will it work at all?! the trigger will happen when the value moves back from 900+ to 900-? but shouldn't it block the probe at all with "zprobe already triggered" ?
But, I do the opposite
no !, reading 777 treshold 500 it's triggered (ok so read is > tresh it's triggered)
change threshold:
so without ! it behaves as expected, when read is lower than trash it's not triggered, higher it is ...
but with ! behavior looks identical !?
looks like the ! makes no difference at all ?!
-
Red is indeed triggered, and no color (grey to match background) is not triggered. I have never seen yellow.
An exclamation definitely performs a logical not on probe types that are only hi/lo, i.e. switches, BLTouch, etc. I tested this, moments ago.
An exclamation point does nothing on a probe types that provide a value. Also tested, moments ago.
Board: Duet 3 MB6HC (MB6HC)
DSF Version: 1.2.4.0
Firmware: RepRapFirmware for Duet 3 MB6HC v0.6 or 1.0 3.01-RC2 (2020-02-18b1) -
@Danal digital one I tested too, ^ and ! behave as expected, but looks like ! does not do anything for analog
There is a yellow/orange state I think when the value is close to the threshold. I don't know how is "close" defined.
@dc42 maybe this should be documented? Maybe if it is I didn't find it. Also, would it make sense for G31 to output also if the probe is triggered or not? It does not matter to me personally any more as I see now that it's always irrelevant to pin modifiers
trigger = value >= threshold
but maybe it still makes sense.