M671: How to define and verify correct settings?
-
During some re-calibration and reading the G-Code dictionary I think the leveling points a defined wrong in my Core-XY printer. (Board: Duet 3 Mini 5+ Firmware: 3.4.0 )
M671 X-19:316 Y146:146 S10.0
(print area is 290 x 290)
I have two independent Z-axis motors (see image) and so far I have set the leveling points to the center of the lead screws. Reading the instructions for M671 I know believe that the M671 should have the coordinates where the yellow lines cross in the picture. This is where height correction screws are positioned and where the bed pivots. Correct?
A a second bed leveling, done after each other, should not result in any correction, right? Can this be used as way to verify correct vales for the M671 command?
Doing a bed mesh leveling after a bed leveling should also result in the same height near the pivot points (see purple circles in heightmap below)?
image url)
-
@fotomas yes you should use the pivot points in the M671 command.
The apparent bulge in the bed in the X direction suggests that the X gantry may be sagging a little under the weight of the print head.
Ideally a second G32 would produce no further correction. In practice the bed rarely behaves exactly as the model assumes it does, so it's common that a second G32 produces an additional but smaller correction even if you have specified the M671 coordinates correctly.
-
@dc42 I have made some corrections and tests. A second G32 now results in a much smaller correction compared to before.
And the first layer is so much better than before. Things went a big step away from black magic towards science. Thank you!
I am guessing since the two Z-Motors may be more or less off for each start and the result of correction by G32 varied from each start (due to incorrectly configured M671). This would make the compensation by the mesh bed leveling more or less successful. If so that would explain my intermittent problem with a good first layer, and mostly on the side of the bed making the G32 correction.
-
-
@fotomas its best to use the built in iterations function to run G32 until a certain difference threshold is reached.
We have an example code to use in bed.g here https://teamgloomy.github.io/useful_macros.html#bedg-file-for-g32 -
@jay_s_uk Great tip, thank you. i will look into that.
Both that wiki and the GCode Dictionary explains thing with the term "Z leadscrews" which is correct in some hardware configurations. But it fooled me, maybe reading too quickly and not fully comprehending tings.
I propose a change to the use of "pivot point" or equivalent to make things a bit less likely to misunderstand.