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.
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.
https://www.nerdiy.de/sicherheitshinweise/
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, Nerdiy.de 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 Nerdiy.de in being able to offer other useful projects in the future. 🙂
Requirements
For the assembly you have to master SMD soldering tasks. The following articles contain tips for this.
- Electronics - My friend the soldering iron
- Electronics – Solder THT components by hand
- Electronics – Solder SMD components by hand
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.

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
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.

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.
Insert valve flap
After the housing rings are mounted, you can insert the valve flap.

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

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.
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.

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

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.

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)

...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.
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.

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.

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.

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.

...as 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.
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.
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.
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. 🙂
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?
cheers,
René
Hi Rene,
I used one of these wifi sockets: https://www.amazon.de/Steckdose-Stromverbrauch-Funktion-Fernsteurung-Kompatibel/dp/B0054PSES6/
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
Fabian
Thanks Fabian!
I also saw that these smart plugs [ https://shelly.cloud/products/shelly-1pm-smart-home-automation-relay ] 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,
René
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
Fabian
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.
Hi Bas,
yeah back in the days when I created these files I was pretty new to the whole CAD game. There are a few things at the STLs I would like to improve for a new version.
Sadly my time is a bit limited in the moment.
Until then: I pushed the source files to the repo: https://github.com/Nerdiyde/NerDIYs_STLs/tree/main/STLs/butterfly_valve/source
(Back then I used Autodesk 123D to create the CAD, sorry for that. :D)
Best regards
Fab