prusa3d / Prusa-Firmware

Firmware for Original Prusa i3 3D printer by PrusaResearch
GNU General Public License v3.0
2.02k stars 1.05k forks source link

[BUG] Extra extrusion after filament change #2502

Open espr14 opened 4 years ago

espr14 commented 4 years ago

i3 MK3S FW 3.8.1

  1. Filament runs out during print
  2. Printer pauses and asks for filament change.
  3. Filament is pulled out.
  4. Filament is pulled in.
  5. Answer for question is YES (everything OK).
  6. Now it extrudes extra filament which is immediately attached to the printed object !!!

Should not extrude extra filament but do retraction. Since there's no default retraction length, there should be Marlin instruction added which defines default retraction length. There could be retraction instruction as well.

3d-gussner commented 7 months ago

@floslo @puterboy Thanks for your feedback.

Did you read https://github.com/prusa3d/Prusa-Firmware/issues/2502#issuecomment-1950241112 ? A community member addressed this and we even merged it so users having an issue with this can compile the firmware.

Also please check my comment in the PR https://github.com/prusa3d/Prusa-Firmware/pull/4534#issuecomment-1857721419

You may think of that extra extrusion as a bug and annoying but most are okay with it and "know" to grab the extra extrusion before it moves back to the print to ensure the print continues without any gaps. If the "ooze" prevention doesn't work correctly you will see under-extrusion and maybe even gaps in the print, which is not acceptable.

So feel free to activate COMMUNITY_PREVENT_OOZE and compile the firmware.

You need to understand that changes like this have a big impact as the ooze prevention may work for a setup of material, nozzle size, etc. but needs different settings for other combinations.

We will not change it for the time being in the stock firmware.

3d-gussner commented 7 months ago

@puterboy Please stay polite

This is back-asswards!!!

That kind of comments do not help at all and I tend to step away from these kind of issue tickets.

ChrisWhite1985 commented 7 months ago

@3d-gussner - You have got it wrong. This is not about before the move back to the print, it's AFTER the move.

The nozzle comes down onto the print to continue printing and blows a bubble of filament unnecessarily before it continues printing creating a crash risk / print artifact. It does not do this when a purge tower is deployed.

Based on your response, you have never tested this to see what we are referring.

3d-gussner commented 7 months ago

@ChrisWhite1985 I never had an issue during manual color changes and never saw the "blows a bubble of filament" on my prints. I give it another try and look closely.

ChrisWhite1985 commented 7 months ago

@3d-gussner Make sure this is during a single layer colour change. I.e. 2 colours on same layer with manual filament change M600.

3d-gussner commented 7 months ago

Here my test scenario:

  1. At "Please press the knob to unload ..." M404 E = 32.2642
  2. At "Was filament unload successful?" MK404 E = -47.724
  3. At "Changed correctly" MK404 E = 47.9500 X = 211.000 Y = 0.0000 Z =28.1124 (without MBL 27.20)
  4. While moving to X = 136.380 Y = 95.6699 MK404 E = 52.2750 with Z = 28.0825 (without MBL 27.20)
  5. No MK404 E changes until Z = 0.9500 (without MBL 0.20)
  6. The MK404 E only moves together with the X and Y asixs movements.

My conclusion:

I will try to prepare a animated gif.

MK404_Square_with_M600

3d-gussner commented 7 months ago

As the MK404 SIM doesn't simulate nozzle pressure I will try that on the real hardware later. Keep you posted.

floslo commented 7 months ago

@ChrisWhite1985 I think this github issue has comments talking about 2 or more separate problems.

My comments are about the extrusion-immediately-after-button issue: ~5mm extrusion occurs immediately after the user presses the button to confirm that the filament changed correctly, at the same point in time as the head starts to move from the front right position.

Your issue could perhaps be called the extrusion-at-print-object issue: it occurs later, when the head has already moved back to the last print object position and is to start extruding filament onto the print object. (Apologies if I'm misdescribing/misunderstanding here, I have not myself experienced that issue.)

floslo commented 7 months ago

@3d-gussner thanks for reopening and testing!

You may think of that extra extrusion as a bug and annoying but most are okay with it and "know" to grab the extra extrusion before it moves back to the print to ensure the print continues without any gaps. If the "ooze" prevention doesn't work correctly you will see under-extrusion and maybe even gaps in the print, which is not acceptable.

How do you know most are ok with it?

How do you know most know the practical steps to deal with it?

As I noted upthread https://github.com/prusa3d/Prusa-Firmware/issues/2502#issuecomment-922870974 the issue is surprising because it is not documented. So how would someone who for the first time attemps a mid print filament color change know that the issue will happen or how to deal with it?

Let me repeat two earlier suggestions on what Prusa can do to mitigate

The most popular pratical method to handle the issue from this thread can be summarized as:

1 Let the first, automatically extruded larger amount of filament hang between the nozzle and the bed 2 put a finger on that filament on the bed to hold it in place 3 press the button to make the extra 5mm filament extrude onto the same string of filament you're holding

to which I add

4 .... and hope that as the head moves that extra 5mm will break off clean from the nozzle and stick to the filament string you're holding down. If it doesn't then react with lightning speed and move your hands to grab a piece of paper and wipe the dangling filament residue from the heated nozzle tip during the ~1s it is moving from the front right back to the print object. Make sure you don't burn your hand on the hot nozzle during this very quick hand movement. Also make sure you don't accidentally bump you hand into the print job. If you fail your print may look ugly or be ruined.

Because in my experience sometimes that ~5mm will stick to the nozzle. Especially when printing PETG that extra filament can twirl or bend back up and stick.

Lastly apologies if I'm missing something but can you explain why that extra ~5mm is necessary in this situation but not at the start of a regular print (right after the printer has placed a line of filament at the front left edge of the plate and while it is moving to the print start location)? I'm asking because the time it takes for the head to move is roughly the same in both those situations. If that difference can be explained in a short but clear way then consider also adding that explanation to the help page, so users can learn.

3d-gussner commented 7 months ago

@floslo Thanks for the suggestion, I will forward it to the content team.

right after the printer has placed a line of filament at the front left edge of the plate and while it is moving to the print start location

I am not the Prusa Slicer settings Pro but here my thoughts: There is a slight difference between these two

put a finger on that filament on the bed to hold it in place

Take some pliers to hold the filament :wink:

floslo commented 7 months ago

@3d-gussner thanks

Pliers vs finger: For me using a finger (in glove if the user feels the plate heat is uncomfortable) is less error prone. With pliers I've accidentally moved the filament as I grabbed it, causing it to break off or weaken at the nozzle before the button press, which in turn caused the extra 5mm to not stick to the rest of the grabbed filament. That the success of this user step is sensitive to very small hand movements underscores that the best solution would be to find a way to get rid of this step.

There is a slight difference between these two

  • extruding filament on the plate builds up some pressure in the nozzle as the sheet "pushes" back
    • same applies to the purge tower
  • extruding filament mid air doesn't build up the same pressure.

Ok, that does make sense. If that is indeed the difference then it also suggests another possible solution to consider: in jobs where the user only changes color once and where there are no print objects near the front right part of the plate then instead of the extra 5mm extrusion in air make the printer extrude a line on the plate just like when starting a regular print, only now along the front right side of the plate. PrusaSlicer could be made to detect if a job is like that. My guess is that would cover a majority of color change jobs. For example a user printing some object near the center of the plate and wants embossed text on top in a contrast color.

jypma commented 7 months ago

Alternatively, if the current layer has enough infilled area available, could the extra 5mm extrusion perhaps be made into the infill area? There'd be some structure present to conveniently "wipe" the nozzle against, and it would be invisible since it's infill.

3d-gussner commented 7 months ago

Alternatively, if the current layer has enough infilled area available, could the extra 5mm extrusion perhaps be made into the infill area? There'd be some structure present to conveniently "wipe" the nozzle against, and it would be invisible since it's infill.

I had the same idea to define per sliced layer a safe ooze location in the empty space of the infill, but I got few comments on that:

Area5142 commented 7 months ago

I’ve been closely following this thread and it appears to me that the issue of extra extrusion after a filament change remains unresolved in the firmware, even after 4+ years. It seems that the complexity of handling this correctly might exceed the capabilities at the firmware level and perhaps should be delegated to the slicer, which has more context about the print.

I propose enhancing the flexibility of the M600 firmware command. We could introduce a parameter to specify the amount of extra filament to extrude. This way, users can disable extra extrusion by setting the length to 0 or specify a suitable length for the current printing context (both filament and 3D model). If the parameter is omitted, the behavior would remain as it is today, ensuring backward compatibility.

This change would also empower the slicer with a more versatile M600 command that can be used in different ways, depending on the printing context. The slicer could vary the extra extrude depending on the 3D model or filament type, or even disable extra extrude and add a G1 Exxx to simulate pressure build where needed. It opens up a multitude of solutions.

The introduction of the M600 parameter also eliminates the need for custom firmware builds, which can be challenging for non-expert users.

I believe this approach could provide a more flexible and user-friendly solution to this long-standing issue. I eagerly look forward to hearing your thoughts on this suggestion. Thank you.

krazedegen commented 3 weeks ago

Its pretty on par for Prusa to keep selling "upgrades" every few months but fixing a simple yet severe issue with filament change remains ignored. I guess the official "FIX" is grab it real fast while its moving and don't burn yourself or miss, or else you just wasted 6 hours of print because sending the extruder back the front to wipe again is too much after over 4 years of asking

puterboy commented 3 weeks ago

Exactly! Unclear why Prusa has not offered a fix here after YEARS of feedback. How can it be a "feature" to extrude an additional 5mm of filament after you have already wiped it once and told it to resume?

Prusa seems to have really dropped the ball lately on hardware, software and pricing. Sadly, I don't think my next machine will be a Prusa -- I really wanted to continue supporting this company... but they just need to keep up with the times...