The purpose of this project is to implement a simplified version of a robotic arm. This arm uses three motors: one to control the horizontal rotation (about z-axis) of the arm, second and third to control the vertical rotation (up & down movement).
Servo motors are used in robotics whose position is controlled by varying the duty cycle of the waveform applied. This project uses the Hitec HS-311 servos which operate between 4.8-6V, require a 50 Hz (20ms time period) square waveform, and are controlled using Pulse Width Modulation. These motors can rotate through an angle of 180 degrees max. A positive cycle duration of 0.9ms corresponds to an angle of -90 degrees and approx 2.1ms positive cycle corresponds to +90 degrees. The position or angle in between varies linearly with the duration of positive part in between 0.9-2.1ms. Hence, for example, a 50 Hz square wave with peak duration of 1.5ms would move the servo to 0 degree.
This project uses the AT89S52 microcontroller. This controller has 3 timers and each timer is used to control one servo. Every timer is used to apply a 50 Hz square wave on one output pin with the appropriate duty cycle to move the corresponding servo to its desired position. 6 buttons are connected to 6 input pins such that 2 buttons each control the direction of rotation of one servo, i.e. one button moves the motor in one direction and the other moves the motor in opposite direction. Further details and project report is given below
The project is simulated in PROTEUS.