Arduino UNO Robotic Arm

Abstract

The ability of human is limited so far as the physical strength is concerned. This robotic arm can surmount the problem of physical ability and also we can teach this robotic to carry out a specific task repeatedly with the control of “teach” and “play” buttons.  The project uses Arduino UNO along with 4 Servo Motors, 4 wire wound variable resistors and a handful of other passive components.

We have painstakingly worked on fine tuning of this robotic arm. Number of different practical problems and possible solutions are explained with step-by-step procedure, experimental findings, equivalent components suggestions are systematically presented in this paper.

Keywords

Robotic arm, teaching pendant, Arduino UNO, servo motor, map() function, constrain() function, integer math, servo jitter, servo murmuring

Introduction

The project of teaching pendant 4 DOF robotic arm is divided into four parts:  the arm containing servo motors, the potentiometers arm, Arduino UNO and “Teach-Play” module with indicator LEDs.

The Servo Arm

The servo arm consists of 4 servo motors. We have used simple servo motors SG90 Tower Pro for our module. There are 3 wooden strips of 80x15x1.5mm used to build the arm like structure. The structural idea of the arm will be more clear by observing the images below:

Experimental Findings (Arm Assembly)

The length of the wooden strips should not be more than the above specified values, otherwise it imbalances the servo arm and can’t adjust the weight balance of the servos. The gripper strips are made up of Polyurethane material to provide flexibility in gripper action.

Potentiometers Arm

This is the controlling section of robotic arm. It consists of 5 wire wound potentiometers fitted next to the servo arm so that the servo arm can be controlled by moving potentiometer arm accordingly. There are 3 wooden strips of 80x15x1.5mm used to build the arm like structure, as shown below.

Potentiometer assmbly to control the arm

Experimental Findings (Potentiometer Arm Assembly)

If we use carbon type potentiometers, then we found lots of jittering in the servo motors. So we used wire wound potentiometers with quite successful results.

Note: As shown in right image, left terminal of each pot, in the potentiometer arm, is connected to –ve & right to +ve. This is very important point to note in order to get correct direction of motion of servo arm.

Arduino UNO

We used the Rev. 3 module in this project. Know more about it here.

Teach-Play module with indicator LEDs

This section consists of 2 pull-up resistors with 2 micro push-to-on switches. The 4 LEDs are used to indicate that particular action is recorded i.e. “taught” to the robotic arm. We can record maximum 4 actions in any sequence by pressing the “Teach” switch each time while maneuvering the servo arm with the help of pot arm.

The Code

The code of this project is fairly simple given on our github profile at following link. It is necessary that the map function must be properly handled in this code. We tried following different combinations:

pot1Angle = map(pot1Val, 0, 1023, 0, 180); 

pot1Angle = map(pot1Val, 0, 1023, 0, 179); 

But it found that with this mapping the jitter in the servos is more. So we modified the values as follows and got very stable results. The jitter in servos is reduced by more than 80% with this modification.

pot1Angle = map(pot1Val, 0, 512, 0, 179);

The code is given on github profile at this link: https://gist.github.com/dsvakola/c096cc9a11abcef74ec1d901e9d1b3dd

Authors

Dattaraj Vidyasagar
Lecturer, Shri R.L.T. College of Science, Akola; India
dsvidyasagar@rltsc.edu.in

Yash Vidyasagar
Student, M.Sc. I Year, Fergusson College, Pune; India
yashvidyasahar@gmail.com

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.