Servo Motorlar makerların olmazsa olmazları arasındadır. Standart olarak 0 dereceden 180 dereceye kadar dönüş sağlayan ve içerisinde kendi motor sürücüsü bulunduğu için alandan tasarruf etmeyi sağlayan bir komponentdir. Bunun yanı sıra iki yöne sınırsız dönen modeller de mevcuttur.

Buna benzer bir projeyi Asus Tinkerboard ile yapmak isterseniz bu blog yazımızda da ondan bahsettik.

Bağlantıları Yapalım

Servo Motorun Raspberry Pi'ye Bağlantısı
Servo Motor Bağlantı Şeması

Servo Motorun 3 kablosundan kırmızı olanı kart üzerindeki pinlerde 5v DC akışı sağlayan bir pine takıyoruz.
Kahverengi / Siyah kabloyu ise Ground (Toprak) pinlerinden birine takıyoruz.
Sarı olan sinyal kablosunu ise GPIO (Sinyal) pinlerinden herhangi birine takıyoruz.

Raspberry Pi ile Servo Motor kontrol etmek için RPi.GPIO isimli bir python kütüphanesini indirmemiz gerekmekte. Fakat bundan önce Raspberry kartımızın yazılımının güncel olduğundan emin olmalıyız.

Herhangi bir güncelleme varsa indirmek için
bu komutları terminal ekranına yazmalıyız. CTRL + ALT + T kombinasyonu ile açabilirsiniz.

sudo apt-get update
sudo apt-get upgrade

Şimdi ise Python’ın paket yükleme sistemi pip’i yüklememiz gerekiyor. Eğer sizde var ise
bu kısmı geçebilirsiniz.

sudo apt-get install python3-pip

Şimdi ise ana kütüphanemiz RPi.GPIO’yu kurma vakti geldi. Eğer sizde zaten yüklü ise
bu kısmı geçebilirsiniz.

sudo pip install RPI.GPIO

Kodu Yazmaya Başlayalım

Koda başlarken az önce indirmiş olduğumuz kütüphaneyi ve time isimli farklı bir kütüphaneyi import etmemiz (içe aktarmamız) gerekmekte.

import time
import RPi.GPIO as GPIO

Time kütüphanesini kod içerisinde servoların çalışmayı durdurmasını beklemek için kullanacağız.
import işlemi tamamlandıktan sonra servo motorumuzun bağlı olduğu pini bir değişken ile belirtiyoruz

servo1 = 12

Burada en çok karıştırılan şey, 12 sayısının aslında sinyal pininin numarası olmaması. Alttaki diyagramdan sinyal kablosunu taktığınız GPIO pinine tekabul eden numarayı yazmanız gerekiyor. İlk pinden itibaren sayarak da bulabilirsiniz ancak alttaki görselde bulunan PIN# numaraları işinize yarayacaktır.

GPIO Pinlerinin Numaralandırılması. Görsel kaynağı: www.element14.com

Şimdi ise servo motorun bağlı olduğu portu aktifleştirmemiz gerekiyor.

GPIO.setmode(GPIO.BOARD)
GPIO.setup(servo1, GPIO.OUT)

pwm1 = GPIO.PWM(servo1, 50)
pwm1.start(0)

Servo motorumuzu bağladığımız portu aktifleştirmiş olduk.
Şimdi sırada bu porta servo motorun açısını sinyal olarak göndermek var.
Bir değişken oluşturarak içine 0-180 arası bir değer giriniz.
İkinci satırın sonunda yaptığımız işlem servoların normalde kullandığı açı sistemini kolay olması açısından 0 ve 180 arası açılara dönüştürmek için yaptığımız basit bir matematik işlemi.

aci = 180
pwm1.ChangeDutyCycle(2 + (aci / 18))
time.sleep(0.5)

Böylece servo motor 180 dereceye gelmiş oldu. Servo motorun rahatça hareket edebilmesi
açısından kodun devam etmesini time.sleep ile 0.5 (yarım) saniyeliğine dondurduk.
Tüm hareket işlemleri bittikten sonra geriye servo motoru kapatmak kaldı.

pwm1.stop()
GPIO.cleanup()

Böylece Raspberry Pi ile Servo Motor kontrolünü yapmış bulunmaktayız. Hemen altta kodun tamamını görebilirsiniz.

Full Kod:

import time
import RPi.GPIO as GPIO

servo1 = 12

GPIO.setmode(GPIO.BOARD)
GPIO.setup(servo1)
pwm1 = GPIO.PWM(servo1, 50)
pwm1.start()

aci = 180
pwm1.ChangeDutyCycle(2+(aci/18))
time.sleep(0.5)

pwm1.stop()
GPIO.cleanup()

 

Kaynak:

RPi.GPIO Dökümanı: https://pythonhosted.org/RPIO/

Konu Hakkında Bilgi: https://www.explainingcomputers.com/pi_servos_video.html

4 3 votes
Article Rating
Subscribe
Bildir
guest

1 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments
ünal kurtgöz
ünal kurtgöz
6 ay önce

buna sensor eklesek ve etrafı tarama için bu mesafe sensoru de olabilir