MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.26k stars 19.23k forks source link

[BUG] M600 doesn't resume at the correct height #23559

Closed dmarnel closed 2 years ago

dmarnel commented 2 years ago

Did you test the latest bugfix-2.0.x code?

Yes, and the problem still exists.

Bug Description

When a filament change (M600) is complete and the print is resumed, the z-position is too high by ~0.2mm.

I tried debugging this the last couple of days by editing the gcode and adding absolute positioning commands so the print head should have been right where it left off after the M600 call, but no matter what I tried, the z-position was still too high after resuming the print. The printer's display even reported the correct layer height after resuming. This makes me think that there is a G92 (Set Position) or similar command being issued at some point during the M600 filament change sequence which causes all subsequent height values to be off by ~0.2mm.

Bug Timeline

This started happening sometime after March 2021, the last time I successfully used this feature.

Expected behavior

The print should resume at the correct layer height following the M600 command.

Actual behavior

The print resumes about 0.2mm too high, leaving a small gap in the print where the filament change occurred.

Steps to Reproduce

Print using the M600 command to change filament colors Archive.zip .

Version of Marlin Firmware

bugfix-2.0.x

Printer model

Ender 3 Pro

Electronics

BIGTREETECH_TFT35_V3.0

Add-ons

No response

Bed Leveling

No response

Your Slicer

Cura

Host Software

OctoPrint

Additional information & file uploads

No response

Guilouz commented 2 years ago

Just used today M600 feature with BigTreeTech screen (latest firmware) and Marlin latest bugfix without issue. Try to set shim to 0 in config.ini, by default is set to 0.2mm to adjust z-offset, maybe a lead to this side.

dmarnel commented 2 years ago

@Guilouz, If you mean the level_z_pos, I already had that set to 0.0.

The attached photo shows the gap between filament changes. The object in the photo was removed from the print bed for the photo to better show the gap. It's dimensions (in millimeters) are 10 x 10 x 2. The layer height is 0.2mm and there are 10 layers. The filament change occurs at layer 6 (height 1.2mm).

IMG_4211

Guilouz commented 2 years ago

Make sure you used latest BTT firmware from master. I don't have issue with two variants of BTT screens (TFT43 and TFT70), M600 working as expected.

dmarnel commented 2 years ago

@Guilouz, thanks for the help. Just to be clear, I am using the latest Marlin firmware: bugfix-2.0.x, and the latest TTF35 firmware: BIGTREE_TFT35_V3.0.27.x.bin, both updated this morning, and am still seeing the same issue.

Bob-the-Kuhn commented 2 years ago

Reminds me of pictures of abs to bed and layer adhesion issues I've seen.

Does all look good when printing but delaminates after cooling down? The top looks like it was smooth at one point but is now wavy.

Long shot - increase hot end temp by 10 degrees? Hopefully will have better layer-layer adhesion.

dmarnel commented 2 years ago

Hi Bob. It prints fine up until layer 6. After I do the filament change (using the same color due to testing) I can see the print nozzle move back into position but it ends up about 0.2mm higher than it should. It then proceeds to print with the air gap as you can see from my photo. The wavy top is due to the air gap while printing the rest of the layers.

kisslorand commented 2 years ago

Do you have "Emulated M600" enabled in the TFT's firmware? (config.ini -> "emulated_m600:1")

dmarnel commented 2 years ago

@kisslorand I have tried with and without M600 emulation, neither works. I've even tried adding gcode for absolute positioning just before printing layer 6. The odd thing is that the LCD display shows that the height of layer 6 is just what it should be: 1.2mm. I'll make another build of both Marlin and BTT and test it again.

johncarlson21 commented 2 years ago

Ok.. so I had this same problem, first I will ask if you have Retract at Layer Change checked. I use Cura and the Post Processing Plugin "Filament Change" to do this. I was banging my head about this and finally found out that, cura inserts the filament change just before the layer change, and when it resumed print, it then ran the retract call, meaning it retracted the filament as it moved along the print, then pushed the filament back to the nozzle and started printing without a problem.

I used the same test with a block and a cylinder, and every time I tried a filament change it did the same thing as yours where the outer walls didn't print but the infill did.

Once I removed the Retract at Layer Change, it worked just fine.

johncarlson21 commented 2 years ago

Here is a snippet of code with the retract at layer change:

;TIME_ELAPSED:51.904498 M600 ; Generated by FilamentChange plugin ;LAYER:1 G1 F2280 E21.18398 ; -----> This is the retract at layer change M106 S72.2 ;TYPE:WALL-OUTER ;MESH:Cube G1 F2280 E27.18398

github-actions[bot] commented 2 years ago

This issue has had no activity in the last 60 days. Please add a reply if you want to keep this issue active, otherwise it will be automatically closed within 10 days.

github-actions[bot] commented 2 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.