Friday, April 21, 2017

Mini Project : - Robotic Arm Using Flex Sensor And Servos.

Mini Project : - Robotic Arm Using Flex Sensor And Servos.

Introduction

 Sensor plays an important role in robotics. Sensors are used to determine the current state of the system. Robotic applications demand sensors with high degrees of repeat-ability, precision, and reliability. Flex sensor is such a device, which accomplish the above task with a great degree of accuracy. The pick and place operation of the robotic arm can be efficiently controlled using micro-controller programming.



The ever increasing population trend of the new millennium expects new technical innovation to meet the new challenges being faced by human beings. The integration of medical science and engineering has made the task like complicated surgery by robotic arm simpler. To capture the motion of human limbs, sensors can be used. Some companies have designed units, which can integrate accelerometers, gyroscopes, magnetometers and can be attached to human limbs. These units can be worn for video game character modeling, virtual reality, and activity recognition.

A sensor is a device that can measure some attribute of motion, being one of the three primitives of robotics (besides planning and control), sensing plays an important role in robotic paradigms. Robotic arm manipulators can have different configurations and kinematic constraints. Few of these constraints can be effectively mapped from the human arm domain to the robot’s restricted joint space. The arm moment is reciprocated almost exactly by the robotic arm.

Flex Sensors

Flex sensors are analog resistors. These resistors work as a variable analog voltage divider. Inside the flex, the sensor is carbon resistive elements with the thin flexible substrate. More carbon means less resistance. When the substrate is bent the sensor produces resistance output relative to the bend radius. The flex sensor achieves great form-factor on a thin flexible substrate. When the substrate is bent, the sensor produces a resistance output correlated to the bend radius. Smaller the radius, higher will be the resistance value.
Flex sensor bend proportional to varying degree of resistance.




Working Principle of Servo Motor:-

servo motor is basically a DC motor (in some special cases it is AC motor) along with some other special purpose components that make a DC motor a servo. In a servo unit, you will find a small DC motor, a potentiometer, gear arrangement and an intelligent circuitry. The intelligent circuitry along with the potentiometer makes the servo to rotate according to our wishes. As we know, a small DC motor will rotate with high speed but the torque generated by its rotation will not be enough to move even a light load. This is where the gear system inside a servomechanism comes into the picture. The gear mechanism will take high input speed of the motor (fast) and at the output; we will get an output speed which is slower than original input speed but more practical and widely applicable.

Say at the initial position of servo motor shaft, the position of the potentiometer knob is such that there is no electrical signal generated at the output port of the potentiometer. This output port of the potentiometer is connected with one of the input terminals of the error detector amplifier. Now an electrical signal is given to another input terminal of the error detector amplifier. Now the difference between these two signals, one comes from the potentiometer and another comes from the external source, will be amplified in the error detector amplifier and feeds the DC motor. This amplified error signal acts as the input power of the DC motor and the motor starts rotating in the desired direction. As the motor shaft progresses the potentiometer knob also rotates as it is coupled with the motor shaft with help of gear arrangement. As the position of the potentiometer knob changes, there will be an electrical signal produced at the potentiometer port. As the angular position of the potentiometer knob progresses the output or feedback signal increases. After desired angular position of the motor shaft, the potentiometer knob is reached at such position the electrical signal generated in the potentiometer becomes same as of external electrical signal given to amplifier. At this condition, there will be no output signal from the amplifier to the motor input as there is no difference between externally applied signal and the signal generated at potentiometer. As the input signal to the motor is nil at that position, the motor stops rotating. This is how a simple conceptual servo motor works.

The flow of Action for the Robotic Arm:
  • ·      Read values of the sensor;
  • ·      Microcontroller processes the sensor values;
  • ·      Send values from microcontroller to servomotors;

Things We Need:-
  • ·      Flex Sensor (5 pieces) - We made the flex sensor on our own.
  • ·      Arduino Uno Board -Servo Motor (5 pieces)
  • ·      Foam (Like Styrofoam).
  • ·      Glove (Rubber)
  • ·      Wires (Jumper)
  • ·      Breadboard
  • ·      Battery
  • ·      Battery Buckle
  • ·      Rubber Band
  • ·      Wire to connect fingers and servo.
  • ·      Glue 
  • ·     Utility Knife

For Flex Sensor:-
Flex sensors are passive resistive devices that can be used to detect bending or flexing. The flex sensor is a flex sensor that decreases its resistance in proportion to the amount it is bent in either direction. You can easily make a sensor wider and longer depending upon your project.
  • ·       Paper
  • ·       Flexible Cardboard or Plastic
  • ·       Pencil
  • ·       Aluminum Foil or Aluminum Tape
  • ·       Wires
  • ·       Hot Silicone or Solder.

Making of the Robotic Hand:-
  • ·       In the finger length, we cut the piece from the Styrofoam.
  • ·       We divide the piece we cut into 3 parts like finger joints.
  • ·       We shape the sides of the square parts we cut with the help of sandpaper.
  • ·       We tie each piece together using a rubber. We must leave some space between each piece.
  • ·       We drill all the pieces longitudinally with the help of a pointed rod.
  • ·       From these holes, we pass the wire to the top of the finger. And let's take the knot to keep the wire stable.
  • ·       We cut a piece of foam as much as hand size.
  • ·       Combine all fingers by hand.
  • ·       Cut a piece of foam to mount the servo motors.
  • ·       Connect all the finger wires to the servo motors.
Making of Glove:-
  • ·       You can use an old glove for this.
  • ·       We put the flex sensors we made on the glove fingers.
  • ·       We fixed with glue or cable ties.
  • ·       Note that you should not stick the sensors completely in the longitudinal direction. Intervals are good for comfortable movement of the sensor.
Cost Report:-


COMPONENT NAME
PRICE 
(per piece)

QUANTITY
TOTAL
ARDUINO UNO
1200
1
1200
USB CABLE
100
1
100
RESISTORS
2
10
20
PHOTO PAPER
10
2
20
FOAM
40
1
40
MALE/FEMALE WIRES
3
24
72
ALUMINIUM FOIL
25
1
25
PLASTIC ROPE
75
1
75
9V BATTERY
50
2
100
SERVO MOTORS
120
5
600
SOLDERING SPOOL
75
1
75

TOTAL COST OF PROJECT
2327/-


Connections:- 
  • ·       The external battery VCC / GND connect to the GPB (General Purpose Board);
  • ·       The Arduino GND connect to the breadboard's GND input;
  • ·       The servo connections we use in this project are as follows;
Orange Input - Signal Input;
Red Input - Power Input (VCC);
Brown Input - Ground Input (GND);
  • ·       All servo motors VCC and GND connect to the breadboard's VCC / GND inputs.
  • ·       The signal inputs of all servo motors are connecting to the Arduino Digital PWM 3-5-6-9-10 respectively.
  • ·       The sensors have two inputs. One is the GND line and the other is the signal (Analog) line. The signal line is connected to the VCC line by dividing with the help of a resistor.
Circuit Diagram:-



Coding And Interfacing:-
  • 1.   Add the Servo library
  • 2.   Define Servos
  • 3.   Define Flex Sensors
  • 4.   Variable to read the values from the analog pin (flex sensors)
  • 5.   Attaches our servos on pins PWM 3-5-6-9 to the servos
  • 6.   Reads the value of flex sensors
  • 7.   Scale it to use it with the servo (value between 0 and 180)
  • 8.   Set the servo position according to the scaled value
  • 9.   Upload the code
The Code:-

#include <Servo.h> 
//including header file servo to use the servo class
Servo servo_1;
//creating objects of class Servo to use them as variables
Servo servo_2;
Servo servo_3;
Servo servo_4;
Servo servo_5;
int flex_1 = A0;
 //declaring and initializing sensor variables giving them appropriate pin number

int flex_2 = A1;
int flex_3 = A2;
int flex_4 = A3;
int flex_5 = A4;

void setup() 
{
  Serial.begin (9600);
  servo_1.attach(3);
 // initializing servo pin to Arduino pins to get the data signals
  servo_2.attach(5);
  servo_3.attach(6);
  servo_4.attach(9);
  servo_5.attach(10);
}

void loop()
{
  int flex_1_pos;
 //declaring a variable to find the position of first flex sensor so that we can //calculate the angle with which we need to move our servo.

  int servo_1_pos;
  flex_1_pos = analogRead (flex_1);
  Serial.println (flex_1_pos);
  servo_1_pos = map (flex_1_pos, 1020, 1023, 0, 180);
//mapping the position on servo... map (reading to which we want it to be, //starting value, end value, final angle, initial angle)

  servo_1_pos = constrain (servo_1_pos, 0, 180);
// restricting the angle of servo between 0 and 180 degrees 

  servo_1.write (servo_1_pos);
// writing the value of servo to the servo pin initialized.
  delay (1000);
 
  int flex_2_pos; 
  int servo_2_pos; 
  flex_2_pos = analogRead(flex_2);
  servo_2_pos = map(flex_2_pos, 1020, 1023, 0, 180);
  servo_2_pos = constrain(servo_2_pos, 0, 180); 
  servo_2.write(servo_2_pos);
  delay(1000);

  int flex_3_pos; 
  int servo_3_pos; 
  flex_3_pos = analogRead(flex_3);
  servo_3_pos = map(flex_3_pos, 1020, 1023, 0, 180);
  servo_3_pos = constrain(servo_3_pos, 0, 180); 
  servo_3.write(servo_3_pos);
  delay(1000);

  int flex_4_pos; 
  int servo_4_pos; 
  flex_4_pos = analogRead(flex_4);
  servo_4_pos = map(flex_4_pos, 1020, 1023, 0, 180);
  servo_4_pos = constrain(servo_4_pos, 0, 180); 
  servo_4.write(servo_4_pos);
  delay(1000);

  int flex_5_pos; 
  int servo_5_pos; 
  flex_5_pos = analogRead(flex_5);
  servo_5_pos = map(flex_5_pos, 1020, 1023, 0, 180);
  servo_5_pos = constrain(servo_5_pos, 0, 180); 
  servo_5.write(servo_5_pos);
  delay(1000);
}


Conclusion and Future Work:-

The paper discussed a hardware and software co-design of robotic arm controller using four servomotors employing microcontroller. Microcontroller programming can be done with an ease to suit the requirements. Unlike which employ FPGA based control. Microcontroller based programs can be flexibly modified to suit the necessary drive control of the servo motor. A researcher can work for wireless control of the robotic arm by employing some wireless application protocol. Then the robotic arm can be more efficiently employed. The robotic arm can be fitted with the wheel and more sensors to equip the device with more flexible movements of the robotic arm.
~Jay Mehta
DO ENCOURAGE ME BY FOLLOWING MY BLOG AND UP-VOTING IT.
 Thank You!
Jay Mehta.
__--*--__

Enter your email address:


Delivered by FeedBurner

No comments:

Post a Comment

Wikipedia

Search results

Popular Posts