Bu içerik 13 Ocak 2017 Tarihinde Raspberry Pi 3 Uyumlu Olacak Şekilde Güncellenmiştir. Güncellenen kısımları daha kolay şekilde görebilmeniz için farklı renkte (lacivert) yazdık. Güncelliğini yitiren kısımların ise üzerini çizdik. Keyifle oku, bol bol üret!

Merhaba arkadaşlar. Bu yazımızda Raspberry Pi’mizi kullanarak step motor kontrolü uygulaması yapacağız.

Gerekli malzemelerimiz:

Step motorlar, hassas hareket gerektiren uygulamalarda kullanılan motorlardır. Fonksiyon olarak DC motorlar ile servo motorların her ikisinin de karakterini gösterir: istenildiğinde belirli bir konuma adım adım ilerleyebilir veya sürekli olarak istenilen yönde döndürülebilir. Normal yazıcılar ve 3B yazıcıların vazgeçilmez parçalarındandırlar.

Bizim bu uygulamamızda kullanacağımız step motor genellikle sürücü kartıyla birlikte satılmaktadır. Bu sayede breadboard’a ihtiyaç duymadan kolaylıkla bağlantı yapmamız mümkündür.

ders9_stepper_bb

Bağlantıları yaptıktan sonra Raspberry Pi’mizi çalıştırıyor ve stepper.py isimli bir dosya oluşturarak aşağıdaki kodu içine yazıyoruz:

import RPi.GPIO as GPIO
import time
 
GPIO.setmode(GPIO.BCM)
 
enable_pin = 18
coil_A_1_pin = 4
coil_A_2_pin = 17
coil_B_1_pin = 23
coil_B_2_pin = 24
 
GPIO.setup(enable_pin, GPIO.OUT)
GPIO.setup(coil_A_1_pin, GPIO.OUT)
GPIO.setup(coil_A_2_pin, GPIO.OUT)
GPIO.setup(coil_B_1_pin, GPIO.OUT)
GPIO.setup(coil_B_2_pin, GPIO.OUT)
 
GPIO.output(enable_pin, 1)
 
def forward(delay, steps):  
  for i in range(0, steps):
    setStep(1, 0, 1, 0)
    time.sleep(delay)
    setStep(0, 1, 1, 0)
    time.sleep(delay)
    setStep(0, 1, 0, 1)
    time.sleep(delay)
    setStep(1, 0, 0, 1)
    time.sleep(delay)
 
def backwards(delay, steps):  
  for i in range(0, steps):
    setStep(1, 0, 0, 1)
    time.sleep(delay)
    setStep(0, 1, 0, 1)
    time.sleep(delay)
    setStep(0, 1, 1, 0)
    time.sleep(delay)
    setStep(1, 0, 1, 0)
    time.sleep(delay)
 
  
def setStep(w1, w2, w3, w4):
  GPIO.output(coil_A_1_pin, w1)
  GPIO.output(coil_A_2_pin, w2)
  GPIO.output(coil_B_1_pin, w3)
  GPIO.output(coil_B_2_pin, w4)
 
while True:
  delay = raw_input("Adim arasi bekleme suresi (milisaniye)?")
  steps = raw_input("Ileri kac adim? ")
  forward(int(delay) / 1000.0, int(steps))
  steps = raw_input("Geri kac adim? ")
  backwards(int(delay) / 1000.0, int(steps))

Bu kodu kaydettikten sonra

sudo python stepper.py

komutunu vererek programın çalışmasını sağlıyoruz. Raspbian’ın güncel sürümünde Python komutlarından önce sudo yazmamıza gerek yoktur. Program bize ilk olarak adım arası bekleme süresini soruyor. Bunu hız olarak düşünebiliriz, ne kadar düşük bir değer seçersek step motorumuz o kadar hızlı dönecektir. Daha sonraki adımda ileri yönde kaç adım gideceğini soruyor. Değeri girdikten sonra motor dönmeye başlıyor ve motor durduktan sonra bu sefer kaç adım geri gideceğini soruyor. Motor ters yönde çalıştıktan sonra da program tekrar başa dönüyor.

stepper.py

CEVAP VER