🚀 Robotik Projeler ve Yapım Rehberleri 📅 16 Ekim 2026

Arduino ile Robot Kol Yapımı ve Servo Motor Kontrolü

Arduino ve 4 adet servo motor ile 4 eksenli robot kol nasıl yapılır? Mekanik montaj, ters kinematik mantığı, joystick kontrolü ve tam kodlar.

Arduino ile Robot Kol Yapımı ve Servo Motor Kontrolü

Endüstriyel robotik dendiğinde zihnimizde canlanan ilk görüntü; otomobil fabrikalarında devasa parçaları milimetrik hassasiyetle kaynaklayan, boyayan veya montajlayan çok eksenli **Robot Kollardır (Robotic Arm)**. İnsan kolunun omuz, dirsek, bilek ve parmak hareketlerini taklit eden bu eklemli mekanizmalar, otomasyon dünyasının omurgasıdır.

Bu kapsamlı rehberde; Arduino Uno, 4 adet servo motor ve akrilik/ahşap parçalar kullanarak masaüstü boyutunda **4 Eksenli (4 DOF) bir Robot Kolun** mekanik montajını, harici güç bağlantılarını, joystick ile manuel kontrolünü ve kodlama mimarisini adım adım inceliyoruz.

---

1. 4 Eksenli Robot Kolun Anatomisi ve Eklemleri

İnşa edeceğimiz robot kol 4 serbestlik derecesine (Degree of Freedom - DOF) sahiptir:

1. **Taban Eksen (Base / Gövde Dönüşü):** Robot kolu sağa ve sola 180 derece döndüren zemin servosu.

2. **Omuz Eksen (Shoulder):** Kolun gövdesini ileri ve geri yatıran ana taşıyıcı servo.

3. **Dirsek Eksen (Elbow):** Ön kolu yukarı ve aşağı hareket ettiren uzanma servosu.

4. **Kıskaç Eksen (Gripper / Tutucu Parmak):** Nesneleri kavramak ve bırakmak için açılıp kapanan uç eyleyici servo.

---

2. Gerekli Malzemeler Listesi

| Malzeme | Adet | Açıklama |

|---|---|---|

| **Arduino Uno R3** | 1 | Ana kontrol kartı |

| **4 Eksenli Pleksi Robot Kol Şasisi (Kit)** | 1 | Lazer kesim gövde, vidalar ve kıskaç mekanizması |

| **SG90 veya MG90S Metal Dişli Servo Motor** | 4 | Eklemleri hareket ettiren motorlar (Omuz için MG90S önerilir) |

| **2 Eksenli Analog Joystick Modülü** | 2 | Robot kolu elle kumanda etmek için 2 adet kol |

| **5V 2A Harici Güç Adaptörü veya Pil** | 1 | Servoları beslemek için bağımsız güç kaynağı |

| **Breadboard ve Çoklu Jumper Kablolar** | 1 | Bağlantılar ve ortak GND için |

---

3. Donanım Güvenliği: Neden Kesinlikle Harici Güç Kullanılmalı?

4 adet servo motor aynı anda hareket ettiğinde ve bir nesneyi havaya kaldırdığında çektikleri toplam anlık akım **1.5 ile 2.5 Amper** seviyesine ulaşır.

  • Arduino'nun dahili 5V regülatörü maksimum **500 mA** verebilir.
  • Eğer 4 servoyu doğrudan Arduino'dan beslemeye çalışırsanız kart saniyeler içinde aşırı ısınıp kendini resetler veya yanar.
  • **Altın Kural:** 4 servonun kırmızı (+5V) ve kahverengi (GND) kabloları harici 5V 2A adaptöre bağlanmalı; adaptörün eksi kutbu ise Arduino'nun GND pinine bağlanarak referans voltajı eşitlenmelidir!
  • ---

    4. Devre Bağlantı Şeması

    A. Servo Motor Sinyal Pinleri:

  • **Taban Servosu (Base):** Arduino Dijital Pin 9
  • **Omuz Servosu (Shoulder):** Arduino Dijital Pin 10
  • **Dirsek Servosu (Elbow):** Arduino Dijital Pin 11
  • **Kıskaç Servosu (Gripper):** Arduino Dijital Pin 6
  • B. Joystick Bağlantıları:

  • **1. Joystick (Taban ve Omuz İçin):** X Ekseni -> **A0**, Y Ekseni -> **A1**
  • **2. Joystick (Dirsek ve Kıskaç İçin):** X Ekseni -> **A2**, Y Ekseni -> **A3**
  • ---

    5. Tam ve Çalışan Arduino C++ Kodları

    Aşağıdaki kod, joystick kollarını bıraktığınızda servoların en son açıda sabit kalmasını sağlayan kararlı "pozisyon korumalı" yazılımdır:

    /*
     * RobotKodla.com - Robot Kol Kontrolü
     * 2 Adet Joystick ile 4 Eksenli Robot Kol
     */
    
    #include <Servo.h>
    
    Servo tabanServo;
    Servo omuzServo;
    Servo dirsekServo;
    Servo kiskacServo;
    
    // Başlangıç açıları (Derece)
    int tabanAci  = 90;
    int omuzAci   = 90;
    int dirsekAci = 90;
    int kiskacAci = 45;
    
    void setup() {
      tabanServo.attach(9);
      omuzServo.attach(10);
      dirsekServo.attach(11);
      kiskacServo.attach(6);
    
      // Servoları başlangıç pozisyonuna getir
      tabanServo.write(tabanAci);
      omuzServo.write(omuzAci);
      dirsekServo.write(dirsekAci);
      kiskacServo.write(kiskacAci);
      delay(1000);
    }
    
    void loop() {
      // Joystick verilerini oku (0 - 1023 arası)
      int joy1X = analogRead(A0);
      int joy1Y = analogRead(A1);
      int joy2X = analogRead(A2);
      int joy2Y = analogRead(A3);
    
      // Taban Kontrolü (Joy1 X)
      if (joy1X < 400 && tabanAci > 0)   tabanAci -= 2;
      if (joy1X > 600 && tabanAci < 180) tabanAci += 2;
    
      // Omuz Kontrolü (Joy1 Y)
      if (joy1Y < 400 && omuzAci > 15)   omuzAci -= 2;
      if (joy1Y > 600 && omuzAci < 165)  omuzAci += 2;
    
      // Dirsek Kontrolü (Joy2 Y)
      if (joy2Y < 400 && dirsekAci > 15)  dirsekAci -= 2;
      if (joy2Y > 600 && dirsekAci < 165) dirsekAci += 2;
    
      // Kıskaç Kontrolü (Joy2 X)
      if (joy2X < 400 && kiskacAci > 10)  kiskacAci -= 3; // Kapat
      if (joy2X > 600 && kiskacAci < 90)  kiskacAci += 3; // Aç
    
      // Yeni açıları motorlara uygula
      tabanServo.write(tabanAci);
      omuzServo.write(omuzAci);
      dirsekServo.write(dirsekAci);
      kiskacServo.write(kiskacAci);
    
      delay(25); // Yumuşak ve sinematik hareket hızı
    }

    ---

    6. Mekanik Montajda Dikkat Edilecek 3 Hayati Kural

    1. **Servoları Monte Etmeden Önce Sıfırlayın:** Robot kol parçalarını vidalamadan önce servoları Arduino'ya bağlayıp `write(90);` komutuyla tam orta noktaya getirin. Orta noktayı ayarlamadan monte ederseniz kol mekanik sınırlarına çarpıp dişlilerini kırabilir.

    2. **Kablo Gerilimini Kontrol Edin:** Kol en uç noktaya uzandığında kıskaç servosu kablolarının gerilip çıkmayacak kadar payı olmalıdır.

    3. **Ağırlık Dengesi:** Robot kol tabanını ağır bir ahşap plakaya vidalamak, kol uzandığında devrilmesini engeller.

    ---

    7. Kapsamlı Sıkça Sorulan Sorular (SSS)

    Robot kol bir nesneyi tuttuğunda neden titriyor?

    Taşınan nesne SG90 motorun tork kapasitesinden (yaklaşık 1.6 kg/cm) ağır geldiğinde motor zorlanır. Özellikle taban ve omuz gibi yük taşıyan eklemlerde metal dişlili **MG90S** kullanmak titremeyi tamamen çözer.

    Kolun hareketlerini kaydedip otomatik tekrarlatabilir miyim?

    Evet! Arduino'nun EEPROM hafızasına belirli aralıklarla açıları kaydeden bir "Öğrenme Butonu" ekleyerek, kolu önce elle hareket ettirip ardından bu hareketleri sonsuz döngüde otomatik tekrarlayan bir endüstriyel robot simülasyonu yapabilirsiniz.

    ---

    ---

    8. Ters Kinematik (Inverse Kinematics) Mantığına Giriş

    Basit robot kollarda her servonun açısı elle belirlenir (İleri Kinematik). Ancak endüstriyel robotlarda operatör eklemlerin açısıyla uğraşmaz; sadece *"Kıskaç X=15cm, Y=10cm, Z=5cm koordinatına gitsin"* der.

  • **Ters Kinematik (IK):** Uç noktanın (kıskacın) uzaydaki hedef koordinatına ulaşabilmesi için omuz, dirsek ve taban açılarının kaç derece olması gerektiğini trigonometrik formüllerle (sinüs ve kosinüs teoremleri) geriye doğru hesaplayan matematiksel modeldir.
  • Arduino'da temel trigonometrik fonksiyonlar (`atan2`, `acos`) kullanılarak 2 boyutlu düzlemde basit bir ters kinematik algoritması başarıyla kodlanabilir.
  • ---

    9. Kapsamlı Sıkça Sorulan Sorular (SSS)

    Robot kolun kaldırabileceği maksimum ağırlık nedir?

    SG90 mikro servolarla yapılan standart bir pleksi robot kol yaklaşık **50-80 gram** ağırlığındaki hafif nesneleri (ponpon top, küçük pil, silgi) rahatça taşır. Metal dişlili MG90S veya MG996R motorlar kullanıldığında ise taşıma kapasitesi **300-500 grama** kadar çıkar.

    Robot kola kamera takarak renk ayırt etme yaptırabilir miyiz?

    Evet! Robot kolun yanına yerleştirilecek bir bilgisayar kamerası veya OpenCV destekli Raspberry Pi ile nesnelerin rengi (örneğin kırmızı ve mavi küpler) algılanıp koordinatları Arduino'ya gönderilerek otomatik nesne ayrıştırma (Pick and Place) sistemi kurulabilir.

    ---

    Sonuç

    Arduino ile 4 eksenli robot kol yapmak; kinematik hesaplamaların, mekanik tasarımın ve çoklu aktüatör kontrolünün zirve noktasıdır. Detaylı yapım şablonları ve 3D baskı dosyaları için sitemizin [Robotik Projeler](/projeler) sekmesini ziyaret edebilirsiniz!