I've been looking at water flow control with Arduino and I'm finding a huge difficulty in managing to do an 'analog' control on water flow. The mainstream solution seems to be the well known solenoid valve, however those seem to be binary (full flow, no flow), and I'm looking for a more variable answer.

Is it possible to get middlegrounds with solenoids? Maybe actuating them with less voltage or amperage will cause it to partially actuate? If not, does anyone know of embedded solutions using servos or steppers maybe?

  • 1
    Only thing that comes to mind is multiple solenoids, which is probably not what you are looking for. Commented Apr 24, 2015 at 3:23
  • why not just control the pump speed to control flow thats what I do.
    – user23080
    Commented Jun 16, 2016 at 11:16
  • Because there is no pump. This is connected to a pressurized water pipe. Commented Jun 16, 2016 at 13:31

2 Answers 2


Is it possible to get middle grounds with solenoids?

No. The solenoid will be all or nothing. If you have used a magnet, you have seen that the force decreases rapidly with distance. As you move something closer, it will typically snap to a magnet at one point. The same thing happens in a solenoid valve: once you apply enough voltage to start motion, the motion will complete.

Side note: that is actually a common trick to saving much power with solenoid valve. You might apply 12 V to actuate, but then you can reduce the voltage very low (maybe 2 V or lower) and the valve will still say actuated.

So if you want flow, you need a flow control valve. A common 1/4 turn ball valve will provide the fractional flow you seek. You should be able to hook a servo or gear motor to that.

A typical ball valve will not provide a constant change of flow with angle. That means the change in flow between the first 5 degrees opening will be large while the last 5 degrees of motion will have little effect. If the application is not critical, that would be fine.

If you want more precise flow control, valves are made with a particular cutout in the ball that makes the flow control more linear. You can get a commercial type valve with motor attached in cost range of 100 $US. For hooking up to an Arduino, a Belimo flow valve (one example vendor) only seems appropriately named

enter image description here

These are commercial type valves used to control water in heater systems and such. They take a 0 - 10 V input signal as control and will rotate the vale. The keyword search is "motorized flow control valve" and that will find you many. These are not exotic, you will find many in all sorts of sizes. You may even find from a local plumbing supplier where you can pick one up at will call.


Do you use a pump to circulate the water flow, if so maybe you have a better result with a variable pump speed (PWM), in state of a variable valve opening.

Not the answer you're looking for? Browse other questions tagged or ask your own question.