asus-tinker-board-servo-motor-33

Merhaba arkadaşlar,

Bugün birçok projede kullanabileceğiniz servo motor kontrolünü bu yazımızda ele alacağız ve Asus Tinker Board ile kolay bir proje yapacağız.

Şekil 1 – Asus Tinker Board

 

Bu projede Asus Tinker Board’a ilaveten sadece bir adet servo motora ihtiyacımız olacaktır. Servo motor için Tower Pro SG90 RC Mini Servo Motor‘u kullanacağız.

Şekil 2 – Tower Pro SG90 RC Mini Servo Motor

 

Kodlama

Proje kodumuzu Python dilini kullanarak yazacağımız için ilk olarak Asus Tinker Board’umuza Terminal üzerinden Python GPIO kütüphanesini eklememiz gerekiyor.

sudo apt-get install python-dev
git clone http://github.com/TinkerBoard/gpio_lib_python --depth 1 GPIO_API_for_Python
cd GPIO_API_for_Python/
sudo python setup.py install

Şimdi yeni dosya oluşturarak kodlamaya başlayabiliriz.

nano motor.py

Dosya adını “motor” olarak belirledik. Yeni açılan pencerede ise aşağıdaki kodu, servo motoru çalıştırmak için yazabiliriz:

import ASUS.GPIO as GPIO #kütüphane ekler.
import time #kütüphane ekler.

GPIO.setmode(GPIO.ASUS) #GPIO modunu belirler.
GPIO.setwarnings(False) #Uyarıları kapatır.

motor = 238 #238 numaralı pini değişkene tanımlar.
GPIO.setup(motor,GPIO.OUT) #pini çıkış olarak tanımlar.
pwm = GPIO.PWM(motor,50)
#SG90 servo motorun periyodu üzerinden frekansı hesaplanır ve pwm fonksiyonunda kullanılır.
#Bunun için motorun datasheetine bakmak gerekmektedir.

#Servo motorun 0 derece pozisyonu %2,5'a tekabül etmektedir.
pwm.start(2.5) #0 derece pozisyonu

#Bir döngü kullanarak servo motorumuzu sürekli çalıştırabiliriz.
try:
	while True:
		print "0 derece pozisyonu"
		pwm.ChangeDutyCycle(2.5) #0 derece pozisyonu
		time.sleep(1) #1 saniye bekler.
                print "45 derece pozisyonu"
		pwm.ChangeDutyCycle(5) #45 derece pozisyonu
		time.sleep(1) #1 saniye bekler.
		print "90 derece pozisyonu"
		pwm.ChangeDutyCycle(7.5) #90 derece pozisyonu
		time.sleep(1)
                print "135 derece pozisyonu"
		pwm.ChangeDutyCycle(10) #135 derece pozisyonu
		time.sleep(1) #1 saniye bekler.
		print "180 derece pozisyonu"
		pwm.ChangeDutyCycle(12.5) #180 derece pozsiyonu
		time.sleep(1)
                print "135 derece pozisyonu"
		pwm.ChangeDutyCycle(10)
		time.sleep(1) #1 saniye bekler.
		print "90 derece pozsiyonuw"
		pwm.ChangeDutyCycle(7.5)
		time.sleep(1)
                print "45 derece pozisyonu"
		pwm.ChangeDutyCycle(5)
		time.sleep(1) #1 saniye bekler.

except KeyboardInterrupt: #Eğer klavyeden bir tuşa basılırsa motor duracak ve Stop yazacaktır.
	print "Stop"
	GPIO.cleanup()

Bu kod dosyasını kaydettikten sonra tekrar Teminal’de bu dosyayı çalıştırmak için aşağıdaki komutu girebiliriz:

sudo python motor.py

Kodu çalıştırmadan önce servo motorumuzun kablolarını Asus Tinker Board’un GPIO pinleri ile bağlantısını sağlamamız gerekiyor.

Servo Motor Kablosu Asus Tinker Board Pini Açıklama
Kırmızı 4 +5V Kablosu
Kahve 6 GND Kablosu
Turuncu 33 Data Kablosu

 

 

Şekil 4.1 – Asus Tinker Board Pinleri

 

Şekil 4.2 – Asus Tinker Board Pinleri

 

Sonuç

Kodu çalıştırdığımızda servo motorumuz kademeli olarak sırayla aşağıdaki pozisyonları takip edecektir:

0° – 45° – 90° – 135° – 180° – 135° – 90° – 45°

Bu döngü siz klavyeden bir tuşa basana kadar devam edecektir.

Sizin için de keyifli bir proje olacağını umuyorum 🙂

Leave a Reply

avatar
  Subscribe  
Bildir