Continuously Variable LEGO Pneumatic Control

In previous LEGO robotic arm builds I’ve used servo motors to move each joint in the arm. However, the weight of the motor and related mechanism meant each arm needed to be reinforced to the point it became too bulky and exhibited excessive inertia. By contrast, pneumatic cylinders are light, and can apply significant force to a relatively minimal limb in an arm.

One key requirement for this application of pneumatics is the need to precisely position the piston rod at any point in its travel. Until now, I’ve not been able to do that: if I managed to stop a piston rod midway in its travel, it started to drift. Selecting a precise position had proven impossible. Extensive searches of the Web only reinforced the apparent impossibility of achieving precise positioning with LEGO pneumatics.

Recently I came across an online discussion from 2009 that claimed it is possible to position a piston rod precisely and maintain the position. A contributor, Mark Bellis, explained how to do it, and created a video to prove the solution really works.

I learn by building. Theory is all very well, but I need to bring the idea to life. Today I built this prototype demonstrating the contributor’s ideas, and it worked first time.

Note there are two pistons in the video. One operates the feedback mechanism. the other is connected in parallel and stands alone. The standalone piston would be mounted in a robotic arm to operate a joint. Note, in a “productIon” model, both pistons would be the same size. And, of course, a servo motor, not my hand, would be sliding the lever to adjust the compressed air valve to position the piston.

Key parts of the solution are:

  • Two pneumatic valves, slightly offset, create a “composite valve” to continuously supply pressurized air to each end of the cylinder. Moving the composite valve adjusts the pressure difference between each end of the cylinder.
  • Dithering (slightly adjusting the pressure up and down continuously). This overcomes lag in the control valves, so-called hysteresis. The dithering cycles faster than the piston can respond, so the piston does not have a chance to oscillate.
  • Feedback from the piston to the composite valve to maintain position if the load on the piston changes.

I could never have come up with this solution on my own. I’ll be staring at the prototype for a few days, absorbing the principles. But I now know I can build a pneumatic mechanism that positions a robotic arm precisely, and it won’t drift.

Leave a comment

Your email address will not be published. Required fields are marked *