I know of at least three modules in the Skeinforge module chain that attempt to address this problem, but there are probably more. The one that comes out-of-the-box is called comb. From what I understand so far, comb works by moving the extruder over already printed parts as much as possible rather than moving the extruder over a void which would leave a thread of filament dangling. This only works to an extent since often there's no place to hide.
To illustrate, I've created a fine featured part similar to the 0.5mm Thin Wall Box. It looks like this.
Castellated 0.5mm Thin Wall Box |
With and Without Comb |
The module that is exposed in Cura is dimension. The dimension module converts the simple extruder on/off codes (the obsolete M101 and M103 codes), that are carried through the module chain up to that point, into the E 'dimension' values passed to the firmware. This relieves the firmware of calculating the extruder motor distances using the travel distances which involves compute intensive square root operations that the little microprocessor really doesn't have time for. It also provides a way to manipulate the extruder 'E' commands to retract filament when passing into a void by reversing the extruder motor - ostensibly to suck molten plastic back into the extruder, but more likely just to remove the latent pressure in the melt chamber. When starting extrusion on the other side of the void, it adds 'E' to perform a catch-up by advancing the filament back to where it was before the void.
The knobs you get to play with in ReplicatorG and Cura are a subset of the parameters available for the dimension module, but include the basic ones:
Dimension Parameters in ReplicatorG and Cura |
- Minimum travel (mm) - the length of void path that has to be present before using retraction when jumping the void. This is not exposed in the UI of ReplicatorG.
- Speed (mm/sec) - the speed of the extruder motor when doing the retraction and subsequent catch-up to start extruding again. This corresponds to Extruder Retraction Speed (mm/s).
- Distance (mm) - the amount of filament to draw back and catch-up when doing a retraction. This corresponds to Retraction Distance (millimeters).
- Extra length on start (mm) - the amount of extra filament to extrude when doing the catch-up. This corresponds to Restart Extra Distance (millimeters).
Inset Algorithm. |
Before and After GCode using Cura |
One of the huge benefits of open source software is the ability to go in and fix a problem. It's also one of the drawbacks, because it can be an incredible time sink. After quite a while of looking into the code, I eventually gave up trying to fix it and wrote my own module. The result is shown on the right.
So, on to the calibration.
Varying the retraction distance first, I observed that only with retraction distances greater than 0.4mm or so did the small 2mm slot start to open up. I think this is because of the hysteresis built into the system with the filament rattling around a bit in the Bowden tube, compression of the filament, gear backlash in the extruder, etc.
Retract 0.4mm distance, 0 extra, 13.5mm/sec speed, 0.1mm layers, PLA, 200°C, 25mm/sec feedrate |
There is also a noticeable thickening of the wall before and after the void where the extruder pauses to retract and catch-up. This may be able to be fixed if the firmware can handle changes to the extruder while travelling so that the retraction can begin before the movement finishes.
There are also diagonal sprue like artifacts that grow where the plastic snot rubs off in mid void. These are very weak and may pose no problem other than having to be cleaned up manually.
The wall thickness is also reduced from 0.48mm to 0.30mm, which indicates the extrudate isn't catching up after the void.
Varying the retraction speed has surprisingly little effect, other than to make the print speed slower or faster, so I recommend making it as fast as the extruder will allow, say 40mm/sec - since the maximum speed is 45mm/sec according to the firmware.
Increasing the extra length parameter causes the wall thickness to increase back to the nominal thickness (as for the thin wall box without the slots) with only a very small value, e.g. 0.025mm at a retraction distance of 0.6mm and 0.035mm at a retraction distance of 1.0mm.
So it seems the parameters I'll use in the future are:
- Minimum travel (mm) - 1.0mm (default).
- Speed (mm/sec) - 40mm/sec (maximum).
- Distance (mm) - 1.0mm (to remove hysteresis).
- Extra length on start (mm) - 0.035mm.
Retract 0.8, 0.9 and 1.0mm distance, 0.035 extra, 40mm/sec retract speed, 0.1mm layers, PLA, 200°C, 25mm/sec feedrate |
You should really try higher values with the retraction - up to 5 mm retraction with 70mm/s was used successfully by the community recently. Check out this (long) google groups page: https://groups.google.com/group/ultimaker/browse_thread/thread/e200d92c37697285/404b8b46bfbfa021
ReplyDelete