Building a Flow Bench

In this Instructable, we will be explaining how one could build a flow bench at home for around $300. More information on what a flow bench is and how it works can be found here:

This flow bench will use blower motors scavenged from household vacuum cleaners to generate the airflow necessary for testing. Note that all of the vacuum motors used in construction are recycled, so the total cost may vary depending on what one is able to obtain second hand. Our flow bench is only capable of testing small cylinder heads/test pieces. However, the instructions presented could easily be scaled up to increase the flow bench’s output. There are two major components to this project: the electronics and the mechanical construction. These two components can be worked on independently in whichever order one chooses, but we would recommend working on the electronics first, as once the motors are mounted in the box (and the box is sealed), it is more difficult to perform tests on that subsystem.

Step 1: Overview: Electronics

In order to test different valve lifts at the same test pressure, and to ensure that the test pressure matches literature values, it is essential to be able to vary the speed of the motors. Unfortunately, our particular flow bench is unable to reach the industry standard test pressure of 28 in H2O, but it can still test different valve lifts at a constant test pressure, which, along with a bit of math will allow comparison to published values. Generally, most DIY flow benches modify flow rate by using a manual valving system. This is a valid option, but we instead opted to build a motor controller. Building a motor controller severely increases the complexity of the project, but gives more possibilities for convenient automated testing, and more importantly, consistency. Since vacuum motors are universal motors, they are able to run on either AC or DC. Therefore, we were able to use pulse width modulation (PWM) to control the motor speed when they are run on DC power. To reduce the current that the motor controller would need to handle, we only controlled four of the seven total motors. The other motors provided a baseline airflow, and were simply plugged into the wall.

In addition to the motor control electronics, our design includes a barometric pressure sensor and thermistor (to convert mass flow to volumetric flow), a differential pressure transducer to measure test pressure, and a mass air flow sensor to measure the actual flow rate. All of these sensors and the motor controller are managed by an Arduino Leonardo connected to a personal computer.

Step 2: Overview: Mechanical Construction

The second major system is the box and its associated attachments. The box contains the vacuum motors, and must be airtight to ensure that there is no air leakage. The box is fitted with a flange on either side: one for positive pressure, the other for negative. These fittings need to have some way to connect to the cylinder head, but must still be removable to allow for testing several different cylinder heads and to allow for both intake and exhaust testing. Additionally, the test piece will need to rest of some sort of structure to keep it in place and support it during testing.

Finally, for testing a cylinder head, some sort of mechanism on the cylinder head that allows the user to change the valve height should be implemented. This will not be discussed in detail, since it is highly dependant on the particular cylinder head being tested. However, the basic design layout involves fabricating a bracket with threaded holes positioned directly above the valve stems of the cylinder head. Bolts are then threaded into these holes to allow the valves to be opened by turning those bolts. This component was constructed from scrap steel in our case, but other materials could be utilized instead. The important features for this bit are its ability to precisely open the valve of interest during testing. A dial indicator is then used to measure the valve lift while performing tests.

Step 3: Materials: Sensors


In order to obtain usable flow data from the flow bench, we utilized a mass air flow sensor (MAF). Specifically, a used MAF from a Volvo S80 that we purchased from ebay. For this project, one could utilize any functional mass air flow sensor; our choice of sensor was dictated by availability on the used market and access to the manufacturer’s datasheet. This document contains the necessary calibration data so that the analog output voltage of the sensor can be correlated with the air mass flowing through the sensor. It is of critical importance to ensure that this information is available before procuring a MAF.


(Plastic Barbed Tube Fitting for Air and Water, Silicone Vacuum Hose - 5 feet - .1375" ID (3.5mm), 1/2 in. x 520 in. Thread Seal Tape) Within the constraints of this project, we were interested in comparing our flow bench values to published data. This means that we needed to ensure that the test pressure is consistent between our flow bench and literature. To monitor this test pressure, we used a differential pressure transducer. This sensor is used to determine the pressure drop across the cylinder head being tested by measuring difference between the pressure within the flow bench and atmospheric pressure. It outputs a voltage value in between 0V and 5V. The particular sensor that we used has two ports (one for higher pressure and the other for lower pressure). We used 3.5mm silicone vacuum hose, although any rubber/plastic hose will work, to connect one of the ports to the airflow, and left the other one open to the atmosphere. Finally, we used a barbed pipe fitting in order to access the flow inside of the PVC used to connect the air box to the cylinder head.

Baro/Alt Sensor BMP280 I2C/SPI NTC Thermistor 10K Ohm 3950K

Now that we are able to measure airflow, and know that we can compare these measurements to published data, we need to convert mass flow rate to volumetric rate, which is how airflow is typically measured. In order to accomplish this, we need to determine the density of air, which depends on both pressure and temperature. This is why we are using both a barometric pressure sensor (BMP280) to find the atmospheric pressure at the test site, and a thermistor, to find the temperature of the air flowing. Note that many mass air flow sensors will have a temperature sensor built into them, which can be used instead of an external thermistor (our particular MAF did not come with a built in temperature sensor).

Step 4: Materials: Motor Controller

Mitsubishi PH400DJA120 Intelligent Power Module (IPM)

This device contains a driver circuit and a pair of insulated gate bipolar transistors (IGBTs) configured in a half bridge, used to switch the motors on and off rapidly for the purpose of pulse width modulation (PWM). IPMs can be found used through sites like ebay, or salvaged from other devices for prices in the range of $30-100 depending on if one buys a new or used module. In our case, the IPM was extracted from a Toyota Prius inverter/converter assembly, which was purchased for other internal components to be used on a different project.

APEVIA ATX Power Supply with Auto-Thermally Controlled 120mm Fan

A power supply is used to supply power to the motor control and gate drive circuit. This particular power supply can be obtained from Amazon.

Bridge Rectifier (1PHASE 1KV 35A GBJL) (Thermal Pad (21.84mmX18.8mm gray)

These are full bridge rectifiers that convert AC mains power to DC. We also ordered thermal pads and mounted the rectifiers to a heat sink salvaged from a computer CPU cooler.

Diode (GEN PURP 1KV 10A R6)

Diodes were used to prevent the inductive spikes generated when the motors switch off from damaging the switching element(s). Note that these can be omitted if utilizing IGBTs that contain free-wheeling diodes (nearly all IGBTs do).

Capacitor (ALUM 390UF 20% 350V SNAP)

These are smoothing capacitors used across the output of the bridge rectifiers. It is crucial to feed a clean DC signal into the motor controller.

Arduino Leonardo An arduino is used to control the motor speed as well as gather data from the sensors. Any Arduino should work for this purpose.

PC81105NSZ0F Optoisolator (5KV TRANS 4DIP) (Dip Socket 4POS GOLD)

This optoisolator isolates the rest of the motor control circuit from the Arduino to prevent damage to the Arduino. We also used a dip socket to mount the optoisolator so it could be replaced in case of failure.

TC4427A MOSFET Driver (1.5A DUAL 8DIP) (Dip Socket (8POS TIN) )

This driver is used to send an amplified PWM signal to the intelligent power module. We also used a dip socket to mount this component.

Plated Through Hole Perfboard
We assembled the optoisolator and driver circuits on this perfboard. If one feels so inclined, a PCB could be designed and made in place of this.

Glarks 315Pcs Male and Female Wire Spade Connector Kit

Connectors were added at various points in the circuit to aid ease of use, troubleshooting and storage by allowing components to be easily disconnected from one another.

Step 5: Materials: Box Construction

Vacuum Cleaner Blower Motors

These devices are used to generate the airflow used for testing. They are universal motors, meaning they are brushed series-wound DC motors that have been designed to also run acceptably on AC power. These motors typically include a shroud housing a compressor wheel used to generate the airflow. It is important to note that the best motors can be obtained from household vacuum cleaners rather than shop vacuums, since most shop vacuums are designed for bi directional flow; the blower’s shroud is usually part of the plastic body of the device rather than being affixed to the motor itself. This makes them a less attractive option. Further, while the large size of the device would seem to indicate otherwise, shop vacs do not tend to contain larger motors than conventional household ones. Within the household vacuum cleaner category, both upright and canister style vacuums provide decent motors, so there is no reason to be picky in this regard. Vacuum cleaners can often be found for free locally, and most will contain functional motors.

27 Gal. Tough Storage Tote in Black

We used a large storage bin to house the motors. This is a easy and cheap solution, however, we found that there were several problems using this particular storage bin. The main issue is that the lid plastic is quite thin and flimsy, so when the system was pressurized, the lid buckled and warped. We eventually ended up strengthening the lid using wood, but this problem could have been avoided by either using a higher quality storage bin as a base or constructing the box ourselves from sturdier materials.

2 in. x 6 in. x 4 ft. Premium Southern Yellow Pine / Fir

Inside of the box, there are vacuum motors mounted in parallel. In order to hold them in place, we used some pine wood. For this component, the specific type of material matters less than its ability to firmly hold the motors in place. Wood was chosen for our project since it is easy to work with, but any material you are comfortable with could be used. Additionally, the material must be dimensioned such that it seals off the airflow around the motors.

Silicone Caulk (4) or Hot Glue (100)

We had originally purchased silicone caulking material to seal around the motors and lid of the box. Unfortunately, the silicone we purchased was not high quality, and failed to make a good seal. Instead, we opted to seal everything with hot glue. Since the box was made out of plastic, the hot glue make a fairly strong seal. However, what we did not anticipate was that during the testing of the flow bench, the temperature inside of the box is high enough to begin liquifying the hot glue. As such, we would recommend buying high quality silicone to seal the inside of the box (around the motors), and then using more silicone or hot glue to seal the lid. We also used screws and scrap perforated aluminum as strapping to securely clamp the motors in place.

Step 6: Materials: Connector and Motor Construction

Level Fit Closet, 3" x 4" Flange (3)

These PVC flanges are used to connect the piping system to the box (on both sides), and to the test piece.

3 in. PVC DWV 90 Degree Hub x Hub Elbow (2) By using an elbow, we can the direct the flow upwards. This allows the test piece to be mounted horizontally, instead of vertically, which allows easier access to the intake and exhaust ports. Since we want to be able to test both the intake and exhaust, we constructed two upright lengths of PVC on the sides of the box, and the test piece can be attached to either one of them depending on the direction of flow one is interested in.

3 in. x 2 ft. PVC Sch. 40 Pipe

Short lengths of PVC are used to connect different parts of the piping system.

8 oz. PVC Purple Primer and Solvent Cement PVC cement was used at any connections between PVC pipes and fittings to ensure an airtight seal.

Silicone 4-Ply Straight Coupler Silicone Hose 89mm (2) (4 in. Stainless-Steel Clamp (4))

Silicone couplers are used to securely connect the MAF to the PVC pipes. Additionally, they will allow the MAF to be moved from one side of the flow bench to the other, while maintaining a good seal. We used hose clamps to secure the silicone couplers.

6 in. x 6 in. Rubber Packing Sheets (2)

These rubber sheets are used to make gaskets that ensure there is an airtight seal where the flanges attach to the sides of the box, and where the flange bolts to the cylinder head.

Step 7: Construction: Electronics

Before considering taking on a project like this, one should be both familiar and comfortable with dealing with high power circuits that have the very real potential to kill you. These risks should not be taken lightly, especially since our circuit does not offer any sort of isolation from the grid, allowing for very high currents to be supplied until a breaker (hopefully) trips. With additional budget, some form of current limiting and isolation should be employed. However, even with such safeguards, high voltages with significant current can still be deadly.

In order to build a motor controller, you will need the materials mentioned before. Figure 6 shows a diagram of our circuit.

If you are planning on using an individual IGBT or MOSFET, rather than an IPM to drive the motors, you will need to take into account the following considerations:
We are using a computer power supply to provide power to the driver circuit. The output of this circuit must be referenced to the negative DC bus voltage in order to activate the gate of the switching element (assuming low side switching). This presents a problem since our high voltage DC power is obtained by simply rectifying household 120VAC. This means that the negative DC bus cannot be grounded since this would short circuit one of the diodes within the rectifier every half cycle. Therefore, the computer supply output will need to have an isolated ground (the negative output of the computer power supply will no longer be grounded with reference to the earth). This can be achieved by disassembling the power supply and placing some sort of insulated material between the output ground and earth ground. In other words, the earth referenced ground that attaches to the case of the power supply from the third prong of a standard outlet must be disconnected from the negative side of the power supply’s DC output. This is most easily achieved by adding an insulating layer between the ground points on the PCB and the case. We simply replaced the metal screws with plastic ones and added nylon washers between the PCB and the case. This results in the power supply case still being grounded for safety, but the negative side of the output will float. Alternatively, for additional cost, an isolation transformer can be used, allowing the negative DC bus to be grounded.

The issue of isolation also means that the computer power supply cannot be utilized to power our sensors, since grounding the arduino to the computer power supply would defeat the isolation offered by the optocoupler. This could be most professionally solved by powering the gate drive circuitry from an isolated DC-DC converter while still using an optocoupler to isolate the PWM signal input. However, in our case, we used the arduino to power the thermistor, barometric, and differential pressure sensors, and an external 12V source (from an old wall wart) to power to the MAF. This problem can be circumvented if one uses the IPM (since it has a fully isolated driver circuit).

When assembling this circuit, be sure to use a thick gauge wire. We recycled the wire found in vacuum cleaner cords to make most of the connections, and the cords going to the bridge rectifiers are also reclaimed from the vacuum cleaners. Note that the two plugs from each of the bridge rectifiers should be connected to two different circuits. This will almost double the available current, thereby making it so the circuit breaker will not trip immediately. Using a 240V outlet is a preferable way to address this issue, but we had neither the time nor the resources to implement that solution. Even while using two different circuits, our flow bench is only able to run at full speed for a few seconds at a time before tripping a breaker.

Step 8: Construction: the Box and the Mount

The Box is used to house the vacuum motors which are held in the aforementioned wood that divides the box into sections. One section of the box contains the inlet while the other contains the outlet. The pressure of air is increased as it is drawn through the vacuum motors. As a result, the box must be airtight in order to maintain this pressure differential. Any box of a suitable volume (around 27 Gal) can be used to achieve the desired results, however the structural rigidity of the box should be taken into account since large air flows are drawn by the vacuum motors.

Assembly Procedure: The first step in constructing the box is to cut two holes at two opposing ends of the box. The diameter of the holes depend on the specifications of the flange and therefore the diameter of the PVC pipe. Since the flanges we used were specified at 3’’ x 4’’, the hole cut was 4’’ in diameter. A hole saw or a hot exacto knife can be used to cut this hole. The next step is to mount the flange over the cut holes. Two pieces of gasket material should be cut such that it fully covers the cut hole of the box, while matching the inner profile of the PVC. Then bolt the flange against the piece of gasket to the side of the bin (using bolts suitable for the specific flange). Following that, cut and cement (PVC primer+cement) two pieces of 3’’ (outer diameter) PVC pipes around 3’’ long to both flanges. Then, cement an elbow joint PVC pipe to either end of the 3’’ PVC pipe. Cut two additional 3’’ PVC pipes and cement them to the ends of the elbow joint pipes. In order to make brackets to support the extruding PVC piping, cut and bent two pieces of 3’’x 20’’ perforated aluminum around each elbow joint. Then, bolt each end to the box.

In order to create the mount for the motors that goes in the box, cut several pieces of 2’’x 6’’ wood with semi-circular holes (using a scroll saw or hole saw) the size of the outer diameter of each vacuum motor. These mounts work by creating two of such wooden parts and clamping down on the motors by using perforated aluminum as a strap to squeeze the wood together thereby restraining the movement of the motors. Several such mounts were made in order to mount all the motors. Place the wooden mount with the motors into the box. Screws are used to fasten the motor mounts to the side of the box.

Next, scrap wood was used to reinforce the lid of the box to cope with the pressures involved with operating all of the motors simultaneously. This was done by placing the wood on top of the lid and running sheetrock screws through the lid and the wood. The edges of the wood were then sealed to the plastic of the lid. The installation of the wood helped significantly with rigidity, thereby preventing leaks around the edges of the box, and preventing the lid from being damaged during prolonged operation. If one utilized a higher quality storage bin or constructed a box from scratch, this step could be omitted.

Finally, apply hot glue (silicon can also be used) to the edges of the motor mounts to create an airtight seal between the sides of the mounts and the box. Then the lid can be installed by bolting it in place, and hot glue applied between the edges of the lid and bin. Attach the mass airflow sensor to the extended PVC pipe (at either end) of the box and couple the pipes using a silicone pipe adapter secured by hose clamps. Attach another 3’’ PVC pipe, 3’’ long, to the other end of the MAF using silicone couplers. Holes for the thermistor (and the differential pressure sensor fitting were drilled. The thermistor was simply inserted into the hole and sealed with hot glue while the hole for the fitting was tapped and the fitting subsequently threaded in.

In order to support the weight of the cylinder head, construct a simple three-legged table with a hole large enough to mount a flange (for us it was 3’’x4’’) on top of the table suing bolts. Four additional holes (¼’’) were drilled into the flange to allow the cylinder head to be attached to the flange. The other end of the flange was cemented to the 3’’ PVC attached to the end of the MAF.

Step 9: Putting It All Together and Testing

With all of the subsystems ready, the entire setup can be assembled for testing. Before reading flow rates, it is important to ensure that the motors and control systems are working correctly. The blower box can be operated without being connected to the any sensors or a cylinder head. This is done by loading the Arduino with code that allows it to send a PWM signal that is proportional to a potentiometer input. Once connected to the wall, the motors can be started up and their speed swept from minimum to maximum. Any motors whose speed is not to be controlled electronically can also be tested at this time. With the motors and controller known to be functional, the flow bench is effectively operating as a large vacuum cleaner.

Once the box assembly has been tested, the Arduino can be connected to the sensors, and the MAF mounted to the inlet or outlet of the box. Both flow directions should be evaluated during this stage of testing. The motors can be activated again, while monitoring the output voltage from the MAF. Using the curve gleaned from the datasheet, the analog output voltage of the sensor can be converted to mass flow rate in kg/hour. This value, along with a the density of ambient air, is used to determine the volumetric flow rate through the MAF and therefore the flow bench. By running the device without a test piece, the maximal flow rate that can be achieved with your particular design can be observed and measured. The restriction caused by the addition of a test piece will result in lower flow rates than observed during this test. The maximum flow rate is an important parameter to know when determining which cylinder heads can be successfully tested with the flow bench.

Finally, a test piece can be installed, and actual testing can commence. Depending on the specific configuration of one’s flow bench and cylinder head, this process may vary a bit, but the idea is the same. Start with either the intake or exhaust and then perform a test over a range of valve lift heights. If a PI(D) control scheme is implemented, all that must be done is record the data while the test pressure is in the desired range, before shutting power off and re-adjusting the valve lift. This basic procedure is repeating throughout the range of desired valve lifts. The MAF along with the cylinder head can then be moved to the opposite side of the flow bench to test the other direction of airflow. It is important to switch the direction of the MAF since it is only able to measure for one direction of flow. The vacuum line running to the differential pressure transducer must also be switched to the its other port. Then the above procedure can be repeated.

If one elects to not implement any sort of automated control scheme, the potentiometer used in the setup procedure can be used to sweep across test pressures gathering data constantly. Datapoints at the test pressure of interest can then be plucked from the output of the Arduino.

Step 10: Appendix: Testing Code

We used a simple PI controller to get test data from the arduino. However, since our test window was so short (we were drawing too much power from the wall), it was more effective to simply using a potentiometer to gather data. This method simply reads the value from a potentiometer, converts it to a value from 0 to 255 using the map function, and then sends this to the motor controller. The data acquisition methods are the same in both methods. Attached is a PDF with the code for the PI controller:



    • Frozen Treats Challenge

      Frozen Treats Challenge
    • 1 Hour Challenge

      1 Hour Challenge
    • Fandom Contest

      Fandom Contest



    4 weeks ago

    Thanks for sharing how this system works!