Şekil 1 - Servo Motor
Servo Motor
DC motorların aksine, konum (açı) kontrol sinyali kullanarak servo motorlarla motor milini belirli bir konuma konumlandırabiliriz. Kontrol sinyali değişmediği sürece motor mili konumunu korur. Robot kolu gibi belirli açıda döndürüp konumunu koruması gereken uygulamalarda oldukça kullanışlıdır.
Servo motorlar boyutuna ve torkuna göre mini, standart ve büyük olarak sınıflandırılabilir. Genellikle mini ve standart boyutlu servo motorlar Arduino tarafından harici güç kaynağına veya sürücüye gerek kalmadan sürülebilir.
Nasıl Çalışır
Servo Motorun 3 ucu vardır (Şekil 2):
Siyah(Kahve) Uç: GND (ground) Krmızı Uç:+5v Renkli Uç(Turuncu): Kontrol Sinali(PWM)
Şekil 2 - Servo Motor Uçları
Renkli uçtan kontrol sinyali (PWM - pulse-width modulation- derbe genişliği modülasyonu) uygulanır. PWM sinyali Arduino UNO tarafından üretilir. PWM sinyali ile servo motorun dönüş açısı belirlenir.PWM sinyalinin darbe genişliği ile dönme açısı belirlenir (Şekil 3).
Şekil 3 - Kontrol (PWM) Sinyali
Arduino ile Servo Motor Kontrolü
Şekil 4 - Arduino UNO ve Servo Motor
Arduino'yu kullanarak standart servo motor kontrolü son derece kolaydır. Çünkü Arduino IDE yazılımı servo motor kütüphanesine sahiptir. Bu kütüphane sayesinde servo motor kontrolü oldukça kolay gerçekleştirilir.
- Servodaki siyah kabloyu Arduino'daki Gnd pinine bağlayın
- Servodaki kırmızı kabloyu Arduino'daki + 5V pinine bağlayın
- Üçüncü kabloyu (genellikle turuncu veya sarı) Arduino üzerinde bir dijital pine bağlayın
Şekil 5 - Arduino Servo Motor Devresi
Arduino Programı
#include <Servo.h>Servo myservo;
int pos = 0;
int x;
void setup()
{
Serial.begin(9600);
myservo.attach(9);
}
void loop()
{
if(Serial.available())
{
pos = Serial.read();
if(pos>0)
{
x=pos;
}
}
myservo.write(x);
}
Arduino Programını İndirilenler-Download sekmesinden indirebilirsiniz.
SerialCom V1.2 Programı
Daha önceki projelerde kullandığımız SerialCom isimli programın 2. versiyonunu (SerialCom V1.2) programladım. Bu programla arduinoya bağlı servo motorun dönüş açısı kontrol ediliyor (Şekil 6).
Şekil 6 - SerialCom V1.2. Programı
Form üzerindeki TrackBar'ın hareketli ucu oynatılarak değeri seri port üzerinden Arduino'ya pwm değeri olarak gönderilir. TrackBar' ın minimum değeri 0 ve maksimum değeri 180 olmalıdır. Bu değerler servo motorun dönüş dereceleridir.
C# 2013 Kodları
private void Form1_Load(object sender, EventArgs e)
{
string[] ports = SerialPort.GetPortNames();//Seri Portu Oku
foreach (string port in ports)
{
comboBox1.Items.Add(port); //Seri Portu Listeye At
}
timer1.Enabled = true; //Zamanı Görüntülemek için
Timer1 Aktif Et
}
private void button1_Click(object sender, EventArgs e)
{
string x = comboBox1.SelectedItem.ToString();
serialPort1.PortName = x;
serialPort1.BaudRate = 9600;
//serialPort1.Open();
}
private void button2_Click(object sender, EventArgs e)
{
try
{
if (!serialPort1.IsOpen)
serialPort1.Open();
}
catch
{
MessageBox.Show("Seri Port Seçin!");
}
}
private void button3_Click(object sender, EventArgs e)
{
serialPort1.Close();
}
private void timer1_Tick(object sender, EventArgs e)
{
textBox1.Text = DateTime.Now.ToLongTimeString();
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
if
(serialPort1.IsOpen == true)
{
int PWM_deger = trackBar1.Value;
textBox2.Text =
trackBar1.Value.ToString();
// int değeri byte a dönüştürme işlemi.
byte[] b = BitConverter.GetBytes(PWM_deger);
serialPort1.Write(b, 0, 4);
}
else
// gerçekleşmemişse
hata mesajı verir.
{
textBox2.Text = "Cihaz Bağlı Değil";
}
}
}
}
Programı yazarken " using System.IO.Ports; " satırını yazmayı unutmayın. Bu kütüphane serialPort nesnesinin çalışmasını sağlar.
Proje Dosyaları
Proje dosyalarını aşağıdaki linklerden indirebilirsiniz.
Proje Dosyaları
Proje dosyalarını aşağıdaki linklerden indirebilirsiniz.
- Arduino Programı Servomotorcontrol.ino
- C# Programı SerialCom V1.2.
Ders Videosu