The viscosity of plastic is temperature dependent: the warmer it is, the lower it gets and thus the more "runny". The lower the viscosity is, the less force is needed to move it.
In printing, a pressure is applied to the filament from the extruder. Pressure is the force by area, thus for our look pretty much the same: the extruder exerts a force on the filament, to overcome the viscosity keeping it in the nozzle.
A secondary effect is, that heated material expands, depending on what kind of material is in the nozzle.
The whole problem starts with shutting off the printer after the print: as the filament cools it shrinks. As the motors are turned off, the solidifying and shrinking plastic pulls at the filament. The filament can change its location or be pulled a little through the extruder, keeping the space quite well filled without cavities. Bowden style can change the mere filament path a little to compensate some of the shrinkings by shifting its path from hugging the outer wall to doing the same on the inner wall.
As you start to heat up the printer, there is no force applied on the filament from the extruder to push it out of the nozzle. But when you shut it down, there was some filament in the nozzle.
The filament melts and its viscosity drops, but at the same time, it expands. The extruder does not yet apply force, but as the material expands, it pushes against the filament stuck above it. Newton's 3rd law is the iconic Actioni contrariam semper et æqualem esse reactionem or as we know it short: Actio = Reactio, the force you exert in one direction equals a force applied in the reverse direction. Thus, the expanding filament pressing back against the extruder also exerts a force against itself down against the nozzle. The same is true for the nozzle, but the nozzle has one difference: it has a hole, where the forces are bundled to force filament out.
At some point, the force from the expanding filament is big enough to overcome the viscosity keeping the filament in the nozzle and it oozes out.
There are several ways to fix this in slicing, but I prefer the end-code method.
- Modify your end code to provide space in the nozzle while it is still hot. Simply add
G1 E-3 F1800 to retract quickly at the end of print. F1800 is rather fast.
- Modify your start code could help in preventing very runny filaments from oozing, but you usually need to zero the extruder first with
G92 E0 and you might also need to allow negative values with
G1 S1. This isn't usable in all firmware versions, but one can use
G92 E3 to set it to 3, then extrude, then 0.
Example End Code
Watch line 2. This is what prevents my Ender 3 from oozing in the first place
G91 ;relative position set
G1 F1800 E-3 ; Retract 3 mm to prevent oozing on startup
G1 F3000 Z10 ; Move up 10 mm to clear the print
G90 ;absolute position set
G28 X0 Y0 ; home x and y axis to clear the print
M106 S0 ; turn off part cooling fan
M104 S0 ; turn off extruder
M140 S0 ; turn off bed
M84 ; disable motors
Example Start Code addition
This is just a snippet that forces retraction at the start, once the filament is hot. it WILL though make the first three millimeters of push come empty, thus should be combined with a cleaning that uses more than this - check out Writing G-code : swiping at start of print for better nozzle priming.
G1 E-3 F1000