Control a proportional solenoid valve using Arduino and control dial

Hello, I’m quite new to all this so sorry In advance if anything I say is relatively stupid or unclear.

I’m waning to control a proportional solenoid valve using a control dial. The solenoid valve plunger position is controlled by giving it an input of one of the 3 following inputs: 4-20mA, 0-5V or 0-10V. So as more voltage (or current) is applied to the solenoid, the more the valve closes.

I’m after the simplest/easiest way of doing this, so I’m flexible to what type of input I give the solenoid (4-20mA, 0-5V or 0-10V). The current Arduino I have is the UNO rev3 board. If this board is not sufficient then I will happily upgrade to a more suitable one. Can anyone give me an insight as to how I would go about doing this?

If anything needs clearing up please let me now and I’ll try and provide more information. Thanks, Elliott

Does the valve give any feedback as to the ACTUAL position of the valve?

Since your Uno board is 5V, the easiest method would be to send 0-5V to the valve. Unfortunately, the UNO does not actually have any digital to analog (DAC) capability. The only thing it does have is pulse width modulation (PWM) which might work.

Basically, the UNO will generate a square wave with the duty cycle you specify (0-255). It you are running a motor or something like that, it doesn't really care about the PWM and reacts to the average amount of voltage. For example 0 = off, 128 = 50% speed, 255 = full speed.

Your valve may be have like that as well, it may not. It all depends on the characteristics of the valve. It won't hurt it to try.

Hi Paul,

Unfortunately it doesn’t, you can buy a control module that does display this, but it’s out of my price range which is why I’m attempting this long work around. The only thing that is provided is data that states expected flow rates at different input values (eg. For 0-5V, 2.5V would produce an expected flow rate of 9litres/min). But nothing on the actual solenoid valve no.

Ahhh, Thanks for the idea! I’ll give it a try and see if I can get any control from the valve! :slight_smile:


It would increase your chance of success, that is to say work, if you added a low pass filter to the PWM output.

See this, which BTW ends up recommending using an inexpensive digital to analog converter module. :wink:



Hi, @elliottkitson
Welcome to the forum.

Can you please post a link to specs/data of the valve assembly?

I assume that apart from supplying the variable 0 to 5V you need some sort of display to give you l/min for the setting of the input control.

Tom... :smiley: :+1: :coffee: :australia:

Hi Tom,

Here’s a link to the valves data sheet:

A display would be ideal yes, but I’m unsure how I would be able to do this without attaching a flow meter to the pipe system as-well.

The good news: The spec sheet you linked says the valves operate using PWM, 500 Hz
The bad news: The spec sheet you linked says the valves operate at 24V.

If that is truly what you have, you will need a 24V power supply and a logic level MOSFET. The arduino can then send a PWM signal to the MOSFET which will do the actual switching of the 24V to the valve.

1 Like

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.