Arduino İle Servo(SG90) Motor Kontrolü Nasıl Yapılır?
Bu yazımızda arduino ile servo motor kontrolü yapacağız. Servo motorlar, dönüşlerini kontrol etmenin kolay olması nedeniyle robotik ve diğer birçok uygulamada yaygın olarak kullanılan yüksek torklu motorlardır. Servo motorlar, her seferinde bir (1) derece dönecek şekilde elektrikle kontrol edilebilen dişli bir çıkış miline sahiptir. Kontrol amacıyla, normal DC motorlardan farklı olarak, servo motorlarda genellikle sinyal pini olan iki güç pininin (Vcc ve GND) yanında ek bir pin bulunur. Sinyal pini, servo motoru kontrol etmek için kullanılır, milini istenilen açıya döndürür.
Servoların yüksek akım gereksinimleri vardır. Bu nedenle arduino ile birden fazla servo motor kullanırken, arduino servo için gereken akımı sağlayamayacağından güç bağlantılarını harici bir güç kaynağına bağlamak önemlidir. Bu derste sadece bir servo kullanacağımızdan, arduino servoyu beslemek için yeterlidir.
Arduino İle Servo Motor Kontrolü İçin Gerekli Malzemeler
- SG90 Servo Motor
- Arduino Uno
- Jumper Kablo
- Breadbord
Servo Motorun Arduino İle Bağlantı Şeması
Bu projenin şemaları oldukça basittir çünkü sadece servo motoru Arduino’ya bağlayacağız. Servo motorlarda genellikle üç pin(kablo) bulunur. Buna VCC, GND ve Sinyal pinleridir. Sinyal pini, servonun belirli bir açıda dönmesini sağlamak için mikrodenetleyiciden servoya kontrol sinyali beslemek için kullanılan pindir.
Aşağıdaki şemada gösterildiği gibi servo’yu arduino’ya bağlayın.
Bağlantı Pinleri:
VCC(Kırmızı Kablo) - 5V
SIG(Sarı/Yeşil Kablo) - D8
GND(Siyah/Kahverengi Kablo) - GND
Sinyal pini pwm pini olduğu için arduino’nun dijital pini 8’e bağlanmıştır. Servo yönleri, mikrodenetleyiciden servo motora pwm darbeleri olarak gönderilir.
Bağlantının tamamı yapıldıktan sonra artık proje kodunu yazmaya başlayabiliriz.
Arduino İle Servo Motor Kontrolü Kodu
Arduino ekibi tarafından servo motorların arduino projelerinde kullanımını kolaylaştırmak için geliştirilen çok kapsamlı ve özlü servo.h kütüphanesi sayesinde bu projenin kodu oldukça kolaydır. Kütüphane, servoyu tek bir komut kullanarak farklı açılarda döndürmeyi kolaylaştırır. Kütüphane, Arduino IDE’ye önceden yüklenmiş olarak gelir ve indirme ve yükleme ihtiyacını ortadan kaldırır.
Bu durumda servo.h kütüphanesi olan kullanacağımız kütüphaneleri dahil ederek proje kodunu başlatıyoruz.
#include <Servo.h>
Ardından, kod boyunca servo motorumuzu kontrol etmek için referans olarak kullanılacak kütüphanenin bir nesnesini oluşturuyoruz.
Servo servo;
Bunu yaptıktan sonra void setup() fonksiyonuna geçiyoruz. oluşturulan servo nesnesini mikrodenetleyicinin D8 pinine takarak fonksiyona başlıyoruz ardından servoyu merkezleyip sıfır dereceye çeviriyoruz.
void setup() {
servo.attach(8);
servo.write(angle);
}
Bunu yaptıktan sonra servoyu istediğimiz yöne hareket ettirmeye hazırız ve bunu void loop fonksiyonu altında yapacağız. servo.h kütüphanesi sayesinde servoyu istediğimiz açıya döndürmek için yapmamız gereken tek şey istenilen açıyı servo.write() fonksiyonuna argüman olarak iletmektir. Bunu göstermek için, servoları bir yönde birkaç açıda döndürmek için bir for döngüsü ve servoyu başladığı yere geri döndürmek için başka bir döngü kullanıldı.
void loop()
{
// scan from 0 to 180 degrees
for(angle = 10; angle < 180; angle++)
{
servo.write(angle);
delay(15);
}
// now scan back from 180 to 0 degrees
for(angle = 180; angle > 10; angle--)
{
servo.write(angle);
delay(15);
}
}
Projenin tam kodu aşağıda mevcuttur.
#include <Servo.h>
Servo servo;
int angle = 10;
void setup() {
servo.attach(8);
servo.write(angle);
}
void loop()
{
// scan from 0 to 180 degrees
for(angle = 10; angle < 180; angle++)
{
servo.write(angle);
delay(15);
}
// now scan back from 180 to 0 degrees
for(angle = 180; angle > 10; angle--)
{
servo.write(angle);
delay(15);
}
}
Proje Videosu
Yukarıdaki kodu kopyalayın ve Arduino ve servo motor taslağınıza yükleyin, birkaç süre sonra aşağıdaki gif’te gösterildiği gibi servo motorun dönmeye başladığını görmelisiniz.
Güzel anlatım, paylaşım yararlı oldu.