Go Down

Topic: Need help: Using PWM on a solenoid for easy release. (Read 4432 times) previous topic - next topic


I'm on a project where I'm injecting a thick liquid into a small applicator.  So the nozzle will not drip after the pre measured liquid flows past, I built a shut off "needle valve" right at the nozzle using a knitting needle (pointy end) attached to a hefty spring loaded solenoid positioned over it.  The device works great - send 12 volts to the solenoid and it lifts the needle up, allowing the fluid to be pushed out.  Remove power and the solenoid's backspring pushes the needle back into the nozzle hole eliminating any drips.  My problem is that the solenoid's back force spring slams the needle down into the nozzle hole so hard it actually gets stuck and will eventually deform the needle.  The needle is aluminum and the nozzle stainless steel.  I tried lighter backsprings but then the needle doesn't seat as firmly as I need.  So I thought = what if PWM could be used to power the solenoid to allow it to release more gently by doing a ramp down from 12 volts to zero (in say 100 ms).  Has anyone ever done this to give softer action on the release of a solenoid?  I have a free channel on my Arduino R3 motor driver board but wondered if it can handle a 1.3 amp hefty magnetic solenoid.  Even though that board uses an isolated power supply (12 volts in my case), I wonder if the back EMF from the coil could damage the boards?

If it is possible, are there some Arduino function sets that do a ramp up and down of a voltage for this type of purpose?



What is man's best friend? The breadboard!


take the same precaution you would controlling a motor... use a flyback diode. and if you could just use a mosfet....
heres a good tutorial you can use
ok for the ramping up and ramping down the power....

my hint is to use for loop()
imagine how you would well increase the brightness of a LED.
ok for your application you would not increase the speed of the solenoid but actually your ramping up the solenoid power and making it pull the needle slowly ....

for the release imaging your fading the led brightness....
this in turn in your application will release the needle slowly....


What is man's best friend? The breadboard!


and make a RC circuit. and really make an analog output....


PWM is indeed the way to go.
And for sure use a diode to protect your hardware.
Proportional hydraulic systems (the ones i know of) are controlled by a spring loaded valve, of which most on their turn are controlled by a PWM signal.
Remind that keeping the valve / relay open, doesn't take the same energy as opening it.
So once opened, you can start easing the energy by reducing to a duty cycle of about 80 %.
After that, the valve (your needle) will start closing and will probably be closed at about 30 %.
These aren't exact numbers that are always valid, so you'll have to try and see what will be best for your setup.
Even more because you're using a valve that isn't designed as such.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html


I have tried this, although it was with a solenoid valve.
My solenoid valve of steel and brass was very loud, and I tried to 'soften' it somehow.
First I reduced the voltage (12V solenoid at 6V or 24V solenoid at 12V).
Next I tried pwm, short pulses, series of pulses.

I had very little success. If the magnetism is stronger than the spring, the solenoid core starts moving. Not much can be done about that. A PWM signal would not change that. Once the core starts moving, it will go with a certain strength.

I had some success with short pulses. I could make the core move for about 90% and fall back. But moving for 90% and gently continue to 100% with very short pulses was not possible.

Lowering the voltage would help a little. Using a PWM signal is about the same as lowering the voltage. So you could try that.
But in the end, I think you need a mechanical solution.


I have no doubt about that, Krodal.
But you were using a valve.
A proportional valve is designed a bit different, and the difference is in the spring.
TS told us about a spring loaded solenoid, and that he has been experimenting with that spring.
So the solution probably is in some more experimenting with the spring, as well strength as position of that spring, PWM or whatever type of control signal.

I mentioned position of the spring, as there will be some difference to the action of it all.
If the spring is at the end of a lever which is controlled by the coil, its function is to have either on or off function, so to have it really switch.
You might see this in a relay.
If the spring is on the moving part (the needle, travelling through the center of the coil), it will control that part the way i described.

Maybe TS could post a picture of his setup, showing the solenoid, spring and needle.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html


An air piston or something like that would soften the speed of the core.
I remember a toaster that had a small but effective piston to reduce the pop-up speed.


good info to me, remember a toaster that had a small but effective piston to reduce the pop-up speed.thank you


Jan 31, 2013, 08:38 am Last Edit: Jan 31, 2013, 08:41 am by michinyon Reason: 1
The problem of speedy valve closure and effective seating is one that has occupied
steam engine engineers and auto engine engineers for about 300 years.

I'd be a bit wary of trying too hard to control a solenoid with PWM  because the
inductance of the device is going to tend to want to confound the idea of rapidly
turning the current on and off all the time.

If the fluid you are controlling is under pressure (  and hence,  will try to "leak" past your valve ),
then the best idea is to have some kind of valve where the pressure in the fluid itself contributes
to keeping the sealing part of the valve well seated.

Go Up