Wednesday, 4 November 2009

Extruder Part 3: the Filament Sensor

The disadvantage of using a DC motor instead of a stepper motor for the extruder is that you can't control the rate at which the filament is extruded without some kind of feedback mechanism. The standard way to do this is with a magnetic rotation sensor, and I've already blogged about etching my own version of the magnetic rotation sensor board. The way I'm using the board is not so standard.

The usual approach is to mount the magnet on the drive axle, so that the sensor detects the rotation of the motor. This is fine so long as the drive doesn't slip on the filament, but actually this happens quite often. What we really need is an independent axle which is driven by the movement of the filament, not the motor. My design is cheap and seems to work well.

You need an M3 bolt, two 10x3x4 bearings, a short length of silicone tubing, and a microswitch with a roller lever:

The silicone tubing should fit tightly onto the bolt. Glue the magnet from the rotation sensor onto the head of the bolt with epoxy resin, getting it as central as you can. The sensor IC specifies a 6mm diameter magnet, but I couldn't get hold of one at a reasonable price, so I used a 10mm which works fine. The parts fit together like this:

The roller lever on the microswitch pushes the filament against the bolt, and the silicone tubing gives it enough grip to rotate the bolt when the filament moves. You need some kind of block to hold everything in place; in the long term this should be printed on the RepRap but (as usual) I made mine out of oak:

It fits on top of the pinch-wheel block like this:

and the filament feeds straight through. The microswitch is connected to D9 or D10 on the extruder controller, so the software can detect when the filament runs out.

The silicone tubing is about 5mm external diameter, and the rotation sensor detects 1024 events per revolution, so the resolution should be about 0.015mm. Assuming 3mm filament extruded to 0.5mm, this gives a resolution of extruded plastic of about 0.5mm, which isn't bad. We could improve it a bit by using thinner walled tubing.


  1. Neat! I've been looking for a way to measure the filament movement rather than the motor speed (to check for slippage).

  2. Yes, I'm quite pleased with it. It might even be worth having one of these with a stepper motor, just to detect slippage. I'm still working on the software, though.