-2

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

Zeus Ex
  • 17
  • 1
  • 7
  • 1
    Don't make us follow links or chase down old threads. Put all the information regarding the question HERE. – Olin Lathrop Jul 07 '17 at 16:28
  • I tried but I couldn't give more than 2 links in a single post.. [PVQ31](http://content2.smcetech.com/pdf/PVQ.pdf) is actually 24V model and diameter 1.6mm. I wanted to drive this solenoid using Arduino which PWM is in the range 0 -5V. – Zeus Ex Jul 07 '17 at 16:34
  • 1
    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. – Olin Lathrop Jul 08 '17 at 19:56

2 Answers2

0

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.

Glenn W9IQ
  • 5,526
  • 11
  • 17
  • 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. – Zeus Ex Jul 07 '17 at 16:48
  • 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. – Glenn W9IQ Jul 07 '17 at 16:51
  • [circuit](https://imgur.com/a/hnOLo) 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. – Zeus Ex Jul 07 '17 at 16:57
  • 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. – Glenn W9IQ Jul 07 '17 at 17:02
  • Thanks to you. I will try the circuit tomorrow. Jus to mention, arduino PWM works for 0 & 5V. I am using [MCP4725](https://www.sparkfun.com/datasheets/BreakoutBoards/MCP4725.pdf) for faster PWM. In case the above solution doesn't work, what changes you would be suggesting? – Zeus Ex Jul 07 '17 at 17:06
  • Wait a minute. The MCP4725 is a digital to analog converter, is it not? That is not at all applicable - you should have stated this up front. You can do basic PWM through a timer in your uP or through output bit modulation. – Glenn W9IQ Jul 07 '17 at 17:11
  • yes it is a DAC. I however can use [PWM]( Glenn W9IQ). – Zeus Ex Jul 07 '17 at 17:16
  • but why can't I use MCP4725 to vary input voltage? – Zeus Ex Jul 07 '17 at 17:25
  • You don't want to put the FET into a linear region of operation. The goal is to turn the FET full on or off. By varying the pulse widths you accomplish this while making the solenoid "think" it is getting a varable voltage based on the ratio of on to off time. – Glenn W9IQ Jul 07 '17 at 17:28
  • I see, thanks for explaining. I will use your suggestion and come back to you in a day or 2. – Zeus Ex Jul 07 '17 at 17:34
  • hi there. I built the circuit you suggested - removed R_added and added 5K between gate to ground.. It eventually opened the valve but only above ~2.2 - 2.3V. This is great but I wished to drive in the range 0 - 5V. Another thing - I measured the coild resistance which came out to be 115 ohms. Please suggest a solution.. – Zeus Ex Jul 09 '17 at 19:43
  • just to add, for testing purposes, I used benchtop variable power supply.. – Zeus Ex Jul 09 '17 at 19:46
  • What voltage are you using from your bench supply? What is the voltage on the gate when turned on? What is the voltage drain to source when turned on? – Glenn W9IQ Jul 09 '17 at 21:49
  • I checked for many different voltages betweem 2.2 - 5V. Tomorrow I will measure the values at different pins and update you. Thanks. – Zeus Ex Jul 10 '17 at 05:33
  • hi. Like I mentioned, valve opens after I apply 2.2V from bench supply. now the bench voltage is 2.2V. gate voltage is 2.2V. drain to source 0.18V. Now I set bench voltage is 5V, gate voltage is 4.9V. drain to source 0.006V. When I set to 0V on bench supply, I measure 0V at gate, 24 V between drain to source. Another voltage 2.1V at which valve still doesn't open - gate voltage is 2.1V. drain to source 3V. Please suggest a solution. Thanks. – Zeus Ex Jul 10 '17 at 16:31
  • hi, do you still think I need logic level FET? at 5V (same as Arduino PWM high), drain and source show 24V difference.. With my little understanding of core electronics, I think FQP30N06L (what I am using) is a logic level FET since its datasheet mentions Rds(on) for 5V.. Thanks – Zeus Ex Jul 11 '17 at 12:39
0

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.

Jack Creasey
  • 21,428
  • 2
  • 15
  • 29
  • 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. – Olin Lathrop Jul 07 '17 at 17:17
  • @JackCreasey thanks for suggestion. Do you mean to attach zener in between drain to negative of the solenoid coil? – Zeus Ex Jul 07 '17 at 17:17
  • @OlinLathrop Itried driving the coil by changing [duty cycle](https://www.arduino.cc/en/Reference/AnalogWrite) -- 255 should have opened the valve to maximum.. – Zeus Ex Jul 07 '17 at 17:24
  • @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. – Jack Creasey Jul 07 '17 at 20:17
  • @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. – Jack Creasey Jul 08 '17 at 03:11
  • @Jack: Proportional solenoids an absolutely be driven with PWM. I've done it in real production products and it has worked well. For any specific PWM duty cycle, the current automatically settles to that where the increase during the on phase exactly matches the decrease during the off phase. The result is control over the current from the duty cycle. When the PWM frequency is high enough, the current ripple is small, and always close to the average. The inductance of the solenoid end up low pass filtering the current. – Olin Lathrop Jul 08 '17 at 19:54
  • @OlinLathrop. I don't doubt you may have had some success. However it depends on the valve and mainly whether it is unipolar or not http://www.smcpneumatics.com/pdfs/PVQ.pdf ... It's much better (more linear) to use current sensing. – Jack Creasey Jul 08 '17 at 20:35
  • @Jack: In my case I was driving Parker Hannifin proportional gas valves. The whole valve drive was inside the feedback loop that was regulating output pressure. The inductance and resistance across different valves of the same model is usually quite consistent, so the function of PWM duty cycle to average valve current can be known open loop quite well. Usually the ultimate aim isn't to control the valve current, but what the valve is doing. With feedback from the measurement of that parameter, there is rarely need to explicitly control current to the point you need to measure it. – Olin Lathrop Jul 08 '17 at 20:39
  • @OlinLathrop. Nice ...I totally agree that the pressure feedback avoids problems measuring the current through the valve, but it's not what the OP appears to be trying to do. We can agree to differ, but IMO it's still best for the OP to actually measure the DC current directly. – Jack Creasey Jul 09 '17 at 00:28
  • @JackCreasey hi I just noticed that you assumed 85mA "(in your case 85 mA)" for this valve but actually it is 165mA - its a PVQ31 24V model. Please suggest if there would be any change in R1 and R2 of your circuit? Also, I measured the coil resistance of the valve which is about 115 ohms. Thanks. – Zeus Ex Jul 10 '17 at 06:11
  • @JackCreasey hi Jack, I will be also thankful if you could tell me how to find resistances in the circuit. Thanks. – Zeus Ex Jul 10 '17 at 17:42
  • @JackCreasey I measured current, at 5V input, the current was about 80 mA instead of 165mA. Therefore, the circuit closed the valve between 0-2.1V input. – Zeus Ex Jul 11 '17 at 17:29
  • @ZeusEx Sorry for the delay......added a solution to the answer. – Jack Creasey Jul 11 '17 at 23:00
  • @JackCreasey thanks a lot actually. I started gathering all the components for the new circuit. I will update once it is ready. – Zeus Ex Jul 12 '17 at 12:26
  • @JackCreasey I request your help in understanding this circuit. Please also show me how to calculate the resistances and capacitor in the circuit using some relations if I change the valve model - in 2 different cases. Let's say 24V 85mA and in a different case, 12V 172mA. Thanks a lot. – Zeus Ex Jul 12 '17 at 14:02
  • It helps if you accept the answer. – Jack Creasey Jul 13 '17 at 15:33
  • @JackCreasey Hi, how are you? Today I gathered all the components (exactly those you mentioned in the circuit) and assembled them. I am using mega therefore, used pin 13 for analogWrite function. Like you suggested, I also read Arduino analog input. I tested analogWrite (PWM) values from 0 - 255. Unfortunately, value was open all the time with analog input value around 248 (didn't convert into voltage). I don't know what is wrong now. Please suggest. – Zeus Ex Jul 26 '17 at 17:03
  • @JackCreasey first circuit you suggested, still works but only in the analogWrite value range 195-255. However, valve makes little noise when the value is below 235. – Zeus Ex Jul 26 '17 at 17:48
  • The problem is the FET has a relatively high VGS(threshold) ...so nothing happens till this voltage is reached. Between this PWM voltage and that at 255 is the whole range you have. I imagine the noise you hear is the ripple on the PWM --> voltage conversion. You do have a higher voltage available so you could raise the voltage for the PWM stage to get a greater workable range. – Jack Creasey Jul 26 '17 at 18:04
  • @JackCreasey thanks. Can I use this circuit to double the PWM signal? http://imgur.com/awEgll6 – Zeus Ex Jul 26 '17 at 18:49
  • @JackCreasey double the voltage will not solve..I need a multiplication factor of 4 or 5. CAn you please suggest a circuit? Thanks a lot. – Zeus Ex Jul 26 '17 at 19:01
  • @Zues. Yes you could use your circuit suggested. Remember that the loop is using the MCU to measure the voltage over the current sensing resistor, so you need to increase the PWM/voltage and sense where you are in terms of current. As I suggested originally this feedback is what allows you to set the valve current. If you set a value of 255 is the valve fully on? – Jack Creasey Jul 26 '17 at 19:22
  • @JackCreasey I can't say for sure. I will measure the current with 255 and update you. – Zeus Ex Jul 26 '17 at 19:25
  • @JackCreasey in a bigger picture - I wanted to set the PWN level based on pressure measurement but I am not yet there. – Zeus Ex Jul 26 '17 at 19:28
  • @JackCreasey hi checked the current. When PWM value is 200, the current valve draws is 165mA. It means the valve is fully open. I think I found my solution. From the flow to current curve, I actually have a narrow working range (at 0.2MPa). When I increased pressure at the inlet, I could open valve even at PWM value of 150. Thanks again for your wonderful solution. – Zeus Ex Jul 27 '17 at 18:18
  • @JackCreasey just one more thing I would love to learn from you.. in your first circuit (https://i.stack.imgur.com/NhuM1.png), what changes do I need to make if I use a different valve? For example 2 cases- Case 1: 12V 330mA valve. Case 2: 24V 85mA. Thanks a lot. – Zeus Ex Jul 27 '17 at 18:21
  • @JackCreasey hi, I will very appreciate your help. Thanks. – Zeus Ex Jul 30 '17 at 11:33
  • No circuit changes required at all. Just make sure that the FET can turn on completely (saturate) with the MCU signal. The FET needs to withstand Vsupply + 60 V of course, so 100 V would be appropriate. – Jack Creasey Jul 30 '17 at 16:42
  • @JackCreasey first of all sorry for late reply and second of all, thanks a lot. Discussing this issue with you was very informative and I am sure would be helpful to many.. I wish I could accept your reply as the final answer.. – Zeus Ex Aug 07 '17 at 16:49