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.
---
4. Devre Bağlantı Şeması
A. Servo Motor Sinyal Pinleri:
B. Joystick Bağlantıları:
---
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.
---
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!