Raspberry Pi 3 İle Step Motor Kontrolü

Please log in or Kaldol to like posts.
Yazı

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.

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.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir