
Arduino ile servo motor hız kontrolü, iki farklı dünyayı kapsar:
Hobi tipi RC servo (50 Hz PWM, 1–2 ms darbe)
Endüstriyel servo motor + sürücü (pulse/dir, 0–10 V, fieldbus).
Aşağıda her iki yaklaşımı da donanım bağlantıları, örnek kodlar, dikkat edilmesi gerekenler ve ölçeklenebilir mimarilerle birlikte anlatıyorum. İçerik, “servo motor hız kontrolü”, “Arduino servo kontrol”, “endüstriyel servo sürücü” gibi aramalara uygun SEO yapısı gözetilerek hazırlanmıştır.
RC servo, istenen konumu 50 Hz sinyal üzerinde 1–2 ms darbe genişliğiyle alır. Doğrudan “hız komutu” yoktur; hızı, konumu küçük adımlarla ve zaman gecikmeleriyle değiştirerek yönetiriz.
Arduino (Uno/Nano/MEGA)
5 V harici besleme (en az 1–2 A; servo akımı Arduino 5 V’undan beslenmemeli)
Ortak toprak (GND) bağlantısı
Gerekirse EMI için ferrit halka
Servo kahverengi/siyah → GND
Servo kırmızı → 5 V harici adaptör
Servo sinyal (genelde sarı/turuncu) → Arduino dijital pin (örn. D9)
Harici 5 V GND ↔ Arduino GND ortaklanmalı
Not: Hızı daha hassas kontrol etmek için delay() yerine millis() tabanlı zamanlayıcı ve ivmelenme (acc/dec) profili ekleyin.
Endüstriyel sürücüler tipik olarak üç yöntemden biriyle hız/konum kontrolü alır:
Pulse/Dir (Step/Direction) modu
0–10 V analog hız referansı
Haberleşme (RS-485/Modbus, CANopen, EtherCAT vb.)
Arduino (Uno yeterli ama yüksek frekans ve çok eksen için MEGA/Teensy önerilir)
Sürücünün “PUL+/PUL-” ve “DIR+/DIR-” girişleri
Optokuplörlü girişler için akım sınırlama ve doğru polarite
Ortak referans/COM ve GND planı
Ekranlı (shielded) kablo, ayrı güzergâhta encoder kablosu
Arduino D2 → PUL+ (veya opto sürücü kartına)
Arduino GND → PUL- / ortak referans
Arduino D3 → DIR+
Arduino GND → DIR-
Sürücü giriş tipine göre PNP/NPN uyumunu üretici dokümanından seçin.
İpuçları
Yüksek hız ve kararlı frekans için donanımsal timer veya FreqMeasure/TimerOne benzeri kütüphaneler kullanın.
Çok eksende senkron hareket gerekiyorsa hız profilleri ortak bir zaman tabanı üzerinden hesaplanmalı.
Encoder geri beslemeyi Arduino’da okuyup takip hatası izleyerek güvenlik sınırları koyabilirsiniz.
Birçok sürücü 0–10 V analog girişten hız komutu alır. Arduino’nun DAC’ı yoktur; PWM → RC filtre → op-amp ile 0–10 V üretilebilir veya PWM-to-Voltage dönüştürücü modül kullanılabilir.
Arduino PWM çıkışı (örn. D5)
RC düşük geçiren filtre (örn. 10 kΩ + 1 µF başlangıç için)
Rail-to-rail op-amp ile 0–5 V → 0–10 V yükseltme
Ortak GND ve gölgeleme
Notlar
RC sabiti (R*C) sürücünün örnekleme hızına göre seçilmeli; dalgalanma (ripple) az olsun ama gecikme kabul edilebilir düzeyde kalsın.
Analog girişin referans ve ground düzeni çok kritik; gürültüden kaçın.
Birçok endüstriyel sürücü, Modbus RTU üzerinden hız/tork/konum komutu alır.
Arduino ↔ MAX485 dönüştürücü
Ortak GND ve doğru pin yönleri (DE/RE)
Üreticinin register haritasına göre hız/tork set değerleri ve enable kontrolü
Avantaj: Geri bildirimleri (akım, alarm kodu, hız) yazılımdan izleyebilirsiniz.
Endüstriyel servo zaten sürücü içinde kapalı çevrim çalışır; yine de Arduino tarafında harici denetim yapmak isteyebilirsiniz.
Kadratura encoder (A/B) → Arduino harici interrupt pinleri
Hız tahmini için periyot ölçümü, konum için sayaç
Basit bir üst seviye PID ile referans hızın üzerine güvenlik sınırları, yumuşak rampalar eklenebilir.
Ortak toprak zorunlu: Arduino, sürücü giriş referansı ve harici beslemeler aynı GND referansına bağlanmalı.
Encoder ve güç kablolarını ayrı kanallardan taşıyın; ekranlı kablo kullanın, ekran tek uçtan topraklanmalı.
Uzun kablolarda voltaj düşümü için kesiti artırın; step/dir için opto-izolasyon kartları kullanın.
Rejeneratif enerji için sürücünün dinamik fren direnci doğru seçilmeli.
Servo’yu Arduino 5 V’undan beslemek: Aşırı akım çekilir, reset olur. Çözüm: Harici 5 V ve ortak GND.
Hobi servo’da hız beklemek: RC servo doğrudan hız almaz; konumu küçük adımlarla değiştirin, ivmelenme profili uygulayın.
Analog 0–10 V’da dalgalanma: Yetersiz RC filtresi ve zayıf topraklama. Çözüm: Uygun RC, op-amp buffer ve iyi kablolama.
Pulse/dir’de kararsız hız: Yazılımsal delay() ile darbe üretmek jitter üretir. Çözüm: Donanım timer veya yüksek çözünürlüklü zamanlayıcı.
EMI kaynaklı beklenmeyen alarmlar: Encoder/pulse kablosu ekranlı değil. Çözüm: Ekranlı kablo, kablo ayrımı, ferrit.
X/Y ekseni: Pulse/dir ile 200–400 kHz’e kadar darbe; hız profili S-eğrisi olmalı (titreşimsiz hızlanma).
Z ekseni: Frenli servo + sürücü; enerji kesilse bile düşmeye karşı güvenlik.
Spindle hız referansı: 0–10 V analog komut (PWM→0–10 V dönüştürücü)
Geri bildirim: Modbus ile akım, alarm kodları ve sürücü sıcaklığı okunup ekranda izlenebilir.
Gerçek zaman katmanı: Timer tabanlı darbe üretimi (step/dir), hız profilcisi (trapez/S-curve)
Saha katmanı: Modbus/RS-485 ile sürücü durumu, alarm, enable/disable
UI/Log: Seri port menüsü, OLED/LCD; parametreleri runtime ayarı
Güvenlik: Acil stop (NC), tork limiti, sınır switch’leri, servo-on rölesi
Arduino ile servo motor hız kontrolü; hobi tipi RC servo için darbesel konum komutlarıyla hız simülasyonu, endüstriyel servo-sürücü için ise pulse/dir, 0–10 V ya da Modbus üzerinden gerçekleştirilir. Başarılı ve güvenli bir sistem için doğru besleme, ortak toprak, EMI/EMC kuralları, ivmelenme profilleri ve gerekirse frenli servo tercihleri kritik önemdedir. CNC router, robotik ve paketleme hatlarında bu prensiplerle kurulan bir mimari hem kararlı hız hem de tekrar edilebilir hassasiyet sağlar.