banner perso

Some links about me. Many of my 3D designs are free. I also post on Google+

Friday, April 12, 2013

Rollerstruder: a filament feeder / driver / extruder

The rollerstruder filament drive system on an Ultimaker
Almost one year ago I got rid of the plywood Ultimaker filament drive mechanism. It is an extremely important part of the FDM process as it pushes the (cold) filament towards the (hot) end. Any malfunction at this stage systematically leads to a bad print. So when not reliable, you have to stay close and react quickly to fix troubles, for example by feeding the filament further manually (btw check this if you are still doing it on an Ultimaker).

As for me, most of the trouble came from the old bolt that was shipped with my printer: it was grinding my filaments a lot, sometimes to the point it would stop moving completely and ruin the hour-long printable kalashnikov. It also lacked Bertho's addition of a ball bearing on the "idler arm", which soon became part of the official design.

In fact I just don't know about the new official drive mechanism (which seems way more reliable given the forum feedback), because I designed my own feeder that has to match my more efficient but unsual hobbed bolt. It suits me completely: months of intensive usage without a failure. And I learnt a lot of openscad and industrial design by the way.



So: filament feeder, filament extruder, drive mechanism?

There is a common and somehow accepted confusion here. Many printers have a "direct drive", where the whole system is in one piece or so, so there is much less ambiguity. But the Ultimaker is part of the smaller family of 3D printers that features a bowden tube, which makes the head lighter: the melting nozzle is on one side of the tube, while the filament driving mechanism is tens of centimeter farther on the other side of the tube. The filament slides into the bowden tube towards the hot zone.

As for me the "filament extruder" means the entire "filament drive mechanism".

Then, some people refer to the "cold end" and the "hot end" of the extruder. I usually call the first the "filament feeder (or driver)".

The "hot end" is composed of a nozzle, heating cartridge, temperature sensor, thermal isolation, mount plate, and no moving mechanical part. But this is another story, I will not talk about the hot end here: my goal is just to drive a plastic filament forward and backwards reliably. Actually, it may even prove useful to systems that are unrelated to 3D printers.

Expected features

Printing his own filament feeder is like carving his own hobbed bolt or designing his own hot end. There are many options to choose from, and novel ideas are still possible.

Moreover, some freedom stem from the fact that I have no "production" requirements. As with the hobbed bolt, I do not care if the thing cannot be mass-produced or not. Indeed, some of the very efficient 3D printed designs may never make it to companies that sell 3D printers because they simply take too much time to produce. As I recalled here, 3D printing is right for prototyping, but not for mass production.

Moving on: here are the features I had in mind:

  • reliable drive: reduced slipping and grinding, really avoid filament stalling
  • durable and stable with time
  • printable with regular material such as PLA (beware of the stepper motor heat!)
  • easy to disassemble, and "open": be able to check if everything is fine at anytime
  • make filament change easy and quick (to reduce the pause required by multicolored prints, though I almost never played with this -- so far)
  • quick to print (2-3 hours), partly because I wanted to test variants quickly and partly because I do not like prints that exceeds 2-3 hours! Also I did not want to use kilograms of plastic each time.
  • easy to print with minimal cleanup afterwards: I had to reduce both overhangs and the number of parts: there is one part for the body plus the 3-part bowden clamp (will be reduced further)
  • use only cheap 608ZZ regular skate/roller bearings: since I bought 100 for $36 including S&H I just cannot use other bearings, hence the name! More seriously, I also wanted to increase the contact area between the idler roller bearing and the drive bolt, because I am sure it makes it more reliable (check my analysis here).
A timelapse of the print.

I reached revision 5.3, after hundreds of hours spent on this design, and I am very happy with my results (this makes one happy customer at least!). I hope you will find it usable or interesting also.

Finally, I designed it entirely with the free Openscad. On one hand you get quite a big project for this software (a hefty 35KB 1000+ lines, not counting the three parts of the bowden clamp). On the other hand you get something completely parametric: wall thickness, bolt and roller dimensions, almost everything can be changed and the part will adapt to it. Not many light CAD programs may brag about this.

Special features of my design


There are a lot of filament feeder / extruders out there, but I could not resist to build my own. It is a very good experience because this is a tricky thing to design and to tune, and I learned a lot by way. The Openscad STL and sources can be downloaded here.

  • no vitamins besides a few M3 bolts and 3 cheap skate roller bearings, one of which is grooved by hand. Also one 30mm M8 screw for the idler bearing. 
  • the idler arm and its interleaved hinge is printed at the same time as the body
  • the bowden plug can be removed sideways: in a mere seconds you can change your filament color if you pre-equipped another filament roll with another bowden tube and clamp
  • the position of the small gear against the big wheel can be tuned very precisely with adjustment screws, which limits backlash in retraction
  • the stepper motor heat is isolated by the use of pieces of PTFE bowden tubes, which also reduces the noise transferred from the motor to the chassis
  • finally, the filament enters the bowden tube extremely close to my own driving bolt (less chance that it moves or bends or breaks in between)
The rollerstruder explained: this filament feeder a few novel but very useful features in my opinion

Printing the thing

To date, I printed 8-10 revisions using different sets of parameters. My goal was also to make it robust against the slicers and software. A few features may be impacted by the layer thickness, such as the printed-in-place hinge of the idler (bottom left moving arm in the picture below). But I left enough void where needed so that it can be printed from 0.2 to 0.1 layer height without issues.

Filling need not be 100%. I usually chose 20-30%. There are hair-like reinforcements in the design (most notably in the hinge), so as to make it more robust even with lower filling percentages.

You can download it here.

Freshly printed PLA filament drive body still on the bed. Printing time can be less than 3 hours with a low infill (<30%).

Post-processing and mounting


Finishing the idler arm


Insert a 30mm M3 screw in the hinge - it was printed at once with the body!

Break the hinge with a knife or very large and flat screwdriver. It should be easy as long as
you did not over-extrude too much, else the interleaved hinge parts will be welded to each other.
The screw is required to hold the hinge in place (else it probably will be hard to align again)


Here it breaks. Then open/close it wide some more by hand until it rotates easily.



These two tabs must be removed. It should be easy with pair of flat nose pliers.
Here you are, you will have to clean it up a bit with a scalpel or a filer.

Cleaning up the mounting jaws

The jaws are specific to the Ultimaker. They were printed with vertical walls to avoid the requirement of support structures that would pollute all other the body otherwise. In a next revision, I think I will make them a separate thing so the feeder can be used on other printers more easily.

Remove the support from the UM frame jaws
This is the most annoying cleanup to do,
you will need a sharp knife to finish properly.
I tried to specify very thin walls but it could led to bad slicing
(Cura sometimes just ignored the rounded walls when too thin)


Mount the bolt roller bearings

Use two 608ZZ skate roller bearings and a M8 bolt, two washers and a nut to lock them in place.

This is the setup I use to install the two 608ZZ skate bearings
Screw slowly but with force, make sure the bearings are aligned and lay flat
End like this, when they are flush with the top & bottom surfaces

Optional bowden plug locking screw


This bolt is optional, because the bowden will probably not pop out of its slot so easily. But better be safe than sorry, so I recommend adding it.


This nut is to hold the bowden tube in place (with its plug)

The mounted lateral screw to hold the bowden plug

The stepper motor isolators


I think this is an interesting improvement: use two 40mm pieces of heat-resistant used bowden tube to act as thermal and noise insulators. They will lay in the gutters on the printed body.


Prepare the holes in the two 40mm pieces of PTFE (teflon) tube.
They isolate the printed support from the stepper heat (and noise)
Use four 15mm M3 screws through the support and the PTFE tubes.
It should look like this when done. The screws must be long enough to lock
the stepper tightly, but not completely flatten the pieces of bowden tube.

The gears tightening screws and setup

They act by pushing sideways on the perpendicular mounting screws of the stepper sideways (for opposite directions). I like this system a lot because they let you set very precisely how far the driving gears are apart. The small nuts may require heating to be pushed in their slot (this could be easier  imho, but it worked well for me).

These two nuts are useful to finely adjust the stepper
position against the big wheel
Mounted stepper motor

Then insert your hobbed bolt (how to make it). Use a washer only on the gear side.

Hobbed bolt inserted -- btw, you see one of the oblique  stepper adjustment screws
You can use one washer and a butterfly nut to hold the big wheel in place,
or print a thumb wheel as I finally did (with no  washer: one part less).
Here is one way to tighten the butterfly nut against the big wheel
on the hobbed bolt without screwing the wheel itself too much.
Hold the wheel with your index if it starts to turn with the nut,
because the driving bolt must still rotate with great ease on the bearings!
One sheet of paper is a good indicator between the two wheels,
this is where to use the oblique screws to tighten the stepper in the good position.
Tighten the two oblique screws once properly set.

Mount the idler roller bearing

This bearing has a groove in it, but I used a regular one.

Just mount it on a long M8 bolt with two nuts and clamped the bolt on your table. Then use a grinder with a very slight angle to let the bearing roll (very, wow!) quickly, while the small angle made grinding compulsory at the same time.

Give time for the bearing to cool regularly, and proceed with caution of course!

Use quick forth and back to screw the idler bearing in place, or tap the hole first.
Washers may be needed if your 30mm bolt is too long, between the head and the bearing.

Almost done, miscellaneous


You can add these screws to reinforce the feeder mounting jaws.

You are almost done.
The idler bearing has a slight inward angle against the driving bolt head by design.
This prevents the filament from getting out of it, though it is probably
superfluous because of the way the bowden tube comes very close to the bolt (see below).
As you can see this body warped a bit when printed :(

Here is how I mount the spring on the idler

This is something that would benefit from a two arm lever. But it is still easy to setup. Use a M4 bolt, where the head goes in the shape on the body. The big washer is superfluous below.
Better add a washer and a grower washer before the butterfly nut, so it will not try to unscrew.
The guts, viewed when the idler arm is fully open.

How to mount the idler spring. Note the small bit with a piece of PTFE tube:
it helps to guide the filament into the driving bolt when I am not using a spool,
I just rotate it when I need to , and I am not sure it is really useful.

The bowden plug/clamp.

This is derived from Owen's clamp but my forthcoming revision will use a design that will be smaller and faster to print. The original dimensions are not compatible, though the top screw may, I cannot tell. 

I used Owen's bowden clamp idea and changed the base.
If you pre-mount multiple bowden tube with it, you will be able
to switch between filaments in seconds!
Another view of the bowden clamp. The screw is not that robust and it is annoying to render.
I will replace it by a more compact blind rivet nut attachment one day (one nasty vitamin though).
Here it is mounted. Just unscrew the top lateral locking screw, slide it in place and tighten the screw.
Sanding may be needed a bit for the square base of the bowden clamp.

The fully mounted rollerstruder!

Note that I added a heatsink on the stepper as my PLA body started to melt a few hours after I tuned my extruder pololu driver power way too high : the stepper became so hot that the mounting screws were able to transfer enough heat from the motor to the other part of the body and though the PFTE isolators!

At the time I just added a 40mm fan on top of the heatsink to finish my ultrafast but hour-long print (350mm/s). I suspect I could remove it now that I reduced the pololu power to something more acceptable.
Printing 3mm wood filament (bad quality)

Printing an old nylon trimmer line (2.4mm)

Once again, you can download the files here on Thingiverse (but expect this to change as Makerbot started to steal and try to patent our free designs). The gears are the same as the stock ones, but I have designed replacements.


About Me

My Photo

If you know me and you cannot tell exactly what my real job is, then you probably found the right Jeremie. Check zax.fr for some pointers.

I am self-employed and I help start-ups, research centers, small companies with their needs related to computers, maths and mechatronics. If you have a project and know what "R&D" is, then you already caught my interest ;)