DC Servo Motor : Construction, Working, Interface with Arduino & Its Applications

A servo motor or servo is one type of electrical motor used to rotate the machine parts with high precision. This motor includes a control circuit that provides feedback on the current location of the shaft of the motor so this feedback simply allows these motors to revolve with high precision. A Servo motor is beneficial in rotating an object at some distance or angle. This motor is classified into two types AC servo motor and DC servo motor. If a servo motor uses DC power to work then the motor is called a DC servo motor whereas if it works with AC power then it is known as an AC servo motor.  This tutorial provides brief information on the DC servo motor – working with applications.


What is DC Servo Motor?

A servomotor that uses DC electrical input to produce mechanical output like position, velocity, or acceleration is called a DC servomotor Generally, these types of motors are used as prime movers within numerically controlled machines, computers, and many more wherever starts & stops are made precisely & very quickly.

DC Servo Motor
DC Servo Motor

DC Servo Motor Construction and Working

The DC servo motor is constructed with different components which are given in the following block diagram. In this diagram, each component and its function are discussed below.

DC Servo Motor Block Diagram
                                     DC Servo Motor Block Diagram

The motor used in this is a typical DC motor including its field winding which is excited separately. So depending on the excitation nature, further can be categorized as armature-controlled & field-controlled servo motors.

The load used in this is a simple fan or industrial load which is simply connected to the motor’s mechanical shaft.

The gearbox in this construction works like a mechanical transducer to change the motor’s output like acceleration, position, or velocity depending on the application.

PCBWay

A position sensor’s main function is to get the feedback signal equivalent to the current position of the load. Generally, this is a potentiometer used to provide a voltage that is proportional to the motor shaft’s absolute angle through the gear mechanism.

The comparator function is to compare the o/p of a position sensor & a reference point to produce the error signal and gives it to the amplifier. If the DC motor works with precise control, then there is no error. The position sensor, gearbox & comparator will make the system a closed loop.

The amplifier function is to amplify the error from the comparator & feed it to the DC motor. So, it performs like a proportional controller wherever the gain is strengthened for zero steady-state error.

The controlled signal gives the input to PWM (pulse width modulator) depending on the feedback signal so that it modulates the motor’s input for precise control otherwise zero steady-state error. Further, this pulse width modulator utilizes a reference waveform & comparator to produce pulses.

By making the closed-loop system, acceleration, velocity, or exact position is obtained. As the name suggests, the servo motor is a controlled motor that provides the preferred output due to the feedback & controller effect. The error signal is simply amplified & utilized to drive the servo motor. Depending on the control signal & pulse width modulator-producing nature, these motors have superior controlled methods with FPGA chips or digital signal processors.

The working of the DC servo motor is; whenever the input signal is applied to the dc motor then it rotates the shaft & gears. So basically, the rotation of gears output is fed back to the position sensor (potentiometer) whose knobs turn & change their resistance. Whenever resistance is changed then a voltage is changed which is an error signal that is fed into the controller & consequently PWM is generated.

To know more about the types of DC servo motors, please refer to this link: Different Types of Servo Motors.

Transfer Function of DC Servo Motor

The transfer function can be defined as the ratio of the Laplace transform (LT) of the o/p variable to the LT (Laplace transform) of the i/p variable. Generally, the DC motor changes the energy from electrical to mechanical. The supplied electrical energy at the armature terminals is changed into controlled mechanical energy.

The armature-controlled DC servo motor transfer function is shown below.

Armature Controlled DC Servo Motor Block Diagram
                                Armature Controlled DC Servo Motor Block Diagram

θ(s)/Va(s) = (K1/(Js2 + Bs)*(Las + Ra)) /1 + (K1KbKs)/(Js2 + Bs)*(Las+Ra)

The field-controlled dc servomotor transfer function is shown below.

Field Controlled DC Servo Motor Block Diagram
Field Controlled DC Servo Motor Block Diagram

θ(s)/Vf (s) = Kf / (sLf + Rf) * (s2J + Bs)

The armature-controlled dc servo motor provides superior performance because of the closed-loop system when compared with field controlled dc servo motor which is the open-loop system. In addition, the response speed is slow within the field control system. In armature controlled case, the armature’s inductance is negligible, whereas, in the field control case, it is not the same. But, in Infield control, improved damping is not achievable, whereas, in armature control, it can be attained.

Specifications

The DC servo motor provides performance specifications which include the following. These specifications should be matched based on the load necessities of the application to correctly size a motor.

  • Shaft speed simply defines the speed at which point the shaft turns, expressed within RPM (rotations per minute).
  • Usually, the speed offered by the manufacturer is the no-load speed of the o/p shaft or the speed at which point the output torque of the motor is zero.
  • Terminal voltage is the design voltage of the motor which determines the motor speed. This speed is simply controlled by increasing or decreasing the supplied voltage to the motor.
  • The rotational force like torque is generated by the shaft of the dc servo motor. So, the required torque for this motor is simply determined by the speed-torque characteristics of the different loads experienced within the target application. These torques are two types starting torque and continuous torque.
  • The starting torque is the required torque while starting the servo motor. This torque is normally higher as compared to continuous torque.
  • The continuous torque is the output torque that is the capacity of the motor in constant running conditions.
  • These motors must have sufficient speed & torque capacity for the application including a 20 to 30% margin in between the load necessities as well as motor ratings to make sure reliability. When these margins exceed too much then the effectiveness of cost will be reduced.The specifications of the 12V DC Coreless DC Servo Motor from Faulhaber are:
  • Gearbox Ratio is 64: l Planetary Three Stage Gear Box.
  • Load Current is 1400 mA Power.
  • The power is 17W.
  • Speed is 120RPM.
  • No Load Current is 75mA.
  • The type of Encoder is Optical.
  • The resolution of the Encoder is 768CPR of O/P Shaft.
  • The diameter is 30mm.
  • The length is 42mm.
  • The total Length is 85mm.
  • The Shaft Diameter is 6mm.
  • The shaft Length is 35mm.
  • The stall Torque is 52kgcm.

Characteristics

The characteristics of a DC servo motor include the following.

  • The DC Servo motor design is similar to a Permanent Magnet or separately excited DC Motor.
  • This motor’s speed control is done by controlling armature voltage.
  • The servo motor is designed with high armature resistance.
  • It provides quick torque response.
  • A step change within the armature voltage generates a quick change in the motor’s speed.

AC Servo Motor Vs DC Servo Motor

The difference between a DC servo motor and an AC servo motor includes the following.

AC Servo Motor

DC Servo Motor

One kind of servomotor that utilizes AC electrical input to generate mechanical output is called an AC servo motor. One kind of servomotor that utilizes DC electrical input to generate mechanical output is called a DC servo motor.
AC servo motor delivers low output power. DC servo motor delivers high output power.
These motors are adjustable for high-speed operating conditions. These motors are adjustable for low-speed operating conditions.
These types of motors develop high torque. These types of motors develop low torque.
The operation of this motor is stable, smooth & less noise based. The operation of this motor is less stable, and noisy.
These motors have less efficiency. These motors have high efficiency.
These motors have fewer stability problems. These motors have more stability problems.
In these motors, there is no electronic noise problem. In these motors, there is an electronic noise problem due to the presence of brushes.
The maintenance of these motors is less. The maintenance of these motors is high because of the presence of brushes & commutator.
These are lightweight and in small sizes. These are heavy & in large size.
These motors are appropriate for low-power-based applications. These motors are appropriate for high-power-based applications.

DC Servo Motor Interfacing with Arduino Uno

To control a DC servo motor at an exact and required angle, an Arduino board/any other microcontroller can be used. This board has analog o/p which generates a PWM signal to turn the servo motor at a precise angle. You can also move the angle position of the servo motor with a potentiometer or push buttons using an Arduino.

The servo motor can also be controlled with an IR remote which is available readily. This remote is helpful in moving the dc servo motor to a specific angle or increasing or decreasing the angle of the motor linearly with an IR remote.

Here we will be discussing on how to move the servo motor using an IR remote using Arduino at a specific angle and also increasing or decreasing the angle of the servo motor with the remote clockwise and counterclockwise. The interfacing diagram of the DC servo motor with Arduino and IR remote is shown below. The connections of this interfacing follow as;

Interfacing DC Servo Motor with Arduino Uno
Interfacing DC Servo Motor with Arduino Uno

This interfacing mainly uses three essential components like dc servo motor, Arduino board, and TSOP1738 IR sensor. This sensor has three terminals like Vcc, GND & output. The Vcc terminal of this sensor is connected to 5V of the Arduino Uno board, the GND terminal of this sensor is connected to the GND terminal of the Arduino board & the output terminal is connected to pin 12 (digital input) of the Arduino board.

Digital output pin 5 is simply connected to the signal input pin of the servo motor to drive the motor
The dc servo motor +ve pin is given to the external 5V supply and the GND pin of the servo motor is given to the GND pin of Arduino.

Working

The IR remote is used to perform two actions 30 degrees, 60 degrees, and 90 degrees, and also to Increase/decrease the angle of the motor from 0  to 180 degrees.

The remote contains many buttons like digit buttons (0-9), buttons for angle control, arrow key buttons, up/down buttons, etc. Once any digit button from 1 – 5 is pushed, then the dc servo motor will move to that exact angle and when the angleup/down button is pushed then the angle of the motor can be exactly set at ±5 degrees.

Once the buttons are decided the codes of these buttons need to decode. Once any button from the remote is pressed, then it will send one code to perform the required action. To decode these remote codes, IR remote library is used from the internet.

Upload the following program into Arduino & connect the IR sensor. Now place the remote towards the IR sensor & press the button. After that, open the serial monitor & monitor the code of the button pressed in form of numbers.

Arduino Code

#include <IRremote.h> // add IR remote library
#include <Servo.h> // add servo motor library
Servo servo1;
int IRpin = 12; // pin for the IR sensor
int motor_angle=0;
IRrecv irrecv(IRpin);
decode_results results;
void setup()
{
Serial.begin(9600); // initialize serial communication
Serial.println(“IR Remote controlled servo motor”); // display message
irrecv.enableIRIn(); // Start the receiver
servo1.attach(5); // declare servo motor pin
servo1.write(motor_angle); // move the motor to 0 deg
Serial.println(“Servo motor angle 0 deg”);
delay(2000);
}
void loop()
{
while(!(irrecv.decode(&results))); // wait until no button is pressed
if (irrecv.decode(&results)) // when button is pressed and code is received
{
if(results.value==2210) // check if digit 1 button is pressed
{
Serial.println(“servo motor angle 30 deg”);
motor_angle = 30;
servo1.write(motor_angle); // move the motor to 30 deg
}
else if(results.value==6308) // if digit 2 button is pressed
{
Serial.println(“servo motor angle 60 deg”);
motor_angle = 60;
servo1.write(motor_angle); // move the motor to 60 deg
}
else if(results.value==2215) // like wise for all digit buttons
{
Serial.println(“servo motor angle 90 deg”);
motor_angle = 90;
servo1.write(motor_angle);
}
else if(results.value==6312)
{
Serial.println(“servo motor angle 120 deg”);
motor_angle = 120;
servo1.write(motor_angle);
}
else if(results.value==2219)
{
Serial.println(“servo motor angle 150 deg”);
motor_angle = 150;
servo1.write(motor_angle);
}
else if(results.value==6338) // if volume UP button is pressed
{
if(motor_angle<150) motor_angle+=5; // increase motor angle
Serial.print(“Motor angle is “);
Serial.println(motor_angle);
servo1.write(motor_angle); // and move the motor to that angle
}
else if(results.value==6292) // if volume down button is pressed
{
if(motor_angle>0) motor_angle-=5; // decrease motor angle
Serial.print(“Motor angle is “);
Serial.println(motor_angle);
servo1.write(motor_angle); // and move the motor to that angle
}
delay(200); // wait for 0.2 sec
irrecv.resume(); // again be ready to receive next code
}
}

The supply to the DC servo motor is given from the external 5V &the supply to the IR sensor & Arduino board is given from USB. Once power is given to the servo motor then it moves to 0 degrees. After that, the message will be displayed as “servo motor angle is 0 deg” on the serial monitor.

Now on the remote, once button 1 is pressed then the dc servo motor will move 30 degrees. Similarly, once buttons like 2, 3, 4, or 5 are pressed then the motor will move with desired angles like 60 degrees, 90 degrees, 120 degrees, or 150 degrees. Now, the serial monitor will display the angle position of the servo motor as “servo motor angle xx degrees”

Once the volume up button is pushed, the angle of the motor will be increased by 5 degrees which means if it is 60 degrees, then it will move to 65 degrees. So, the position of the new angle will be displayed on the serial monitor.

Likewise, once the angle down button is pushed, then the angle of the motor will be decreased by 5 degrees which means, if the angle is 90 degrees, then it will move to 85 degrees. The signal from the IR remote is sensed by the IR sensor . To know how it senses and how IR sensor works click here

So, the position of the new angle will be displayed on the serial monitor. Therefore, we can easily control the angle of the dc servo motor with Arduino & IR remote.

To know on how to interface DC Motor with 8051 microcontroller click here

Advantages of DC Servo Motor

The advantages of DC servo motors include the following.

  • DC servo motor operation is stable.
  • These motors have much higher output power than the size & weight of the motor.
  • When these motors run at high speeds then they don’t generate any noise.
  • This motor operation is vibration & resonance-free.
  • These types of motors have high torque to inertia ratio & they can pick up loads very quickly.
  • They have high efficiency.
  • They give quick responses.
  • These are portable & lightweight.
  • The operation of Four Quadrants is possible.
  • At high speeds, these are audibly quiet.

The disadvantages of DC servo motors include the following.

  • The cooling mechanism of the DC servo motor is inefficient. So this motor gets polluted quickly once it is ventilated.
  • This motor generates maximum output power at a higher torque speed & needs regular gearing.
  • These motors can be damaged by overload.
  • They have a complex design & need an encoder.
  • These motors need tuning for stabilizing the feedback loop.
  • It requires maintenance.

DC Servo Motor Applications

The applications of DC servo motors include the following.

  • DC servo motors are used in machine tools for cutting and forming metal.
  • These are used for antenna positioning, printing, packaging, woodworking, textiles, manufacturing of twine or rope, CMM (Coordinate measuring machines), handling materials, polishing the floor, opening doors, X-Y table, medical equipment, and wafer spinning.
  • These motors are used in aircraft control systems where space & weight limitations need motors to deliver high power for each unit volume.
  • These are applicable where high starting torque is necessary like blower drives & fans.
  • These are also used mainly for robotics, programming devices, electromechanical actuators, machine tools, process controllers, etc.

Thus, this is an overview of the dc servo motor – working with applications.  These servo motors are used in various industries to provide the solution to many mechanical movements. The features of these motors will make them very efficient & powerful. Here is a question for you, what is AC Servo Motor?