Sepetim ( 0 )
Kategoriler
Servo Motor Hız Kontrolü Arduino ile Nasıl Yapılır?

Servo Motor Hız Kontrolü Arduino ile Nasıl Yapılır?

22.09.2023
Servo Motor Hız Kontrolü Arduino ile Nasıl Yapılır?

 

Servo Motor Hız Kontrolü Arduino ile Nasıl Yapılır?

Arduino ile servo motor hız kontrolü, iki farklı dünyayı kapsar:

  1. Hobi tipi RC servo (50 Hz PWM, 1–2 ms darbe)

  2. 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.


1) RC (Hobi) Servo ile Hız Kontrolü

Çalışma Mantığı

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.

Gerekli Malzemeler

  • 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

Bağlantı

  • 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ı

Örnek Kod (konumdan hız üretme yaklaşımı)

 
#include <Servo.h> Servo s; int hedef = 90; // hedef açı (0–180) int mevcut = 90; // mevcut açı int hiz = 3; // adım büyüklüğü (ne kadar büyükse o kadar hızlı) void setup(){ s.attach(9); // sinyal pini s.write(mevcut); } void loop(){ // hedefi örnek olarak 30–150 arasında gezdir static unsigned long t=0; if (millis()-t > 3000) { hedef = (hedef==150)?30:150; t = millis(); } // hız kontrolü: küçük adımlar + zaman gecikmesi if (mevcut < hedef) mevcut += hiz; else if (mevcut > hedef) mevcut -= hiz; s.write(mevcut); delay(20); // 20 ms: daha büyük ise daha yavaş, daha küçük ise daha hızlı }

Not: Hızı daha hassas kontrol etmek için delay() yerine millis() tabanlı zamanlayıcı ve ivmelenme (acc/dec) profili ekleyin.


2) Endüstriyel Servo Motor + Sürücü ile Hız Kontrolü

Endüstriyel sürücüler tipik olarak üç yöntemden biriyle hız/konum kontrolü alır:

  1. Pulse/Dir (Step/Direction) modu

  2. 0–10 V analog hız referansı

  3. Haberleşme (RS-485/Modbus, CANopen, EtherCAT vb.)

2.1 Pulse/Dir ile Hız/Konum Kontrolü

Donanım

  • 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

Bağlantı (temel şema)

  • 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.

Kod (temel darbe üretimi, hız profilli)

 
const int PUL = 2; const int DIR = 3; // birim: mikroadım/ saniye volatile long hedefHiz = 20000; // hedef darbe/s (ayarla) volatile long anlikHiz = 0; // ivmelenme için const long ivme = 2000; // darbe/s^2 unsigned long once = 0; void setup(){ pinMode(PUL, OUTPUT); pinMode(DIR, OUTPUT); digitalWrite(DIR, HIGH); // yön } void loop(){ // hız rampası unsigned long now = micros(); static unsigned long sonRamp = 0; if (now - sonRamp > 1000) { // her 1 ms hız güncelle if (anlikHiz < hedefHiz) anlikHiz += ivme/1000; else if (anlikHiz > hedefHiz) anlikHiz -= ivme/1000; sonRamp = now; } // darbe periyodu if (anlikHiz > 0){ unsigned long period_us = 1000000UL / anlikHiz; // mikro-saniye static unsigned long sonPuls = 0; if (now - sonPuls >= period_us){ digitalWrite(PUL, HIGH); delayMicroseconds(2); // sürücü opto gecikmesi digitalWrite(PUL, LOW); sonPuls = now; } } }

İ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.

2.2 0–10 V Analog Hız Referansı

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.

Donanım

  • 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

Kod (PWM ile hız referansı)

 
const int PWM_PIN = 5; // 490 Hz (Uno) void setup(){ pinMode(PWM_PIN, OUTPUT); } void loop(){ // hedef hız yüzdesi 0..100 -> PWM 0..255 int yuzde = 60; int pwm = map(yuzde, 0, 100, 0, 255); analogWrite(PWM_PIN, pwm); delay(50); }

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.

2.3 RS-485/Modbus ile Hız Komutu

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.


Encoder Okuma ve Basit Kapalı Çevrim (Gelişmiş)

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.


Güç, Topraklama ve EMC

  • 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.


Sık Yapılan Hatalar ve Çözümleri

  • 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.


Örnek Uygulama Senaryoları (CNC Router Odaklı)

  • 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.


Kontrol Mimarisi Önerisi

  • 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


Sonuç

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.

 

 

 

 

Servo Motor ve Sürücü Fiyatları