Bed correction problem on CoreXY

Hi there

I'm seeing the following problem on my CoreXY printer after doing a G32 S2 and then G33 (Assuming this is the correct method ?)
When printing a block of X 10mm, Y 50mm and Z 2mm:
the edges of the first layer prints fine and flat on the bed, but when starting the infill between the edges of the first layer,
it lifts the Z-axis around the center (with X=5mm)
Like below "shape" where F is flat to the bed, L is slightly lifted, and H is high
FFFFF
FFLFF
FLHLF
FLHLF
FLHLF
FLHLF
FLHLF
FFLFF
FFFFF

The measurement of the bed seems OK with roughly 0,7mm lift in the middle compared to the edges of the bed  which is 400x400mm.
And the grid i use is 5x5 over the entire bed
With G33 L0 the grid shown corresponds with the roughly 0,7mm max difference in height

Any ideas as to why it lifts up in the middle of the infill on the first layer ?
Second layer seems fine/better

Best regards
Claus Hansen
cstenager

• Further testing results:
I tried with same block type X=10mm, Y=100mm and Z=2mm (Y being double size)
Same result as with the 50mm block. (lifting in the X-direction, also tried with infill of 0 and 90 degrees)
But if i rotate it 90 degrees, it prints fine, and follows the bed-correction perfectly.
(so the object is X=100mm, Y=10mm and Z=2mm)
Could it be as simple as if the object to print is smaller in the X-direction than the interval between probing points, it gives the error ? (Although no problems are seen in the Y-direction, only in the X-direction)

Ideas are more than welcome, and please let me know if this in the wrong category :-)

Claus
• You should understand how bed correction works.

1. If we are below z correction height (where correction is down to 0) do correction, otherwise just print line.
2. If line longer then 10mm split it into segments < 10mm, so 18mm becomes 2 X 9 mm.
3. For each endpoint correct z depending on xy and z.
4. print lines with modified z.

now you say in the center you have 0.7mm correction which is quite a lot. If you have next to it much less correction you will really get the behaviour you described depending a bit on the position of the points. Since infill is 45° they are 13mm ling and split in center so some will have a hit at your 0.7.

Hard to be more exact in analysis without knowing L0 output and exact printing position. But basically that is what I think and if 0.7 is a wrong value you could set it using G33 Xpos Ypos Z0 which should make it then not go up there. It you really have that bed shape it is correct. Correction reduces over height depending on your correction.
• First, Thank you so much for the explanation
I have tried printing in the center of the bed, and also around X=40mm and Y=40mm, and the behaviour seems the same
Can i define the Z-correction height anywhere, or is that derived from other values ?

I will try to print different size objects, so that i can see where it starts to go wrong.

The bed is slightly curved in both X and Y direction, as a completely flat bed (molded alu in 8mm) will set me back around 300-350 USD

I have included the G33 L0 output below from a 7 point measurement :
10:23:27.365: G33 X20.00 Y50.00 Z0.039
10:23:27.365: G33 X20.00 Y106.67 Z0.241
10:23:27.365: G33 X20.00 Y163.33 Z0.435
10:23:27.366: G33 X20.00 Y220.00 Z0.581
10:23:27.367: G33 X20.00 Y276.67 Z0.655
10:23:27.368: G33 X20.00 Y333.33 Z0.663
10:23:27.368: G33 X20.00 Y390.00 Z0.544
10:23:27.373: G33 X81.67 Y50.00 Z0.051
10:23:27.373: G33 X81.67 Y106.67 Z0.285
10:23:27.373: G33 X81.67 Y163.33 Z0.473
10:23:27.373: G33 X81.67 Y220.00 Z0.603
10:23:27.374: G33 X81.67 Y276.67 Z0.643
10:23:27.376: G33 X81.67 Y333.33 Z0.617
10:23:27.376: G33 X81.67 Y390.00 Z0.436
10:23:27.376: G33 X143.33 Y50.00 Z0.026
10:23:27.381: G33 X143.33 Y106.67 Z0.287
10:23:27.381: G33 X143.33 Y163.33 Z0.480
10:23:27.382: G33 X143.33 Y220.00 Z0.569
10:23:27.383: G33 X143.33 Y276.67 Z0.599
10:23:27.383: G33 X143.33 Y333.33 Z0.517
10:23:27.384: G33 X143.33 Y390.00 Z0.313
10:23:27.384: G33 X205.00 Y50.00 Z-0.001
10:23:27.389: G33 X205.00 Y106.67 Z0.268
10:23:27.390: G33 X205.00 Y163.33 Z0.455
10:23:27.390: G33 X205.00 Y220.00 Z0.531
10:23:27.391: G33 X205.00 Y276.67 Z0.500
10:23:27.391: G33 X205.00 Y333.33 Z0.413
10:23:27.392: G33 X205.00 Y390.00 Z0.145
10:23:27.393: G33 X266.67 Y50.00 Z-0.074
10:23:27.398: G33 X266.67 Y106.67 Z0.216
10:23:27.398: G33 X266.67 Y163.33 Z0.407
10:23:27.398: G33 X266.67 Y220.00 Z0.468
10:23:27.398: G33 X266.67 Y276.67 Z0.442
10:23:27.399: G33 X266.67 Y333.33 Z0.311
10:23:27.401: G33 X266.67 Y390.00 Z0.052
10:23:27.401: G33 X328.33 Y50.00 Z-0.177
10:23:27.401: G33 X328.33 Y106.67 Z0.087
10:23:27.406: G33 X328.33 Y163.33 Z0.284
10:23:27.406: G33 X328.33 Y220.00 Z0.356
10:23:27.406: G33 X328.33 Y276.67 Z0.303
10:23:27.407: G33 X328.33 Y333.33 Z0.183
10:23:27.408: G33 X328.33 Y390.00 Z-0.084
10:23:27.409: G33 X390.00 Y50.00 Z-0.334
10:23:27.409: G33 X390.00 Y106.67 Z-0.076
10:23:27.414: G33 X390.00 Y163.33 Z0.126
10:23:27.414: G33 X390.00 Y220.00 Z0.188
10:23:27.415: G33 X390.00 Y276.67 Z0.144
10:23:27.416: G33 X390.00 Y333.33 Z0.019
10:23:27.416: G33 X390.00 Y390.00 Z-0.195
• That is really pretty curved. So without correction nothing will stick as it should I guess.

DISTORTION_END_HEIGHT defines the end height where correction is zero. Above that height it doe snot correct any more. The more curvature you have the higher you need to go here to reduce visible effects. Just think that if set to first layer height it will stick first layer and then you get up to +/-0.35mm gap as correction is away.
• Hi again

I was thinking a bit about what you wrote in post no 3 above, about having a point next to the center with much less correction.
From the G33 L0 output, i can see that there is a difference from the center point X205 Y220 to the next points in each direction of around 0.03 to 0.06mm, and when printing the first layer, the move in the Y-direction over the 14mm is closer to 0.5-0.7mm for the infill.
And with around 60mm between each measurement point, it does not explain the erratic behaviour.
I still need to do more testing, but have just ordered a more level bed (6mm molded alu, hoping for a better tolerance :-)

Best regards
Claus
• I think it is hard to see how much it really corrects. You might better add
#define DEBUG_QUEUE_MOVE
go to start position of the 14m move, enable echo and execute move manually. Then log contains many informations about the move including steps done in x direction.
• Unfortunately, i could not get it to work with the manual mode.
But i have included below the echo result from the new bed (more level than the old bed around 0.2mm total)
Please let me know if you see anything

< 20.33.41: ID:537339652 MJ:5.04
< 20.33.41: ID:537339652
< 20.33.41: vStart/End:9565/4600
< 20.33.41: accel/decel steps:37/64/5606
< 20.33.41: st./end speed:10.6/5.1
< 20.33.41: Flags:146
< 20.33.41: joinFlags:5
< 20.33.41: ID:537339788
< 20.33.41: vStart/End:4558/4516
< 20.33.41: accel/decel steps:64/65/5606
< 20.33.41: st./end speed:5.0/5.0
< 20.33.41: Flags:146
< 20.33.41: joinFlags:1
< 20.33.41: ID:537339788
< 20.33.41: Delta 5606 5606 596 12
< 20.33.41: Dir:251
< 20.33.41: Flags:18
< 20.33.41: fullSpeed:15.00
< 20.33.41: vMax:13574
< 20.33.41: Acceleration:17528.98
< 20.33.41: Acceleration Prim:1280000
< 20.33.41: Remaining steps:5606
< 20.33.41: LimitInterval:1547
< 20.33.41: Move distance on the XYZ space:6.20
< 20.33.41: Commanded feedrate:15.00
< 20.33.41: Constant full speed move time:8675259.00
< 20.33.41: Echo:N2265 G1  X204.38 Y191.89 E14.5462
< 20.33.41: ID:537339788 MJ:9.62
< 20.33.41: ID:537339652
< 20.33.41: vStart/End:9565/4600
< 20.33.41: accel/decel steps:37/64/5606
< 20.33.41: st./end speed:10.6/5.1
< 20.33.41: Flags:146
< 20.33.41: joinFlags:5
< 20.33.41: ID:537339788
< 20.33.41: vStart/End:4558/8707
< 20.33.41: accel/decel steps:64/43/5606
< 20.33.41: st./end speed:5.0/9.6
< 20.33.41: Flags:146
< 20.33.41: joinFlags:3
< 20.33.41: ID:537339924
< 20.33.41: vStart/End:12808/12808
< 20.33.41: accel/decel steps:81/81/357
< 20.33.41: st./end speed:10.0/10.0
< 20.33.41: Flags:146
< 20.33.41: joinFlags:5
< 20.33.41: ID:537339924
< 20.33.41: Delta 0 357 1 1
< 20.33.41: Dir:237
< 20.33.41: Flags:18
< 20.33.41: fullSpeed:15.00
< 20.33.41: vMax:19213
< 20.33.41: Acceleration:557.43
< 20.33.41: Acceleration Prim:1280000
< 20.33.41: Remaining steps:357
< 20.33.41: LimitInterval:1093
< 20.33.41: Move distance on the XYZ space:0.28
< 20.33.41: Commanded feedrate:15.00
< 20.33.41: Constant full speed move time:390469.00
< 20.33.41: Echo:N2266 G1  X204.38 Y191.61 E14.5508
< 20.33.41: ID:537339924 MJ:10.33
< 20.33.41: ID:537339924
< 20.33.41: vStart/End:12808/13234
< 20.33.41: accel/decel steps:81/76/357
< 20.33.41: st./end speed:10.0/10.3
< 20.33.41: Flags:146
< 20.33.41: joinFlags:7
< 20.33.41: ID:537340060
< 20.33.41: vStart/End:9350/4501
< 20.33.41: accel/decel steps:38/65/5607
< 20.33.41: st./end speed:10.3/5.0
< 20.33.41: Flags:146
< 20.33.41: joinFlags:5
< 20.33.41: ID:537340060
< 20.33.41: Delta 5606 5607 598 11
< 20.33.41: Dir:252
< 20.33.41: Flags:18
< 20.33.41: fullSpeed:15.00
< 20.33.41: vMax:13574
< 20.33.41: Acceleration:17530.60
< 20.33.41: Acceleration Prim:1280000
< 20.33.41: Remaining steps:5607
< 20.33.41: LimitInterval:1547
< 20.33.41: Move distance on the XYZ space:6.20
< 20.33.41: Commanded feedrate:15.00
< 20.33.41: Constant full speed move time:8676058.00
< 20.33.41: ID:537340060 MJ:5.02
< 20.33.41: ID:537340060
< 20.33.41: vStart/End:9350/4539
< 20.33.41: accel/decel steps:38/64/5607
< 20.33.41: st./end speed:10.3/5.0
< 20.33.41: Flags:146
< 20.33.41: joinFlags:7
< 20.33.41: ID:537340196
< 20.33.41: vStart/End:4577/4577
< 20.33.41: accel/decel steps:64/64/5607
< 20.33.41: st./end speed:5.1/5.1
< 20.33.41: Flags:146
< 20.33.41: joinFlags:5
< 20.33.41: ID:537340196
< 20.33.41: Delta 5606 5607 588 12
< 20.33.41: Dir:248
< 20.33.41: Flags:18
< 20.33.41: fullSpeed:15.00
< 20.33.41: vMax:13574
< 20.33.41: Acceleration:17530.33
< 20.33.41: Acceleration Prim:1280000
< 20.33.41: Remaining steps:5607
< 20.33.41: LimitInterval:1547
< 20.33.41: Move distance on the XYZ space:6.20
< 20.33.41: Commanded feedrate:15.00
< 20.33.41: Constant full speed move time:8675927.00
< 20.33.42: Echo:N2267 G1  X195.62 Y182.85 E14.7543
< 20.33.42: ID:537340196 MJ:9.75
< 20.33.42: ID:537340196
< 20.33.42: vStart/End:4577/8822
< 20.33.42: accel/decel steps:64/42/5607
< 20.33.42: st./end speed:5.1/9.7
< 20.33.42: Flags:146
< 20.33.42: joinFlags:7
< 20.33.42: ID:537340332
< 20.33.42: vStart/End:12808/12808
< 20.33.42: accel/decel steps:81/81/357
< 20.33.42: st./end speed:10.0/10.0
< 20.33.42: Flags:146
< 20.33.42: joinFlags:5
< 20.33.42: ID:537340332
< 20.33.42: Delta 0 357 1 1
< 20.33.42: Dir:237
< 20.33.42: Flags:18
< 20.33.42: fullSpeed:15.00
< 20.33.42: vMax:19213
< 20.33.42: Acceleration:557.43
< 20.33.42: Acceleration Prim:1280000
< 20.33.42: Remaining steps:357
< 20.33.42: LimitInterval:1093
< 20.33.42: Move distance on the XYZ space:0.28
< 20.33.42: Commanded feedrate:15.00
< 20.33.42: Constant full speed move time:390469.00
< 20.33.42: Echo:N2268 G1  X195.62 Y182.57 E14.7589
< 20.33.42: Echo:N2269 M105
< 20.33.42: ID:537340332 MJ:10.57
< 20.33.42: ID:537340332
< 20.33.42: vStart/End:12808/13538
< 20.33.42: accel/decel steps:81/73/357
< 20.33.42: st./end speed:10.0/10.6
< 20.33.42: Flags:146
< 20.33.42: joinFlags:7
< 20.33.42: ID:537340468
< 20.33.42: vStart/End:9565/4600
< 20.33.42: accel/decel steps:37/64/5606
< 20.33.42: st./end speed:10.6/5.1
< 20.33.42: Flags:146
< 20.33.42: joinFlags:5
< 20.33.42: ID:537340468
< 20.33.42: Delta 5606 5606 585 11
< 20.33.42: Dir:255
< 20.33.42: Flags:18
< 20.33.42: fullSpeed:15.00
< 20.33.42: vMax:13574
< 20.33.42: Acceleration:17528.69
< 20.33.42: Acceleration Prim:1280000
< 20.33.42: Remaining steps:5606
< 20.33.42: LimitInterval:1547
< 20.33.42: Move distance on the XYZ space:6.20
< 20.33.42: Commanded feedrate:15.00
< 20.33.42: Constant full speed move time:8675116.00
< 20.33.42: ID:537340468 MJ:5.04
< 20.33.42: ID:537340468
< 20.33.42: vStart/End:9565/4600
< 20.33.42: accel/decel steps:37/64/5606
< 20.33.42: st./end speed:10.6/5.1
< 20.33.42: Flags:146
< 20.33.42: joinFlags:5
< 20.33.42: ID:537340604
< 20.33.42: vStart/End:4562/4524
< 20.33.42: accel/decel steps:64/64/5607
< 20.33.42: st./end speed:5.0/5.0
< 20.33.42: Flags:146
< 20.33.42: joinFlags:1
< 20.33.42: ID:537340604
< 20.33.42: Delta 5606 5607 595 12
< 20.33.42: Dir:251
< 20.33.42: Flags:18
< 20.33.42: fullSpeed:15.00
< 20.33.42: vMax:13574
< 20.33.42: Acceleration:17530.52
< 20.33.42: Acceleration Prim:1280000
< 20.33.42: Remaining steps:5607
< 20.33.42: LimitInterval:1547
< 20.33.42: Move distance on the XYZ space:6.20
< 20.33.42: Commanded feedrate:15.00
< 20.33.42: Constant full speed move time:8676018.00
< 20.33.43: Echo:N2270 G1  X204.38 Y191.33 E14.9624
< 20.33.43: Echo:N2271 M105
< 20.33.43: ID:537340604 MJ:9.64
< 20.33.43: ID:537340468
< 20.33.43: vStart/End:9565/4600
< 20.33.43: accel/decel steps:37/64/5606
< 20.33.43: st./end speed:10.6/5.1
< 20.33.43: Flags:146
< 20.33.43: joinFlags:5
< 20.33.43: ID:537340604
< 20.33.43: vStart/End:4562/8722
< 20.33.43: accel/decel steps:64/43/5607
< 20.33.43: st./end speed:5.0/9.6
< 20.33.43: Flags:146
< 20.33.43: joinFlags:3
< 20.33.43: ID:537340740
< 20.33.43: vStart/End:12808/12808
< 20.33.43: accel/decel steps:81/81/357
< 20.33.43: st./end speed:10.0/10.0
< 20.33.43: Flags:146
< 20.33.43: joinFlags:5
< 20.33.43: ID:537340740
< 20.33.43: Delta 0 357 1 1
< 20.33.43: Dir:237
< 20.33.43: Flags:18
< 20.33.43: fullSpeed:15.00
< 20.33.43: vMax:19213
< 20.33.43: Acceleration:557.43
< 20.33.43: Acceleration Prim:1280000
< 20.33.43: Remaining steps:357
< 20.33.43: LimitInterval:1093
< 20.33.43: Move distance on the XYZ space:0.28
< 20.33.43: Commanded feedrate:15.00
< 20.33.43: Constant full speed move time:390469.00
< 20.33.43: Echo:N2272 G1  X204.38 Y191.05 E14.9670
< 20.33.43: ID:537340740 MJ:10.33
< 20.33.43: ID:537340740
< 20.33.43: vStart/End:12808/13233
< 20.33.43: accel/decel steps:81/76/357
< 20.33.43: st./end speed:10.0/10.3
< 20.33.43: Flags:146
< 20.33.43: joinFlags:7
< 20.33.43: ID:537338700
< 20.33.43: vStart/End:9349/4501
< 20.33.43: accel/decel steps:38/65/5606
< 20.33.43: st./end speed:10.3/5.0
< 20.33.43: Flags:146
< 20.33.43: joinFlags:5
< 20.33.43: ID:537338700
< 20.33.43: Delta 5606 5606 598 11
< 20.33.43: Dir:252
< 20.33.43: Flags:18
< 20.33.43: fullSpeed:15.00
< 20.33.43: vMax:13574
< 20.33.43: Acceleration:17529.04
< 20.33.43: Acceleration Prim:1280000
< 20.33.43: Remaining steps:5606
< 20.33.43: LimitInterval:1547
< 20.33.43: Move distance on the XYZ space:6.20
< 20.33.43: Commanded feedrate:15.00
< 20.33.43: Constant full speed move time:8675285.00
< 20.33.43: ID:537338700 MJ:5.01
< 20.33.43: ID:537338700
< 20.33.43: vStart/End:9349/4535
< 20.33.43: accel/decel steps:38/64/5606
< 20.33.43: st./end speed:10.3/5.0
< 20.33.43: Flags:146
< 20.33.43: joinFlags:7
< 20.33.43: ID:537338836
< 20.33.43: vStart/End:4570/4570
< 20.33.43: accel/decel steps:64/64/5607
< 20.33.43: st./end speed:5.1/5.1
< 20.33.43: Flags:146
< 20.33.43: joinFlags:5
< 20.33.43: ID:537338836
< 20.33.43: Delta 5606 5607 589 12
< 20.33.43: Dir:248
< 20.33.43: Flags:18
< 20.33.43: fullSpeed:15.00
< 20.33.43: vMax:13574
< 20.33.43: Acceleration:17530.36
< 20.33.43: Acceleration Prim:1280000
< 20.33.43: Remaining steps:5607
< 20.33.43: LimitInterval:1547
< 20.33.43: Move distance on the XYZ space:6.20
< 20.33.43: Commanded feedrate:15.00
< 20.33.43: Constant full speed move time:8675940.00
< 20.33.43: Echo:N2273 G1  X195.62 Y182.29 E15.1705
< 20.33.43: DebugLevel:6

• And same behaviour if i move the print 20mm to the left (X=X-20mm)
• I have now tried with 20x20mm, 50x50mm and 100x100mm plates, and the experience is the same:
When printing the edges eg on the 50x50mm:
from X0:Y0 to X50:Y0 starts high, and lowers around 0.2mm (around 1/5th lap on the Z-motor with 1rev=1mm)
From X50:Y0 to X50:Y50 starts high and lowers around 0.2mm
From X50:Y50 to X0:Y50 Starts high and lowers around 0.2mm
From X0:Y50 to X0:Y0 Starts high and lowers around 2mm
This is the same for all 3 plates (20x20,50x50 and 100x100mm)

Infill with 45 degrees on first layer
starting in the edges until the length is around 10-15mm, no problems and completely flat,
when the length of the infill is larger than the 10-15mm, it starts low, lifts 0.2mm in the middle of the length and then lowers again.
This is regardless if the length of the infill is 20mm or from former to corner on the 100x100mm plate.
Very strange...
• That was more for you to analyse. I can not analyse a simple log without knowing everything. Also the log is much too much and does not look like a single line that goes wrong. Analysing a print is nearly impossible. Therefor move manually to the position activate echo and make exactly one move with error then analyse.

The part you are interested in is
Delta 5606 5606 598 11
3rd values is z steps how much steps that is - divide by steps per mm and you have your mm move distance. For analysing you need to know start/end coordinates and bed correction/poistions around these points. Then you could compare moves.