Absolutely lost in G29, G32
-
Hey all,
Feel like I've spent my life on here of late. Managed to upgrade my Fusion3 F400 from 0.8.5 to Duet Wifi. Have got 2.03 installed but having massive issues getting my head around the gcode. I've been at it constant since yesterday and I feel like I'm no further forward at all. I can now switch on the printer and home the axis but going beyond that and attempting to edit the codes from my previous board (what feels more like a previous printer right now...) isn't going very well!
I have been through so many pages trying to make sense of it all I'm going blind on gcode - whilst not fully understanding what's going on. I think a significant part of the problem is going from 1.18 to 2.03 - it just seems like everything I think is going in the right direction I then read something which says it's now obsolete or changed to something else.
I did also try the config tool but there's a bunch of stuff in there that I really don't know - axis max speeds, micro stepping interpolation drivers and currents... don't know any of them!
From my scripts section of Simplify3D, my bed would run G32 to probe it before it ran the print, but as I've found from @dc42's reply to another user:
@dc42:
The OLD way uses a bed.g file with 3, 4 or 5 probe points defined in it. G32 is used to run the bed.g file.
The NEW way is to define a grid using M557 and then use G29 to probe it.
I plan to remove the facility to do 3, 4 and 5 point bed compensation using G32/bed.g some time in the future.
M557/G29 will be the only way of doing bed compensation. Those who were previously using 4-point G32 bed compensation can use a 4-point mesh instead. Those who were using 3-point G32 bed compensation will have to switch to a 4-point mesh, and those using 5-point can switch to a 9-point mesh.M104 S0 ; cancel S3D set temp
G21 ; set units to mm
G90 ; use absolute coordinates
T0 ; select tool 0
G92 E0.0 ; reset e count
M220 S100 ; reset speed multiplier
M140 S[bed2_temperature] ; set bed temperature and do not wait
G28 ; home all axes
G1 X10 Y10 Z10 F4000
M190 S[bed2_temperature] ; set bed temperature and wait
G32 ; probe bed
M109 S[extruder0_temperature] ; set print head temperature and wait
; === pause for heating ===
M42 P63 S0
G4 P50
G4 P50
M42 P63 S1
G1 Z10.0 F900 ; move up
G1 E30.0 F500 ; prime extruder
G1 Y15 F9000 ; move back
G1 Z0.2 F1000 ; move down to begin wipe
G1 X110 E4.0 F10000 ; wipe print head (extrude material while we do this)
G92 E0.0 ; reset e countSo, I've tried working with that and read, re-read and re-re-re-read the info on M557 & M558.
I've edited my config.g so it's now including the M557 & M558:
; * z-probe
; M558 P1 X0 Y0 Z0 ; probe type and if used for homing (f400 doesn't)
M558 P1 F500 T5000 ;X0 Y0 Z0 ; probe type (p1 = unmodulated ir), 500mm/min probing speed, 5000mm/min travel between probes * x0 y0 z0 = if used for axis homing (pre-1.19 so just delete?)
G31 P500 Z1.20 ; probe threshold & height above nozzle (lower z value = further from bed)
M557 X0:355 Y0:355 P20 ; x & y min:max co-ords & number of probe points each direction (mesh bed compensation)
; P1 = unmodulated ir probe/ other probe type which emulates an unmodulated IR probe (analog output signal which rises with decreasing nozzle height above the bed).
; M558 XnnnYnnnZnnn: if nonzero then use probe for homing axis (obsolete - pre 1.19 only)
; G31 P500 Z1.0 sets probe height 1.0mm above nozzle. when G28 Z0 (home all, z = 0) is sent, z height = 1.00 when probe value = 500. printer then moves further z -1.0mm to z = 0The commented out M558 is what was originally there. I made the second one and think it's OK but uncertain.
For the M557 I've taken my total X & Y @ 355 and put in 20 probe points (I copied S20 but then said don't use S, but P instead after another previous firmware update so just left it at 20...)
I have also edited my bed.g file - my understanding is that's now not the command that will run before the print (that'll be G29 and will use the XY sizes I've put in M557, so I'll need to change the strip in simplify3d too.
My bed.g will run when I want to do manual bed-levelling - but I'm unsure about the G30's.
My old bed.g was:
; 12/12/15
; bed probe file for Fusion3 F400
M561 ; clear existing compensation
G1 Z10 F1000 ; move to z=10
G1 X10 Y10 F6000 ; move to first probe point
G30 P0 Z-100000 ; probe bed
;G1 Z10 F200 ; move back upG1 X10 Y345 F6000 ; move to second probe point
G30 P1 Z-100000 ; probe
;G1 Z10 F200 ; move back upG1 X340 Y345 F6000 ; move to third probe point
G30 P2 Z-100000 ; probe
;G1 Z10 F200 ; move back upG1 X345 Y10 F6000 ; move to fourth probe point
G30 P3 Z-100000 S ; probe and calculate offset
;G4 P500 ; pauseG1 X0 Y0 Z10 F4000 ; move to home position
and I've created this as new bed.g:
M561 ; clear previous compensation (from memory??)
M557 P0 X10 Y10 ; probe point 1 (front left)
M557 P1 X10 Y345 ; probe point 2 (rear left)
M557 P2 X345 Y345 ; probe point 3 (rear right)
M557 P3 X345 Y10 ; probe point 4 (front right)This feels like I'm going wrong but I'm not sure what to do!
Thanks for all the help I've had already... this forum really is a treasure trove of information with some amazing contributors. I'm very grateful to getting me this far... and excited to (hopefully) be able to get the printer back up and running (so much smoother, quieter, better...) soon.
e_p
-
Don't get discouraged. You're almost there.
Your M558 and G31 commands are missing a few parameters for starters.
https://duet3d.dozuki.com/Wiki/Gcode#Section_M558_Set_Z_probe_type
M558 needs at a minimum P for probe type, F for feed rate to probe at, T for travel speed between points, H for dive height to raise to between probe points. There are some additional parameters that can help tune for certain cases.https://duet3d.dozuki.com/Wiki/Gcode#Section_G31_Set_or_Report_Current_Probe_status
G31 needs P for trigger value, X and Y values for the distance between the probe and the nozzle, and Z for the trigger height of the probe, which is how high the nozzle is from the bed surface when the probe triggers.https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe
G32 calls bed.g. The old way of doing bed compensation was to probe 5 points and create a flat plane. That has been replaced with G29 which creates a mesh grid of as many points as you want. So if you choose 9, it will probe a 3x3 grid, which is close to the old way of doing it. Or you can use up to 441 points and get a detailed surface map. Plus that map can be saved and reloaded without having to reprobe before every print if you don't want to. It's just a more versatile way of doing things and it takes the actual shape of the bed into account rather than just a fitted plane. So there is the background.
In your case, you can replace G32 with G29, and with the corrected M558 and G31 "it should just work".
@en_passant said in Absolutely lost in G29, G32:
M561 ; clear previous compensation (from memory??)
M557 P0 X10 Y10 ; probe point 1 (front left)
M557 P1 X10 Y345 ; probe point 2 (rear left)
M557 P2 X345 Y345 ; probe point 3 (rear right)
M557 P3 X345 Y10 ; probe point 4 (front right)This format has also been deprecated.
https://duet3d.dozuki.com/Wiki/Gcode#Section_M557_Set_Z_probe_point_or_define_probing_gridParameters to define G32 probe points (Cartesian/CoreXY printers only, deprecated and not supported in firmware 1.18 and later)
Pnnn Probe point number
Xnnn X coordinate
Ynnn Y coordinate
ExampleM557 P1 X30 Y40.5
I'm not actually sure what the goal is with G32 for you at this point. Based on my description above, does G29 now cover what you need?
Technically, since G32 just calls bed.g, you could put whatever you want in there. You could even just put a few commands to prepare for and run G29.
Or if you wanted the firmware to probe near your leveling screws and tell you how much to turn them to get the bed level, it can do that too.
https://duet3d.dozuki.com/Wiki/Using_the_manual_bed_levelling_assistant -
@phaedrux said in Absolutely lost in G29, G32:
Don't get discouraged. You're almost there.
Ah, not at all... I'm far too stubborn for that. Just haven't had a chance to get into the last few days.
Your M558 and G31 commands are missing a few parameters for starters.
https://duet3d.dozuki.com/Wiki/Gcode#Section_M558_Set_Z_probe_type
M558 needs at a minimum P for probe type, F for feed rate to probe at, T for travel speed between points, H for dive height to raise to between probe points. There are some additional parameters that can help tune for certain cases.I'm unsure about the M558 - I commented the X,Y,Z out it as I read that article and seen under obsolete parameters "Xnnn If nonzero, use probe for homing X axis (RRF 1.19 and earlier)", however, I then looked at the CoreXY config.g from the 2.03 firmware and it has:
M558 P1 X0 Y0 Z1 ; Analog Z probe, also used for homing the Z axisI can see from your last, to add (at least) the H. I just kept the P from what I had previously and added the the F and T values by looking at my bed.g file which had:
G1 Z10 F1000 ; move to z=10
G1 X10 Y10 F6000 ; move to first probe point
G30 P0 Z-100000 ; probe bedSo, between my old M558 config.g and old bed.g. I ignored the dive height because I don't really understand what it does but I've added that now, just to be updated once I've read through what it's actually doing.
As mine was previously X0 Y0 Z0, do I simply remove it or keep it there with zeros:
M558 P1 F500 T6000 Hnnn, or
M558 P1 F500 T6000 Hnnn X0 Y0 Z0?https://duet3d.dozuki.com/Wiki/Gcode#Section_G31_Set_or_Report_Current_Probe_status
G31 needs P for trigger value, X and Y values for the distance between the probe and the nozzle, and Z for the trigger height of the probe, which is how high the nozzle is from the bed surface when the probe triggers.Thanks. I'c currently at:
G31 P500 Xnnnn Ynnn Z1.20For the P value, it was P500 previously (as provided by Fusion3) so I've left it at that but wondering if I can (and if so, how to) make that more precise, and again if there's any merit to it? From the article I can see an example of 0.7mm for Z but is there merit to being more precise ie. Z1.15 or vs. Z1.148? What kind tolerance would the Duet work to?
For example, I know my Z1.2 is close but as I'm going to be removing the printbed so will look to recalibrate that. I could re-level it manually then I could edit my M558 to Z1.0, then through the web control send G28 then multiple G1 Z0.001 increments through the web control and when the red LED is triggered I have a good measurement to work with?
I've taken a video to try to find a) exactly what the sensor is (all I knew was it was an ir sensor), and b) where to measure it's X & Y from the nozzle. I've taken a snapshot of it and it's by Escher3d but I'm not certain due to it's mounting if it's a v1.1 or v1.2 (think it's a v1.1 from pictures I can find online.) Should I measure the XY from the IR receiver or approximately halfway between the 2x LED's and the receiver? Again, what kind of tolerance? (I don't want to waste time with the vernier if Duet will only compensate towards tenths of mm.)
https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe
G32 calls bed.g. The old way of doing bed compensation was to probe 5 points and create a flat plane. That has been replaced with G29 which creates a mesh grid of as many points as you want. So if you choose 9, it will probe a 3x3 grid, which is close to the old way of doing it. Or you can use up to 441 points and get a detailed surface map. Plus that map can be saved and reloaded without having to reprobe before every print if you don't want to. It's just a more versatile way of doing things and it takes the actual shape of the bed into account rather than just a fitted plane. So there is the background.
In your case, you can replace G32 with G29, and with the corrected M558 and G31 "it should just work".
Ahh, see that makes A LOT more sense now. Thank you. It also sounds like a MUCH better compensation. This is something will make a world of difference to me!
I had actually previously emailed Fusion3 to complain (because the printer has been the biggest pile of crap since I've had it... yet, by a feat of magic if you look online everyone who reviews it thinks it's excellent - which led to me paying for airfare and import charges to get in to London ). One of the issues I mentioned was that whilst manually levelling the bed I would heat it to 60C and the nozzle to 200C then adjust every corner until (using a feeler gauge) it's 0.1mm, however, whilst running along an axis (example from X355 Y355 to X355 Y0) the nozzle would strike the bed around the middle of it's travel then level out again at the corner. It adjusts in 4 points but once I'm up and running again I'm actually going to make 4 extra points for each central section and create a "frame" as such to so that it will go around the entire bed's extremes (as one piece) and can adjust the entire bed somewhat (certainly more-so anyway) linearly. The mesh compensation thereafter will be an absolutely beautiful feature to use, so although I was forced into this upgrade due to a faulty 0.8.5 board I'll be very pleased once I'm using it the Wifi!
Out of interest - does the mesh compensation only measure the extremities of the axis as M557 P alludes to? Any way to mesh the full area of the bed within the axis?
@en_passant said in Absolutely lost in G29, G32:
M561 ; clear previous compensation (from memory??)
M557 P0 X10 Y10 ; probe point 1 (front left)
M557 P1 X10 Y345 ; probe point 2 (rear left)
M557 P2 X345 Y345 ; probe point 3 (rear right)
M557 P3 X345 Y10 ; probe point 4 (front right)This format has also been deprecated.
https://duet3d.dozuki.com/Wiki/Gcode#Section_M557_Set_Z_probe_point_or_define_probing_gridParameters to define G32 probe points (Cartesian/CoreXY printers only, deprecated and not supported in firmware 1.18 and later)
Pnnn Probe point number
Xnnn X coordinate
Ynnn Y coordinate
ExampleM557 P1 X30 Y40.5
I'm not actually sure what the goal is with G32 for you at this point. Based on my description above, does G29 now cover what you need?
Technically, since G32 just calls bed.g, you could put whatever you want in there. You could even just put a few commands to prepare for and run G29.
Or if you wanted the firmware to probe near your leveling screws and tell you how much to turn them to get the bed level, it can do that too.
https://duet3d.dozuki.com/Wiki/Using_the_manual_bed_levelling_assistantI think it will work nicely for manually levelling the bed, as you've described it. Though, I'll need to get my head around writing the bed.g file for that and get the corner out for those screws' X&Y's. However, reading over the article you've linked to it states that 3 or 4 screws can be set - so this might be an issue with what I've mentioned above; I can certainly understand the reasoning for it and, of course, 3 points should be better than 4 - but as my bed sits with a central screw underneath it I'm having to work against that anyway.
Perhaps I'll just use the 4 corner screws for bed level assistance and can use the mesh (after I see it and interpret it) to tweak the others.
Thanks again, truly very grateful for your help here and my other posts!
e_p
-
@en_passant said in Absolutely lost in G29, G32:
As mine was previously X0 Y0 Z0, do I simply remove it or keep it there with zeros:
M558 P1 F500 T6000 Hnnn, or
M558 P1 F500 T6000 Hnnn X0 Y0 Z0?Use M558 P1 F500 T6000 H10, remove the XYZ entirely. H10 means it will raise 10mm between probing points while doing a mesh. It just needs to be high enough to clear and probes that deploy like the BLTouch and to be clear of the bed surface for proves that detect the bed from a distance. 10mm should be a safe height.
-
@en_passant said in Absolutely lost in G29, G32:
For the P value, it was P500 previously (as provided by Fusion3) so I've left it at that but wondering if I can (and if so, how to) make that more precise, and again if there's any merit to it? From the article I can see an example of 0.7mm for Z but is there merit to being more precise ie. Z1.15 or vs. Z1.148? What kind tolerance would the Duet work to?
G31 P is the trigger threshold and will be a range from 1 to 1000 and is mostly for probes with an analogue signal I believe. If P500 was recommended for the probe, leave it at 500.
For the Z height, I use the result from the trigger height measurement given by G30 S-1 (https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe#Section_Calibrate_the_Z_probe_trigger_height) which has 3 decimal places in the gcode console. If that's what the probe result is showing, might as well use it.
-
@en_passant said in Absolutely lost in G29, G32:
b) where to measure it's X & Y from the nozzle
That looks like a @dc42 IR Probe. Perhaps DC42 could tell you the version from looking at it, but I can't tell. I believe you'd want to measure the XY distance from the IR lens to the nozzle.
This is the method I use to find the offset: https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe#Section_Measuring_Probe_X_Y_Offset By using this method and a piece of paper and jogging the head around you can easily get to a tenth of a mm accuracy without touching a ruler or caliper.
-
@en_passant said in Absolutely lost in G29, G32:
Any way to mesh the full area of the bed within the axis?
Yes, that's exactly what it does. It's a grid. It's best to think of it in terms of grid spacing rather than points. You use M557 in config.g to set the area of the bed to probe, and the spacing of points within the grid. A spacing of 20mm is probably adequate. If you'd like to maximize the grid spacing, you can actually send M557 S1 in the gcode console, which is far too tight of a spacing and the Duet will helpfully respond with a suggested minimum spacing to stay within the 441 point limit.
-
@en_passant said in Absolutely lost in G29, G32:
3 points should be better than 4 - but as my bed sits with a central screw underneath it I'm having to work against that anyway.
Perhaps I'll just use the 4 corner screws for bed level assistance and can use the mesh (after I see it and interpret it) to tweak the others.Ideally 3, but there are cases where 4 is required for stability, etc. 3 requires a rigid bed that won't be bouncing around. If you've got 4 to work with, it's doable with some patience. And the manual leveling assistant will make it easier. You can run the assistant over and over again until the adjustments are very minor or start to fluctuate +- and then you know you're as flat as you're likely to get it. Then the mesh will take care of the rest.
-
@en_passant said in Absolutely lost in G29, G32:
I then looked at the CoreXY config.g from the 2.03 firmware and it has:
M558 P1 X0 Y0 Z1 ; Analog Z probe, also used for homing the Z axisDo you have a link to where you saw that?
-
@en_passant said in Absolutely lost in G29, G32:
Thanks again, truly very grateful for your help here and my other posts!
My pleasure.
-
@phaedrux said in Absolutely lost in G29, G32:
@en_passant said in Absolutely lost in G29, G32:
For the P value, it was P500 previously (as provided by Fusion3) so I've left it at that but wondering if I can (and if so, how to) make that more precise, and again if there's any merit to it? From the article I can see an example of 0.7mm for Z but is there merit to being more precise ie. Z1.15 or vs. Z1.148? What kind tolerance would the Duet work to?
G31 P is the trigger threshold and will be a range from 1 to 1000 and is mostly for probes with an analogue signal I believe. If P500 was recommended for the probe, leave it at 500.
For the Z height, I use the result from the trigger height measurement given by G30 S-1 (https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe#Section_Calibrate_the_Z_probe_trigger_height) which has 3 decimal places in the gcode console. If that's what the probe result is showing, might as well use it.
I did read over that but not sure I fully got the idea of it. I have tweaked my config.g as you've mentioned and also noticed that I don't know my z max! The website says it's 320, my config.g had 323 (which I've never touched before) and on simplify3d it says 315!
When I had G28 Z0 I could move the z at least -2 before the probe so I changed it to 325, restarted and ran this:
G28 ; home all
G1 Z0 ; move to z=0 (not nozzle = 0)
G1 X177.5 Y177.5 ; move xy to centre
M114 ; current position, should be: " X:177.500 Y:177.500 Z:0.000 "
G91 ; set relative co-ordsG1 Z-1 F100 S2 ; move z -1mm @ 100mm/min (did this 1 times without ir - 2nd time ir registered)
G1 Z-0.1 F100 S2 ; move z -1mm @ 100mm/min (did this 5 times without ir - 6th time ir registered)
G1 Z-0.05 F100 S2 ; move z -1mm @ 100mm/min (did this 1 times without ir - 2nd time ir registered); from z=0 to sensor triggers (web control z probe = 536): -1.60
G1 Z-0.1 F100 S2 ; move z -1mm @ 100mm/min (did this 13 times then nozzle touched bed)
; from sensor trigger (z=0, -1.60) to nozzle touches bed: -1.30
That's after I ran it up to the nozzle just touched (1.30 above when the sensor activated). I've changed G31 to Z1.3 but do I also change the M208 Z325 to Z326.60?
@phaedrux said in Absolutely lost in G29, G32:
@en_passant said in Absolutely lost in G29, G32:
Any way to mesh the full area of the bed within the axis?
Yes, that's exactly what it does. It's a grid. It's best to think of it in terms of grid spacing rather than points. You use M557 in config.g to set the area of the bed to probe, and the spacing of points within the grid. A spacing of 20mm is probably adequate. If you'd like to maximize the grid spacing, you can actually send M557 S1 in the gcode console, which is far too tight of a spacing and the Duet will helpfully respond with a suggested minimum spacing to stay within the 441 point limit.
Even more sense again. Thanks! Is S20 the same as P20?
@phaedrux said in Absolutely lost in G29, G32:
@en_passant said in Absolutely lost in G29, G32:
I then looked at the CoreXY config.g from the 2.03 firmware and it has:
M558 P1 X0 Y0 Z1 ; Analog Z probe, also used for homing the Z axisDo you have a link to where you saw that?
https://github.com/dc42/RepRapFirmware/releases/tag/2.03
- within Source code.zip it has SD-image/sys-CoreXY/config.g it has:
"M558 P1 X0 Y0 Z1 ; Analog Z probe, also used for homing the Z axis"
e_p
-
@en_passant said in Absolutely lost in G29, G32:
Is S20 the same as P20?
Not exactly. P is the number of points to use and it will figure out the spacing for you. S is for the spacing between points. It's really just two ways of defining the same thing. Either by number of points to use, or the space between points. See here:
https://duet3d.dozuki.com/Wiki/Gcode#Section_M557_Set_Z_probe_point_or_define_probing_grid -
@en_passant said in Absolutely lost in G29, G32:
; from sensor trigger (z=0, -1.60) to nozzle touches bed: -1.30
That's a very labour intensive way to measure the trigger height, and potentially inaccurate. Try this method instead: https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe#Section_Calibrate_the_Z_probe_trigger_height
- Make sure the dynamic test is successful (Z probe stops when it senses the bed) before doing this.
- Use the X and Y jog buttons to position the nozzle over the centre of the bed
- Jog the nozzle down until it is just touching the bed or just gripping a sheet of paper. If the firmware doesn't let you jog it down far enough, send M564 S0 to disable axis limits.
- Once you have the nozzle touching the bed, send command G92 Z0 to tell the firmware that the head is at Z=0
- Jog the head up by 5 to 10mm
- Send command G30 S-1. The nozzle will descend or the bed rise until the probe triggers and the Z height at which the probe stopped will be reported. If you are using a nozzle-contact Z probe, the trigger height will be slightly negative. For any other type of Z probe where the probe triggers before the nozzle contacts the bed, it will be positive.
- Repeat from step 5 two or three times to make sure that the trigger height is consistent.
- In Duet Web Control, go to Settings -> System Editor and edit the config.g file. Set the Z parameter in the G31 command to the trigger height that was reported. Save the file.
- Open config-override.g and check that there are no G31 commands in it. If you find any, delete those lines and save the file.
- To apply the new trigger height, restart the Duet by sending M999 or pressing Emergency Stop.
-
@en_passant said in Absolutely lost in G29, G32:
I've changed G31 to Z1.3 but do I also change the M208 Z325 to Z326.60?
Here's how I would measure the actual Z max distance.
First move your nozzle down so that it's just touching the bed. Set Z0 with G92 Z0. Then jog your print head away from the bed until you are at the maximum safe travel distance of the Z axis. The reading of the Z position from M114 at that point will be your M208 Z axis maxima.
-
@en_passant said in Absolutely lost in G29, G32:
https://github.com/dc42/RepRapFirmware/releases/tag/2.03
within Source code.zip it has SD-image/sys-CoreXY/config.g it has:
"M558 P1 X0 Y0 Z1 ; Analog Z probe, also used for homing the Z axis"
Interesting. You've definitely dug deep. That config must be from a version predating 1.18.
For the most up to date gcode usage definitions consult the G code wiki: https://duet3d.dozuki.com/Wiki/Gcode#Section_M558_Set_Z_probe_type
Obsolete parameters
Xnnn If nonzero, use probe for homing X axis (RRF 1.19 and earlier)
Ynnn If nonzero, use probe for homing Y axis (RRF 1.19 and earlier)
Znnn If nonzero, use probe for homing Z axis (RRF 1.19 and earlier) -
@phaedrux said in Absolutely lost in G29, G32:
@en_passant said in Absolutely lost in G29, G32:
Is S20 the same as P20?
Not exactly. P is the number of points to use and it will figure out the spacing for you. S is for the spacing between points. It's really just two ways of defining the same thing. Either by number of points to use, or the space between points. See here:
https://duet3d.dozuki.com/Wiki/Gcode#Section_M557_Set_Z_probe_point_or_define_probing_gridMakes sense. Think I'll go with the S and set it nice and low for a good detailed (don't care how long it takes to do) mesh.
I do read the links, just seems like the wiki's are fairly jargon-filled and not written/ explained as clearly as you've put them. Hopefully if someone else has the same issues of reading them but still scratching their heads then a quick google will send them over here so they can see the more understandable translations.
@phaedrux said in Absolutely lost in G29, G32:
@en_passant said in Absolutely lost in G29, G32:
; from sensor trigger (z=0, -1.60) to nozzle touches bed: -1.30
That's a very labour intensive way to measure the trigger height, and potentially inaccurate. Try this method instead: https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe#Section_Calibrate_the_Z_probe_trigger_height
- Make sure the dynamic test is successful (Z probe stops when it senses the bed) before doing this.
- Use the X and Y jog buttons to position the nozzle over the centre of the bed
- Jog the nozzle down until it is just touching the bed or just gripping a sheet of paper. If the firmware doesn't let you jog it down far enough, send M564 S0 to disable axis limits.
- Once you have the nozzle touching the bed, send command G92 Z0 to tell the firmware that the head is at Z=0
- Jog the head up by 5 to 10mm
- Send command G30 S-1. The nozzle will descend or the bed rise until the probe triggers and the Z height at which the probe stopped will be reported. If you are using a nozzle-contact Z probe, the trigger height will be slightly negative. For any other type of Z probe where the probe triggers before the nozzle contacts the bed, it will be positive.
- Repeat from step 5 two or three times to make sure that the trigger height is consistent.
- In Duet Web Control, go to Settings -> System Editor and edit the config.g file. Set the Z parameter in the G31 command to the trigger height that was reported. Save the file.
- Open config-override.g and check that there are no G31 commands in it. If you find any, delete those lines and save the file.
- To apply the new trigger height, restart the Duet by sending M999 or pressing Emergency Stop.
I was actually just running this as you replied (as I'd tried to run G29 and it struck the bed!)
6 passes and I have 4 counts of 1.291 then 1.287 (first run from Z=0) and a1.289 - so I'll go with 1.291; guess I was fairly close but it seems that something else is awry as I ran G28 then when I ran G29 with G31 Z1.30 and M208 Z325, it ran up the Z then slowed down (approx 10mm-ish) but struck the nozzle... sat there for ~0.5-1sec then the IR triggered and it released, ran to another point and did the same thing... so I hit the stop button and got into the above measurements.
Also, just of note - should I have a config-override.g? I have config.g and config.g.bak but no override...?
@phaedrux said in Absolutely lost in G29, G32:
@en_passant said in Absolutely lost in G29, G32:
I've changed G31 to Z1.3 but do I also change the M208 Z325 to Z326.60?
Here's how I would measure the actual Z max distance.
First move your nozzle down so that it's just touching the bed. Set Z0 with G92 Z0. Then jog your print head away from the bed until you are at the maximum safe travel distance of the Z axis. The reading of the Z position from M114 at that point will be your M208 Z axis maxima.
Perfect, I'll get into that!
@phaedrux said in Absolutely lost in G29, G32:
@en_passant said in Absolutely lost in G29, G32:
https://github.com/dc42/RepRapFirmware/releases/tag/2.03
within Source code.zip it has SD-image/sys-CoreXY/config.g it has:
"M558 P1 X0 Y0 Z1 ; Analog Z probe, also used for homing the Z axis"
Interesting. You've definitely dug deep. That config must be from a version predating 1.18.
For the most up to date gcode usage definitions consult the G code wiki: https://duet3d.dozuki.com/Wiki/Gcode#Section_M558_Set_Z_probe_type
Obsolete parameters
Xnnn If nonzero, use probe for homing X axis (RRF 1.19 and earlier)
Ynnn If nonzero, use probe for homing Y axis (RRF 1.19 and earlier)
Znnn If nonzero, use probe for homing Z axis (RRF 1.19 and earlier)Ha! I have. Not just sitting waiting for you to do all the work for me (...you've basically done all the work for me though )
e_p
-
@en_passant said in Absolutely lost in G29, G32:
should I have a config-override.g?
Eventually you may when you get into PID tuning the heaters.
config-override is a system file that is used to store values for things that have been calculated by the firmware. For example, for the heaters tuning, the values for PID can be stored there after the firmware has run a test routine and determined them for you. It's just a file that the firmware can safely write to.
https://duet3d.dozuki.com/Wiki/Tuning_the_heater_temperature_control
These guides go through an example of a commissioning and calibration process that may help you wrap your head around it a bit better.
https://duet3d.dozuki.com/Guide/Ender+3+Pro+and+Duet+Maestro+Guide+Part+3:+Commissioning/39
https://duet3d.dozuki.com/Guide/Ender+3+Pro+and+Duet+Maestro+Guide+Part+4:+Calibration/40
-
Just wondering about the G29 issue?
I've followed the calibrate z-probe trigger wiki a few times. I was getting 1.291 last time around but consistently now getting 1.273 with my XY177.5.
I'm now following the mesh bed compensation wiki and heat the nozzle to 200 and bed to 60 then run G30 which works as I expect - runs up the Z, the probe senses it and it goes back by ~ 10mm.
However, when I then type in G29 and it runs over to ~XY0 (appears to be in that vicinity) and starts probing but the probe doesn't detect and drives the nozzle into the bed (not at high speed, though high enough) but also, it continues to apply the force until ~0.5 seconds pass then the probe triggers, the bed drops and the head moves to ~X20Y0. I've pressed stop before it cracks/ smashes the glass - eek!
e_p
-
Can you post your current config and homing files for a sanity check?
-
Ha! Sanity is getting pretty thin on the ground..!
; 27/7/19
; fusion3 f400-s, s/n: 1067; duet 2.03, wifiserver 1.23, dwc 1.22.6
M111 S0 ; debug off
M550 PFusion3 F400 ; web control printer name ("P" then name)
M551 Preprap ; web control password ("P" then pass, reprap = no password required)
M540 EC:FA:BC:01:D8:E5 ; mac address
M552 S1 ; enable wifi module
M555 P2 ; output looks like marlin
M575 P1 B57600 S1 ; comms parameters for paneldue; * machine config
M569 P0 S1 ; drive 0 - forward [x motor]
M569 P1 S1 ; drive 1 - forward [y motor] (2.03+)
M569 P2 S0 ; drive 2 - backward [z motor]
M569 P3 S0 ; drive 3 - backward [e motor]
M569 P4 S0 ;; \drive 4 - backward * comment out? not used on f400?
M574 X1 Y1 Z2 S1 ; endstop config
M669 K1 ; op mode [corexy] (2.03+)
M92 X43.56 Y43.56 Z426.67 E464.93 ; steps/mm [x,y,z,extruder]
M906 X1300 Y1300 Z1400 E1400 I100 ; motor currents (mA)
M201 X2000 Y2000 Z300 E4000 ; accelerations (mm/s^2)
M203 X33000 Y33000 Z1000 E10000 ; max speeds (mm/min)
M566 X600 Y600 Z40 E950 ; max jerk speeds mm/minute
M208 X355 Y355 Z325 ; axis max
M208 X0 Y0 Z0 S1 ; axis min
G21 ; work in mm
G90 ; absolute co-ords
M83 ; relative movements (extruder); * z-probe
M558 P1 F500 T6000 H10 ; probe type (p1 = ???), 500mm/min probing speed, 6000mm/min travel between probes, 10mm dive height (check this is needed as high or can be lower (if makes diff. to probe time..), ie. 5 or 3mm?)
G31 P500 X-2.5 Y-21 Z1.273 ; probe threshold, probe x-2.5mm y-21 from nozzle (mm) & z height (mm) (nozzle height above bed when probe triggers)
M557 X0:355 Y0:355 S20 ;S1 ;P20 ; x & y min:max co-ords & mesh compensation spacing (20mm) (s1 = 1mm spacing between probes ( >max: duet wifi max = 441 (21x21) ;p20 = 20 probe points (each axis), instead of snn?? (2.02+); * thermistors and heaters
M305 P0 T100000 B4036 R4700 ; ** put your own H and/or L values here to set the bed thermistor ADC correction
M305 P1 T100000 B4725 R4700 ; ** put your own H and/or L values here to set the first nozzle thermistor ADC correctionM307 H0 A153.5 C534.2 D6.7 B0 ; configure H0 (bed) heater model
M307 H1 A511.8 C169.0 D5.9 B0 ; configure H1 (print head) heater modelM143 S330 ; max print head temp
M143 H0 S140 ; max heat bed temp; * tool definitions
M563 P0 D0 H1 ; define tool 0 [hot end]
G10 P0 S0 R0 ; tool 0 [hot end] operating & standby tempsM563 P2 H0 ; define tool [2??] [heat bed]
G10 P2 S0 R0 ; tool [2??] [heat bed] operating & standby temps; *M572 D0 S0.20 ;; extruder pressure advance [*current setting is from fusion3 (disabled) - to update as needed...]
T0 ; select hot end
; play startup beep
G4 P1000 ; dwell (pause/ do nothing) 1000ms (1s)
M300 S3000 P250 ; play beep: 3000hz for 250ms (0.25s)
G4 P250 ; dwell (pause/ do nothing) 250ms (0.25s)
M300 S3000 P250 ; play beep: 3000hz for 250ms (0.25s)
G4 P350 ; dwell (pause/ do nothing) 350ms (0.35s)
; home all
; 22/7/19, duet 2.03; g0 = current to new position, as quickly and efficiently as possible
; g1 = current to new position, as precisely as possibleM561 ; transform identity: cancels bed-plane fitting (probing)
G91 ; relative co-ords (from last position, not origin); home z
G1 Z500 F500 S1 ; z 500mm (> max) @500mm/min - until limit sw. detects
G1 Z-4 F200 ; z -4mm @ 200mm/min
G1 Z10 S1 ; z 10mm @ 200mm/min - until limit sw. detects; home x & y simultaneously
G1 X-500 Y-500 F3000 S1 ; x & y -500mm (> max) @3000mm/min - until limit sw. detects
G1 X-500 S1 ; x -500mm (> max) @3000mm/min - until limit sw. detects
G1 Y-500 S1 ; y -500mm (> max) @3000mm/min - until limit sw. detects
G1 X4 Y4 F600 ; x & y 4mm @ 600mm/min
G1 X-10 S1 ; x -10mm @ 600mm/min - until limit sw. detects
G1 Y-10 S1 ; y -10mm @ 600mm/min - until limit sw. detectsG90 ; absolute co-ords (relative to origin)
; home x
; 22/7/19, duet 2.03; g0 = current to new position, as quickly and efficiently as possible
; g1 = current to new position, as precisely as possibleM561 ; transform identity: cancels bed-plane fitting (probing)
G91 ; relative co-ords (from last position, not origin)G1 Z1 F500 S2 ; z 1mm @ 500mm/min
G1 X-500 F3000 S1 ; x -500mm (> max) @3000mm/min - until limit sw. detects
G1 X4 F600 ; x 4mm @ 600mm/min
G1 X-10 S1 ; x -10mm @ 600mm/min - until limit sw. detects
G1 Z-1 F500 S2 ; z -1mm @ 500mm/minG90 ; absolute co-ords (relative to origin)
; home y
; 22/7/19, duet 2.03; g0 = current to new position, as quickly and efficiently as possible
; g1 = current to new position, as precisely as possibleM561 ; transform identity: cancels bed-plane fitting (probing)
G91 ; relative co-ords (from last position, not origin)G1 Z1 F500 S2 ; z 1mm @ 500mm/min
G1 Y-500 F3000 S1 ; y -500mm (> max) @3000mm/min - until limit sw. detects
G1 Y4 F600 ; y 4mm @ 600mm/min
G1 Y-10 S1 ; y -10mm @ 600mm/min - until limit sw. detects
G1 Z-1 F500 S2 ; z -1mm @ 500mm/minG90 ; absolute co-ords (relative to origin)
; home z
; 22/7/19, duet 2.03; g0 = current to new position, as quickly and efficiently as possible
; g1 = current to new position, as precisely as possibleM561 ; transform identity: cancels bed-plane fitting (probing)
G91 ; relative co-ords (from last position, not origin)G1 Z500 F500 S1 ; z 500mm (> max) @500mm/min - until limit sw. detects
G1 Z-4 F200 ; z -4mm @ 200mm/min
G1 Z10 S1 ; z 10mm @ 200mm/min - until limit sw. detectsG90 ; absolute co-ords (relative to origin)
e_p