29 Aralık 2016 Perşembe

Arduino İle Servo Motor





Çeşitli torklarda ve boyutlarda pozisyon kontrolü yapabilen motorlardır. Hobiciler için arduino ile birlikte kullanıldığında pozisyon kontrolünü çok basit hale getirmiştir. Servo motor için yazdıkları kütüphane sayesinde 0-180 ° arasında istediğiniz dereceye motoru çevirip sabit tutabilirsiniz. Flex sensör ile robot kol veya el yapımıda bu aralar moda olmuşken servo motor kontrolünü öğrenmeden olmaz. Servo motorlar PWM(Pulse Width Modulation) sinyalinin duty cycle ını kontrol ederek pozisyon kontrolü yapılır.Pwm sinyali kare dalga gönderilerek güç kontrolü yapabiliyor 0-5 Varası  değerlerin çıktısını arduinodan alabiliyorduk. Servo motor içinde pwm sinyali kullanacağız ve güç saykılını ayarlayarak 0-180 ° arası kontrol yapabileceğiz.20 ms bir saykılda 1-2 ms lik güç saykılı ayarlaması yaparak bu işlemi yapacağız.1ms de 0° 2ms de 180° oacak şekilde orantılı olarak değişen bir grafik sergiler.Aşağıda gösterildiği gibi.




Bağlantı kısmı ies 3 bacaktan oluşan servo motorlarda kırmızı, sarı ve siyah bacakları sırasıyla +, data,- olarak bağlantılarını gerçekleştiriyoruz. Servo motorun nasıl çalıştığını anladıktan sonra artık programı yazıp devreyi kurması kalıyor.Programı arduinonun örnekler kısmından alıyoruz. Dosya/Örnekler/Servo/Knob örneğini açınız. Aşağıdaki program karşınıza çıkacak. Şimdi satır satır ne yaptığımızı anlayalım.


#include <Servo.h>//Servo kütüphanesini kullanacağımız belirtiyor ve kütüphaneyi çağırıyoruz.
Servo myservo;  // bir servo objesi oluşturuyoruz.
int potpin = 0;  // potansiyometrenin bağlanacağı bacaağı tutan değişkeni belirliyoruz.
int val;    // servo motora bilgi gönderecek değişkeni tanımlıyoruz.
void setup() {
  myservo.attach(9);  /* servo motorun data bacağını hangi pine bağlayacağımızı belirliyoruz.Pwm bacağı olmak zorunda buna dikkat ediniz yoksa pwm çıkışı alamazsınız ve servoyu kontrol edemezsiniz.*/
}
void loop() {
  val = analogRead(potpin);  // potansiyometredeki değeri okuyoruz.(0-1023) arası değer gelecek
  val = map(val, 0, 1023, 0, 180);     /*0-1023 arası okuduğumuz değeri 0-180arası skala ediyoruz.*/
  myservo.write(val);   /*Skala ettiğimiz değeri servo motora gönderiyoruz.ve pozisyona gitmesini sağlıyoruz.*/
  delay(15);  // sevonun pozisyona gitmesi için belirli bir süre bekletiyoruz.
}


Devre Şeması:





 İsterseniz İsisde de deneyebilirsiniz.

Disqus Yorumları Yükle

0 yorum