Arduino Devreleri #43 Arduino İle Servo Motor Uygulamaları
Merhabalar, bu yazımızda Arduino İle Servo Motor Uygulamaları hakkında bilgi vereceğim. Servo Motor Nedir? Nasıl çalışır? Servo motor iç yapısı nasıldır? Servo motor ile ne kadar yük kaldırılır? Servo motor nerelerde kullanılır? bunlar hakkında bilgilendirme yapacağım.
Arduino programı ayrıntılı kod kısmı, devre bağlantı şeması, devre kurulumu detaylı anlatımı ve devre çalışma videosu şu şekildedir.
Servo Motor:
Servo motorlar, 0 ila 180 derece arasında 1 derece hassasiyetle dönebilen motorlardır. DC motorlardan farklı olarak istediğimiz pozisyonda sabit kalacak şekilde tasarlanmış motorlardır. Bu özellikleri nedeniyle birçok projede kullanılmaktadır. Servo motorlar, robot teknolojilerinde en çok kullanılan motor çeşidi olmakla birlikte, RC (Radio Control) uygulamalarda da kullanılmaktadırlar. Uzaktan kumandalı arabamızın direksiyonunda, dronların pervanelerine açı vermede, 3D yazıcılarda ve robot kolların hareket ettirilmesinde sıklıkla kullanılırlar.
Servo Motor Çalışma Prensibi:
Servo motorların içerisinde motorun hareketini sağlayan bir DC motor bulunmaktadır. Bu motorun dış kısmında bir dişli mekanizması, potansiyometre ve bir motor sürücü devresi vardır. Potansiyometre, motor milinin dönüş miktarını ölçmektedir. Servo içerisindeki DC motor hareket ettikçe potansiyometre döner ve kontrol devresi motorun bulunduğu pozisyon ile istenilen pozisyonu karşılaştırarak motoru döndürme işlemi yapar. Yani, servo motorlar, diğer motorlar gibi harici bir motor sürücüye ihtiyaç duymadan çalışmaktadırlar. DC motorun ucuna bağlı dişli sisteminin yardımıyla servo mili daha fazla yük kaldırabilmektedir. Bu işlem sırasında servo motorun dönüş hızı da yavaşlamış olur. Kullanılan dişli sistemine göre servo motorların kaldırabileceği yük değişir.
Servo motorların kaldırabileceği yük, tork gücü olarak ifade edilir. Servo motorların torku, motor miline bağlı 1 cm uzunluğundaki çubuğun kaldırabileceği maksimum yük miktarını ifade eder. Arduino için piyasada bulunan servo motorlar genellikle 1.3 kg/cm torka sahiptir. Bu şunu ifade eder. Motor miline bağlı 1 cm uzunluğundaki çubuğun ucuna bağlı yük en fazla 1,3 kilogram olacaktır. 1,3 kilogram üzeri motorun gücü, mili döndürmeye yetmez. Eğer mile bağlı çubuğun uzunluğu 10 cm ise en fazla 130 gram yük kaldırabilirsiniz diyebiliriz.
Servo motorların dönme açıları 180 derece ile sınırlıdır fakat 360 derece çalışma açısına sahip özel amaçlı servo motorlar da vardır. Servo motorlar genellikle 4.8 – 6V gerilim ile çalışmaktadırlar. 7.4V ve daha yüksek gerilimle çalışan servo motorlar da bulunmaktadır.
Motorun yazılımsal olarak dönme açısı, PWM (Pals Genişliği Modülasyonu) adı verilen özel kare dalga sinyalleri ile belirlenir. Kare dalga 1 konumunda iken (5 Volt) motora güç gider. 0 konumuna geldiğinde ise (o volt) motora güç gitmez ve olduğu konumda sabit kalır. Kara dalga sinyalin 5 Volt süresi, 1 ms ile 2 ms arasındaki değişim gösterdiğinde servo motorda bu değişim 0° ile 180° arasındaki açıya denk gelmektedir. Servo motor boşta enerjili iken 10 mA, hareket hâlindeyken 100 mA ila 250 mA arası akım çeker.
Servo motorun üç adet bağlantı kablosu bulunmaktadır. Bu kablolar genellikle kırmızı, turuncu (bazen sarı) ve kahverengi (bazen siyah) olmaktadır. Kırmızı renk kablo Arduino’nun 5V pinine, kahverengi kablo Arduino’nun GND pinine, turuncu kablo ise Arduino’nun PWM çıkışları olan 3, 5, 6, 9, 10 veya 11 numaralı pinlerinden birisine bağlanır.
NOT: Kod bölümü içerisinde yer alan ve // işareti ile başlayan satırlar açıklama satırlarıdır. O satırdaki kod bloğunun ne anlama geldiği ve nasıl çalıştığı ile ilgili bilgi verir. Arduino // işaretli alanı çalıştırmaz. Kod satırından isterseniz // işaret ile başlayan açıklama satırlarını silebilirsiniz.
SERVO MOTORU 90 DERECE DÖNDÜRME
KOD BÖLÜMÜ:
//Servo Motor 90 Derece Döndürme
#include<Servo.h> //Servo motor çalışması için gerekli kütüphane dosyasını ekledik.
Servo motor; //motor adında bir servo nesnesi oluşturduk.
void setup()
{
motor.attach(9); // Servo motorun data pinini Arduino 9 numaralı pine bağladık.
}
void loop()
{
motor.write(90); // Servo motora açı değeri olarak 90 dereceye döndürdük.
}
//Açıklama:
//Devreye bir kere enerji verdiğinizde servo motor 90 derece dönecektir.
//Tekrar 90 derece döndürmeyi test etmek için 90 değeri yerine 0 girerek servo motoru eski haline getirmeliyiz.
//Sonra tekrar 90 veya başka bir değer girerek servo motoru farklı açıda döndürebiliriz.
DEVRENİN ÇALIŞMASI:
Devreye enerji verdiğimizde servo motor bulunduğu konumdan 90 derece hareket edecektir. Burada 90 değeri yerine 0 -180 arasında sayı değerleri girerek devrenin çalışmasını bu şekilde de test edebilirsiniz.
DEVRE BAĞLANTI ŞEMASI:
DEVRE KURULUMU:
Malzemeler:
Arduino Uno
1 adet SG90 Servo Motor
3 adet iki ucu erkek jumper kablo
Servo motorun kırmızı uç çıkışına (+), jumper kablo bağlanarak kablonun diğer ucu Arduino’nun +5 Volt pinine, servo motorun kahverengi uç çıkışına (-), jumper kablo bağlanarak kablonun diğer ucu Arduino’nun GND pinine, servo motorun turuncu uç çıkışına (data) jumper kablo bağlanarak kablonun diğer ucu Arduino’nun 9 numaralı PWM dijital girişine bağlanarak devre tamamlanır.
SERVO MOTORU 0 – 90 – 180 DERECE DÖNDÜRME
KOD BÖLÜMÜ:
//Servo Motor 0 - 90 - 180 Derece Döndürme
#include<Servo.h> //Servo motor çalışması için gerekli kütüphane dosyasını ekledik.
Servo motor; //motor adında bir servo nesnesi oluşturduk.
void setup()
{
motor.attach(9); // Servo motorun data pinini Arduino 9 numaralı pine bağladık.
}
void loop()
{
motor.write(0); // Servo motora açı değeri olarak 0 dereceye döndürdük.
delay(1000);
motor.write(90); // Servo motora açı değeri olarak 90 dereceye döndürdük.
delay(1000);
motor.write(180); // Servo motora açı değeri olarak 180 dereceye döndürdük.
delay(1000);
}
DEVRENİN ÇALIŞMASI:
Devreye enerji verdiğimizde servo motor 1 sn aralıklarla 0 – 90 – 180 derece hareket edecektir.
DEVRE BAĞLANTI ŞEMASI:
Devre bağlantı şeması olarak yukarıdaki bağlantıyı kullanabilirsiniz.
SERVO MOTORU 180 DERECE SAĞA SOLA DÖNDÜRME
KOD BÖLÜMÜ:
//Servo Motor 180 Derece Sağa Sola Döndürme
#include <Servo.h>
Servo motor; // Servo için motor ismi tanımlandı
int derece = 0; // Servo motor başlangıç pozisyonu
void setup()
{
motor.attach(9); // Servo motor data pinini Arduino 9. pinine bağladık.
}
void loop()
{
for(derece = 0; derece <= 180; derece ++) // 0 ile 180 derece arası 1'er derece artarak ilerliyor
{
motor.write(derece); // Servo motor pozisyonu için
delay(30); // 30 milisaniye aralıklarla dönüş yapacak
}
for(derece = 180; derece>= 0; derece--) // 180 ile 0 derece arası 1'er derece azalarak geriliyor.
{
motor.write(derece);
delay(30);
}
}
DEVRENİN ÇALIŞMASI:
Devreye enerji verdiğimizde servo motor 200 milisaniye aralıklarla 0’dan 180 dereceye 1′ er derecelik açılarla hareket edecek ve tekrar 180 dereceden 0’a kadar 1′ er derecelik açılarla hareketine devam edecektir.
DEVRE BAĞLANTI ŞEMASI:
Devre bağlantı şeması olarak yukarıdaki bağlantıyı kullanabilirsiniz.
SERVO MOTORU POTANSİYOMETRE İLE 180 DERECE DÖNDÜRME
KOD BÖLÜMÜ:
//Servo Motoru Potansiyometre İle 180 Derece Döndürme
#include <Servo.h>
Servo motor; // servo için motor ismini verdik
int potpin = A0; // Potansiyometreyi Arduino da bağladığımız pini tanımladık.
int potdeger; // Analog pinden değeri okumak için oluşturduğumuz değişken
void setup()
{
motor.attach(9); // Servo motoru Arduino 9 no'lu pine bağladığımızı belirttik.
}
void loop()
{
potdeger = analogRead(potpin); // potansiyometre değerini okur (0 ile 1023 arasındaki değer)
potdeger = map(potdeger, 0, 1023, 0, 180); // Servo motoru hangi derece arasında döndüreceğimizi belirler (değer 0 ile 180 arasında)
motor.write(potdeger); // Servo pozisyonunu ölçeklendirilen değere göre ayarlar.
delay(15); // Servonun pozisyonuna ulaşması için 15ms bekler
}
//Açıklama:
//Potansiyometreyi sağa çevirdiğinizde servo motor sola dönüyorsa,
//Potansiyometreyi bağladığınız + ve - uçlarını yer değiştiriniz.
DEVRENİN ÇALIŞMASI:
Devrede potansiyometreyi baştan itibaren çevirdiğimizde servo motor 0’dan 180 dereceye kadar hareket edecektir. Potansiyometreyi ters yönde çevirdiğimizde ise servo motor 180 dereceden 0’a kadar hareket edecektir.
DEVRE BAĞLANTI ŞEMASI:
DEVRE KURULUMU:
Malzemeler:
Arduino Uno
1 adet SG90 Servo Motor
1 adet 10 KΩ potansiyometre
8 adet iki ucu erkek jumper kablo
Breadboard üzerinde boş bir alana potansiyometre yerleştirilir. Potansiyometrenin baştaki uçlarından bir tanesi breadboard’un alt şeridindeki artı bağlantı sırasına bağlanır. Potansiyometrenin diğer baştaki ucu, breadboard’un alt şeridindeki eksi bağlantı sırasına bağlanır. Potansiyometrenin orta ucu is,e Arduino üzerinde yer alan analog girişlerden A0 girişine bağlanır.
Servo motorun kırmızı uç çıkışına (+), jumper kablo bağlanarak kablonun diğer ucu breadboard’un alt şeridindeki artı bağlantı sırasına bağlanır. Servo motorun kahverengi uç çıkışına (-), jumper kablo bağlanarak kablonun diğer ucu breadboard’un alt şeridindeki eksi bağlantı sırasına bağlanır. Servo motorun turuncu uç çıkışına (data) jumper kablo bağlanarak kablonun diğer ucu Arduino’nun 9 numaralı PWM dijital girişine bağlanır. Breadboard artı şeridine bir kablo bağlanarak kablonun diğer ucu Arduino’nun +5 Volt pinine, breadboard eksi şeridine bir kablo bağlanarak kablonun diğer ucu Arduino’nun GND pinine bağlanarak devre tamamlanır.
Arduino İle Servo Motor Uygulamaları
Devre hakkında yorumlarınızı aşağıdaki yorum kısmına yazabilirsiniz. Youtube kanalımızda da mBlock ve Arduino ile ilgili ders videoları bulabileceksiniz. Youtube kanalıma abone olmayı da unutmayınız.
https://www.youtube.com/@candemirahmet
Yorum Yap