Proportional Valve Control

Hello guys . I want to control one proportional selenoid and normal selenoid with arduino

Normal selenoid will be on , off but proportional selenoid will be used proportionally.

I am new in electronic. But I am learning . I dont want to buy a driver card , I want to do iy myself.

The specs for proportional and selenoid valve is attached.

How can I do a proportional and on off valve circuit

a1.pdf (393 KB)

on-off is standard solenoid drive - MOSFET and free-wheel diode.

Proportional control requires 1/2 H-bridge (2 MOSFETs) driven from PWM signal
A high-low MOSFET driver and two n-channel MOSFETs would be one way, if the
supply is 12V it would be a good match.

Alternatively PWM via one MOSFET and one free-wheel load (a high power zener back-to-
back with a rectifier diode) could be used.

The normal freewheel diode only has a small voltage across it meaning that solenoid
current will decay much more slowly than with the other methods, limiting response
speed and giving very non-linear response to PWM duty-cycle.

hello MarkT Can you draw a simple schematic diagram if it doesn't put you to any trouble.

because I am confused and new in electric circuits

Also I will use 24 V DC power supply I will drive the selenoids by voltage not current

Also I want to use ramp up and down , gain and offset settings on the proportional driver circuit
Is it possible ?

Hi, I think you will first have to look at the proportional valve specs, it specifies a -3db response to PWM as 22Hz.
The arduino PWM, UNO is

Note that the base frequency for pins 3, 9, 10, and 11 is 31250 Hz
Note that the base frequency for pins 5 and 6 is 62500 Hz

This page will give you how to change the PWM.

http://playground.arduino.cc/Code/PwmFrequency

The controller they recommend does a lot of things to drive your valve, including linearising the flow response and one of the most important things, control current. You are working with an inductor, AC current, not just an on=off switch pulling an inductor, impedance is now in play.

Tom....... :slight_smile:

The smallest pwm is 30 Hz so couldnt I use arduino ?
I will use arduino mega

Hi, if you can get the PWM down to 22Hz, it should be fine, any higher and you will have control problems when it comes to getting the valve to open smoothly.
The impedance of the coil will limit the current flowing through it, hence how much magnetic energy is being exerted on the valve spindle.

Tom..... :slight_smile:

Just go with normal PWM rate and pulse the control value at a lower frequency
to overcome mechanical hysteresis, something like:

#define PULSE_DELAY 20

unsigned long next_time = 0L ;

int pwm_level = 0 ;
#define PULSE_AMPLITUDE 20
int pwm_offset = PULSE_AMPLITUDE ;


void loop ()
{
  if (millis () - next_time >= PULSE_DELAY)
  {
    next_time += PULSE_DELAY ;
    pwm_offset = - pwm_offset ;  // pwm_offset is a square wave
    int value = pwm_level + pwm_offset ;
    value = constrain (value, 0, 255) ; // constrain to PWM bounds
    analogWrite (solenoid_pin, value) ;
  }
  // use pwm_level to set the solenoid level.
}

What spec I should looking for when shopping proportional valve which will work with arduino?

Hi, in my experience, always use the controller and proportional valve pair that the manufacturer makes and recommends.
The controllers are easy to drive and it takes care of a lot of parameters that need to be set and adjusted to get full and efficient valve control.

Tom....... :slight_smile: