라즈베리파이 스테핑 모터
조회수 3232회
위와같이 스테핑모터와 L298N을 연결했습니다. 그리고 IN1 - 18 IN2 - 17 IN3 - 27 IN4 - 22 이와 같이 라즈베리파이 gpio에 연결했습니다.
import RPi.GPIO as GPIO
import time
class setMoter():
def __init__(self,pin):
GPIO.setup(pin, GPIO.OUT)
self.p = GPIO.PWM(pin, 50)
self.p.start(0)
def move(self,m):
self.p.ChangeDutyCycle(m)
def s(self):
self.p.stop()
class stepping():
def __init__(self,pin1,pin2,pin3,pin4):
self.pin1 = pin1
self.pin2 = pin2
self.pin3 = pin3
self.pin4 = pin4
GPIO.setup(pin1, GPIO.OUT)
GPIO.setup(pin2, GPIO.OUT)
GPIO.setup(pin3, GPIO.OUT)
GPIO.setup(pin4, GPIO.OUT)
GPIO.output(pin1, GPIO.LOW)
GPIO.output(pin2, GPIO.LOW)
GPIO.output(pin3, GPIO.LOW)
GPIO.output(pin4, GPIO.LOW)
def move(self,m):
if m == 1:
for i in range(30):
GPIO.output(self.pin1, GPIO.LOW)
GPIO.output(self.pin2, GPIO.HIGH)
GPIO.output(self.pin3, GPIO.HIGH)
GPIO.output(self.pin4, GPIO.LOW)
time.sleep(0.01)
GPIO.output(self.pin1, GPIO.LOW)
GPIO.output(self.pin2, GPIO.HIGH)
GPIO.output(self.pin3, GPIO.LOW)
GPIO.output(self.pin4, GPIO.HIGH)
time.sleep(0.01)
GPIO.output(self.pin1, GPIO.HIGH)
GPIO.output(self.pin2, GPIO.LOW)
GPIO.output(self.pin3, GPIO.LOW)
GPIO.output(self.pin4, GPIO.HIGH)
time.sleep(0.01)
GPIO.output(self.pin1, GPIO.HIGH)
GPIO.output(self.pin2, GPIO.LOW)
GPIO.output(self.pin3, GPIO.HIGH)
GPIO.output(self.pin4, GPIO.LOW)
time.sleep(0.01)
elif m == 0:
GPIO.output(self.pin1, GPIO.LOW)
GPIO.output(self.pin2, GPIO.LOW)
GPIO.output(self.pin3, GPIO.LOW)
GPIO.output(self.pin4, GPIO.LOW)
GPIO.setmode(GPIO.BCM)
pin18 = setMoter(18)
pin18.move(10)
pin23 = setMoter(23)
pin23.move(6)
pin24 = setMoter(24)
pin24.move(0)
pin25 = setMoter(25)
pin25.move(4.5)
steppingM = stepping(18,17,27,22)
try:
while True:
a = input("angle:")
time.sleep(1)
steppingM.move(a)
time.sleep(1)
except KeyboardInterrupt:
pin18.s()
pin23.s()
pin24.s()
pin25.s()
GPIO.cleanup()
코드는 이렇게 만들었습니다. 그런데 스테핑 모터가 돌아가긴하나 부드럽게 돌아가지않고 드드득 소리가 납니다. 거기다 L298N 모터 드라이버가 엄청 뜨거워지는데 정상인가요..? 스테핑 모터 이름은 nema17입니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력