Active Strain Relief for 3D Printer filament

As you can see from the below picture, I hang my filaments above my printers and just pull the one I want.
This is fine if the filament is close to being directly above the printer, that way the filament is pulled parallel to the spool.
Sometimes I need to use the out-most filament spool, this is a problem because the filament wants to unspool and it’s harder for the extruder to pull. I don’t care that much that the filament unspools, but there’s a risk of it getting tangled in other spools and making it hard on the extruder, causing gaps in prints.

My solution for this was a small paper clip attached to the adjacent spool that functioned as a guide for the filament. This way, there’s no unspooling, but the filament still has to bend sharply and is not as easy to pull as the ones directly above the extruder.

What I need is something that will pull the filament parallel to the spool and relieve the tension from the filament so that there would be no resistance before the extruder. In other words, I need a filament “buffer” before the extruder.
This is what I came up with:

I call it “Active Strain Relief”. It’s basically a weak extruder that doesn’t dig into the filament and is triggered via the force that is applied to the filament by the printer’s extruder.

The Driving Mechanism

The filament enters the mechanism through a tapered hole that also acts as a 360 degrees guide to prevent the filament from grinding or binding on an edge.

Then, the filament is pinched between two rubber cylinders that came from an inkjet printer. The force applied to the filament can be adjusted via the wheel on the side which adjusts the tension in the spring.

One of the rubber cylinders is spinning free and the other is driven by a motor (which was also salvaged from the same printer).
The motor’s speed is reduced slightly by the gears.
Some silicone grease was applied to the gears to help reduce wear and noise.

All screws fit into knurled nuts that are embedded into the plastic with heat.

The Circuit

What I want the circuit to do is drive the motor for an adjustable amount of time at an adjustable speed after it’s triggered. pretty simple.
I can use an Arduino with bit of code to make it work, but I figured this can be done with a purely analog circuit.
I also preferred that the operation will be independent from the printer. No need to start taking signals from the driver board or talk to Octoprint.

I went with a couple of 555 timers to get the functionality I want.
The first 555 timer is configured in a “delayed off” configuration. While it’s trigger is HIGH, the output is HIGH. When the trigger goes LOW, the output stays HIGH for a time determined by the potentiometer and then returns to LOW.
The output of the first 555 timer powers the second 555 timer.

The second 555 timer is configured as a PWM driver to control the speed of the motor. It generates a PWM signal while it has power.
The PWM frequency and duty cycle are controlled via the potentiometer. (The frequency is not really relevant to the application, but making it static while the duty cycle changes is more difficult).

After a few experiments, I realized that 12V from the printer’s power supply is too much and under load I would occasionally fry the first 555.
To address the issue, I added a LM350T regulator with an adjustment pot to limit the voltage. I found that around 7V works nicely.
I also printed a piece to mount the circuit to the main body.

Here is the schematic for the circuit:

The trigger

Driving a motor is pretty straight forward, but how do I detect that the printer is pulling on the filament?

I thought about all sorts of sensors and complicated ways to turn it into a trigger, but I wanted a simple and reliable solution.
What I came up with is a copper ring and a tapered cone that’s conductive on the outside. The cone is suspended in the center of the ring so when the filament is pulled, the cone touches the ring and closes a circuit that triggeres the first 555 timer.

I tried a few different techniques for holding the cone while allowing it to move and return to center, from different foams to strings and springs.
The project spanned over a long enough amount of time that my printer has had some upgrades by the time I got to this part. In the end, I used flexible filament and a structure that would allow more flex in the small thickness of the part.

Soldering a wire to the copper ring was easy, but the aluminium tape wouldn’t take solder at all. I had to drill a hole and clamp the wire to the cone with a screw and washer.


As I mentioned, the project spanned over a pretty long time and by the time I finished, the printer moved to a new location and the mounting method had to change.

At first, I wanted to have an aluminium square tube that would be held at both ends and clamped between the body of the device and an additional bottom piece.

In the printer’s new home I needed a longer rod and it had to be held in the middle without blocking the movement of the clamp to the other side of the rod.
I decided to go with a wood broom stick as the rod and I mounted it form the top with screws and a printed bracket.

To allow the clamp to slide past the bracket, I clamped the rod on the sides instead of from the top and bottom. This also made the clamp independent from the rest of the body and made it modular so that I could change the clamp if I ever replace the broom stick.


Now, after this is all done and working, it’s time to make another one for my second extruder..

As usual, the files are available for free on Thingiverse.


  1. Nice bro! I would consider having a microswitch with a lever as a trigger, maybe with a flat spring set up it will not need a timer and circuits, but then lever length and probably angle will require adjustment. If I happen to build something like that, will share 🙂


    1. Thanks! glad you liked it, I appreciate the feedback.
      Conceptually, this is the same as what you propose. The flexible part is the spring and the ring and funnel are the switch contacts, with the distance between the funnel and the ring being the lever length. The only problem I see with using only a switch for controlling the timing is that the adjustments have to be physical and you might reach the limit of adjustability if you want an extra long buffer.
      Also, if the motor spins only when there’s tension pushing the switch, it will stop the moment the tension is relieved, meaning that there will always be some tension in the filament between the extruder and the mechanism, which defeats the purpose, in my opinion.
      Moreover, you’ll probably still want some way to adjust or at least limit the motor speed. I found that letting it run at full speed makes the filament spool have too much inertia and it kept spinning after the motor stopped, causing the filament to unspool and get tangled. A geared motor or something to adjust the friction on the spool would solve this, but that’s way overkill (well, my solution is also overkill so maybe it fits 🙂 )
      I think the microswitch idea is good and will probably make it look cleaner, but I think a control circuit is still needed (Even an Arduino with 5 lines of code would be much simpler than the analog circuit and would probably be more accurate).
      I would love to see what you come up with if you build something similar.


      1. Thanks for detailed write up. Clearly I did not describe the idea in full. The function is similar to flip switch or rocker switch function, where switching is activated only when certain force is applied. So switching on and off positions will be different.


      2. I think I understand what you mean, and I think you’re talking specifically about the tension and adjustment points in my reply (correct me if I’m wrong). But I think it still applies.
        Even if there are two different on and off positions, there has to be some force applied to the filament between these positions and the filament will be between these position for the majority of the time. This is what I was trying to avoid. By having the off position not rely on any force or position of the filament, I can have the filament truly tensionless and just hanging by it’s own weight for the majority of the time.
        You could argue that the applied tension is negligible, and that may be true for some designs and printers. If that’s what you mean, I agree, but it would still have limited adjustability.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s