라즈베리파이 스테핑 모터

조회수 3232회

http://postfiles15.naver.net/MjAxNjExMDJfMjUw/MDAxNDc4MDg0MjE4ODIz.qFzab5bKgcUaVl-FxijoK59qx7U93FBRKb9fN_BaAGEg.wj8vRNjxbicyvPfsGmWo66Pmo_ASTU_6vi7vTMXxuwkg.JPEG.roboholic84/Untitled_Sketch_2_bbc1.jpg?type=w966

위와같이 스테핑모터와 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입니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)