Arduino ile Servo Motor Kullanımı - Tarama yapma (Arduino Örnekleri)

Merhaba bugün robotikte çok kullanılan motor türü olan servo motorlardan ve bu motorların Arduino ile kontrolünden bahsedeceğim. 
SG 90 Servo Motor


Yukarıda  en ucuz servo motor resmi kullanılmış, bu motor ucuzdur ancak plastik olduğu için pek bir yük kaldıramaz ama bu işlere yeni başlayanlar genelde bu motoru alırlar kararı size bırakmakla birlikte bir kaç dolar daha verip biraz daha sağlamını almanızı öneririm. Tabi bu servo ile de yapılan güzel projeler mevcut bir kaç örneğini de siteye ekleyeceğim zaman içinde.

Servo motorlar çarklardan ve içindeki sürücüden oluşur. Ayrı bir sürücü kullanmak zorunda değilsiniz. Bazı üst düzey servolar ki akıllı servolar olarakta anılırlar geri bildirim birimi de içerir yani o anki iç sıcaklık, tork, çektiği enerji ve pozisyonu gibi bilgileri kullanıcıya iletir, üst düzey projelerde akıllı servo kullanımı yaygındır.


Servolarda dikkat edilmesi gereken bazı noktalar var, en önemlisi servoların hemen hemen hepsinin belli bir açı sınırı vardır ucuz servolarda bu sınır 180 derece dense de tam olarak 180 dönmemektedirler tabi "servo hack" denilen bir olayla servolar sınırsız açı ile dönebilirler ancak bu zamanda istediğiniz pozisyona getiremezsiniz yani normal dc motor gibi davranırlar. Pahalı servolarda servoyu bozmadan tekerlek gibi kullanım özellikleri var bunu da belirteyim. Servolar hakkında bu kadar bilgi şimdilik yeter  Artık servo moturu Arduino ile kullanma zamanı.



Devre şeması yanda gözüküyor zaten 3 kablo olduğu ve sürmek için gerekli elemanlar servo motorun içinde olduğu için devre kolay. Siyah veya kahverengi olan kablo GND kablosudur, kırmızı ise 5V kablosudur ve bu renkler genelde servo dışında da bu şekilde kullanılır. Diğer renkli olan kabloda(sarı, turuncu, beyaz  olabilir) sinyal kablosudur ve Arduino nun digital pinlerinden birine bağlanır. Örnekte ben Arduino nun 9. pinine bağladım. Detaylı resim aşşağıda.

Devre bağlandıktan sonra sıra kod işine geliyor detaylı açıklamaları kodun içinde yapacağım. Dikkat etmemiz gereken servo kendine ait bir kütüphaneye sahip ve bu kütüphane Arduino yanında gelmektedir tekrar indirmeye gerek yok.

#include <Servo.h> //kütüphanemizi ekliyoruz, Taslak > kütüphaneyi içe aktar > Servo   yolu ilede eklenebilir.


int servoPin = 9; // Servonun bağlı olduğu pini ekliyoruz


Servo servo;      // Kütüphane sayesinde Servo adlı bir değişken oluyor ve tıkpı int, float gibi tanımlanıyor biz burada servo olarak adlandırıyoruz.


int aci;            // açı değerimizi tutacak integer türünde değişken oluşturuyoruz
 
void setup() 
{ 

  servo.attach(servoPin);  // .attach komutu ile servoyu ekliyoruz
 
 servo.write(0);      // bazı servolar ilk başta saçma sapan hareket yapar yada belirsiz bir konumda başlar bunu önlemek için .write komutu ile servo açısını 0 yapıyoruz.
  
  delay(1000);         //Servonun kendisine gelmesi için bekliyoruz bu süre sizin servonuza göre değiştirilebilir. 
 
// bu iki işlemi setup içinde yapıyoruz çünkü devreye elektrik deldiğinde sadece birkere çalışması yeterli eğer loop içinde olsa 
// her turda servo 0 derece olucak ve 1 sn bekliyecek
} 
 
void loop() 
{
  //Tarama hareketi için iki for döngüsü yazıyoruz burada servonun en fazla 180 derece gittiği varsayıldı farklı değerler için 180 değeri değiştirilebilir
 
 for(aci=0;aci<=180;aci++){ // açımız 0 olduğunda 180 dereceye kadar bir bir artacak 
    servo.write(aci); // ve bu değer servoya yazılarak servonun hareketi sağlanacak
    delay(25);        // araya çok az bir bekleme koyuyoruz ki sistem saçmalamasın 
  }
   for(aci=180;aci>=0;aci--){ // açımız 180 olduğunda 0 dereceye kadar bir bir azalacak
    servo.write(aci);  // bu değer servoya yazılacak
     delay(25);        //tekrar her derece arasında kısa bir süre beklenecek 
 } 
}

1 yorum: