HowTo: 3D Printing - Building a servo controlled 125mm butterfly valve

I recently built an exhaust system for my soldering station and the chamber of my 3D printer.

The built exhaust system has two connections. One extracts the air from the 3D printer chamber with the help of a connected hose and thus ensures that the air inside is regularly freed from potential pollutants. Another hose is connected to the other port. This leads to a soldering station and can thus be used as an extraction system for solder vapor.

In order to control these individual ports independently, I was looking for some sort of controllable valve. Unfortunately, I found all commercially available offerings to be too expensive or not suitable.

So: do it yourself 🙂

In the following section you can see a few videos of my 3D printable butterfly valve. After that follows the detailed assembly instructions incl. material list.

Simple function test.
Structure incl. Y-distributor.
Example video of automation using a wifi socket.

Safety instructions

I know the following notes are always kind of annoying and seem unnecessary. Unfortunately, many people who knew "better" have lost eyes, fingers or other things due to carelessness or injured themselves. Data loss is almost negligible in comparison, but even these can be really annoying. Therefore, please take five minutes to read the safety instructions. Because even the coolest project is not worth injury or other trouble.

Affiliate links/advertising links

The links to online shops listed here are so-called affiliate links. If you click on such an affiliate link and make a purchase via this link, will receive a commission from the relevant online shop or provider. The price does not change for you. If you make your purchases via these links, you support in being able to offer other useful projects in the future. 🙂 


For the assembly you have to master SMD soldering tasks. The following articles contain tips for this.

Required tool:

Required material:

In the following list you will find all the parts you need to build a nanoPxl.

Collect the necessary parts

In order to start building the valve, you should first collect the parts listed here.

Overview of the required components.

For the assembly you need the following parts:

  • 2x housing ring
  • 1x servo mount
  • 1x Sevo arm
  • 1x valve flap arm
  • 1x push rod
  • 1x valve flap
  • 1x Valve flap axis clamp
  • 2x 603ZZ ball bearing
  • 4x M3 thread insert
  • 8x M3 nut
  • 2x M2x12 countersunk screw
  • 2x M2 nut
  • 1x M3x50 countersunk screw
  • 1x M3x35 countersunk screw
  • 2x 3mm washer
  • 8x M3x6 countersunk screw
  • 2x M3x12 countersunk screw
  • 1x SG90 servo

Further view of the required components.

Further view of the required components.

You can find the STL files for printing at the following link. If you get an error when importing into your slicer, you should download the complete repository. When downloading the single STL file, GitHub often only provides the HTML file to preview the STL file and not the STL file itself.

Info about printing: I printed all components with 30% infill and 5 perimeters of PLA.

Screw housing rings together

The housing consists of two 3D printed identical rings. These are screwed together for assembly.

For the assembly you need the parts shown on the left.

another view of the required screw parts.

To assemble, you should now place the rings on top of each other as shown in the...

... first fasten one of the M3 screws.

To prevent it from falling out again, you should screw the screw on the underside with an M3 nut.

Repeat this for all eight ways to screw the two rings together.

Close-up view of one of the inserted M3 nuts.

Insert valve flap

After the housing rings are mounted, you can insert the valve flap.

In order to be able to rotate the valve flap, you should first insert the two 603ZZ ball bearings.

These are inserted into the recesses shown on the inside of the housing rings.

To assemble the valve flap, you will now need the components shown.

First insert the M3 screws as shown ...

...through the valve flap.

Then screw this together with the valve flap clamp to the underside of the valve flap using two M3 nuts.

Top view of the screwed valve flap.

Side view of the valve flap with mounted valve flap clamp.

So that the axis can later be properly clamped with the help of the valve flap, an M3 threaded insert must first be inserted into the valve flap.

You can melt this thread insert into the valve flap with the help of a soldering iron until it...

...sits flush in the valve flap.

Close-up view of the flush-fused M3 thread insert.

Mount valve flap arm

The valve flap arm is the counterpart to the servo arm. With its help, the valve flap is later rotated so that the valve is closed or opened.

Pictured you can see the required components.

Now first insert the M3 threaded insert into the recess in the valve flap arm as shown.

Then you can insert the M3x50 screw into the valve flap arm as shown.

Another view of the prepared valve flap arm.

Another view of the prepared valve flap arm.

To clamp the inserted M3x50 screw in the valve flap arm you have to screw the M3x10 screw into the melted thread insert.

Tighten them so that the inserted M3x50 screw is jammed, but the threaded insert does not push out.

You can then use the prepared valve flap arm as shown....

... into the previously inserted 603ZZ ball bearing.

Now put on the 3mm washer and pull the valve flap arm back again so far that... can insert the M3x50 screw into the valve flap.

So that you can also rotate the underside of the valve flap, you now need...

... an M3x40 countersunk screw and a 3mm washer.

Close-up view of the required M3x30 countersunk screw and 3mm washer.

Now insert this from the illustrated side of the housing ring through the 603ZZ ball bearing. After that you should put the screw through the 3mm washer and finally into the axis of the valve flap.

Your valve flap should now be ready to rotate in the housing.

Close-up view of the lower axle suspension.

Close-up view of the upper axle suspension.

The valve flap arm is still inserted into the valve flap so that it can rotate freely. This will only be firmly clamped to the valve flap in a further step.

Attach servo

The SG90 servo can be used to open or close the valve flap. In the following section, the servo is mounted on the housing.

For this you will need the following parts.

  • SG90 Servo
  • 2x 2mm self-tapping screws (usually included with the servo)

First set the servo as shown in the...

...into the servo mount.

Make sure that the connecting cable of the servo is not damaged in the process.

Once the servo is in the mount you can screw it into the mount with the two 2mm screws.

So that the servo mount can be screwed to the housing rings, you now have to insert two M3 threaded inserts...

... into the two recesses.

Then you can mount the servo with the two M3x6 countersunk screws ...

... screw on the housing rings.

Another view of the screwed servo mount.

Connect servo arm and push rod to valve flap arm

With the help of the servo arm, the push rod and the valve flap arm, the rotary motion of the servo is transmitted to the valve flap.

For installation you need the following parts.

  • Push rod
  • 2x M2x12 countersunk screw
  • 2x M2 nut
  • Servo arm

Another view of the parts needed.

Now you can tighten the previously inserted M3 screw to clamp the M3x50 screw of the valve flap arm. Make sure, however, that...

...the valve flap arm is at a 45° angle to the valve flap. When the valve flap is closed, the valve flap arm should therefore be as shown.

Now you can screw the push rod to the valve flap arm.

To do this, insert the first M2x12 countersunk screw through the push rod and the valve flap arm.

On the bottom side, the M2x12 bolt can be screwed with an M2 nut and the push rod can thus be attached to the valve flap arm.

Further view of the screw connection between push rod and valve flap arm.

Once the push rod is connected to the valve flap arm, you can also connect the opposite side of the push rod to the servo arm.

Make sure beforehand that the servo arm is attached to the servo axis in such a way that the servo still has enough angle of rotation in the opening direction of the valve. This is the only way that the valve can be opened later using the servo.

Position the push rod on the servo arm and screw it... before on the valve flap arm with an M2x12 bolt and an M2 nut.

Important: You should secure the M2 nut with a little threadlocker or hot glue to prevent it from loosening on its own.

Once you have everything set up, your valve might now look like this 🙂 .

Finished structure

In the following paragraph you can see a few more pictures of the finished assembly

Mounting options

To mount the valve on a spigot or to connect it to a 125mm exhaust hose, you can use the following options.

Plug-in flange for connection of a 125mm hose

The following flange consists of two halves.

To mount the valve in it, you should mount the first half on the mounting surface.

It is then important that you cut out the mounting surface in the inner diameter of the flange (in the picture the acrylic glass pane) in a circular shape. Unfortunately, this is not yet visible in the picture.

Other view.

Then you can mount the valve...

...and attach the second half of the flange and screw it to the mounting surface.

Mounting with the help of a flange

The following mounting option is suitable to mount 125mm hoses as well as the butterfly valve built above.

To do this, you should first mount the flange shown on the surface to which the valve is to be attached.

Then you have to prepare the two clamping rings by gluing approx. 5mm thick sealant into the clamping ring.

Then puts the first half of the prepared clamping ring around the collar of the flange....

... puts the valve on and clamps it with the second half of the clamping ring.

You can then screw the clamping ring halves together with two M3 screws.

Further view of the clamp ring halves clamped on without valve.

Servo controller PCB for control

For the control of the valve I have made a board, which can control up to 16 servos or valves. Programmed with the ESPEasy firmware and configured accordingly, the servos can be controlled and automated via MQTT postings.

The instructions for building the board will be online soon and linked here. Until then you can use the possibility from the next paragraph for the control.

ESPEasy configuration for control

Another way to control the valve servos is to use a PCA9685 breakout board. If this is connected to a microcontroller (for example the Wemos D1 Mini or ESP8266) via the I2C bus, the microcontroller can control the servos with the help of the PCA9685 breakout board.

For this purpose in the article ESPEasy - Connect PCA9685 PWM Port Extension to ESP8266 and control it describes how to connect a PCA9685 breakout board to a Wemos D1 Mini and configure it correctly using the ESPEasy firmware.

Some more information about controlling servos with the PCA9685 breakout board can be found in the following article ESPEasy - Using a PCA9685 to control servos.

NodeRed Flow for control

If you are using a controller with the ESPEasy firmware as described above, you can use the following flow as the first start to control the servos.

You can find the flow at the following link. Tips on how to import a flow into your NodeRed instance can be found in the article NodeRed - import and export node code

For this flow to work in your installation, you will of course need to change the MQTT topic to the name of your ESPEasy instance.

Build solder fume extraction hose incl. funnel yourself

In the article 3D printing - build solder fume extraction hose incl. funnel yourself I described a way how to build a soldering exhaust hose from some standard exhaust hoses and some 3D printed parts. You can find all the info and materials you need in the linked article.

Have fun with the project

I hope everything worked as described for you. If not or you have questions or suggestions please let me know in the comments. I will then add this to the article if necessary.
Ideas for new projects are always welcome. 🙂

PS Many of these projects - especially the hardware projects - cost a lot of time and money. Of course I do this because I enjoy it, but if you think it's cool that I share the information with you, I would be happy about a small donation to the coffee fund. 🙂

Buy Me a Coffee at       


  1. Hi Fab,
    thanks for all your work and the great effort you took to document. Much appreciated.
    We're interesting in creating an automated dust-collection system, using these valves. For that, we also want to use the power consumption of the dust-creating systems, like in one of the videos you showed. To that end: what wifi socket did you use?


    1. Hi Rene,
      I used one of these wifi sockets:
      Important thing here is that they support the tasmota firmware and power measurement. Additionally you should make sure that you dont use this kind of sockets to switch the dust collecting machine on. Even if they can handle the consumed current of bigger machines they often struggle with the high currents during the startup phase of motors. 🙂
      So basically I would recommend to have this socket permanently switched on and use only the power measurement functionality while switching the machine on and off via the stock on/off switch. 🙂
      I can also try to finish the article about this which should include the Node Red source code as well. 🙂
      Best regards

  2. Thanks Fabian!
    I also saw that these smart plugs [ ] have a pinout, that should be usable for the servo directly. You can also easily overwrite their firmware. So you could measure the current of a device, and if it exceeds a limit open the valve and communicate to another device to turn on the valve.
    Secondly, we ordered the 603ZZ bearings (two people independently) and printed the files you provided above and it seems like the indentations are a bit big (at least 0.5-1mm) compared to the bearings. Could it be that you ended up using different bearings or that you uploaded an outdated STL?
    Lastly, a colleague used a piece of continuous M3 threaded rod as the axis for the flap (I guess to replace the M3×30 and ×40) and said it works better for him.

    Thanks for all your great work & Cheers,

    1. Hi René,
      Thanks for the hint. 🙂
      Yes that could be. After switching to an (obviously) more precise 3D printer I also realized that some margins are a bit off.
      Looks like I have to rework the files. I put that on my list. Thanks for the hints. 🙂
      Best regards

  3. Hi Fabian,

    I was putting the the valve together and noticed that in your hardware list you need an SG90 servo.
    In the picture you use an mg90s. During assembly the cable of the sg90 doesn't fit.

    Could you share your source files so I can make some adustments? I will also improve the ballbearing holder and was also thinking of making the valve bottom and upper part a bit thicker so an m3 insert fits in. Connecting the rods works a bit better then.

Kommentar hinterlassen

Your email address will not be published. Erforderliche Felder sind mit * markiert

This site uses Akismet to reduce spam. Learn how your comment data is processed.