CoreXY mesh probing issue
-
You need to post your homing files (all, x, y, z) and bed.g and mesh.g if you have them.
Frederick
-
@fcwilt thanks for taking a look and letting me know. I am still trying to learn which files are used for what. I don't think I have a mesh.g file though..
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Wed Jun 23 2021 23:47:22 GMT-0400 (Eastern Daylight Time) G91 ; relative positioning G1 H2 Z7 F6000 ; lift Z relative to current position G1 H1 X-640 Y-545 F1800 ; move quickly to X or Y endstop and stop there (first pass) G1 H1 X-640 ; home X axis G1 H1 Y-545 ; home Y axis G1 X5 Y5 F6000 ; go back a few mm G1 H1 X-640 F360 ; move slowly to X axis endstop once more (second pass) G1 H1 Y-545 ; then move slowly to Y axis endstop G1 H1 Z505 F360 ; move Z down stopping at the endstop G90 ; absolute positioning G92 Z0 ; set Z position to axis minimum (you may want to adjust this) ; Uncomment the following lines to lift Z after probing ;G91 ; relative positioning ;G1 Z7 F100 ; lift Z relative to current position ;G90 ; absolute positioning
; homex.g ; called to home the X axis ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Wed Jun 23 2021 23:47:22 GMT-0400 (Eastern Daylight Time) G91 ; relative positioning G1 H2 Z7 F6000 ; lift Z relative to current position G1 H1 X-640 F1800 ; move quickly to X axis endstop and stop there (first pass) G1 X5 F6000 ; go back a few mm G1 H1 X-640 F360 ; move slowly to X axis endstop once more (second pass) G1 H2 Z-7 F6000 ; lower Z again G90 ; absolute positioning
; homey.g ; called to home the Y axis ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Wed Jun 23 2021 23:47:22 GMT-0400 (Eastern Daylight Time) G91 ; relative positioning G1 H2 Z7 F6000 ; lift Z relative to current position G1 H1 Y-545 F1800 ; move quickly to Y axis endstop and stop there (first pass) G1 Y5 F6000 ; go back a few mm G1 H1 Y-545 F360 ; move slowly to Y axis endstop once more (second pass) G1 H2 Z-7 F6000 ; lower Z again G90 ; absolute positioning
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Wed Jun 23 2021 23:47:22 GMT-0400 (Eastern Daylight Time) G91 ; relative positioning G1 H2 Z-7 F6000 ; lift Z relative to current position G1 H1 Z505 F1800 ; move Z down until the endstop is triggered G92 Z0 ; set Z position to axis minimum (you may want to adjust this) ; Uncomment the following lines to lift Z after probing ;G91 ; relative positioning ;G1 Z7 F100 ; lift Z relative to current position ;G90 ; absolute positioning
; bed.g ; called to perform automatic bed compensation via G32 ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Wed Jun 23 2021 23:47:21 GMT-0400 (Eastern Daylight Time) M561 ; clear any bed transform G29 ; probe the bed and enable compensation
-
While I look things over I will just try to clarify things about regards bed.g and mesh.g.
The Duet features of bed leveling and mesh bed compensation have evolved over time.
The current suggestion is that bed.g is used for bed leveling and mesh.g is used for mesh compensation.
As part of this approach the bed leveling command G32 will run bed.g if it exists and the mesh compensation command G29 will run mesh.g if it exists.
An important part of the bed leveling process is setting the Z=0 datum after leveling.
Equally important is setting the Z=0 datum before creating or loading the height map used for mesh compensation.
The command G30 (in conjunction with a G1 command) is used to set the Z=0 datum.
Does your Z probe work?
Frederick
-
A couple of other questions.
Your config.g file suggests you have the hardware (four Z steppers) needed to do auto bed leveling.
Is that correct?
You config.g file suggests you have a Z endstop switch (in addition to the Z probe).
Is that correct?
Thanks.
Frederick
-
@fcwilt which end is supposed to be Z=0 on a CoreXY since the endstop is located at the bottom? From what I gather you are saying that the end with the BL touch will be 0.
For the Z probe comment I haven't been able to test because the bed keeps lowering until it starts to grind.
But it does deploy and retract upon powering up.This is an image of the printer to give an idea of what it looks like.
-
With the Z endstop switch at the bottom that is going to be Zmax.
You config.g file has the Z endstop swtich configured for Zmin which is why Z homing is not working.
Could you move the Z endstop switch so that it could be used at the top of Zmin? That would save time and simplify your homing code.
And you do have four Z steppers but the printer shown does not appear to be setup for auto bed leveling.
We need to work on your various files as they are a bit of a mess.
Frederick
-
@fcwilt I see! I could not easily move the z-endstops location as I would need to design and print a new part. If there was some way to do it in the code that would be great, at least for now.
Thanks again for checking this out..
-
@fcwilt said in CoreXY mesh probing issue:
You config.g file has the Z endstop swtich configured for Zmin which is why Z homing is not working.
Actually the config.g has it as Zmax
M574 Z2 S1 P"!io3.in" ; configure active-low endstop for low end on Z via pin !io3.in
But the homeall also forces the Z position to Z0 after it moves to the Zmax.
G1 H1 Z505 F360 ; move Z down stopping at the endstop G90 ; absolute positioning G92 Z0 ; set Z position to axis minimum (you may want to adjust this)
Remove that G92 Z0 and you'll probably have a bit better luck.
-
@phaedrux said in CoreXY mesh probing issue:
Actually the config.g has it as Zmax
M574 Z2 S1 P"!io3.in" ; configure active-low endstop for low end on Z via pin !io3.in
Argh... I wish folks would keep their comments in their files in sync with the commands.
I'm so used to reading my comments I forget that I'm OC and other folks comments are not to be trusted.
Thanks.
Frederick
-
And could someone fix that fool configuration tool so it doesn't insert code that is most likely to be wrong?
I don't like that thing one bit.
Frederick
-
@fcwilt @Phaedrux sorry guys there are a few out of date comments as I was scrambling a little bit to get things to work and trying a few things.
@phaedrux said in CoreXY mesh probing issue:
@fcwilt said in CoreXY mesh probing issue:
You config.g file has the Z endstop swtich configured for Zmin which is why Z homing is not working.
Actually the config.g has it as Zmax
M574 Z2 S1 P"!io3.in" ; configure active-low endstop for low end on Z via pin !io3.in
But the homeall also forces the Z position to Z0 after it moves to the Zmax.
G1 H1 Z505 F360 ; move Z down stopping at the endstop G90 ; absolute positioning G92 Z0 ; set Z position to axis minimum (you may want to adjust this)
Remove that G92 Z0 and you'll probably have a bit better luck.
Buy remove the G92 Z0 should I replace this with something that makes homeall set Z endstop position to Zmax instead of Zmin?
Also for what it's worth I agree very much with @fcwilt statement of the need to fix the config tool. I used it less than a week ago and most of the Gcode seen on this thread originates from it.
-
@feynman137 said in CoreXY mesh probing issue:
Buy remove the G92 Z0 should I replace this with something that makes homeall set Z endstop position to Zmax instead of Zmin?
When executing a G1 H1 Znnn move when the Z endstop is triggered (assuming it is) the Z position is set to Zmin or Zmax (as set in M208) depending on where the endstop is configured to be in the M574 (low end = Zmin, high end = Zmax).
I have yet to build a printer where the endstop triggered at exactly these positions.
Usually during homing I have to use a G92 and often a G1 to set the actual Z position to where the endstop triggered.
I configure my printers so M208 specifies the actual printable area even if the endstops are outside that area.
So imagine I have Zmin = 0 and Zmax = 100 but the endstop is actually at Z = -10.
The G1 H1 will set the current Z position to Zmin which is clearly wrong since the actual position at the time of the triggering is Z = -10.
I cannot use G92 Z-10 to specify the actual position since G92 is limited by M208.
What I can do is execute G1 Z10 which actually moves from Z = -10 to Z = 0 (even though the firmware "thinks" it moved from Z = 0 to Z = 10).
Then I can execute G92 Z0 and now everything is in sync and the homing is finished.
Now imagine that the endstop is actually at Z = 10.
As before the G1 H1 will set the current position to Z = 0 which again is wrong.
But now just a G92 Z10 will suffice since that position is within the range from Zmin to Zmax, everything is in sync and homing is finished.
Hope that was clear.
Frederick
-
@fcwilt said in CoreXY mesh probing issue:
And could someone fix that fool configuration tool so it doesn't insert code that is most likely to be wrong?
I don't like that thing one bit.
Frederick
Which part is it creating wrong? Like most tools, it will do what it's told. If it's a bug, we can fix it, if it's obtuse, we can try and make it better in the next revision.
-
@phaedrux said in CoreXY mesh probing issue:
Which part is it creating wrong? Like most tools, it will do what it's told. If it's a bug, we can fix it, if it's obtuse, we can try and make it better in the next revision.
I would have to use it and see.
I just look at the files folks post here that were created and I have no idea what changes they have made.
But like this instance where the G92 Z0 appeared - it says you may wish to change it but do new folks who use the tool know enough to understand what it means?
Now I am only going by what I see here but it seems that folks use the tool, upload the files, boot they board and have little idea what to do when it doesn't work.
I understand the intent of the tool but it seems to actually be detrimental in the sense that folks don't have to climb the RRF learning curve.
But that's just me and my view of the world.
Frederick
-
@Feynman137 Can you share your config.json file from the system tab? I can use that to upload to the config tool to see how it provided the config it did.
@fcwilt The config tool isn't perfect, but it does give a good example lay out with correct syntax to work with. Going from a blank page and trying to figure out how to write gcode config from scratch is pretty daunting to new users.
@fcwilt said in CoreXY mesh probing issue:
I understand the intent of the tool but it seems to actually be detrimental in the sense that folks don't have to climb the RRF learning curve.
I consider it an on ramp to that curve. It gives you a reference point to start asking questions about.
-
The .json file is below. I don't suspect a bug with the config tool based on my use case, it was just me going back and editing code after crashing my printer left and right.
I see there is some debate about the config file in general I don't know what the intended use case is, but it helped me a lot. Just hurt a little! By lacking set-up features and some confusion over what RRF's coreXY anatomy is. I think a labeled diagram would've helped here.
To @fcwilt thank you for the very detailed description and pointers! I know I will use these down the road, and as I was thinking through your scenarios, and drinking coffee, I realized just one problem. What is 0 in my case? Is it the BL touch distance, or will it be something else?
I know on my Cartesian I consistently print at -0.2mm Z height or something like this. So I am wondering when I go to my homeall.g file and change G92 Z0 to G92 Z500 what will happen when my BL touch is actually 510mm away? The printer would think the BL touch was at -10mm but I don't think I will ever be able to get this to 0 exactly.
-
@feynman137 said in CoreXY mesh probing issue:
To @fcwilt thank you for the very detailed description and pointers! I know I will use these down the road, and as I was thinking through your scenarios, and drinking coffee, I realized just one problem. What is 0 in my case? Is it the BL touch distance, or will it be something else?
Typically Z = 0 is when the nozzle is just touching the bed.
Let's say you have sliced an object to print it and set the Layer Height to 0.20mm.
When the printer starts typically the slicer will try to set the Z position for printing the first layer to 0.02mm.
Clearly if Z = 0 isn't the position where the nozzle is just touching the bed then that first layer height of 0.02mm won't be at the correct Z position.
When you calibrate your Z probe you are determining the value of the Z trigger height setting of the probe needed to have Z = 0 result in the nozzle just touching the bed.
Now nothing is perfect and there is a feature called baby stepping which allows you to tweak the Z position in tiny increments if at the start of a print you think you are too close or too far away from the bed.
I've been printing long enough that I can tell if the little stripe of plastic being laid down in the first layer is the right thickness and I can use baby-stepping to adjust it if I think it is not right.
Frederick
-
@fcwilt I just made the change in the homeall to G92 Z500. Things are beginning to work, was able to get the bed almost up to the print head looks like my 500mm was a little too short it will likely be something like 513mm. I will change this in the firmware, but it won't be perfect. So then I'll see what height the BL touch triggers at, say it's 1mm. Then I take this 1mm and adjust my config.g file minimum/max?
-
@feynman137 said in CoreXY mesh probing issue:
@fcwilt I just made the change in the homeall to G92 Z500. Things are beginning to work, was able to get the bed almost up to the print head looks like my 500mm was a little too short it will likely be something like 513mm. I will change this in the firmware, but it won't be perfect. So then I'll see what height the BL touch triggers at, say it's 1mm. Then I take this 1mm and adjust my config.g file minimum/max?
If moving to Z=0 left you a little short of where you should be you can always use the DWC "jog" button for Z to determine how far off you are.
Your M208 setting of Zmin being 0 would normally not allow you to jog into negative Z positions BUT you can, for testing purposes, execute M564 S0 which will allow you to jog into negative Z positions.
Then you just jog toward the nozzle until you are satisfied you are just touching it and this is the position you want to use for Z=0.
You can read out from the DWC the negative value of Z. This is how much more you have to use in the G92 command during Z homing. So if the negative value was -3 and the current G92 is Z500 you would change the 500 to 503 and then after homing moving to Z=0 ought to be very close to perfect.
Then execute M564 S1 to restore the normal behavior of limiting movement to min/max values.
Frederick
-
Here's an example of using a macro to measure the exact z height and save it.
https://duet3d.dozuki.com/Guide/Ender+3+Pro+and+Duet+Maestro+Guide+Part+5:+Upgrades/54#s221
The example assumes you have a probe already configured and calibrated to find Z0 reliably first, but you can substitute the G28 in that example for manually setting G92 Z0 when the nozzle is touching the bed.
That guide also goes through BLtouch setup.