Arduino ile Servo Motor Kullanımı

arduino servo motor

Yavaş yavaş arduinomuzla dış dünyayı kontrol etmeye başlıyoruz. Arduino ile servo motor sürmek diğer mikrokontrolcülere göre (özellikle PIC’e göre) daha kolaydır. PIC ile haftalarca süren servo motor kontrolü arduino ile dakikalar sürmektedir.


Servo Motor: 1 derece hassasiyetle çalışan 0-180 dereceler arasında hareket edebilen bir motor çeşididir. Dediğim gibi sadece 0 ile 180 derece arasında dönmektedir. Yani tam bir tur atamamaktadır. Genellikle robot kollarda kullanılmaktadır. Servonun çeşitleri genellikle taşıyabileceği yüke göre belirlenmektedir. Piyasada genellikle 1.4 kg*cm torkundaki servolar bulunmaktadır. Bu demek oluyor ki motor milinize bağlı 1 CM uzunluğunda bir çubuk ucuna bağlı yük 1.4 KG’dan fazla ise motorunuzun gücü mili döndürmeye yetmez. Eğer çubuğunuz 10 CM ise 140 gram kaldırabilirsiniz. Birçok kişi burada hata yapmaktadır. Kullanacağınız yüke göre servo seçmelisiniz.
Piyasada aynı mantıkla çalışan daha kuvvetli servo motorlar vardır. Peki Servo motoru nasıl kontrol ediyoruz derseniz, teorik olarak şöyle özetleyebilirim. PWM adını verdiğimiz kare dalga sinyali vardır. Bu sinyalin HIGH ve LOW olduğu yerlere göre servomuzun konumu değişmektedir.

Servonun 3 bağlantı kablosu bulunmaktadır. Kırmızı kablomuzu +5 volta bağlayalım, kahverengi kablomuzu toprağa (- uca) ve turuncu kablomuzu da arduinomuzun PWN (~) yazan ayaklarına bağlayalım. Turuncu kablomuz data kablomuz olmaktadır ve konumumuz bu kablo üzerinden aktarılır. Unutulmamalıdır ki servolar vb mekanik elemanlar fazla akımla çalışmaktadır. Arduinomuzun 5 volt çıkışı servomuzu beslemeye yeterli olmadığı durumlar olabilir. Ayrıca servo yüzünden devrede gürültü oluşabilir. Bu yüzden devremizin + ve – uçlarına kapasite bağlamamız bu gürültüyü engelleyebilir.

#include <Servo.h>   // servo kütüphanesini programımıza dahil ettik
Servo servoNesnesi;   // servo kontrolü için bir nesne yarattık
void setup()
{
servoNesnesi.attach(9);   // Servomuzun turuncu kablosunu 9 nolu pine taktığımızı söylüyoruz
}
void loop()
{
servoNesnesi.write(100);   // Servomuzu 100 dereceye döndürdük
delay(1000);   // biraz bekleyelim
servoNesnesi.write(20);   // Servomuzu 20 dereceye döndürdük
delay(1000);   // biraz bekleyelim
}

İlgili Mesajlar

Abone ol
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments