Feasibility of Servo-like Pneumatic Control in FRC

I was looking into the feasibility of having multi-position pneumatics in FRC. I initially thought this could be achieved using some sort of encoder/sensor and two acting solenoids, however I then stumbled upon R814:

*Don’t connect solenoid outputs together. The outputs from multiple solenoid valves must not be plumbed together.

Does anyone think this could be possible? I suppose it could be doable if we had an FRC legal solenoid that allowed output from both hoses at one time (I don’t know if that is safe, I’m no pneumatics expert).

1 Like

My first thought was to use different solenoids on the same manifold. The manifolds I’ve used typically have 3 solenoids and 2 valves for each side of a double-actuating piston. But what if you used 2 different solenoids for each side of one piston with varying pressure? Could you lock the piston using equal pressure anywhere along the stroke? But then again this could be against R814. Just throwing this out to help generate discussion.

1 Like

I suppose that the question here is, does the definition of R814 “plumbed together” apply if two separate tubes to go different ends of the same piston? If that is considered “plumbed together”, then this is illegal. If not, then “plumbed together” must require that the two tubes interact somewhere else.

1 Like

R814 is largely referring to running two solenoids in parallel to increase the volumetric flow rate, as many pneumatic solenoids have absolutely garbage flow patterns and paths; like 0.030" hole garbage. This leads to problems when you want to run something such as a linear pneumatic puncher or catapult.
Of course, the appropriate and safer workaround is simply using a high-flow solenoid.

1 Like

You can try it, but I’ll be surprised if you like it.

Specifically, I doubt that your solenoids can flutter open and closed fast enough to create the effect you’re dreaming about in a usefully precise way.

Yes, it is legal to plumb different solenoids to opposite sides of a cylinder. It’s just usually more useful to have some kind of “default” built in to the situation than either stiff or floppy.


If you really want servo-like control of a pneumatic cylinder, your best bet is probably something like this:

60 psi regulator for rules compliance → T joint => 2 controllable pressure regulators => 2 analog pressure sensors => cylinder ports

You never really want to vent all of the air to atmosphere or close off either side, so no need for solenoids. The controllable pressure regulators would change the pressure going to each side of the cylinder according to some closed-loop control on the cylinder position and the current pressures as measured by the analog pressure sensors. When the pressure on the low side is higher than the set value, they vent until the right pressure is reached. This could be done with a COTS solution, or a custom solution using a small servo motor attached to a standard regulator.

There was at least one team in 2012 that used a system like this to get variable distance shots with a pneumatic catapult, but I can’t find their writeup at the moment. Edit: I think this is the team I was remembering, but their fancy pneumatics diagram image has been lost to time FRC488 2012 -- Gojira

Speaking to the physics behind it… Air is a compressible fluid. Pistons are usually very “stiff” in their position because they have much larger pressure on one side of the piston than the other. To position a piston somewhere in the middle you would have to provide equal pressure on each side. That means that the piston would move from its desired position under the slightest force (by compressing the air in the direction the force is applied), unlike a servo that is very hard to move once it’s powered. You could counter that with a fast closed control loop, but even assuming your solenoids are capable of opening and closing quickly enough for that, the loop would have to make hundreds if not thousands of corrections during a single match, putting immense strain on the system.

That’s why things like that are done with hydraulics instead of pneumatics. Oil is incompressible, so moving a hydraulic piston from its position borders on impossible when the valves behind it are closed.


I know on our 2013 robot we had 2 floating pistons where we could active 1, position 1, activate the second, and it goes higher. Dont know how they did it or why they made it so complicated. There was a lot of uhhh how do I put it interesting choices made that year :joy: don’t have a picture right now but can get one Monday.
Great example of an interesting choice here-our Frisbee intake was on the back right of our robot. Let’s see if anyone can tell what’s wrong…

You can actually buy closed-loop controlled pneumatic “servo” valves commercially. Like this SPCS2 from Bimba. I haven’t tried it personally, but I’d wager it uses far more compressed air to hold position against disturbances than an FRC pneumatic system can supply [edit: like @bardd said]


There are other valve drilling patterns that let you choose what happens in the center position.

You can connect two or more air cylinders end to end to get multiple fixed positions.

There are rod locks that lock the position of the cylinder rod (springs set, spring release, or double acting).

Other than these, positioning with air is a fiddly balancing act…

There are I to P converters that can give you crisp pressure regulation, if your mechanism can be set up with a 1:1 pressure to position mapping. Maybe adding a spring?

I’ve done the “tickle the solenoids” for hydraulic pressure control trick before. It works better with compliance in the system and DIRECT acting solenoid valves. NOT piloted ones.


How many positions are you wanting?

118 used two pneumatic cylinders on each side of their intake to get 3 positions. It can be seen at various times in this video. I suspect this is what @bcon and @Weldingrod1 are trying to describe.


I’ve used a proportional pneumatic valve on a project at work. It actually came with a little position control module that you could connect to over USB and tune the PID gains and so on. The machine provided it with an analog position signal, and it would “servo” to that position. There was a position feedback built-in.


On a demo robot using First legal components. We controlled the intake arm position using a 2 solenoid closed center valve and potentiometer for position feedback. It works pretty well. Since it was constantly adjusting position, it uses a bit air constantly. It would not be my first choice on a competition robot.


You can absolutely get continuous length control out of FRC-legal pneumatics, with a little fiddling.

I put this together in 2019 (I apologize for the video quality, this was just something I was sending over to @Ryan_Dognaux and not meant for a giant public showing or anything. I also apologize for my voice and accent–I am from Western New York, and I’m not quite sure why people don’t punch me in the face every time I talk just to get me to stop. :smiley: ).


I believe you can get smaller/cheaper valves that will do the job, but we got a big discount on these so they’re what we used. As mentioned above, there’s not a lot of strength in the intermediate positions, so you’ll have some fun programming a dynamic pressure control to keep the position constant in real time. (Alternately, you can have the pneumatic on a rack-and-pawl system so it will mechanically lock in place unless activated, which is another fun bit of design).

Ultimately, I think you’re almost definitely better off using multiple pneumatic cylinders, linkages, etc. to get a few desired positions, rather than going for continuous position control. But it is fun to play around with in the off-season.


And here’s a video of it actually working as advertised:


This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.