Servo Motor Control using Arduino
Servo Motor Interfacing with
Arduino Uno
In
this tutorial we are going to control a servo motor by ARDUINO UNO. Servo Motors are used where there is a need for
accurate shaft movement or position. These
are not proposed for high speed applications. These are proposed for low speed, medium torque
and accurate position application. These
motors are used in robotic arm machines, flight controls and control systems.
Servo
motors are available at different shapes and sizes. A servo motor will have mainly there wires, one is
for positive voltage another is for ground and last one is for position setting. The RED wire is connected to power, Black wire is
connected to ground and YELLOW wire is connected to signal.
A
servo motor is a combination of DC motor, position control system, gears. The position of the shaft of the DC motor is
adjusted by the control electronics in the servo, based on the duty ratio of
the PWM signal the SIGNAL pin.
Simply
speaking the control electronics adjust shaft position by controlling DC motor. This data regarding position of shaft is sent
through the SIGNAL pin. The position data to
the control should be sent in the form of PWM signal through the Signal pin of
servo motor.
The
frequency of PWM (Pulse Width Modulated) signal can vary based on type of servo motor. The important thing here is the DUTY RATIO of the
PWM signal.
Based on this DUTY RATION the
control electronics adjust the shaft.
As shown
in figure below, for the shaft to be moved to 9o clock the TURN ON RATION must
be 1/18.ie. 1ms of ON time and 17ms of OFF time in a 18ms
signal.
For
the shaft to be moved to 12o clock the ON time of signal must be 1.5ms and OFF time should be 16.5ms. This
ratio is decoded by control system in servo and it adjusts the position based
on it. This PWM in here is generated by using
ARDUINO UNO.
Circuit Components
Hardware: ARDUINO UNO, power supply (5v),
100uF capacitor , buttons (two
pieces), 1KΩ resistor (two pieces),
Servo motor (which needed to be tested).
Software: arduino IDE (Arduino nightly).
Circuit Diagram and Explanation
In
normal cases we need to go to the registers of controller for adjusting the
frequency and for getting required duty ratio for accurate position control of
servo, in ARDUINO we don’t have
to do those things.
In
ARDUINO we have predefined libraries, which will set the frequencies and duty
ratios accordingly once the header file is called or included. In ARDUINO we simply have to state the position of
servo that needed and the PWM is automatically be adjusted by UNO.
The
things which we need to do for getting accurate position of servo are:
1.
#include <Servo.h>
2.
Servo sg90servo;
3.
Sg90.attach(servo_signal_pin_attached_to);
4.
Sg90.write(needed_position_ angle);
|
First
we need to set frequency of PWM signal and for that we should call “#include <Servo.h>” header
file, on including this header file in the program, the frequency gets set
automatically and we get to use some special conditions, which enables the user
to enter needed position of servo directly without any fuzz.
Now we
need to define a name for the servo “Servo
sg90sevo”, here ‘sg90servo’ is the name chosen, so while writing for potion we
are going to use this name, this feature comes in handy when we have many
servos to control, we can control as many as eight servo by this.
Now we
tell the UNO where the signal pin of servo is connected or where it needs to
generate the PWM signal. To do this we have “Sg90.attach(3);”, here we are telling the UNO we connected the
signal pin of servo at PIN3.
All
left is to set the position, we are going set the position of servo by using “Sg90.write(30);”, by this command the servo hand moves 30 degrees,
so that’s it. After
that whenever we need to change the position of servo we need to call the
command ”Sg90.write(needed_position_ angle);”. In
this circuit we will have two buttons one button increases the position of
servo and the other is for decreasing the position of servo.
The Servo motor
control with Arduino Uno is explained in step by step of C code given
below.
Demo & Code
Servo Motor Control using Arduino
Reviewed by XXX
on
สิงหาคม 27, 2560
Rating:
ไม่มีความคิดเห็น