/
Servo Motors

Servo Motors

Servos

  • Standard servos are used to maintain a certain angle, not meant for full rotation

  • Uses closed-loop feedback control

  • Servos are used in applications requiring high torque, accurate rotation within a limited angle such as Robotic arms, valve control, rudder control etc.

Courtesy : https://howtomechatronics.com/how-it-works/how-servo-motors-work-how-to-control-servos-using-arduino/

SG90 Micro Servo

  • SG90 is a servo motor which operates based on PWM control signals

  • The servo maintains a certain angle (position) based on the width of the pulse fed in through a signal input

  • Some technical specifications

  • 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)

  • PWM frequency = 50Hz

  • Pin configuration: Yellow / Light Orange / White (Signal), Red / Dark Orange (+5V), Brown/Black (Ground)

Note : The pulse width in the image does not correspond to SG90, for illustration of the concept only.

Image courtesy: Stefan Tauner

544 – 1500 – 2400 us

  0°  –   90° – 180°

Servo Library

  • This library allows an Arduino board to control servo motors

  • Standard servos allow the shaft to be positioned at various angles, usually between 0° and 180°

  • Any digital pin on UNO can be used, not necessarily those supporting PWM. However, note that using Servo library disables analogWrite() functionality on pins 9 and 10

  • attach(int) - attach a servo to an I/O pin, e.g., servo.attach(pin), servo.attach(pin, min, max)

    • servo: a variable of type Servo, pin: pin number, default values: min = 544 us, max = 2400 us

  • write(int) - write a value to the servo to control its shaft accordingly

  • detach() - stop an attached Servo from pulsing its I/O pin

http://arduino.cc/en/Reference/Servo

C++

Blocks

C++

Blocks

#include <Servo.h> Servo servo_7; void setup() { servo_7.attach(7); } void loop() { servo_7.write(45); // a variable can also be used instead of the constant (45) delay(10); } /* servo connected to pin 7 will maintain an angle of 45 degree */

 

 

Caution : Do not overload the servo. The servo and your battery / power source could be damaged if the servo is overloaded.

Do not power the servo from a 9V battery. Most servos can’t take > 6V.

Continuous Rotation Servos

  • Continuous rotation servos are standard servos modified to perform open-loop speed control (instead of closed-loop position control)

  • Rotation speed and direction are controlled through PWM signals (pulse width) for continuous rotation servos, just like how the position is controlled for standard servos

  • Effectively, continuous servos are DC motors with integrated motor drivers and reduction gears in a compact, inexpensive package, rather than true 'servo' motors

  • Continuous rotation servos allow the rotation of the shaft to be set to various speeds

    • Electrical connections are identical to that of a standard servo.

    • The original servo library can be used; e.g., servo.write(angle),  angle = 0 to 180  → 0: full speed in one direction, 180: full speed in the other, and around 90: no movement

  • FS90R (also known as SG90 continuous / 360o/ full rotation) operating speed: 110RPM (4.8V); 130RPM (6V)

Can continuous rotation servos be used to achieve accurate positioning without any additional hardware?