Introduction: Automated Pneumatic Button Pusher

The head of electrical engineering came up to me and said we needed to torture test the buttons of a circuit board they designed. They needed round the clock button pressing for several days to test the endurance of mechanical switches, the button rubber pads, and the protective film that is adhered to the circuit board. They said the buttons needed to be pressed tens of thousands of times. They also needed to perform the test as soon as possible.

I thought to myself, “oh man! my fingers are going to be so sore.”

Oh wait!!! Build a device that will press the buttons for me. Something that can be controlled with a microcontroller. Thus, my fingers will be spared.

Step 1: Background - the Failed Attempt

As mentioned earlier, the head of electrical engineering came up to me and said we needed to torture test the buttons on a circuit board they designed. He then handed me a geared electric motor and said, “Use this.” (see picture).

I took the housing apart to see how it operated. I found a very small dc motor with a worm gear on the shaft. The large outer gear rotated at around 20 rpm. Inside there was a switch that senses when the large gear made one full revolution and stopped the motor. It required about 250 millisecond positive voltage to trigger 1 revolution. If the positive signal ended too quickly, the large gear only moved while the signal was on and then stops. It does not complete a revolution. The gear ratio gave the thing a lot of torque. With a 9 volt supply, i could not stop the large gear with my thumb.

I quickly slapped together a frame and a little piston to press the buttons on the circuit board. Because the piston was connected to a large circular gear, the end that was to press the button wobbled all over the place. To remedy this I hinged the piston like a knee/elbow. Now the bottom of the piston moves straight up and down only. The setup was put into a vise and the circuit board was placed underneath. Voltage was applied and signal was pulsed into the motor. Down came the piston...

crushing the button…

Too strong.

So i remade the a frame for the motor and piston assembly so that it would shift upward when the piston bottoms out. Tested the thing again and the button was not crushed. Unfortunately, the whole thing is slow, not adjustable, and bulky.

I told the head of electrical engineering I can design something better if I was not restricted on the method and was allowed come up with my own list of parts.

Step 2: The Materials and Tools

I quickly got on Ebay, went to Home big box hardware store, Sparkfun, and Clippard to get the following:

5 MAC 43### 5v solenoid valves and 2 barbs per valve
5 Clippard MPA-3 Air Pilot Actuator, 3/8” Bore, #10-32
Several meters of Urethane Hose, 1/8” OD-1/16” ID
Clippard MAN-12 12 port brass manifold
1 Arduino Uno or microcontroller of your choice
10 #10-32 to 1-16” ID barb fittings
10 #10-32 scew plugs
1 Air regulator with pressure gauge
1 ball valve
handful of assorted machine screws
3/16” sheet of ABS plastic
3/16” sheet of clear acrylic
ABS/PVC glue
¼” x ¾” Aluminum bar stock
3/16” steel rod
¼” diameter Delrin rod
1 cotter pin
1 breadboard
5 2n2222 NPN transistor
5 1K resistors wires
Teflon tape


Air compressor and air hose.
Quick disconnect for air hose
Drill press
Hack saw
screw tap
wire cutters

Step 3: Design a Frame for the Test Subject

My frame design to hold the test subject has three elements:

  1. A base to hold the circuit board being tested
  2. An interchangeable plate to hold the fingers that press the buttons
  3. An interchangeable plate on a hinge that holds the pneumatic actuators

The frame is made of ¼” x ¾” aluminum bar stock. The base is made of stacked ABS sheets. A clear acrylic plate is used to hold the fingers over the buttons being pressed. Clear acrylic was used because, a blank plate can be placed over the subject, the button positions can be marked with a Sharpie, then the holes for the fingers drilled out with a 3/16” drill bit. The ABS plate that holds the actuators will be smaller than the acrylic plate lengthwise. To get the proper hole locations for the actuators, simply place the acrylic plate with the holes in it over the ABS plate and mark holes for the actuators. The actuators are 17/32" in diameter. So, the holes for those may have to be offset to the side depending on the proximity of the buttons from each other. The key feature of the design is that a plate holding the fingers and the plate holding the actuators can be changed out to provide a large variety of button patterns.

Step 4: The Actuator Piston and the Fingers

The piston is turned on a lathe. I started with a ⅜” diameter aluminum rod. I faced one end but kept the original diameter. On the other end I reduced the diameter to 0.235” so that it pressure fits inside the Clippard actuator’s piston cup. Friction will hold the aluminum piston in place. A variety of lengths need to be made to accommodate different button heights.

The fingers start of as a ¼” diameter delrin rod. Delrin is used because it is softer than aluminum and is less likely to damage the circuit board being tested or tear the rubber button pads. One end is faced but ⅛” of the end keeps its original diameter. The rest of the rod is turned to reduce the diameter to 3/16”. Just like the pistons, different lengths of fingers need to be made to accommodate different button heights.

Step 5: The Air Thingy - Electro-pneumatics

Of course none of the previous steps will work if we do not have a way to control airflow. This is where the MAC 43### comes in. These little solenoid valves are great. They are low power - 5v, 4.7 watts. Cheap at $10-12 each. They are also very small. To use, screw in barbs in port 1 and 4 and plug port 2. The air supply connects to port 1. The hose to control the actuator piston is connected to port 4.

Connect all the solenoids’ port 1 to the air manifold. Ports not being used on the manifold needs to be plugged. Connect the manifold to the ball valve. Connect the other end of the ball valve to an air regulator. Set the regulator to 25 psi to begin with. Do NOT ever go beyond 100 PSI or the seals on the solenoids will get destroyed. Connect the regulator to the air compressor. Keep the ball valve closed until the solenoids are wired up.

I mounted everything onto an acrylic flyer stand. A wood board would work just as well. The solenoids were labelled so I know what hose needs to go to which actuator.

Step 6: The Electronics

I’m not really sure if the Arduino Uno can take the load from solenoids. To make sure the Arduino (or microcontroller) does not burn out, the solenoids are controlled through NPN transistors. In this case, 2N2222 are used. Each solenoid is connected to its own transistor. The output pin on the Arduino is connected to a 1K resistor which is connected to the Base of the transistor. The emitter leg of the transistor is connected to ground. The collector is then connected to one wire of the solenoid. The other end of the solenoid is connected to the positive of 5-9 volt power source. For the solenoid power source, i used a 7 volt 250 ma wall wart (it was a charging plug for an electric sweeper). The Arduino is getting it’s power from the USB port. the whole circuit will not work unless everything is sharing a common ground. So run a wire from the negative rail connected to the transistors’ emitters to the ground pin on the Arduino board.

The electronics wizards out there are probably yelling at me because I don't have a flyback diode in the circuit. And you are right, it would probably be a very good idea to modify what I gave to include a flyback diode. Here is the wiki on Flyback Diodes.

Step 7: The Code

The code for this is to simply make the output pin high to open the selonoid valve and low to close it. Duration and number of buttons being pressed can be adjusted to accomodate testing requirements. If desired, an LCD can be part of the circuit to display a running count. Or serial out can be done and a button press count can output to the computer screen. My case I was just told to press the button at a set interval for so many hours and then test that the circuit board still functions at the end of the test.

The actual Arduino sketch is below:

/* Electronic Automated Button Pusher
*Version 1.0.2 * NO LCD display.
* By Mr Tinkerer */
// designate output pins
int valve1 = 5;
int valve2 = 6;
int valve3 = 7;
int valve4 = 8;
int valve5 = 9;

void setup() {
// Set output pins
pinMode(valve1, OUTPUT);
pinMode(valve2, OUTPUT);
pinMode(valve3, OUTPUT);
pinMode(valve4, OUTPUT);
pinMode(valve5, OUTPUT); }

// Main Loop
void loop() {

// button 1
digitalWrite(valve1, HIGH);
delay (1000);
digitalWrite(valve1 , LOW);
delay (350);

// button 2
digitalWrite(valve2, HIGH);
delay (1000);
digitalWrite(valve2, LOW);
delay (350);

// button 3
digitalWrite (valve3, HIGH);
delay (1000);
digitalWrite (valve3, LOW);
delay (350); … etc. }

That’s it. Simple right?

Step 8: Running the Test

Place the test subject in the base. Slide the acrylic plate with the holes over the subject. Insert the delrin fingers into the holes. Close the actuator assembly over the fingers and lock the assembly into place.

Open the ball valve slowly. Monitor the pressure and make sure it does not climb above 25 psi. A little bit of air leak is ok. Plug in the solenoids’ power supply. Plug in the Arduino USB.

The actuators should start moving. If not, slowly increase pressure. Also increase pressure if the actuators are moving but the buttons are not being pressed hard enough. Remember to not exceed 100 psi. Actually, to keep it safe, probably do not exceed 80 psi.

In the video I put in a car remote. This was not the circuit board I was asked to test. It just so happens that this particular remote has similar dimensions to my original test subject. I did have to make a new acrylic plate with different holes and matching ABS actuator holder. I also had to make shorter delrin fingers since the car remote is much thicker than the original circuit board to be tested. This just demonstrates how versatile my button pusher rig is.

Step 9: Conclusion

So why was my solution better than what electrical engineering had in mind?

  1. More compact design.
  2. Variable pressure on the button press. I can set the press to “feather light” all the way to “crush the circuit board.”
  3. Easily configurable for different button layouts.
  4. Software configurable for button press intervals, duration and pattern. Press button for ¼ second, 3 seconds, 5 seconds, random seconds? Rapid fire button presses at 800 rpm? Press all the buttons at once, one at a time, two at a time, in time with the “Shave and a Haircut” knock? Hey, none of that is a problem.
  5. Test circuit board could be isolated from other electronics by running longer hoses.
  6. Looks cool.

I know this instructable is very specific and is more for industrial applications. But hey, I automated a process and spared my thumbs and fingers from 80,000 button presses. Win,Win.

Automation Contest

Participated in the
Automation Contest