22 Eylül 2015 Salı

Raspberry Pi ile Servo Motor Kullanımı


Servo motorlar gelen sinyalin pulse uzunluğuna göre konum sektör motorlardır. Motor her 20 milisaniye de bir sinyal algılar. Eger bu sinyal içinde pulse uzunluğu 1 milisaniye ise açı sıfıra gider. Eger pulse uzunluğu 1,5 milisaniye ise 90 dereceye gider. Pulse uzunlugu 2 milisaniye ise de açı 180 dereceye gider. Altta bulunan resimde bunu daha iyi algılayabiliriz. sonuç şekilde elimize bulunan servo motoru kullanabilmek için anlattıgımız bu PWM sinyalini göndermemiz gerekmektedir.

Servo motorlar ekseriyetle 4.8V- 6V DC voltaj ile çalışır. Raspi GPıO sinyal çıkışı 3.3 Volt\`tur . O halde servo motor beslemelerini ayrı bir kaynaktan yapacağız. Servo motorların üç tane kablosu bulunur. kırmızı ve Siyah kablo besleme için turuncu kablo sinyal içindir. Besleme kablolarını pile bagladıktan sonra turuncu kabloyu Raspberry Pi\`nin , numaraları pinine baglıyoruz.

Ardından python kodlarımızı yazıyoruz. Daha önce raspberry pi üzerinde python kodu yazmamış olanlar bir önceki yazılarımı okuyarak nasıl yapıldıgını ögrenebilir.
 # Servo Control
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup (7, GPIO.OUT)
p= GPIO.PWM(7,50)
p.start(7.5)
try:
 while True:
p.ChangeDutyCycle(7.5)
time.sleep(2)
p.ChangeDutyCycle(12.5)
time.sleep(2)
p.ChangeDutyCycle(2.5)
time.sleep(2)
except KeyboardInterrupt:
GPIO.cleanup()
p.stop()

Kodların çalışma mantığı  PWM sinyali üretmek amacıyla oransal olarak pine pulse sinyali yollattırmaktır.p.start (7.5) kodu servo motoru ortaya neutrol pozisyona çekmektedir. p.ChangeDutyCycle(12.5) kodu servoyu 180 dereceye çekmektedir. p.ChangeDutyCycle(2.5) servoyu 0 dereceye çekmektedir. Aşağıdaki resim ile kodların çalışma mantığı daha net anlaşılabilir. 

Hiç yorum yok:

Yorum Gönder