This project is actually university homework, but it’s so interesting that I decided to upload here the information. I’ve never used such an electronic components before and I have to admit that it was a nice challenge.

This robotic arm is composed of 5 servo motors, which must be controlled in order to use the robotic arm by a couple of joysticks. Proposed environment for this project was the following: We are in a lab dealing with toxic substances, and we need to move them using this robotic arm. Of course, end-users are not suppose to know anything about how the robotic arm is internally built, this means that they don’t have technical knowledgment about mechanics.

My solution
Using the joysticks, we are able to move the robotic arm (back-forward, up-down, left-right) and open-close its grip to catch test tubes.
Additionally, we can see the angle of each servo motor in Olimex’s display and move the robotic arm using Olimex as well. Finally, it is also possible to change the “speed” of robotic arm movements. In my opinion this was completely necessary since the robotic arm is able to move around 10kg and using low weight test tubes makes robotic arm movements so fast by default.

There is also a “security mode” which makes the robotic arm not being move incrementally. Normally when we are using joysticks, the faster we move the joystick, the faster will be moved the robotic arm. But sometimes, we require a more precise control. So, this “security mode” moves always slowly the robotic arm, independently of how fast we are moving the joysticks.

How is it constructed
Each servomotor is connected to each Olimex pin where it is possible to send signals and control them.
Joysticks are connected to Olimex’s ADC, and therefore we can measure and interpret current values.
Servomotors are plugged to 5V while Joysticks to 3.3V. Everything share the same ground.

How to control a single servo motor
I guess this depends on the manufacturer, but I also guess in all cases it’s similar. In order to control a single servo motor, it is necessary to send a signal whose frequency varies depending on the angle it is wanted to obtain. In case of this servo motors, they need 50Hz and sending a 1500ms signal they turn to the “neutral point”. From this point, we can increase and decrease the sent signal and move them from one to another side.

Wrist servo motor is special. As I said, there are 5 servo motors and using joysticks we are able to control 4 of them (up-down, left-right movements). Wrist servo motor has to be always horizontal, and this is achieved by calculanting angles of the rest of them and apply some formula to obtain desired value.

I recorded this video showing how it works: