A few months ago a fellow member of MTRAS posted on our Facebook page a link to a robotic arm project. The article poster / builder used a design that was previously posted as open source to Thingiverse.com. I took a look and thought that it would make a fun project that would be simple enough to follow but also challenging enough to be rewarding. So I decided to give it a shot.
- March 16, 2015 - I made some changes to the software that can be found here: Robotic Arm Software Upgrade
- March 10, 2018 - I changed out the controller and supporting components as described here: Robotic Arm Arduino Dev Platform
My goal was to complete this project before the Nashville Mini Maker Faire in which, our group would be participating. Since this would be one of my first solo robotics projects and one of the first electro-mechanical projects I've tried in 13 years, I knew that this would be a challenging timeline for me.
The original project designer lived in Europe and subsequently used metric measurements and materials common there. For example the pressboard he used for the body was a standard of 5mm thick. Similar material here in the US is 1/8" which is about 3.7mm thick. This left a gap in the openings that were originally designed to be press fitted. Rather than correct the drawings I simply used Gorilla Glue to secure these joints.
He also used M3 threaded nuts and bolts which are not standard at your local hardware store in the US. Rather than convert these to locally available options, I simply ordered the hardware online as shown in my parts listing below.
- 22 - M3 x 0.5 x 23mm Standoffs
- 15 - M3 x 15mm Spacers
- 40 - M3 Screws
- M3 Hex Nuts
- M3 25mm Screws
- 1 - Spring
- 3/4" Double Sided Mounting Tape
- 1 - Pololu Mini Maestro 12-Channel USB servo controller
- 5 - SG 5010 TowerPro Torque Coreless Servo
- 1 - SG92R TowerPro mini servo
- 1 - SG90 TowerPro mini servo
- 3 - JoyStick Breakout Module Sensor
- 2.54 mm Single Row Straight Pin Header
- 1 - Half sized solderless breadboard
- 1 - Female/Male 'Extension' Jumper Wires - 40 x 6"
- 1 - 12" x 24" Blue Acrylic Sheet or the laser cut pieces from your favorite service provider
- 2 - 3mm x 20mm + 4mm x 5mm joint bearing spacers 3D Printed (see below)
I am a member of the Middle Tennessee Robotic Arts Society (MTRAS) and we have members who own laser cutters and 3D printers. Almost all of the parts for this arm were cut from 1/8th inch acrylic The two joint bearing spacers do need to be printed, however. Also, the original designed called for the two joint spacer bases to be 7mm tall to the bearing shaft. When I began assembly of the upper arm it became quickly clear that these were too tall due to the height of the TowerPro servos. I had to have new joint bearings made with a base of only 3mm tall, which, by the way, was still a bit too tall but managable. You will want to take note of the relative height of your servos and account for the distance between the two lower arms:
Servo height + servo horn + joint bearing + double sided tape = 47mm +/- 3mm.
See below for thanks to those who helped with this project.
Before you begin, make sure to center all of your servos! If at any time during construction, if you manually move the position of the servo, you will need to recenter it before securing it to the frame. This is especially important with the shoulder servos which always need to move in unison.
- Attach the base servo to the top base plate using the M3 25mm screws and hex nuts. Do not over tighten!
NOTE: You may want to apply lock-tight to the threads to minimize the nuts loosening during use.
- If you are using the parts list I have above, you will next want to assemble the 5 base spacers by threading 2 each of the M3 x 0.5 x 23mm Standoffs together and then attaching them to the upper base plate with hex nuts.
- Attach the lower base plate to the standoffs with 5 M3 Screws.
- Attach the shoulder plate to the two servo mounting plates using an acrylic safe adhesive. I used Gorilla Glue here.
NOTE: Each of the two servo plates have a hole in the back which allows a reinforcement spacer to be inserted connecting them. Make sure the holes line up!
- While you have the glue handy, go ahead and join the wrist mounting plate with the gripper main plate.
- Optionally, you can also glue the wrist servo plate to the two wrist joint plates. I did not do this electing instead to bolt these together with standoffs as described below.
- Attach the now cured shoulder assembly to the base servo. I used the widest horn included with the servo which was the six stem mounting horn.
- Adding the lower arm frame to the shoulder servos can be tricky. I suggest securing the horns to the lower arm frames before proceeding.
NOTE: Make sure to center your servos for the shoulder assembly BEFORE attaching them to the frame. These two servos must move in unison and if they are missaligned will at minimum cause servo jitter and, if misaligned enough, could damage the frame or servos.
- Each of the shoulder servos are mounted with their brackets on the backside of the mounting plates instead of passing the servos through the plates - this will allow you to push the horn onto the servo shaft at an angle and secure the screw. Do not yet secure the servo to the mounting plate.
- Next, add the inner servo and mount the arm
- Assemble the upper arm frame and servos by pushing the servos through the spaces in the arms and then inserting the spacers between both upper arm plates and secure with M3 screws.
- Add double sided adhesive tape to the back of the elbow joint spacer and trim the excess.
- Attach the spacer to the bottom of the servo that will act as the elbow actuator.
- Slip the upper arm assembly into the lower arm assembly frame and secure the servo horn screws.
- Add reinforcement standoffs between two lower arm plates. I used two instead of all four to lower the weight.
- Add double sided adhesive tape to the back of the upper wrist joint spacer and trim the excess.
- Attach the spacer to the bottom of the servo that will act as the wrist actuator.
- Attach the outer wrist plate to the wrist servo horn and secure with a horn screw.
- Assemble the wrist servo plate with the two wrist joint plates and standoffs.
- Secure the wrist servo on the servo plate with the servo clamp plate.
- You will need to secure the wrist horn to the servo before attaching the gripper assembly to that horn due to the opening for horn screw being blocked.
- Loosly assemble the gripper pieces for fit before attaching the gripper servo horn to the servo. This will allow you space to screw down the horn in the previous step.
- Attach the gripper horn to it's servo and further tighten the screws holding the gripper joints.
NOTE: do not fully tighten these nuts and bolts as they need to be loose to allow the gripper to move.
The Pololu Mini Maestro's pins can be used as both inputs and outputs so I used pins 0-5 to control the 7 servos. I used Pins 6-11 as analog inputs from the 3 joystick controls. How did I control 7 servos with 6 pins and why? The two shoulder servos must move in unison in order to lift the upper arm properly so rather than attempt to send the signals to each servo individually, I used the half sized breadboard to route the power, ground and signal out to the pins of both servos together at once. Also, I needed the pin that the second servo would occupy as an input.
The Maestro board uses the raw power supply voltage to power the power and ground rails which poses an issue for a stable voltage through the variable resistor in each X,Y coordinate of the three controllers. The controller board also has a regulated 5 volt output as well. I pulled this output line from the board over to the + rail on the breadboard to power the reference lines to each of the joystick breakout boards.
The Maestro uses code similar to assembly language and the code listing is shown below.
I want to thank the following folks for their help on this project:
- Kevin Groce - Kevin posted the original article on which, this arm was based on the MTRAS Facebook page.
- Steve Ghertner - Steve printed the spacer joints listed above.
- Post that inspired this project
- Original Designers blog posts
- Thingiverse Arm
- Thingiverse Mini Servo Gripper