SERVO MOTORLARIN ARDUİNO İLE KULLANIMI BAĞLANTILARI VE KODLARI

SERVO MOTOR NEDİR

Servo motor, bir kontrol sistemi ile çalışan bir elektrik motorudur. Servo motor, konum, hız veya tork kontrolü yapmak için kullanılır. Servo motorlar, genellikle kontrol edilmek istenen nesnenin pozisyonunu sensörler aracılığıyla ölçer ve kontrol sistemi tarafından verilen konum komutunu uygulamak için motoru sürür. Servo motorlar, otomatik makine ve ekipmanlar, robotlar, uzay teknolojisi, enerji üretim sistemleri ve endüstriyel kontrol sistemleri gibi birçok farklı uygulamada kullanılır.

SERVO MOTOR ÇEŞİTLERİ NELERDİR?

Servo motorlar, çeşitli türlerde ve boyutlarda mevcuttur ve çeşitli uygulamalar için uygun hale getirilir. Önemli olan üç faktör genellikle konum, hız ve tork kontrolüdür. Servo motorların önemli çeşitleri şunlardır:

  1. Konum kontrollü servo motorlar: Bu tür servo motorlar, konumunu sensörler aracılığıyla ölçer ve kontrol sistemi tarafından verilen konum komutunu uygulamak için motoru sürür.
  2. Hız kontrollü servo motorlar: Bu tür servo motorlar, hız sensörleri aracılığıyla ölçer ve kontrol sistemi tarafından verilen hız komutunu uygulamak için motoru sürür.
  3. Tork kontrollü servo motorlar: Bu tür servo motorlar, tork sensörleri aracılığıyla ölçer ve kontrol sistemi tarafından verilen tork komutunu uygulamak için motoru sürür.
  4. AC Servo Motorlar : AC voltaj kaynaklı servo motorlar
  5. DC Servo Motorlar : DC voltaj kaynaklı servo motorlar
  6. Servo Motorlar with Encoder : Encoder ekli servo motorlar
  7. Servo Motorlar with Brake : Frenli servo motorlar
  8. Mini Servo Motorlar : Küçük boyutlu servo motorlar
  9. Macro Servo Motorlar : Büyük boyutlu servo motorlar

Bu sadece servo motorların önemli çeşitlerinden bazılarıdır, özel uygulamalar için diğer çeşitler de mevcut olabilir.

Arduino, birçok farklı servo motorlarla çalışabilir. Ancak, en yaygın olarak kullanılan servo motorlar, kontrol sistemi için sinyal aralığının 0-180 derece arasında olmasını sağlayan standart servo motorlarıdır. Bu tür servo motorlar, genellikle çeşitli robotik projelerde, ev otomasyonunda veya kontrol sistemlerinde kullanılır.

Arduino ile çalışan diğer servo motorlar şunlar olabilir :

  1. Continuous rotation servo: Bu servo motorlar, sınırlı değil sürekli dönebilir.
  2. Micro servo: Bu servo motorlar küçük boyutlu ve hafif olabilir.
  3. High-torque servo: Bu servo motorlar yüksek tork sağlar.
  4. Linear servo: Bu servo motorlar, dönen hareket yerine doğrusal hareket yaparlar.

Arduino ile kullanmak için servo motorların özellikleri ve spesifikasyonları dikkatli bir şekilde incelenmelidir. Servo motorun özellikleri projede kullanılacak olan kontrol sistemi ve yükler ile uyumlu olmalıdır.

Bu uygulamada bir SG90 servo motoru Arduino ile kontrol edeceğiz. SG90 servo motor, bir RC (uzaktan kumanda) uygulaması için tasarlanmış, küçük boyutlu bir DC servo motorudur. Bu motorlar, kontrol edilen açıda pozisyon almalarını sağlamak için kullanılır ve genellikle RC araba, uçak, helikopter gibi oyuncakların yanı sıra ev otomasyonu, robotik ve endüstriyel kontrol uygulamalarında da kullanılır.

SG90 SERVO MOTOR ARDUİNO BAĞLANTISI VE KODLARI

SG90 servo motoru Arduino kartına bağlamak için aşağıdaki adımları izleyebilirsiniz:

  1. Gerekli malzemeler: Arduino kartı, SG90 servo motoru, 3 adet jumper kablo.
  2. Servo motorun GND, VCC ve Signal pinlerini Arduino kartına bağlayın. GND pinini GND piniyle, VCC pinini 5V piniyle ve Signal pinini bir PWM pinine (örneğin, 9 numaralı pin) bağlayın.
  3. Arduino IDE’yi açın ve aşağıdaki kodu yükleyin:

///////////////////////////

#include <Servo.h>

 

Servo myservo;  // create servo object to control a servo

// a maximum of eight servo objects can be created

 

int pos = 0;    // variable to store the servo position

 

void setup() {

myservo.attach(9);  // attaches the servo on pin 9 to the servo object

}

 

void loop() {

for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees

// in steps of 1 degree

myservo.write(pos);              // tell servo to go to position in variable ‘pos’

delay(15);                       // waits 15ms for the servo to reach the position

}

for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees

myservo.write(pos);              // tell servo to go to position in variable ‘pos’

delay(15);                       // waits 15ms for the servo to reach the position

}

}

/////////////////////

  1. Arduino kartını bilgisayarınıza bağlayın ve kodu yükleyin. Servo motor 0 derece ile 180 derece arasında hareket edecektir.

Not: Servo motorun pozisyonunu kontrol etmek için myservo.write(pos) fonksiyonunu kullanabilirsiniz. Bu fonksiyon pozisyon değerini 0 ile 180 arasında alabilir.

ŞİMDİ DE POTANSİYOMETRE İLE SG90 SERVO MOTORU KONTROL EDELİM

Potansiyometre ile SG90 servo motorunu kontrol etmek için aşağıdaki adımları izleyebilirsiniz:

  1. Gerekli malzemeler: Arduino kartı, SG90 servo motoru, 3 adet jumper kablo, bir potansiyometre.
  2. Servo motorun GND, VCC ve Signal pinlerini Arduino kartına bağlayın. GND pinini GND piniyle, VCC pinini 5V piniyle ve Signal pinini bir PWM pinine (örneğin, 9 numaralı pin) bağlayın. Potansiyometrenin bir ucunu GND piniyle, diğer ucunu 5V piniyle ve ortanca pinini bir analog pinle (örneğin, A0) bağlayın.
  3. Arduino IDE’yi açın ve aşağıdaki kodu yükleyin:

////////////////////

#include <Servo.h>

 

Servo myservo;  // create servo object to control a servo

// a maximum of eight servo objects can be created

 

int potPin = A0; // select the input pin for the potentiometer

int pos;

 

void setup() {

myservo.attach(9);  // attaches the servo on pin 9 to the servo object

pinMode(potPin, INPUT);

}

 

void loop() {

pos = analogRead(potPin);  // read the value from the potentiometer

pos = map(pos, 0, 1023, 0, 180);  // map the value to a range between 0 and 180

myservo.write(pos);  // set the servo position based on the potentiometer value

delay(15);

}

/////////////////////

  1. Arduino kartını bilgisayarınıza bağlayın ve kodu yükleyin. Potansiyometre kullanarak servo motorun pozisyonunu kontrol edebilirsiniz. Potansiyometre dönerek servo motorun pozisyonunu değiştirecektir.

Not: Potansiyometreden okunan değer 0 ile 1023 arasında değişebilir. Bu değerleri 0 ile 180 arasına map edebilmeniz gerekmektedir.

KODLARI BİRAZ DAHA AÇIKLAMAK İSTERSEK

Bu kodlar, Arduino kartını kullanarak SG90 servo motorunu potansiyometre ile kontrol etmenizi sağlar. Açıklamalar şöyle:

  1. Başlangıçta, #include <Servo.h> kütüphanesi dahil edilir. Bu kütüphane, servo motorların kontrol edilmesi için gerekli fonksiyonları içerir.
  2. Servo myservo; satırı ile bir servo nesnesi oluşturulur. Bu nesne, servo motorun kontrol edilmesi için kullanılır.
  3. int potPin = A0; satırı ile potansiyometrenin bağlı olduğu analog pinin numarası belirlenir.
  4. setup() fonksiyonu içinde myservo.attach(9) komutu ile servo motorun signal pininin bağlandığı pin belirlenir. Ayrıca potansiyometrenin bağlı olduğu pinin INPUT olarak belirlenir.
  5. loop() fonksiyonu içinde pos = analogRead(potPin); komutu ile potansiyometrenin çıkış değeri okunur. Ardından pos = map(pos, 0, 1023, 0, 180); komutu ile okunan değer 0 ile 1023 arasındaki değerleri 0 ile 180 arasına map edilir.
  6. myservo.write(pos); komutu ile servo motorun pozisyonu map edilmiş değere göre ayarlanır.
  7. delay(15); komutu ile 15ms beklenir ve bu işlem tekrar edilir. Bu sayede potansiyometrenin değeri değiştiğinde servo motorun pozisyonu da değişecektir.

Not : MG995 servo motoru SG90 servo motoruna göre daha güçlü ve hızlıdır. SG90 servo motorunda kullanılan 0-180 derece aralığı MG995 servo motorunda 0-270 derece aralığına denk olacaktır. Ayrıca MG995 servo motorunda kullanılan PWM frekansı SG90 servo motorunda kullanılan PWM frekansına göre daha yüksek olabilir. Bu yüzden bazı kodların değiştirilmesi gerekebilir.

BİRDEN FAZLA SERVO MOTOR KULLANMAK İSTERSEK NELER YAPMALIYIZ?

Arduino kartı ile birden fazla servo motoru kontrol etmek isterseniz, aşağıdaki adımları izleyebilirsiniz:

  1. Gerekli malzemeler: Arduino kartı, birden fazla servo motor, jumper kablolar, harici bir güç kaynağı.
  2. Servo motorların GND pinlerini tüm servo motorların GND pinleriyle birleştirin.
  3. Servo motorların VCC pinlerini harici güç kaynağının VCC pinleriyle birleştirin.
  4. Servo motorların Signal pinlerini Arduino kartının PWM pinleriyle birleştirin. Her servo motor için ayrı bir PWM pin kullanın.
  5. Arduino kartının GND pinini harici güç kaynağının GND pinleriyle birleştirin.
  6. Harici güç kaynağının çıkışını arduino kartına uygun bir voltajda ayarlayın. Servo motorlar için genellikle 4.8V – 6V arası bir voltaj yeterlidir.
  7. Arduino IDE’yi açın ve kodları yazın. Her servo motor için ayrı bir servo nesnesi oluşturun ve her servo için ayrı bir PWM pinini kullanın.
  8. Kodları yükleyin ve servo motorları kontrol edin.

Not: Servo motorlar çok fazla güç tüketebilirler, bu yüzden arduino kartının çıkışı yeterli değilse harici bir güç kaynağı kullanmanız gerekebilir. Ayrıca birden fazla servo motor kullanırken, Arduino kartının çıkışının yeterli olmasına dikkat etmeniz gerekir, ayrıca her servo için ayrı bir PWM pinini kullanın.

4 ADET SERVO MOTORU KONTROL ETMEK İÇİN GEREKLİ KODLAR:

4 adet servo motoru kontrol etmek isterseniz, aşağıdaki kodları kullanabilirsiniz. Bu kodlar, 4 adet servo motoru kontrol etmek için 4 farklı PWM pinini kullanır ve her servo için ayrı bir servo nesnesi oluşturur.

//////////

#include <Servo.h>

 

Servo servo1, servo2, servo3, servo4; // create servo objects

 

int pos1 = 0;    // variable to store the position of servo1

int pos2 = 0;    // variable to store the position of servo2

int pos3 = 0;    // variable to store the position of servo3

int pos4 = 0;    // variable to store the position of servo4

 

void setup() {

servo1.attach(9);   // attaches the servo on pin 9 to the servo object

servo2.attach(10);  // attaches the servo on pin 10 to the servo object

servo3.attach(11);  // attaches the servo on pin 11 to the servo object

servo4.attach(12);  // attaches the servo on pin 12 to the servo object

}

 

void loop() {

for (pos1 = 0; pos1 <= 180; pos1 += 1) { // goes from 0 degrees to 180 degrees

servo1.write(pos1);              // tell servo1 to go to position in variable ‘pos1’

delay(15);                       // waits 15ms for the servo to reach the position

}

for (pos1 = 180; pos1 >= 0; pos1 -= 1) { // goes from 180 degrees to 0 degrees

servo1.write(pos1);              // tell servo1 to go to position in variable ‘pos1’

delay(15);                       // waits 15ms for the servo to reach the position

}

 

for (pos2 = 0; pos2 <= 180; pos2 += 1) { // goes from 0 degrees to 180 degrees

servo2.write(pos2);              // tell servo2 to go to position in variable ‘pos2’

delay(15);                       // waits 15ms for the servo to reach the position

}

for (pos2 = 180; pos2 >= 0; pos2 -= 1) { // goes from 180 degrees to 0 degrees

servo2.write(pos2);              // tell servo2 to go to position in variable ‘pos2’

delay(15);                       // waits 15ms for the servo to reach the position

}

 

for (pos3 = 0; pos3 <= 180; pos3 += 1) { // goes from 0 degrees to 180 degrees

servo3.write(pos3);              // tell servo3 to go to position in variable ‘pos3’

delay(15);                       // waits 15ms for the servo to reach the position

}

for (pos3 = 180; pos3 >= 0; pos3 -= 1) { // goes from 180 degrees to 0 degrees

servo3.write(pos3);              // tell servo3 to go to position in variable ‘pos3’

delay(15);                       // waits 15ms for the servo to reach the position

}

 

for (pos4 = 0; pos4 <= 180; pos4 += 1) { // goes from 0 degrees to 180 degrees

servo4.write(pos4);              // tell servo4 to go to position in variable ‘pos4’

delay(15);                       // waits 15ms for the servo to reach the position

}

for (pos4 = 180; pos4 >= 0; pos4 -= 1) { // goes from 180 degrees to 0 degrees

servo4.write(pos4);              // tell servo4 to go to position in variable ‘pos4’

delay(15);                       // waits 15ms for the servo to reach the position

}

}

////////////

Bu kodlar, her servo motor için 0 dereceden 180 dereceye kadar gitmekte ve tekrar 0 dereceye geri dönmektedir. Servo motorların pozisyonlarını değiştirmek isterseniz, pos1, pos2, pos3 ve pos4 değişkenlerini değiştirmeniz yeterlidir. Bu kodlar sadece servo motorların hareketini sağlamaktadır, pozisyonlarını değiştirmek için potansiyometre kullanmanız gerekebilir.

 

SERVO MOTOR KULLANIRKEN NELERE DİKKAT ETMELİSİNİZ?

Arduino ile servo motor uygulamalarında dikkat etmeniz gereken bazı noktalar şunlar olabilir:

  1. Servo motorların çalışma voltajı: Servo motorlar genellikle 4.8V-6V arası bir voltaj ile çalışırlar. Servo motorun gerektirdiği voltajı kontrol etmeli ve uygun bir güç kaynağı kullanmalısınız.
  2. Servo motorların çalışma sıcaklığı: Servo motorlar yüksek sıcaklıkta çalıştırılmamalıdır. Servo motorların çalışma sıcaklığını kontrol etmeli ve gerektiğinde soğutma önlemleri almalısınız.
  3. Servo motorların çalışma yükü: Servo motorların yükünün aşırı olmamasına dikkat etmeli ve servo motorların maksimum yükünü aşmamaya çalışmalısınız.
  4. Servo motorların çalışma hızı: Servo motorlar genellikle 0.2 ile 0.5 saniye arasında pozisyon değiştirirler. Servo motorların çalışma hızını kontrol etmeli ve gerektiğinde hızı ayarlamalısınız.
  5. Servo motorların çalışma aralığı: Servo motorlar genellikle 0-180 derece arasında pozisyon değiştirirler. Servo motorların çalışma aralığını kontrol etmeli ve gerektiğinde aralığı ayarlamalısınız.
  6. Servo motorların çalışma frekansı: Servo motorlar genellikle 50-60 Hz arasında PWM frekansı kullanırlar. Servo motorların çalışma frekansını kontrol etmeli ve gerektiğinde frekansı ayarlamalısınız.
  7. Servo motorların çalışma süresini kontrol etmeli ve gerektiğinde dinlenmelerini sağlamalısınız. Ayrıca servo motorların çalışma süresi boyunca kontrol edilmesi gereken çok sayıda parametre var, bunların arasında çalışma hızı, çalışma yükü ve çalışma sıcaklığı sayılabilir.
  8. Servo motorların montajı : Servo motorların doğru şekilde montaj edilmiş olması önemlidir. Servo motorların montajı yanlış yapılırsa, motorlar doğru şekilde çalışmayabilir veya zarar görebilir.
  9. Servo motorların kontrolü : Servo motorların kontrolü için arduino kartının PWM pinleri kullanılır. Servo motorların kontrolü için kullanılan PWM sinyalinin frekansı ve genliği önemlidir.
  10. Servo motorların yedek parçaları : Servo motorların yedek parçalarına ihtiyacınız olabilir, özellikle de uzun vadeli projelerde. Bu nedenle yedek parçaların bulunması ve stoklaması önemlidir.
  11. Unutmayın ki servo motorlar özel tasarım gerektirebilir ve çalışma şartlarına göre farklılık gösterebilir. Buna göre kullanım şartlarına uygun bir şekilde kontrol etmeli ve dikkatli olmalısınız.