-2
\$\begingroup\$

I would like to drive a proportional solenoid valve (PVQ31 24V model from SMC) using a high frequency PWM.

I followed Olin Lathrop's advice to open a new topic. He suggested to build a circuit similar to a different suggestion I had from Piotr Szturmaj.

I used FQP30N06L mosfet in the circuit. Based on the specs, total resistance (Rcoil, Radded and Rds of mosfet) should be around 145.45 ohms. R_added came out to be ~40 ohms. Unfortunately, the circuit couldn't drive the valve.

Please suggest what could be wrong.. Thanks.

Z

\$\endgroup\$
3
  • 1
    \$\begingroup\$ Don't make us follow links or chase down old threads. Put all the information regarding the question HERE. \$\endgroup\$ Commented Jul 7, 2017 at 16:28
  • \$\begingroup\$ I tried but I couldn't give more than 2 links in a single post.. PVQ31 is actually 24V model and diameter 1.6mm. I wanted to drive this solenoid using Arduino which PWM is in the range 0 -5V. \$\endgroup\$
    – Zeus Ex
    Commented Jul 7, 2017 at 16:34
  • 1
    \$\begingroup\$ The point is these shouldn't be links. The complete question and the schematic you are asking about need to be here in this question. \$\endgroup\$ Commented Jul 8, 2017 at 19:56

2 Answers 2

0
\$\begingroup\$

Remove the r_added. It serves no purpose (other than to waste power) if you are going to pulse modulate the solenoid.

It would be good to place a 5k ohm resistor from the gate to ground to ensure your uP can turn off the FET.

If you still have problems, you may wish to switch to a logic level FET after confirming the high output voltage of your uP port.

\$\endgroup\$
16
  • \$\begingroup\$ do you mean pull down resistance of 5K between ground and source? I am not quite sure what you mean by "you may wish to switch to a logic level FET after confirming the high output voltage of your uP port.".. I am not an electrical engineer so my understanding of electronics is limited. Thanks. \$\endgroup\$
    – Zeus Ex
    Commented Jul 7, 2017 at 16:48
  • \$\begingroup\$ Gate to ground just as I said. Your original thread said you use an Arduino as the uP. I do not know what logic level output voltage it puts out. Your spec sheet for it should tell you. \$\endgroup\$
    – Glenn W9IQ
    Commented Jul 7, 2017 at 16:51
  • \$\begingroup\$ circuit I followed, I will remove R_added, I understood. But source is actually connected to ground. That's why I asked if you mean 5K from gate to source.. If I am wrong, please show a circuit. \$\endgroup\$
    – Zeus Ex
    Commented Jul 7, 2017 at 16:57
  • \$\begingroup\$ No, you asked me if it should be ground to source. Since the source is also grounded you can put the resistor between the gate and source in this case. \$\endgroup\$
    – Glenn W9IQ
    Commented Jul 7, 2017 at 17:02
  • \$\begingroup\$ Thanks to you. I will try the circuit tomorrow. Jus to mention, arduino PWM works for 0 & 5V. I am using MCP4725 for faster PWM. In case the above solution doesn't work, what changes you would be suggesting? \$\endgroup\$
    – Zeus Ex
    Commented Jul 7, 2017 at 17:06
0
\$\begingroup\$

A proportional valve acts more like a linear motor than a relay, so trying to drive it with that strategy will not work. If you use a circuit as suggested here and here, you will find it impossible to use low opening setting:

enter image description here

The problem with a simple diode across the coil is that you use the full current rating (in your case 85 mA) when the switch is on, and there is a long delay from 85 mA back to zero mA. That is not the way to drive a proportional valve.

One integrated solution I've used to drive fluid injectors down in the ms range is the ON NUD3160 driver. This provides very rapid dissipation of the stored energy by using a Zener clamp but using the driver FET to dissipate the majority of the power.

You can read more details here on the MOOG proportional valve to understand the mechanics inside. More details (but still brief) on your valve is here.

If you want to persevere with PWM drive (it's simple to implement with an MCU after all) then you need to replace the diode across the coil with a diode in series with a Zener. This allows you to dissipate the energy stored in the motor coil much more rapidly. I'd suggest that you should use a Zener at least twice your supply voltage.... in your case something around a 56 V Zener will help. The PWM rate will depend on the time it takes to dissipate all the could energy, though I'd suggest you won't want to go above a few kHz.

A schematic might be as follows:

schematic

simulate this circuit – Schematic created using CircuitLab

Here's a link to a commercial proportional valve driver ....notice that it uses PWM followed by a low pass filter and does current sensing in the valve solenoid.

enter image description here

Additional Info from comments

Given that you are using an Arduino directly, here's a suggested driver methodology.

Using 24 V, 165 mA and your measured 115 Ohm actuator on the valve. The datasheet for the valve shows that there is an offset current before you get any movement of the bobbin and flow rate depends on pressure. However 100% open corresponds pretty accurately with the 165 mA current flow since this depends almost totally on the spring pressure.

enter image description here

I'd suggest the following schematic:

schematic

simulate this circuit

You need a FET with about 3-4 V VGS(th) or less.
You can select a device with low VGS(th) from Digikey or the like (such as the ON IRL520 for example) or you could select from what you have using a simple test.
You need to be able to support more than 200 mA into 6 Ohm with the limit of 5 V available from the Arduino. A simple test setup might be as follows (and remember that the FET will get warm):

schematic

simulate this circuit

R2 - C1 form a low pass filter that provides less than 300 mV ripple from the 980 Hz Arduino PWM. You can set this higher or lower if you want, and you can set the PWM frequency higher by altering the timers.
The A/D input is feed from the current sensing resistor and this allows you to set the port high (AnalogWrite(255)) which allows you to saturate the FET and measure the valve resistance from the voltage over R1 (AnalogRead()).
From this you can now calculate the voltage required (on R1) to get any current you want through the valve. You then program your PWM to set the current.

\$\endgroup\$
29
  • \$\begingroup\$ You misunderstand how the circuit you show works. The 0-5 V input to the FET gate is a PWM signal with the duty cycle proportional to the valve drive level. The pulses come much faster than the desired response of the system. Nothing in the system therefore "sees" the individual PWM pulses. It's only the average of the duty cycle that matters. For efficiency, you do want the current to continue flowing, decaying as little as possible between pulses. Solenoids have significant coil resistance, so the current should decay faster than the mechanical time constants if PWM went to 0 suddenly. \$\endgroup\$ Commented Jul 7, 2017 at 17:17
  • \$\begingroup\$ @JackCreasey thanks for suggestion. Do you mean to attach zener in between drain to negative of the solenoid coil? \$\endgroup\$
    – Zeus Ex
    Commented Jul 7, 2017 at 17:17
  • \$\begingroup\$ @OlinLathrop Itried driving the coil by changing duty cycle -- 255 should have opened the valve to maximum.. \$\endgroup\$
    – Zeus Ex
    Commented Jul 7, 2017 at 17:24
  • \$\begingroup\$ @OlinLathrop. What you say is true only of a resistive load. You cannot successfully drive proportional valves like this, especially at high PWM frame rates. The original circuit shown by the OP was in fact correct for creating a controlled current. As I think the OP says in his comment above your PWM suggestion seems not to work. \$\endgroup\$ Commented Jul 7, 2017 at 20:17
  • \$\begingroup\$ @ZeusEx. to the schematic. The real problem here is that the proportional valve is a current driven devices ....not voltage driven. So using a voltage driven PWM is not linear. You have to measure the current through the motor/solenoid. \$\endgroup\$ Commented Jul 8, 2017 at 3:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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