Raspberry Pi ile Step Motor Kontrolü

Bu uygulamamızda Raspberry Pi kartımız ile 28BYJ-48 step motorumuzu ULN2003A motor sürücü modülünü kullanarak kontrol edeceğiz.


Bu uygulamada kullanacağımız malzemelerimiz;

  • Raspberry Pi

  • 28BYJ-48 Step Motor

  • ULN2003A Motor Sürücü Modülü

  • Jumper Kablolar


Devremizi şemada gördüğümüz şekilde kuruyoruz.


IN1 -- GPIO4 -- BOARD 7

IN2 -- GPIO17 -- BOARD 11

IN3 -- GPIO27 -- BOARD 13

IN4 -- GPIO22 -- BOARD 15

 

Step motorlar adım adım hareket edebilen fırçasız bir DC motordur. "Faz" olarak adlandırılan gruplarda organize edilen çoklu bobinlere sahipler. Sırayla her faza enerji vererek, motorun her seferde bir adım dönmesi sağlanır. Step motorların tam bir tur dönebilmesi için belirli bir adım sayıları vardır bu adım sayıları motordan motora değişkenlik gösterebilir. Bizim kullandığımız step motorda bir adım yaklaşık 5.625 derecedir ve bir tam tur olabilmesi için 360/5.625 = 64 adım atması gerekmektedir. Kullanılan step motorda dişlilerle çıkışa devir aktarma oranı 32:1 oranındadır.


 

Kodumuzu yazmak için stepmotor.py adı ile bir dosya oluşturuyoruz.


import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)

control_pins = [7,11,13,15]

for pin in control_pins:
  GPIO.setup(pin, GPIO.OUT)
  GPIO.output(pin, 0)
  
halfstep_seq = [
  [1,0,0,0],
  [1,1,0,0],
  [0,1,0,0],
  [0,1,1,0],
  [0,0,1,0],
  [0,0,1,1],
  [0,0,0,1],
  [1,0,0,1]
]

def ileri(tur_sayisi_i):
    control_pins = [7,11,13,15]
    for i in range(tur_sayisi_i):
      for halfstep in range(8):
        for pin in range(4):
          GPIO.output(control_pins[pin], halfstep_seq[halfstep][pin])
        time.sleep(0.001)
        
def geri(tur_sayisi_g):
    control_pins = [15,13,11,7]
    for i in range(tur_sayisi_g):
      for halfstep in range(8):
        for pin in range(4):
          GPIO.output(control_pins[pin], halfstep_seq[halfstep][pin])
        time.sleep(0.001)

while True:
    tur_sayisi_i=input("İleri yönde kac tur dönecek? \n ")
    ileri(int(tur_sayisi_i)*512)
    tur_sayisi_g=input("Geri yönde kac tur dönecek? \n ")
    geri(int(tur_sayisi_g)*512)
GPIO.cleanup()



Kodumuzu yazıp kaydettikten sonra terminal ekranından

python stepmotor.py 

komutu ile çalıştırabilirsiniz.






Son Paylaşımlar