본문 바로가기
졸업작품(스마트 창문)

라즈베리파이 스텝모터 다루기(스마트창문)

by 바위폭주 2023. 3. 31.
반응형

먼저 나는 위의 스텝모터를 사용하였다. https://smartstore.naver.com/mechasolution_com/category/f2aaa4e646814d6faf509a957fee90cd?cp=1 

 

메카솔루션 : 네이버쇼핑 스마트스토어

전자부품 교육키트 전문몰 메카솔루션입니다.

smartstore.naver.com

 

모터를 제어하기 위해서는 많은 전류가 필요하기 때문에 모터 드라이브가 필요하다.

이 예제에서는 L298이라는 모터 드라이브를 사용하였다.

먼저 라즈베리파이와 스텝모터, 모터 드라이브를 위의 그림과 같이 연결한다. 그림이 좀 엉망이여도 이해 바란다.

스텝모터의 배선을 4개를 GPIO핀에 연결한다. a,b,c,d 이렇게 27, 17, 22, 18번에 연결하였다.

그리고 모터는 외부 전원을 주어서 구동시켰다. 

https://www.devicemart.co.kr/goods/view?no=1342846 

 

오딧세이(ODYSSEY) 호환 12V 2A KC 인증 아답터 [SZH-PSU03]

미니PC 오딧세이(ODYSSEY) 및 아두이노 등의 마이크로컨트롤러 제품에 전원을 공급할 수 있는 12V 2A 아답터 / 잭 : 5.5mm/2.1mm(외경/내경) / 정격출력 : DC 12V 2A / 정격입력 : 100 - 240V / 50-60Hz / 0.8A / 사이즈

www.devicemart.co.kr

외부전원은 위의 제품을 사용하였다.

a = 27 # stepper motor
b = 17 # stepper motor
c = 22 # stepper motor
d = 18 # stepper motor

def setStepper(in1, in2, in3, in4): #setup stepper #스텝 출력 설정
    GPIO.output(a, in1)
    GPIO.output(b, in2)
    GPIO.output(c, in3)
    GPIO.output(d, in4)
    time.sleep(0.005)

def setup(): # 입출력 설정
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(a, GPIO.OUT) # stepper motor
    GPIO.setup(b, GPIO.OUT) # stepper motor
    GPIO.setup(c, GPIO.OUT) # stepper motor
    GPIO.setup(d, GPIO.OUT) # stepper motor
    
def close_window(pos): #창문이 열려있을 때만 닫을 수 있다. 1060펄스를 주어 총 1908도 회전
    if pos=="open":
        for i in range(258): # stepper motor 1060 pulse 1908 degree
            setStepper(1, 0, 0, 0)
            setStepper(0, 1, 0, 0)
            setStepper(0, 0, 1, 0)
            setStepper(0, 0, 0, 1)
            time.sleep(0.006)
            
def open_window(pos): #창문이 닫혀있을 때만 열 수 있다. 
    if pos=="close":
        for i in range(258): # stepper motor 1060 pulse 1908 degree
            setStepper(0, 0, 0, 1)
            setStepper(0, 0, 1, 0)
            setStepper(0, 1, 0, 0)
            setStepper(1, 0, 0, 0)
            time.sleep(0.006)

먼저 예제코드이다. 창문을 개폐할 때 토크가 충분해서 1상여자 스텝모터 방식을 사용하였다.

위의 pos=="open" , "close는 일단 무시하길 바란다. 후에 리드스위치를 사용하여 창문의 개폐여부를 알기 위함이다.

위의 스텝모터의 스텝각은 1.8도이다. 4개의 스텝이 있으므로 1.8x4x258 = 은 1908도이다. 

즉 내 창문의 개폐까지의 모터의 회전 각도는 1908도이다. 이 각도는 본인의 창문에 맞게 설정하길 바란다.

 

위 동영상은 저번 시간에 활용했던 빗물감지 센서를 이용하여 스텝모터를 움직이는 영상이다.

빗물이 감지되면 스텝모터가 720도 돌게 하였다. 위의 예제코드랑은 다른 예제이지만 저번 게시글을 참고하면 금방 따라할 수 있을 것이다. 이렇게 오늘은 스텝모터를 다뤄봤다. 다음시간에는 mq-7 일산화탄소와 리드스위치를 다뤄볼 예정이다.

도움이 되었다면 좋아요와 구독을 해주길 바란다...

반응형