Arduino ile Servo Motor Kullanımı
Bu yazıda arduino ile servo motor kullanımını, arduino servo motor bağlantısını ve servo motor arduino kodlarını inceleyeceğiz.
Servo motor nedir?
Servo motorlar arduino projelerinin en çok kullanılan motor çeşitlerinden bir tanesidir. Servo motorlar genellikle 0 ile 180 derece arasında hareket edebilen motorlardır. Aynı zamanda 360 derece dönüş yapan çeşitleri de bulunmaktadır. Hem uygun fiyatı, hem de hafif olması sebebiyle SG90 servo motorlar arduino projelerinin en çok kullanılan servo motor çeşitidir. Biz de bu örnek için SG90 modelini kullanacağız.
Videolu anlatım için tıklayın…
Servo motor arduino bağlantısı nasıl yapılır?
Servo motorların 3 renk kablosundan kırmızı olan 5V kablosu arduino 5V pinine, kahverengi kablosu arduino Gnd pinine ve turuncu kablosu arduino pwm özellikli 3,5,6,9,10 ve 11 numaralı pinlerden birine bağlanmalıdır.

arduino-servo-motor
Servo motor arduino bağlantısını aşağıdaki şemayı inceleyerek yapabilirsiniz.
arduino-ile-servo-motor-bağlantısı
Şimdi servo motor arduino kodlarını inceleyelim.
Servo motor arduino kodları nasıl yazılır?
Arduino ile servo motor kontrolü için kodların en başına servo.h kütüphanesini eklememiz gerekmektedir. Servo.h kütüphanesi arduino program kurulumunda otomatik olarak kütüphane klasörüne eklenen bir kütüphane dosyasıdır. Bu nedenle #include<Servo.h> kodu ile direk kodlara ekleyebilirsiniz.
Bu kütüphaneyi eklediğinizde;
Servo motor_ismi; kodu ile arduinoya bağladığınız servo motora bir isim vererek kodlama içinde kolaylıkla kullanabilirsiniz.
motor_ismi.attach(pwm pin numarası); kodu ile yukarıdaki kod ile isim verdiğimiz servo motoru arduinoya bağladığımız pin numarasını belirtiyoruz. Örneğin; servo motora servo1 adını verdiniz ve 5 numaralı pwm pinine bağladınız. Bu durumda kodlar şu şekilde olmalıdır.
|
1 2 3 4 5 6 7 |
#include<Servo.h> Servo servo1 void setup() { servo1.attach(5); } |
Tanımlamaları yaptıktan sonra servo1.write(açı_değeri); kodu ile servo motoru 0-180 derece arasında istediğimiz bir açı değerine dönmesini sağlayabiliriz.
Kodları toparladığımızda aşağıdaki gibi olmalıdır.
|
1 2 3 4 5 6 7 8 9 10 11 |
#include<Servo.h> Servo servo1; int aciDegeri=90; void setup() { servo1.attach(5); } void loop() { servo1.write(aciDegeri); } |
Bu kod ile açı değeri değişkeninin değerini 0 ile 180 derece arasında değiştirerek servo motoru farklı açı değerlerinde döndürebilirsiniz.
Şimdi hazırlayacağımız kod ile servo motoru 0’dan 180’e kadar, sonra 180’den 0’a kadar sürekli döndüren bir kod hazırlayalım.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include<Servo.h> Servo servo1; int aci; void setup() { servo1.attach(5); } void loop() { for(aci=0;aci<=180;aci+=1){ servo1.write(aci); delay(100); } for(aci=180;aci>=0;aci-=1){ servo1.write(aci); delay(100); } } |
Kodları incelersek;
|
1 2 3 4 |
for(aci=0;aci<=180;aci+=1){ servo1.write(aci); delay(100); } |
Yukarıdaki koddaki for döngüsü ile açı değeri 0’dan başlayarak 180 olana kadar açı değerini 1’er arttırdık ve servo 1 isimli motora açı değeri olarak yazdırdık. Bu kod çalıştığında servo motor 0 dereceden başlayarak 180 dereceye kadar 1 derece farkla dönmeye başlayacaktır. 180 dereceye ulaştığında alttaki kod çalışacaktır.
|
1 2 3 4 |
for(aci=180;aci>=0;aci-=1){ servo1.write(aci); delay(100); } |
Bu kodda ise servo motor açı değeri 180’den başlayarak 1 dereceye kadar 1’er azalıyor. Bu sayede servo motor sürekli 0-180 derece arasında 1 derece değişimle hareket edecektir.
Servo motorun daha hızlı hareket etmesi için for döngüleri içindeki aci+=1 ve aci-=1 kodlarındaki 1 sayısının artırdığınızda motor daha hızlı hareket edecektir.
Bu yazıda arduino ile servo motor kullanımı için gerekli bağlantıları ve arduino servo kodlarını inceledik.
İLGİLİ YAZI: Arduino Joystick ile İki Servo Motor Kontrolü
Konuyla ilgili soru, görüş ve önerilerinizi yorumlar bölümünden yazabilirsiniz.
Yeni yazılardan haberdar olmak için arduinomedia facebook sayfamızı takip edebilirsiniz.
https://www.facebook.com/arduinomedia/
Bir sonraki dersimizde görüşmek dileğiyle…


Teşekkürler çok yardımcı oldunuz
Lütfen cevaplayın. Gücü kesip tekrar verdiğim anda ki motorun derecesini alma imkanımız varmı
Motorun son acı değerini Arduino kalıcı hafızası olan eprom a kayıt edebilirsiniz. Oradaki veriler elektrik kesilse de silinmeyecektir. Arduino eprom araması ile detaylı bilgiye ulaşabilirsiniz.
iki arduino kullanırsan yaparsın tekiyle olmayabilir
Lütfen cevaplayın. Acaba 1 ardunioya en fazla kaç adet servo motor kullanabiliriz
Kullamdığınız arduino modeline göre değişir. Yani uno ve nano modelinde pwm pinleri kadar bağlarsınız. Mega modelinde daha çpk pwm pini olduğundan daha çok servo bağlayabilirsiniz.
Gnd pinleri aynı değil mi?
breadboard kullanırsan sınırsız sadece arduino diyosan 6
lütfen cevaplayın.Acaba servo motoru durmadan döndürmek mümkünmü
Nasıl durdurmadan
Maalesef mümkün değil
360ve 180 derece dönen servolar için kodlar aynı mıdır?
Evet
Motoru saat şeklindeki bir dairenin ortasına yerleştireceğim. Arduino ile 12 farklı anahtar bağlayıp 1 nolu anahtata basınca pervanesinin saat 1’i, 8 nolu anahtata basınca pervanesinin saat 8’i… vb göstermesini istiyorum. Yapılabilir mi?
güzel kod
Arduino megaya 4 adet 13 kg 360 derece servo motor bağladım fakat galiba güç yetersiz kalıyor.kullandığım adaptör 12v 1 A
Merhaba, bu bağlantıyı çalışır bir cihaza bağlarken elektrik önce neye gelmeli? Arduinoya mi yoksa motora mi?
arduinoya
lütfen cevaplayın . servo motor ile güneş paneline bağlayıp döndürme yapılabilir mi yani güneş ısısından perde kapanacak ısı gidince açılacak geri ileri tarzında olur mu
Merhaba.Servo motorlar 0-180 derece arasında dönüş yapar yani yarım tur. Bunun yerine step motorlar kullanılabilir. LDR ışık sensörü ile havanın aydınlık durumuna göre veri alıp perdeyi step motorlar kullanarak açıp kapatabilirsiniz.
servo motorda kahverengi kablo yani topraklama yerinden çıktı aynı yerine koymak için nasıl bir yöntem kullanmalıyız
Motorun içini söküp yeniden lehim yapmak gerekebilir