Servo, kapalı çevrim (geri besleme) kontrol sistemi anlamına gelir. Kapalı çevrim kontrol sistemi,
istenen sonucu elde etmek yani motorun hızını ve yönünü ayarlamak için geri besleme sinyalini
kullanır. Görselde servo motor geri besleme blok şeması ve kontrol ünitesi görülmektedir.
DC motor, dişliler aracılığıyla çıkış miline bağlıdır ki bu mil potansiyometrenin milidir. Potansiyometre,
motorun mevcut konumunun hedef konumla karşılaştırıldığı servo kontrol ünitesine konum geri
bildirimi sağlar. Hataya göre kontrol ünitesi motorun gerçek konumunu, hedef konumla eşleşecek şekilde düzeltir. Görselde ise mikro servo pin yapısı görülmektedir.

VCC: 5 V besleme.
DATA: PWM girişi
GND: Topraklama pini.


Data hattına PWM sinyali gönderilerek servo motoru kontrol edilir. Görseldeki servo motor
darbe genişliği ile açı ilişkisinde görüldüğü gibi 20 milisaniyede bir (50 Hz) gönderilen darbenin
genişliğine göre açı pozisyonu belirlenir.

Darbe genişliği (lojik 1’de kalma süresi) 1 ms ile 2 ms arasındaki değişim servo motorda 0° ile
180° arasına değişimle eşleşir. Servo motor boşta 10 mA, hareket hâlindeyken 100 mA-250 mA
arası akım çeker.

Görselde uygulamada servo motor 0°den 180°ye birer derece açıyla gidip aynı şekilde geri
döner. 0° ile 180° arası mesafe, bu servo motorda 300 ms sürmektedir. 300 ms’den hızlı komutlarda servo motor doğru çalışmaz.

Menülerden ”Taslak  Library Ekle  Servo” seçilerek programın başına eklenir. Bu programların örneğine menülerden “Dosya  Örnekler  Servo  Sweep ve Knob” adımları izlenerek de ulaşılabilir.

#include <Servo.h>

Servo servo; // servo isimli nesne oluşturuldu.

byte derece = 0; // Servo derecesini tutan değişken.

void setup() {
  servo.attach(9); // Servo motor 9 numaralı PWM çıkışına bağlı.
}

void loop() {
  for (derece = 0; derece < 180; derece += 1) { // 0°'den 180°'ye birer derece git.
    servo.write(derece); // Servo motorun gideceği derece.
    delay(50); // 15 ms bekle.
  }
  for (derece = 180; derece > 0; derece -= 1) { // 180°'den 0°'ye birer derece git
    servo.write(derece);
    delay(50); // 15 x 180 = 2700 ms'de 0°'den 180°'ye tamamlar.
  }
}

#include <Servo.h>

Servo servo; // servo isimli nesne oluşturuldu.

void setup() {
  servo.attach(9); // Servo motor 9 numaralı PWM çıkışına bağlı.
}

void loop() {
  int pot = analogRead(A0); // Potansiyometrenin konumunu oku. (0 - 1023)
  byte derece = map(pot, 0, 1023, 0, 180);// Servo motorun kullanacağı 0 - 180 aralığına dönüştür.
  servo.write(derece); // Servo motorun gideceği derece.
  delay(15);
}

Categories:

Tags:

No responses yet

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Dersler