back to top

Raspberry Pi 3 İle Step Motor Kontrolü Nasıl Yapılır? #14

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!

Raspberry Pi Dersleri serimizde kullanacağımız malzemelerin tamamına sizler için hazırladığımız setler ile kolayca sahip olabilirsiniz. Raspberry Pi’ye Uzaktan Bağlantı Yöntemleri (VNC,SSH,TTL) dersimize kadar olan malzemeler için Kombo Kit, Raspberry Pi 3 Röle Kartı İle Alarm Devresi Yapımı dersimize kadar olan malzemeler için Süper Başlangıç Seti, tüm derslerdeki malzemeler için Proje Seti tercih edebilirsiniz.

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

Gerekli malzemelerimiz:

Projedeki Malzemeler Bu Sette. Şimdi İncele >

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 = 18coil_A_1_pin = 4coil_A_2_pin = 17coil_B_1_pin = 23coil_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.

Raspberry Pi Hakkında Daha Fazlasını Öğrenmeye Devam Et

Raspberry Pi pek çok yönüyle avantaj sahibi ve geliştiriciler tarafından çok sevilen bir platform. Elektronik projelerinde, bilgisayar bilimlerinde ve robotik çalışmalarında sağladığı destek ve rahatlık ile öğrenmeyi sevdiren Raspberry Pi hergün daha da çok gelişiyor. 

Peki siz de daha fazla gelişmek istemez misiniz? Linux bilginizi geliştirmek, elektronik dünyasına atılmak ve eğlenceli projelere imza atmak için sizi Raspberry Pi ile yolculuğa çıkarıyoruz! Sizler için hazırladığımız Raspberry Pi eğitim serisine devam edin :

Raspberry İle DC Motor Sürme

L293D, 2 adet DC motor sürmede kullanılabilecek oldukça popüler bir entegredir. 13. Dersimizde Raspberry ile DC Motor Sürmeyi nasıl yapacağımızı öğrenip, DC motor sürmeye başlayacağız.

RC522 RFID Modülü Kullanımı

RFID, nesnelerin radyo dalgaları kullanılarak tanınması için geliştirilmiş bir teknolojidir. Toplu taşıma araçlarındaki biletler, otoyol gişelerinde kullanılan HGS/OGS gibi ödeme sistemleri, okul/işyerlerimizdeki turnikelerde sıklıkla karşımıza çıkar.15. Dersimizde RC522 RFID Modülü Kullanımını öğreneceğiz ve Raspberry ile kart okuma yapacağız.

Son Çıkan Yazılar

18 YORUMLAR

    • Kodu kaydetmiş olduğunuz dosya isminin “stepper.py” olduğundan emin misiniz? Ayrıca Linux işletim sisteminde dosya isimleri büyük/küçük harf duyarlıdır. Hatanız bundan kaynaklı olabilir.

  1. hocam step motorun sürücüsünü aynı sizin yaptığınız gibi 5 volt 1 amperlik adaptörle besliyorum, kod çalışıyor ve step motoru elime aldığımda içindeki dönüşleri hissedebiliyorum fakat motorun ucundaki mil dönmüyor. acaba verdiğim besleme mi yetersiz?

  2. meraba. python dili hakkında hiç bilgim yok ama projemizin basit bir kısmında kullanmam gerekiyor. sorum şu;
    raspberry pi 3 ile ultrasonik sensör veya pır sensörü ile hareket algılandığında step motor belli bi adım atacak, bir süre sonra aynı adımı geri gelecek. Yardımcı olursanız çok makbule geçer.

    • Merhabalar, step motorları doğrudan SPI ya da I2C ile süremezsiniz, bu haberleşme özelliklerine sahip uygun bir motor sürücü kullanmanız gerekir.

  3. Merhaba,
    1 adet raspi3 e 6 step motor bağlanabilir mi ? yani 2 cnc sistemini tek raspi3 ile kontrol edebilir miyim ?
    bu iki cnc sistemi de eşzamanlı çalışabilecek şekilde nasıl kurgulayabilirim ?

    • 6 adet step motoru doğrudan bağlamanız için GPIO pinleri yeterli gelmeyebilir. Bu projeniz için step motorları sürücüler ile Arduino ya da benzeri bir mikrokontrolcü kartına bağlayabilir, daha sonra bu mikrokontrolcüyü Raspberry Pi’nize USB yada doğrudan UART üzerinden bağlayarak haberleştirme yapabilirsiniz.

  4. Ses komutu ile step motor konrolü yapacağım , bunun için matlab de gerekli kodları yazdım ve 2018 sürümünde raspberry pi dan çıkış alabileceğimi öğrendim , Şimdi step motoru 10 tur saat yönünde döndürüp sonra resetlenecek raspi kodlarını yazmam gerek. Yardımcı olabilir misiniz

  5. Gpio pimlerini tanıtırken hata veriyor raspberry iP 3 B+ modelini kullanıyorum sıkıntı neden olabilir bilgi verirseniz sevinirim teşekkürler.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz