pneumatic cylinder position control

Hi guys

I'm looking at connecting up some pneumatic cylinders to an Arduino for control, my only question is, is there a way to get position control somehow?

Could I create a feedback system for position control, say I had 2 potentiometers, one connected to the Arduino and another connect to a arm so that the second potentiometer rotates when the arm is moved with the cylinder.
So I would turn the potentiometer connected to the arduino and then tell the Arduino to activate the cylinder until the potentiometer connected to the arm reaches the same value then stop the cylinder. Would this work? Do pneumatic cylinders stay in it's fixed position if the valves are closed; for example the cylinder rod is moved until it reaches half way and then close the valves, does it retain it's position and holding force?

Or would I need to use something like PWM switching to switch the valves on and off to retain it's position (I know it would probably control speed as well) I also recognize this may be a bit noisy, lol.

I know I could use linear actuators as well however I require a high speed and want a high amount of force. I believe pneumatic cylinders could provide this with the disadvantage of some complication.

Thanks guys

1 Like

Yes. Google PID control.

Well, think about the cylinder. If the valves are closed and you built it successfully without leaks, why would it move? If the load changes, yes it will move. If you are holding a robot arm up in the air and it doesn't get heavier or lighter, then it won't move.

Linear actuators are much simpler, but less compact. They often include a position sensor too. Pneumatics can also be purchased with linear sensors but the prices go out of the amateurs budget very quickly.

Alexisa:
Do pneumatic cylinders stay in it's fixed position if the valves are closed; for example the cylinder rod is moved until it reaches half way and then close the valves, does it retain it's position and holding force?

Yes and No,

A liquid filled cylinder like a hydraulic cylinder will keep its position and cannot be compressed. A pneumatic cylinder will hold its position if the force remains constant, otherwise it behaves like a spring as the gas can be compressed and change volume with physical pressure.

Depending on the precision required, bear in mind temperature changes will also affect the gas pressure in the cylinder.

So it will not hold its position under changing loads ( but will only move small amounts) but will if its holding a static load. (edit : basically what MorganS said)

Ok guys thanks, that helps me a lot :slight_smile:

Also I assume in order to get control of air in 2 directions I need two solenoid valves? So that I can switch one on and one off and alternate them to switch direction or to stop air I can close both?
Or would it be better to get a 3 way solenoid valve, which I believe has neutral, exhaust and pressure? I've seen three way solenoid valves with manual buttons: none pressed-ports, closed 1 pressed-exhaust, the other pressed-pressure, would I have to hack the button or do you guys have a link to a 3 way solenoid valve I can connect to Arduino easily?
I've seen some two way solenoid valves but I assume they do not have the ability to stop air? and only the ability to push air in either direction so the pneumatic cylinder is either extended or not, giving no control?

A 3-position valve UP-STOP-DOWN will have two solenoids. You need two solenoid drivers such as MOSFETs or relays.

Two 2-position valves can be plumbed to do exactly the same thing. This gives you more flexibility, so these solenoids are much more common. I still have difficulty finding them as they're not really hobbyist items and only show up in serious industrial controls which run on 24V or whatever.

Ok cool. One last thing.
I've seen people utilising snubber circuits or snubber diodes for solenoid valves due to inductivity and especially in quick switching operation, they have also been using relay's not mosfet's or transistors like I plan to (by the way is a transistor better for solenoid power switching? I read somewhere than mosfets are good for switching for high voltages and transistors for high current? which is faster?) I don't really want to have to use a relay

So my setup would be an arduino controlling 2 mosfets or transistors(depends on my above question) which is switching the solenoid valve connected to the pneumatic cylinder

Would I need to use a snubber diode or snubber circuit for either slow or rapid switching?
I also read that a snubber diode may be a bit slow for rapid switching(even schotty diode).
So would it be ideal for me to add a snubber circuit (or diode)? or is there no need?

Thanks again, your really helping me out here :slight_smile:

You're not rapid switching. When you get to 25,000 per second, then you might look at optimising the switching speed.

MOSFETs have a 'body diode' that can often be used instead of an external diode.

Ok thanks again. And damn, 25000 solenoid switches per second? I find it hard to imagine that!

MorganS:
MOSFETs have a 'body diode' that can often be used instead of an external diode.

Only in a bridge configuration., a single MOSFET's diode serves no purpose, the diode must be across
the winding.

Alexisa:
Ok thanks again. And damn, 25000 solenoid switches per second? I find it hard to imagine that!

Most solenoids have an operating time of 20 to 40 milliseconds.

For positioning rather than full travel a proportional valve is needed.

https://forum.arduino.cc/index.php?topic=393014.15