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 🙂

0 0 vote
Article Rating
Subscribe
Bildir
guest
2 Yorum
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
FATİH
FATİH
1 ay önce

merhabalar ben bir proje üstünde çalışıyorum ve servo motoru bir karşılaştırma sonucunda çıkan sonuca göre 90 derecelik hareket yapmasını sağlamak istiyorum python’da daha önce servo motor kullanmadım kod kısmında yardımcı olabilir misiniz