Project tutorial
Tertiarm - 3d Printed Robot Arm

Tertiarm - 3d Printed Robot Arm © CC BY-NC-SA

This is first version of my low cost 3d printed robot arm based on Ikea Tertial lamp.

  • 23 respects

Components and supplies

Servos (Tower Pro MG996R)
Chek out BOM File for more information about parts
Ph abx00005 iso (1) bavevgguw1
Arduino 101

Necessary tools and machines

3D Printer (generic)

About this project


This is first version of my low cost 3d printed robot arm. It is based on Ikea Tertial lamp. I choose it because it has very good kinematic with using springs to unload servos. So you can use different number of springs to achive diffrent lifting power.

Technical specification

  • 5 DOF.
  • Full lenght: 690mm
  • Lifting power with 4 standart spring: 0.5kg (distance between base and attaching point: 500mm)

You can find some information and download STL files for free at:

Step 1: Let's get it started!

First of all you should take a look at BOM file and picture to get information about all components.

Your can find all information about infill and quantity of 3d printed parts there. Because Tertiarm use lamp as base you won't need to print big parts, so I hope it can be printed almost at all 3d printers. When you will be ready to start assembly Tertiarm, you should begin from disassembling lamp. You will need only 4 beam and 4 sping, if you be able to find same beams and springs you can do without buing ikea lamp. After making first prototypes, I have decided to cut all beam to 260mm, but you can choose other lenghth depends on your servo and goals.

  • Cut all beam to one lenght.
  • You should mount Tip and ServoTip 3d printed parts, as it shown on picture. Be careful about it you should check position of all elements. You will need to use mallet to fit it in place, it should be very tight, but you can also add screw to fix it.
  • Fix servo horn on ServoTip.STL with M3 screws (20mm)

Now you are ready to assemble 1 axis.

BOM file.

Step 2: 1 Axis

  • You will need to insert servo in MainPart.STL. And fix it with 2 scews.
  • Fix MainPart.STL to some peice of wood with 7 screws.
  • Insert 6 M3 nuts in BearingTop.STL. If it will be too tight you can heat up nuts.
  • Assemble axis as shown on picture using 2 M3 screws (30mm).
  • Insert 6 m3 screw (10mm).
  • Mount it at MainPart.STL using 6 M4 screws. Make sure you have mount serrvo horn to servo and fix it with m3 screw (30mm) in center hole to servo.
  • You have assemled 1 axis!

Step 3: 2 Axis

  • Carefully insert 2 beam into first axis. Check out location of Tip.STL and Servo.Tip STL at the top of 2 beam on picture.
  • Fix it with 2 M4 screws (at least 35mm) and 4 604zz bearings.
  • It should look like this.
  • Mount two SpringMount.STL to 1 Axis with 4 m4 screw. Your can adjust spring tension with them
  • Mount 2 spring on 2 M4 screw.
  • Fix servo and 3 604zz bearing on Shoulder3.STL as shown on picture.
  • Insert 1 604zz bearing in Shoulder2.STL and assemle 2 axis as shown on picture. Fix servo drive shaft in servo horn and tight it with allen key.
  • Insert M3 screw (25mm) in servo shaft using 623zz bearing.
  • You have competed 2 axis!

Step 4: 3, 4 and 5 Axis

  • Insert 2 beam into second axis. Carefully check picture.
  • Fix them with 4 604zz bearing.
  • You should assemble it in a shown order to fix springs later.
  • Mount 2 servo on Elbow2.STL
  • Join aluminium servo horn, servo and Wrist.STL with M3 screw (10mm).
  • Fix it with 4 M3 screws (10mm).
  • Mount servo horn on Wrist.STL with M3 screw (20mm).
  • Assemble it with 4 623zz bearing. Make sure all servo shaft in their place fix it with 2 M3 screws (25mm) and tight servo horns with allen key.
  • Axis 3,4 and 5 are completed!

Step 5: Magnet, Arduino Uno Cabin and Springs

  • Mount electromagnet on Magnet.STL
  • Fix it on servo with m4 screw.
  • Use Ikea mount or m4 screw and 3 nuts to fix springs as shown on picture.
  • You should try different combination of 4 sprins to find best solution for you task.
  • If you deceid to use Arduino Uno and SensorShield V5 like me, you can make Arduino Uno Cabin. In this case you should mount ArduinoCabin2.STL on axis 2.
  • Fix ArduinoCabinPlate.STL on ArduinoCabin2.STL with 2 m3 screws (10mm).
  • Mount ArduinoCabin1.STL on ArduinoCabinPlate.STL with 4 M3 screws (30mm) and 4 M3 nuts.
  • Now you can fix your arduino on ArduinoCabinPlate.STL.

Step 6: Test Code.

Now after your assemble and fix it on your table your are ready to test Tertiarm.

I recommend your to use VarSpeedServo library by NETLab Toolkit Group. It allows your to change speed of your servo. Your can read more and download it at GitHub. If your will use TertiarmTest.ino don't forget to change all pins to your configuration.

Congratulations! Your have completed Tertiarm! If you have any question or problems feel free to contact me.


It is test code used in first video.
#include <VarSpeedServo.h> 
int motorPin = 2;

VarSpeedServo myservo1; 
VarSpeedServo myservo2;
VarSpeedServo myservo3;
VarSpeedServo myservo4;
VarSpeedServo myservo5;

void setup() {
  pinMode(motorPin, OUTPUT);

void loop() {
  myservo1.write(150, 30, true);
myservo2.write(140, 30, true);
myservo4.write(160, 30, true);
myservo3.write(160, 30, true);

digitalWrite(motorPin, HIGH);
 myservo3.write(90, 30, true);
myservo2.write(90, 30, true);
myservo1.write(70, 30, true);
 myservo3.write(140, 30, true);
myservo5.write(180, 30, true);
digitalWrite(motorPin, LOW);
  myservo3.write(90, 30, true);       

Custom parts and enclosures



Similar projects you might like

Littlearm 2C: Build a 3D Printed Arduino Robot Arm

Project tutorial by Slant Concepts

  • 52 respects

3D Printed and Expandable Robot for Arduino

Project showcase by Matthew Hallberg

  • 29 respects

A DIY Hexapod Robot with Arduino, Lego, and 3D Printed Parts

Project tutorial by Tart Robotics

  • 17 respects

MK2 Plus Robot Arm Controller

Project tutorial by Samira Peiris

  • 37 respects

MeArm Robot Arm - Your Robot - V1.0

Project tutorial by Benjamin Gray

  • 59 respects

Robot Arm Controlled Through Ethernet

Project tutorial by Balázs Simon

  • 72 respects
Add projectSign up / Login