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.
Kommentit