Phone

    00852-6915 1330

Servo Motors:Control with an Arduino and Raspberry Pi

  • Contents

Introduction

In this lesson, we'll look at what a servo motor is and how it works. First, let's define what a servo motor is and look at some of the unique characteristics of the different types of servo motors and their applications. You will also learn how to control Servo Motors with an Arduino and a Raspberry Pi in this blog.

Introduction

Ⅰ What is a Servo Motor?

Ⅱ Servo Motor Related Video:

Ⅲ Types of Servo Motors

3.1 AC or DC

3.2 Brushed or Brushless

3.3 Synchronous or Asynchronous

Ⅳ Servo Motor Working Principle

Ⅴ Applications of Servo Motors

Ⅵ Difference Between Stepper Motor and Servo Motor 

Ⅶ Servo Motors Control with an Arduino 

7.1 Experiment 1

Ⅷ Control with  Raspberry Pi

8.1 PWM (Pulse Width Modulation)

8.2 Components Required

8.3 Circuit Diagram

8.4 Working and Programming Explanation

8.5 Code

Ⅸ FAQ

 

Ⅰ What is a Servo Motor?

A servo motor is a self-contained electrical device that rotates machine parts with high efficiency and precision.

This motor's output shaft can be moved to a specific angle, position, and velocity that a standard motor cannot.

The Servo Motor  combines a standard motor with a sensor to provide positional feedback.

The most important component of the Servo Motor  designed and used specifically for this purpose is the controller  .

Figure1:Servo Motor 

 

 

 

How servo motor works

 

Servo Motor Video Description: This movie gives an overview of how RC servo motor works and how it's made.

 

Ⅲ Types of Servo Motors

Servo motors are classified into two types based on their application: AC servo motors  and  DC  servo motors.

There are three major factors to consider when evaluating servo motors. The first type of consideration is the current type –  AC  or  DC – and the second type of consideration is the type of commutation used, whether the motor uses brushes. The third type of consideration is the motor's rotating field, the rotor, and whether the rotation is synchronous or asynchronous.

 

3.1 AC or DC

Let's start with the first servo consideration. The most fundamental classification of a motor is based on the type of current it will use.

When it comes to performance, the primary distinction between  AC and DC motor  s is their inherent ability to control speed.

Figure2:DC or AC Servo Motor 

With a constant load, the speed of a DC motor  is directly proportional to the supply voltage.

The frequency of the applied voltage and the number of magnetic poles determine the speed of an alternating current motor.

 

Figure3:DC or AC Servo Motor 

While both AC and DC motor  s are used in servo systems, AC motors  can handle more current and are more commonly used in servo applications such as robots, in-line manufacturing, and other industrial applications requiring high repetitions and precision.

 

3.2 Brushed or Brushless

The next step is to decide whether to use a brushed or brushless finish. A DC Servo Motor  can be commutated mechanically with brushes, electronically without brushes, or mechanically with a commutator.

Brushed motors are less expensive and easier to operate in general, whereas brushless designs are more reliable, have higher efficiency, and are quieter.

 

Figure4:brushed or brushless Servo Motor 

A commutator is a rotary electrical switch that reverses the current direction between the rotor and the drive circuit on a regular basis.

It is made up of a cylinder made up of multiple metal contact segments on the rotor. Two or more electrical contacts known as "brushes" made of a soft conductive material such as carbon press against the commutator, making sliding contact with commutator segments as it rotates.

Figure5:brushed or brushless Servo Motor 

While the majority of servo motors are AC brushless designs, brushed permanent magnet motors are occasionally used as servo motors due to their simplicity and low cost.

The permanent magnet DC motor  is the most common type of brushed DC motor  used in servo applications.

Figure6:brushed or brushless Servo Motor 

Brushless DC motors replace the physical brushes and commutator with an electronic commutation method, typically using Hall effect sensors or an encoder.

Figure7:brushed or brushless Servo Motor 

AC motors are generally brushless, though some designs do have brushes and are mechanically commutated, such as the universal motor, which can run on either AC or DC power.

Figure8:brushed or brushless Servo Motor 

 

 

3.3 Synchronous or Asynchronous

While DC motor  s are generally classified as brushed or brushless, AC motors  are often distinguished by the rotational speed of their synchronous or asynchronous field.

If we recall from the AC-DC discussion, the frequency of the supply voltage and the number of magnetic poles determine the speed of an AC motor.

This speed is known as the synchronous speed. As a result, in a synchronous motor, the rotor rotates at the same rate as the rotating magnetic field of the stator.

Figure9:synchronous or asynchronous Servo Motor 

In an asynchronous motor, also known as an induction motor, the rotor rotates at a slower rate than the stator's rotating magnetic field.

However, the speed of an asynchronous motor can be varied using a variety of control methods, including changing the number of poles and changing the frequency, to name a few.

Figure10:synchronous or asynchronous Servo Motor 

 

 

Ⅳ Servo Motor Working Principle

A servo is made up of a motor (either DC or AC), a potentiometer, a gear assembly, and a control circuit. First and foremost, we use gear assembly to reduce RPM and increase motor torque. Assume that at the initial position of the servo motor shaft, the position of the potentiometer knob is such that no electrical signal is generated at the potentiometer's output port. An electrical signal is now applied to the error detector amplifier's other input terminal. The difference between these two signals, one from the potentiometer and one from other sources, will now be processed in a feedback mechanism and output will be provided in the form of an error signal.

This error signal serves as the motor's input, and the motor begins to rotate. The motor shaft is now connected to the potentiometer, and as the motor rotates, so does the potentiometer, generating a signal. As a result, as the potentiometer's angular position changes, so does its output feedback signal. After a while, the position of the potentiometer reaches a point where the output of the potentiometer is the same as the external signal provided. There will be no output signal from the amplifier to the motor input because there is no difference between the externally applied signal and the signal generated at the potentiometer in this condition, and the motor will stop rotating.

Figure11:synchronous or asynchronous Servo Motor 

 

Ⅴ Applications of Servo Motors

  • Servo Motors are used in a variety of applications, some of which are listed below:
  • In robotics, the servo motor is used to activate movements, giving the arm its precise angle.
  • The servo motor is used to start, move, and stop conveyor belts that transport the product through multiple stages. As an example, consider product labeling, bottling, and packaging.
  • The servo motor is built into the camera to correct a lens and improve out-of-focus images.
  • In a robotic vehicle, the servo motor is used to control the robot wheels, producing enough torque to move, start, and stop the vehicle as well as control its speed.
  • In a solar tracking system, the servo motor is used to correct the angle of the panel so that each solar panel faces the sun.
  • The servo motor is used in metal forming and cutting machines to provide milling machines with precise motion control.
  • Textiles use servo motors to control spinning and weaving machines, knitting machines, and looms.
  • The Servo motor is used in automatic door openers in public places such as supermarkets, hospitals, and theaters to control the door.

 

Ⅵ Difference Between Stepper Motor and Servo Motor 

Comparison Chart

Basis for Comparison Stepper Motor Servo Motor
Basic Stepper motor operates in steps. It is continuous operating machine.
System configuration Open loop Closed loop
Power requirement More Comparatively less
Design Simple Complex
Ability to response High Comparatively low
Cost Inexpensive Expensive
Reliability More Less
Noise and vibration High Comparatively less
Operating speed Slow Fast
Feedback mechanism Not exist Exist
Heat generation More Comparatively less
Number of poles Generally 50 to 150 Around 4 to 12
Life span More Less
Damage due to overload Less prone to get damaged. Comparatively more prone to get damaged.
Torque produced High Low
Efficiency Less More
Tolerance towards moment of inertia High Low
Applications In gaming, textile, welding machineries, medical and 3D printing equipments, etc. In robotics, antenna positioning systems, automatic doors, cameras, remote controlled equipments, etc.

Ⅶ Servo Motors Control with an Arduino 

You can connect small servo motors directly to an Arduino  to control the shaft position very precisely.

Most servo motors have the following three connections:

  • Black/Brown ground wire.
  • Red power wire (around 5V).
  • Yellow or White PWM wire.

In this experiment, the power and ground pins will be connected directly to the Arduino  5V and GND pins. The PWM input will be connected to a digital output pin on the Arduino, 

7.1 Experiment 1

  • Hardware Required
  • 1 x TowerPro SG90 servo motor
  • 1 x Arduino  Mega2560
  • 3 x jumper wires

 

Wiring Diagram

The best thing about servo motors is that they can be directly connected to an  Arduino ,  Connect the motor to the Arduino  in the manner shown in the table below:

  • Servo red wire – 5V pin Arduino          
  • Servo brown wire – Ground pin Arduino          
  • Servo yellow wire – PWM(9) pin Arduino 

Caution: Do not try to rotate the servo motor by hand, as you may damage the motor.

 

 

Figure12: Wiring Diagram

Code

When the program starts, the servo motor will slowly rotate from 0 to 180 degrees, one degree at a time. When the motor has rotated 180 degrees, it will start rotating in the opposite direction until it reaches the home position.

#include              //Servo library
 
Servo servo_test;    		//initialize a servo object for the connected servo  
                
int angle = 0;    
 
void setup() 
{ 
  servo_test.attach(9); 		 // attach the signal pin of servo to pin9 of arduino
} 
  
void loop() 
{ 
  for(angle = 0; angle < 180; angle += 1) 	 // command to move from 0 degrees to 180 degrees 
  {                                  
    servo_test.write(angle);              	 //command to rotate the servo to the specified angle
    delay(15);                       
  } 
 
  delay(1000);
  
  for(angle = 180; angle>=1; angle-=5)     // command to move from 180 degrees to 0 degrees 
  {                                
    servo_test.write(angle);              //command to rotate the servo to the specified angle
    delay(5);                       
  } 

    delay(1000);
}

Ⅷ Control with  Raspberry Pi

In this tutorial, we will use the Raspberry Pi  to control a servo motor. Before we get to the servo, let's talk about PWM because it's the basis for controlling a servo motor.

 

8.1 PWM (Pulse Width Modulation)

PWM is an abbreviation for 'Pulse Width Modulation.' PWM is a technique for obtaining variable voltage from a steady power supply. Consider the circuit below to better understand PWM.

 

Figure13:PWM

 

In the figure above, if the switch is closed continuously for a period of time, the LED will be 'ON' during that time. If the switch is closed for half a second and then opened for the next half a second, the LED will be turned on only for the first half a second. The percentage of time the LED is on over the total time is known as the  Duty Cycle , and it can be calculated as follows:

 

Duty Cycle =Turn ON time/ (Turn ON time + Turn OFF time)

Duty Cycle = (0.5/ (0.5+0.5)) = 50%

As a result, the average output voltage will be 50% of the battery voltage.

When we increase the ON and OFF speed to a certain level, the LED will dim instead of being ON and OFF. This is because our eyes cannot clearly detect frequencies higher than 25Hz. Consider a 100ms cycle with an LED that is off for 30msec and on for 70msec. We will have 70% stable voltage at the output, so the LED will glow continuously at 70% intensity.

The Duty Ratio ranges from 0 to 100. '0' denotes complete inactivity, while '100' denotes complete activation. This Duty Ratio is critical for Servo Motor,  This Duty Ratio determines the position of the Servo Motor

 

8.2 Components Required

We're running Raspbian Jessie on a Raspberry Pi  2 Model B. All of the basic hardware and software requirements have already been discussed, and you can find them in the Raspberry Pi  Introduction; however, we will need:

Connecting pins

1000uF capacitor

SG90  Servo Motor 

Breadboard

 

8.3 Circuit Diagram

Figure14:Circuit Diagram

If A1000F is not connected across the +5V power rail, the  PI  may shut down unexpectedly while controlling the servo.

 

8.4 Working and Programming Explanation

Once everything is connected according to the circuit diagram, we can power on the  PI and begin writing the program in PYHTON.

We will go over a few commands that we will use in the PYHTON program.

We will import a GPIO file from the library, and the function below will allow us to program the GPIO pins on the PI. We're also renaming "GPIO" to "IO," so in the program, whenever we refer to GPIO pins, we'll say "IO."

import RPi.GPIO  as IO

When the GPIO pins that we are attempting to use are performing other functions. In that case, we'll get warnings while running the program. The following command instructs the PI to disregard the warnings and continue with the program.

IO.setwarnings(False)

We can refer to the GPIO pins of the PI by either their pin number on the board or their function number. On the board, for example, 'PIN 29' is 'GPIO5'. So we specify whether we want to represent the pin here by '29' or '5'.

IO.setmode (IO.BCM)

PIN39 or GPIO19 is selected as the output pin. This pin will provide PWM output.

IO.setup(19,IO.OUT)

After we have set the output pin, we must configure it as a PWM output pin.

p equals IO.

Power-Wave Modulation (PWM) (output channel, frequency of PWM signal)

The above command is for configuring the channel as well as the frequency of the channel." 'p' is a variable that could be anything. We'll use GPIO19 as the PWM "Output channel," and the "Frequency of PWM signal" will be 50, because the SG90's working frequency is 50Hz.

The command below is used to initiate PWM signal generation. 'DUTY CYCLE' is used to specify the 'Turn On' ratio, as previously explained.

p.start(DUTYCYCLE)

The following command is used to create a forever loop, which means that the statements inside the loop will be executed indefinitely.

 

8.5 Code

import RPi.GPIO  as IO        # calling for header file for GPIO’s of PI

import time                           # calling for time to provide delays in program

IO.setwarnings(False)          # do not show any warnings

IO.setmode (IO.BCM)            # programming the GPIO by BCM pin numbers. (like PIN29 as‘GPIO5’)

IO.setup(19,IO.OUT)             # initialize GPIO19 as an output

p = IO.PWM  (19,50)              # GPIO19 as PWM output, with 50Hz frequency

p.start(7.5)                             # generate PWM signal with 7.5% duty cycle

while 1:                                                       # execute loop forever                                    

        p.ChangeDutyCycle(7.5)                   # change duty cycle for getting the servo position to 90º

        time.sleep(1)                                      # sleep for 1 second

        p.ChangeDutyCycle(12.5)                  # change duty cycle for getting the servo position to 180º

        time.sleep(1)                                     # sleep for 1 second

        p.ChangeDutyCycle(2.5)                  # change duty cycle for getting the servo position to 0º

        time.sleep(1)                                     # sleep for 1 second

 

Ⅸ FAQ

1. Are servo motors AC or DC?

AC servo motors depend on an AC power source whereas DC Servo motors depend on DC power source (like Batteries). AC servo motors performance is dependent upon voltage as well as frequency whereas DC servo motors performance mainly relies upon voltage alone.

2. Can servo motors rotate 360?

The position of the servo motor is set by the length of a pulse. ... The end points of the servo can vary and many servos only turn through about 170 degrees. You can also buy 'continuous' servos that can rotate through the full 360 degrees.

3. Which motor is used in servo motor?

While the majority of motors used in servo systems are AC brushless designs, brushed permanent magnet motors are sometimes employed as servo motors for their simplicity and low cost. The most common type of brushed DC motor used in servo applications is the permanent magnet DC motor.

Kynix

Kynix was founded in 2008, specializing in the electronic components distribution business. We adhere to honesty and ethics as our business philosophy and have gradually established an excellent reputation and credibility in our international business. With the accurate quotation, excellent credit, reasonable price, reliable quality, fast delivery, and authentic service, we have won the praise of the majority of customers.

Join our mailing list!

Be the first to know about new products, special offers, and more.

Leave a Reply

We'd love to hear from you! Feel free to share your thoughts and comments below. Rest assured, your email address will remain private.

Name *
Email *
Captcha *
Rating:

Kynix

  • How to purchase

  • Order
  • Search & Inquiry
  • Shipping & Tracking
  • Payment Methods
  • Contact Us

  • Tel: 00852-6915 1330
  • Email: info@kynix.com
  • Follow Us

authentication

Kynix

© 2008-2026 kynix.com all rights reserved.