SG90 Servo Motor

Description:
A servo motor is an electrical device which can push or rotate an object with great precision. If you want to rotate and object at some specific angles or distance, then you use servo motor. We can get a very high torque servo motor in a small and light weight packages. Doe to these features they are being used in many applications like toy car, RC helicopters and planes, Robotics, Machine
Working Principle:
A servo consists of a Motor (DC or AC), a potentiometer, gear assembly and a controlling circuit. First of all we use gear assembly to reduce RPM and to increase torque of motor. Say at 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. Now an electrical signal is given to another input terminal of the error detector amplifier. Now difference between these two signals, one comes from potentiometer and another comes from other source, will be processed in feedback mechanism and output will be provided in term of error signal. This error signal acts as the input for motor and motor starts rotating. Now motor shaft is connected with potentiometer and as motor rotates so the potentiometer and it will generate a signal. So as the potentiometer’s angular position changes, its output feedback signal changes. After sometime the position of potentiometer reaches at a position that the output of potentiometer is same as external signal provided. At this condition, there will be no output signal from the amplifier to the motor input as there is no difference between external applied signal and the signal generated at potentiometer, and in this situation motor stops rotating.
Features:Features:
⦁ Torque: 2.5kg/cm
⦁ Operating speed is 0.1s/60°
⦁ Gear Type: Plastic⦁ Rotation : 0°-180°
⦁ Weight of motor : 9gm
⦁ Package includes gear horns and screws
Application:
⦁ They are used in many radio controlled toys.
⦁ used in automobiles to maintain the speed of vehicles.
⦁ robots because of their smooth switching on and off and accurate positioning.
⦁ Used as actuators in many robots like Biped Robot, Hexapod, robotic arm etc..
⦁ Robots where position control is required without feedback
⦁ Less weight hence used in multi DOF robots like humanoid robots
Specification:Specification:
⦁ Weight: 9 g
⦁ Dimension: 22.2 x 11.8 x 31 mm approx.
⦁ Stall torque: 1.8 kgf·cm
⦁ Operating speed: 0.1 s/60 degree
⦁ Operating voltage: 4.8 V (~5V)
⦁ Dead band width: 10 µs
⦁ Temperature range: 0 ºC – 55 ºC
Advantages:
⦁ If a heavy load is placed on the motor, the driver will increase the current to the motor coil as it attempts to rotate the motor. Basically, there is no out-of-step condition
.⦁ High-speed operation is possible.
Disadvantages:
⦁ Since the servo motor tries to rotate according to the command pulses, but lags behind, it is not suitable for precision control of rotation.
⦁ Higher cost, When stopped, the motor’s rotor continues to move back and forth one pulse, so that it is not suitable if you need to prevent vibration
Link to datasheet:
http://www.datasheetcafe.com/sg90-datasheet-pdf-9-g-micro-servo/
Connection with Arduino

Arduino Code:
#include servo.h //add ‘<‘ and ‘>’ before and after servo.h
int servoPin = 9;
Servo servo;
int servoAngle = 0; // servo position in degrees
void setup()
{
Serial.begin(9600);
servo.attach(servoPin);
}
void loop()
{
//control the servo’s direction and the position of the motor
servo.write(45); // Turn SG90 servo Left to 45 degrees
delay(1000); // Wait 1 second
servo.write(90); // Turn SG90 servo back to 90 degrees (center position)
delay(1000); // Wait 1 second
servo.write(135); // Turn SG90 servo Right to 135 degrees
delay(1000); // Wait 1 second
servo.write(90); // Turn SG90 servo back to 90 degrees (center position)
delay(1000);
//end control the servo’s direction and the position of the motor
//control the servo’s speed
//if you change the delay value (from example change 50 to 10), the speed of the servo changes
for(servoAngle = 0; servoAngle < 180; servoAngle++) //move the micro servo from 0 degrees to 180 degrees
{
servo.write(servoAngle);
delay(50);
}
for(servoAngle = 180; servoAngle > 0; servoAngle–) //now move back the micro servo from 0 degrees to 180 degrees
{
servo.write(servoAngle);
delay(10);
}
//end control the servo’s speed
}
https://www.elprocus.com/servo-motor/
https://www.intorobotics.com/tutorial-how-to-control-the-tower-pro-sg90-servo-with-arduino-uno/
https://circuitdigest.com/article/servo-motor-basics