How to calculate actuator time?

How does a person calculate the time need for a pneumatic cylinder to retract/extend? I assume air pressure, force applied, bore, etc play into it some how, but I cant seem to find out how. Does someone have an equation/chart?

I suppose it is possible to calculate, but most of us just set it up and measure.

Let’s just say you want to use pneumatics to lift your robot in the air, and it weighs 150 pounds. If you have 60 PSI to work with, you know anything less than a piston area of 2.5 in^2 won’t do it (2.5 * 60 = 150). Of course, that ignores friction (which cannot be ignored).

OK now that you know the VOLUME of the pneumatic cylinders you need (cross-section times length), you can now start to calculate time, based on volume flow through the smallest element in the path (likely the pneumatic solenoid valve). How long will it take for xx cubic inches of air to flow at a pressure difference between source and chamber starting at 60 PSI and ending at zero (as the cylinder pressurizes, the pressure difference eventually goes to zero), of course while simultaneously calculating the volume (which goes from about zero eventually to maximum…

It gets complicated.

It also depends on how much air you have stored, and how much your compressor can supply.

Take two hypothetical 2" cylinders, each 30" long, using 60 PSI air and a solenoid valve for each. You have 8 large plastic storage tanks, fully charged. I am guessing it will take 15-40 seconds to fully retract those cylinders. Assuming you didn’t run out all the air extending them…

To calculate actuator travel time, you need to know the total volume of the cylinder. Remember that the cylinder is open on the “power stroke” and has a rod in it on the return stroke. The math is also directly tied to how strong the cylinder is as well. Personally, I’d suggest creating a spreadsheet so you can just drop in numbers to try out different strokes and bores.

Let’s say you have a 1" cylinder (bore) with a 12" stroke and a 1/4" rod. First you need to know the surface area of the piston.

Surface Area of a circle = pi times the radius squared

The surface area on the power stroke would be ~.79 sqin
and since you know the rod is .25 diameter, you take it’s surface area and subtract it from .79 to get the return stroke surface area of ~.74 sqin

Now that you have the two surface areas, you need to determine the volume of the cylinder for both strokes. To do this, you just multiple area by height.

power stroke volume = 9.42 inches cubed
return stroke volume = 8.84 inches cubed

Now that you know the volume for each stroke you need to determine how long it will take to fill. Sadly, I don’t know how to use the CV rating to calculate total air flow over time. I’ve tried using a variety of calculators and I’m clearly not getting the whole pressure drop thing. Here is a calculator that I believe does what you want but I have no idea how to get the right result:

With that said, if you know the flow rate in something like GPM, it’s very easy to turn the volume into speed. You have the cylinder volume in cubic inches and turning GPM into cubic inches is just figuring out the number of cubic inches in a gallon (231) and applying time. It looks like this:

(cylinder volume / (flow rate * 231)) * 60
power stroke travel time @ 3gpm = .82 seconds
return stroke travel time @ 3gpm = .76 seconds

If you time the extension of the cylinder accurately with your solenoids, you can easily back into a GPM based on the tube diameter and length. This would be useful to determine a general GPM for the rest of the system to estimate speeds.

More useful than this though is the POWER of the stroke, and you have almost everything needed to figure that out already. Maximum working pressure on a FRC robot is 60 PSI. That means to calculate power of cylinder, you use piston area * psi. So, that 1" bore piston has power like this:

power stroke strength = ~47.12 lbs
return stroke strength = ~44.18 lbs

The next useful thing to know is how much air you will use to power that cylinder. Let’s say you are using a 41 cubic inch tank at 120 psi. Since your working PSI is 60, you can basically take that 120 PSI tank and double it’s size since 120 PSI is 2 x 60. So you can treat the tank like it’s 82 cubic inches at 60 PSI. This math below actually works surprisingly well to give you a good ballpark to start from:

(volume out 9.42 + volume in 8.84) / 2 = 9.13
(tank pressure 120 / working pressure 60) * tank size 41 = 82
Strokes until empty = 82 / 9.13 = 8.98

This totally ignores the pressure loss with each stroke. Oddly enough though, one of our engineer mentors said that in practice, the complex math to calculate maximum number of strokes taking into account pressure loss is surprisingly close to this ballpark when all is said and done. The critical thing to remember is that your piston will be weaker than the math says once your tanks pass below the 60 PSI number. This math told us our robot design needed 8 tanks to do what we wanted and after physically testing, we found out it was spot on.

Anyways, I hope this helps you a bit.


Ha, I spend all that time writing it out and someone beat me to it and more succinctly at that! Serves me right for being so wordy.

I just tossed this into our spreadsheet calculator and it’s lots faster than 15 seconds in practice. Even at a very slow 3 GPM, it’s going to take ~8 seconds or so to travel either direction. Flow rates of air are pretty dang high:

The solenoid is absolutely the slowest part but I think what limits most teams pneumatic speed is that they under tank the system. The pressure differential is a big part of how fast air will travel from the high to low side. When you have a lot of volume to work with in tanks and the differential stays high consistently, you get very speedy air flow and movement. It’s when the differential gets low that things start slowing down very quickly. To make it worse, the compressors we use in FRC are very small and slow so assuming they can keep up with large cylinders is a huge mistake.


So I took everyones words of wisdom, went and did some research, and found some additional info, matched it to a couple charts to make sure it was right and made a spreadsheet. I’d love to share it here, but I’m not sure how to post it to CD. Anyone know how?

Use Google docs and post the link :slight_smile:

Yes. Click on the “Manage Attachments” button. (see attachment to this post).

Okay, got it. Let me hear suggestions/critiques/etc.

pneumatics worksheet4165.xls (23 KB)

pneumatics worksheet4165.xls (23 KB)

Are you assuming a strict isothermal process for all your computations?

Yes. I also assumed a min operating pressure of ~30psi. Theoretically if someone is at 25psi (<2x ambient pressure) I should switch over to Low pressure drop flow equations, but I stuck with High pressure drop flow. I figured that it was close enough to the transition that it would only have 5-10% effect on time measurements.

It would make a good science project for an interested student to validate your model. For fast-acting pistons (as in previous years) I wonder if adiabatic behavior would be a better model.

Matthew, Excel is telling me your file is corrupt, so I can’t really look at it.

I’m not an expert at pneumatics, but I’m pretty sure the pressure differential you should be using is difference between your supply pressure and the pressure required to move the cylinder. Yes, at the instant you switch the valve, you have a full 60psi differential, but that assumes 0 psi in your cylinder which means you’re not moving. Once you hit the pressure you need to move the cylinder, the cylinder moves (until the pressure drops enough to stop it). So I think a reasonable steady-state case for a long stroke is to assume that your pressure differential is supply pressure minus moving pressure.

That means sizing a cylinder exactly as big as necessary to move your robot is a bad idea, since you’d have zero pressure differential and thus no flow. Which explains why all the speed ratings I’m seeing in SMC’s data sheet assume a cylinder sized with a 50% load rate. That is, the cylinder is twice as big as strictly necessary to move the load.

0.02 seconds to move 12" is about right, with no load. It gets a lot slower under load.

Data point: in our Rack & Roll bot, we had 2 12" x 2" cylinders that raised a robot on our ramp up to 12" off the ground, it took about 2 seconds.

So I have been thinking about it, and the times to expand and contract are the same regardless of the load they are working against. In theory we should have to account for F=ma, shouldn’t we? For example if a have a cylinder that can exert 180 lbs of force lifting 5lbs, then the limiting factor to speed should likely be the Cv of the solenoid. If it is lifting say 178 lbs then we only have 2lbs of net force lifting a 178lb object. In this situation the delay to very slow acceleration of the cylinder/object seems like it would be a limiting factor. What do you all think?

Thank you very much for sharing your thought processes and spreadsheet. For teams like us with minimal expert help, ChiefDelphi is one of the best mentors out there!