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_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
-
@en_passant said in Absolutely lost in G29, G32:
M208 X355 Y355 Z325 ; axis max
You're missing the S0 here.
-
It looks like you're using the zmax homing switch to home the printer. This is fine in certain situations, but generally it is problematic because it's more important to know where z0 is rather than where the end of the axis is, and since you really need to know where z0 is in the first place to know where the axis max is, it has a tendency to drift, causing problems when you need to actually be at z0.
Since you have a z probe, it makes more sense to use it to find z0 during homing. Then the zmax endstop can be used for special cases like resuming from power failure.
See this section.
https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCartesianPrinter#Section_Homing_Z -
@phaedrux said in Absolutely lost in G29, G32:
It looks like you're using the zmax homing switch to home the printer. This is fine in certain situations, but generally it is problematic because it's more important to know where z0 is rather than where the end of the axis is, and since you really need to know where z0 is in the first place to know where the axis max is, it has a tendency to drift, causing problems when you need to actually be at z0.
Since you have a z probe, it makes more sense to use it to find z0 during homing. Then the zmax endstop can be used for special cases like resuming from power failure.
See this section.
https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCartesianPrinter#Section_Homing_ZGotcha! Just been trying to wrap my noodle around this. I hadn't touched it - that's how it was from Fusion3 when I was on 1.17 and when I updated to 2.02 and ran it (after fixing the issue with 2.02+ Y drive reversed), it appeared to be working so didn't wish to tinker!
I think this might also be linked to the point I made previously:
@en_passant said in Absolutely lost in G29, G32:
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?In the article it says:
G91 ; relative mode
G1 S2 Z4 F200 ; raise head 4mm to ensure it is above the Z probe trigger height
G90 ; back to absolute mode
G1 X100 Y100 F2000 ; put head over the centre of the bed, or wherever you want to probe
G30 ; lower head, stop when probe triggered and set Z to trigger heightHowever, steps 3 & 4 - back to absolute... if X & Y haven't been homed (for example, if printer has been powered off) then this won't work?
I'd also like to home the Z from the centre - so in order to do this I need to ensure that X&Y are also homed so I can put them to absolute points for centre. I then need to move it to the endstop (that's the behaviour I'm used to atleast? So, I haven't touched the X&Y, but I've changed my homeall & homez.
home z was:
;M561 ; 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. detects
;G90 ; absolute co-ords (relative to origin)home z now:
; move z 10mm (clear), home xy, xy centre, home z, move z to endstop
; z 10mm, home xy
M561 ; transform identity: cancels previous bed-plane (mesh)
G91 ; relative co-ords (from last position, not origin)
G1 S2 Z10 F200 ; z 10mm @200mm/min (ensure it's below probe trigger height)
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. detects; xy centre, home z
G90 ; absolute co-ords (relative to origin)
G1 X150 Y150 F6000 ; xy 150mm [absolute] @ 6000mm/min
G1 X177.5 Y177.5 F1000 ; xy 177.5mm [absolute] (bed-centre) @ 1000mm/min
G30 ; raise bed until probe triggered & set z to trigger height; z to endstop (zmax), set asbo co-ords
G91 ; relative co-ords (from last position, not origin)
G1 Z300 F500 S1 ; z 300mm @500mm/min
G1 Z200 F150 S1 ; z 200mm (> max) @ 150mm/min - until limit sw. detects
G90 ; absolute co-ords (relative to origin)home all was:
;M561 ; 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. detects;G90 ; absolute co-ords (relative to origin)
home all now:
; move z 10mm (clear), home xy, xy centre, home z, move z to endstop, home xy
; z 10mm, home xy
M561 ; transform identity: cancels previous bed-plane (mesh)
G91 ; relative co-ords (from last position, not origin)
G1 S2 Z10 F200 ; z 10mm @200mm/min (ensure it's below probe trigger height)
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. detects; xy centre, home z
G90 ; absolute co-ords (relative to origin)
G1 X150 Y150 F6000 ; xy 150mm [absolute] @ 6000mm/min
G1 X177.5 Y177.5 F1000 ; xy 177.5mm [absolute] (bed-centre) @ 1000mm/min
G30 ; raise bed until probe triggered & set z to trigger height; z to endstop (zmax), xy home, set asbo co-ords
G91 ; relative co-ords (from last position, not origin)
G1 Z300 F500 S1 ; z 300mm @500mm/min
G1 Z200 F150 S1 ; z 200mm (> max) @ 150mm/min - until limit sw. detects
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. detects
G90 ; absolute co-ords (relative to origin)Anything I'm obviously missing?
e_p
-
@en_passant
I tried to edit but the post was beyond 10000 characters (....), so:EDIT: I changed the S's from before to H's and changed the G1 S2 Z4 F200 from the homing Z using Z probe example which I have within the above code as G1 Z10 F200 H1 so as not to ignore the endstop, incase it's at or within 10mm of the z-endstop limit switch when I press home all (more likely than me punching G28 into the console).
I also changed the final Z movement where it goes to the endstop to H3 to replace the value in M208.
Here's the latest:
; homeall.g
; 28/7/19
; move z 10mm (clear), home xy, xy centre, home z, move z to endstop, home xy; z 10mm, home xy
M561 ; transform identity: cancels previous bed-plane (mesh)
G91 ; relative co-ords (from last position, not origin)
G1 Z10 F200 H1 ; z 10mm @200mm/min (ensure it's below probe trigger height)
G1 X-500 Y-500 F3000 H1 ; x & y -500mm (> max) @3000mm/min - until limit sw. detects
G1 X-500 H1 ; x -500mm (> max) @3000mm/min - until limit sw. detects
G1 Y-500 H1 ; y -500mm (> max) @3000mm/min - until limit sw. detects
G1 X4 Y4 F600 ; x & y 4mm @ 600mm/min
G1 X-10 H1 ; x -10mm @ 600mm/min - until limit sw. detects
G1 Y-10 H1 ; y -10mm @ 600mm/min - until limit sw. detects; xy centre, home z
G90 ; absolute co-ords (relative to origin)
G1 X150 Y150 F6000 ; xy 150mm [absolute] @ 6000mm/min
G1 X177.5 Y177.5 F1000 ; xy 177.5mm [absolute] (bed-centre) @ 1000mm/min
G30 ; raise bed until probe triggered & set z to trigger height; z to endstop (zmax), xy home, set asbo co-ords
G91 ; relative co-ords (from last position, not origin)
G1 Z300 F500 H1 ; z 300mm @500mm/min
G1 Z200 F150 H3 ; z 200mm (> max) @ 150mm/min - until limit sw. detects & set z max in m208G1 X-500 Y-500 F3000 H1 ; x & y -500mm (> max) @3000mm/min - until limit sw. detects
G1 X-500 H1 ; x -500mm (> max) @3000mm/min - until limit sw. detects
G1 Y-500 H1 ; y -500mm (> max) @3000mm/min - until limit sw. detects
G1 X4 Y4 F600 ; x & y 4mm @ 600mm/min
G1 X-10 H1 ; x -10mm @ 600mm/min - until limit sw. detects
G1 Y-10 H1 ; y -10mm @ 600mm/min - until limit sw. detectsG90 ; absolute co-ords (relative to origin)
Just ran it and did as I hoped (no crunching into the nozzle or axis, thank god!) and M114 shows: X:0.000 Y:0.000 Z:327.923
So now, shall check if that's what my config is showing for M208 and run G29 (fingers crossed no craziness this time!)
Seems to be working but the last week or so has made me doubt everything I do! Anything I'm glaringly missing?
e_p
-
@en_passant said in Absolutely lost in G29, G32:
G91 ; relative co-ords (from last position, not origin)
G1 Z300 F500 H1 ; z 300mm @500mm/min
G1 Z200 F150 H3 ; z 200mm (> max) @ 150mm/min - until limit sw. detects & set z max in m208Good catch on using H3, however, I think the first H1 should also be H3 in case you're close enough to the end stop to trigger it during the first move. But maybe it won't matter and the second line with the H3 will catch it as well.
You'd have to test and compare to ensure you're getting the expected behaviour from either case.
Regarding Home Z. It's totally up to you how homez behaves. One option is to set it up like homeall so that X and Y are ensured to be homed first. Or leave it as a single G30 probe at whatever the current position is in case you want to manually jog to a point on the bed and home z there. Or you could have it home to Z max for those cases when that's what you need to do.
-
@en_passant said in Absolutely lost in G29, G32:
So now, shall check if that's what my config is showing for M208
It won't. The H3 will only set the M208 max value temporarily. Which is fine because you get it when you home, and it will be set until the printer is power cycled, at which point you must home again anyway.
It doesn't get written back into config.g because there is no safe way for the firmware to write to a single specific line in the file. Hence the reason for config-override.g which gets completely re-written every time the firmware saves to it.
So in order to save it to config-override you would need to add M500 to the end of your homing file, and then M501 to the end of config.g to load it at boot up.
https://duet3d.dozuki.com/Wiki/Gcode#Section_M500_Store_parameters
-
@phaedrux said in Absolutely lost in G29, G32:
@en_passant said in Absolutely lost in G29, G32:
G91 ; relative co-ords (from last position, not origin)
G1 Z300 F500 H1 ; z 300mm @500mm/min
G1 Z200 F150 H3 ; z 200mm (> max) @ 150mm/min - until limit sw. detects & set z max in m208Good catch on using H3, however, I think the first H1 should also be H3 in case you're close enough to the end stop to trigger it during the first move. But maybe it won't matter and the second line with the H3 will catch it as well.
You'd have to test and compare to ensure you're getting the expected behaviour from either case.
Regarding Home Z. It's totally up to you how homez behaves. One option is to set it up like homeall so that X and Y are ensured to be homed first. Or leave it as a single G30 probe at whatever the current position is in case you want to manually jog to a point on the bed and home z there. Or you could have it home to Z max for those cases when that's what you need to do.
Ah yes, missed that one! Better to be safe than sorry
@phaedrux said in Absolutely lost in G29, G32:
@en_passant said in Absolutely lost in G29, G32:
So now, shall check if that's what my config is showing for M208
It won't. The H3 will only set the M208 max value temporarily. Which is fine because you get it when you home, and it will be set until the printer is power cycled, at which point you must home again anyway.
It doesn't get written back into config.g because there is no safe way for the firmware to write to a single specific line in the file. Hence the reason for config-override.g which gets completely re-written every time the firmware saves to it.
So in order to save it to config-override you would need to add M500 to the end of your homing file, and then M501 to the end of config.g to load it at boot up.
https://duet3d.dozuki.com/Wiki/Gcode#Section_M500_Store_parameters
Ahh, OK. Thanks. Won't bother with that, as you said it's going to re-home when I cycle the power anyway and perhaps just as well as I've just cycled the power and ran G28 and M114 now shows as Z327.930 so .07 "drift" as you mentioned. -- Another power cycle and now 327.935 (rounded on web control to .94.)
Tried homeall from known and unknown states with M999 and am now happy it's playing nicely!
Now, (fingers and toes crossed!) to try G29 without it ramming into the bed.
e_p
-
Update to above, getting there slowly...
The print now homes without any issues so I'm pleased with that.
My printed is glass but had 5 pieces of black tape underneath for when running the old bed-levelling I assume.
So, I've taken the print-bed off, removed the tape and sprayed with high-temp black paint so I can run the new compensation mesh.
I'm working on the bed-levelling assistant and have measured out the levelling screws. I put them into Solidworks so I can visualise it better:
The greyed area is the glass, the square within is the print space, the X's are X0 Y0 and X177.5 Y177.5 (max is X355, Y355 so halfway point), the circles are the levelling screw positions and the middle one is a standoff:
I've updated my config with the 4 levelling screw positions:
M671 X-27.5:-27.5:365:365 Y-40:414:414:-40 P0.5 ; screw positions: front left (X-27.5, Y-40), rear left (X-27.5, Y414), rear right (X365,Y414), front right (X365, Y-40), 0.5mm thread pitch (m3)
I've also created bed.g, using the axis max's as they're the closest points to the screws I can get to:
G28 ; home all
G30 P0 X0 Y0 Z-99999 ; probe front left
G30 P1 X0 Y355 Z-99999 ; probe rear left
G30 P2 X355 Y355 Z-99999 ; probe rear right
G30 P3 X355 Y0 Z-99999 S4 ; probe front right & report adjustments neededI'm wondering about how to use this as I'm looking to adjust the corners against the standoff since it's under the bed.
In the manual bed levelling assistant wiki it says:
"When you run G32 to perform bed probing, the final G30 command (the one with the S parameter) in bed.g will cause the assistant to run ... The amount by which each screw should be adjusted is reported. The adjustment requested for the first screw is always zero."and
"The value of the S parameter on the final G30 command in bed.g must equal the number of adjusting screws."
So, how can I make it run to X177.5 Y177.5 for the first G30 then move to the others above - but only use probes 2, 3, 4 & 5 when it reports?
e_p
-
So, having screwed the corners down then running G28 - all good. At the end of G28, my bed goes to z-endstop as I've asked it to. I then ran up the bed to Z5 and jogged it until and the nozzle just comes into contact with the bed nicely - I then moved to Z5 and over to each corner then Z0 at each of the corners and they're all beyond Z0 so I have some daylight and some bed-levelling required.
I then ran G32 and it appeared OK at first: it ran G28 then brought the bed back up again whilst head remained at 0,0 then when the bed got to ~Z10 it slowed, the head moved to ~10,10 (my bed.g defines P0 as X0 Y0 so not sure what happened there - then it brought the bed towards it, the z-probe triggers then it lowers and moves the head towards straight in the Y however, when it gets to the end of Y it appears to continue running and trying to jump the frame?
Caught me off guard, as it appeared that the first point had worked (albeit moving rather than staying at 0,0). I thought perhaps because of my print volume being smaller than the print bed and my screws being so far behind the print-bed (Xmax & Ymax = 355, levelling screws = X-27.5, Y414) so I adjusted M671 and tried again but same result.
config:
M569 P0 S1 ; drive 0 - forward [x motor]
M569 P1 S1 ; drive 1 - forward [y motor]
M569 P2 S0 ; drive 2 - backward [z motor]
M569 P3 S0 ; drive 3 - backward [e motor]
M569 P4 S0 ;; drive 4 - backwards [not used]
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 S0 ; axis max
M208 X0 Y0 Z0 S1 ; axis min
; M671 X-27.5:-27.5:365:365 Y-40:414:414:-40 P0.5
; bed-levelling screws: front left (X-27.5, Y-40), rear left (X-27.5, Y414), rear right (X365,Y414), front right (X365, Y-40), 0.5mm thread pitch (m3)
M671 X-10:-10:365:365 Y-10:365:365:-10 P0.5
G21 ; work in mm
G90 ; absolute co-ords
M83 ; relative movements (extruder)bed.g:
; bed.g
; (manual bed levelling assistant)
; 29/7/19G28 ; home all
G30 P0 X0 Y0 Z-99999 ; probe front left
G30 P1 X0 Y355 Z-99999 ; probe rear left
G30 P2 X355 Y355 Z-99999 ; probe rear right
G30 P3 X355 Y0 Z-99999 S4 ; probe front right & report adjustments neededI've been all through the wikis but not sure where I might be going wrong?!
e_p
-
@en_passant said in Absolutely lost in G29, G32:
I thought perhaps because of my print volume being smaller than the print bed and my screws being so far behind the print-bed (Xmax & Ymax = 355, levelling screws = X-27.5, Y414) so I adjusted M671 and tried again but same result.
It can't go beyond the axis maxima. Even in your revised M671 X365 is greater than your X axis maxima of 355.
Luckily, you can adjust your maxima and minima to account for the extra distance beyond where your print surface actually exists. You can set your minima value to be negative by the distance from the edge of your print surface to the actual extent of travel.
This means that the front corner of the printable surface is 0,0 and any X travel to the left of that is negative, and any Y travel in front of that is negative.
This may help a bit as well.
https://duet3d.dozuki.com/Wiki/Centering_the_bed_or_setting_the_bed_originDoes that make sense, or did I mistake how your print bed and printable surface are related?