brunch

You can make anything
by writing

C.S.Lewis

by Cylogic Nov 05. 2020

49. 열한번째 장난감 : 날갯짓하는 갈매기 오토마타

스테퍼 모터(스텝 모터) 사용법과 함께

이번 이야기에서는 두 가지 주제의 이야기를 해야 할 것 같다.

 

먼저 스테퍼 모터,  스텝 모터, 스테핑 모터(stepper motor, step motor, stepping motor) 등으로 불리는 모터의 사용법, 그리고 오토마타(Automata)라고 하는 기계장치에 대한 이야기이다.


스테퍼 모터,  스텝 모터, 스테핑 모터(stepper motor, step motor, stepping motor)

구글에서 검색하여 확인할 수 있는 다양한 스테퍼 모터의 형태

스테퍼 모터는 360도의 회전 위치를 정밀하게 구분하여 전자펄스의 스텝으로 회전축을 움직인다. 


이런 이유로 3D 프린터나 레이저 조각기 등 정밀하게 기계장치를 이동하는 데 사용되는 모터이다. 복잡한 구조나 이론에 관련된 부분은 지식백과를 통하여 확인하시면 될 것이고, 우리는 이 모터를 어떻게 사용할 것인가를 공부하면 된다. 

위의 사진에서 확인할 수 있는 바와 같이 다른 모터들처럼 수많은 형태와 종류가 있으므로 필요에 따라 사용하여야 하는데, 우리는 소형 장난감을 구동하기 위한 모터를 필요로 하므로 우측 아래에 있는 형태의 모터를 사용하려고 한다. 

스테퍼 모터의 경우 양극, 음극 2개의 전선 가닥이 있는 것이 아니고 대부분 4~5개 정도의 전선이 연결되어 있는데, 이를 좀 더 쉽게 사용하기 위하여 스테퍼 모터 전용 모터 드라이버 보드를 사용하게 된다.

우측 하단의 소형 모터의 경우 모터 드라이버를 포함하여 판매하는 형태인데, 간단한 장난감 제작이나 실습을 위한 장비이므로 가격은 합쳐서 2,000원 안팎으로 구할 수 있다.

실제 상시 작동시킬만한 상품을 만들기 위하여 사용하는 견고한 모터의 경우 훨씬 비싼 가격에 판매되며 정밀하고 많은 파워를 요구하는 곳에 사용할 경우 몇십만 원 정도에 판매되는 제품도 있다.


오늘 제작해 본 장난감은 아래의 동영상에 보이는 오토마타 작품을 구동시킬 것이고, 일단은 단순하게 회전 운동 만을 할 것이다. 그렇다면 다른 DC 모터를 사용해도 될 것인데, 왜 스테퍼 모터를 사용하는지 궁금하실 수 있다. 그 이유는 일반 모터의 경우 회전 속도는 빠르지만 토크가 떨어지고, 이를 보완하기 위하여 기어박스를 연결하여 제작을 할 수 도 있지만 이러한 과정을 생략할 수 있기 때문이기도 하다. 


스테퍼 모터가 가진 원래의 용도인 정밀한 회전작 조절의 용도에는 맞지 않지만 힘이 필요하고 회전 속도가 많이 필요하지 않을 경우에는 스테퍼 모터를 사용하여 안정적인 작동이 가능하게 한 경우가 많다.


오토마타(Automata)

위의 동영상에 보이는 나무 구조물은 바로 오토마타(Automata)의 한 형태인데, 오래전에 만들어 두었던 수동 오토마타 작품을 스테퍼 모터를 이용하여 자동화해 본 것이다.

오토마타는 만들기를 좋아하는 사람이라면 누구나 한번 도전해 볼 만한 영역인데, 단순한 회전 운동을 캠이나 기어, 링크 등을 사용하여 직선운동으로 바꾸거나 다양한 동작을 만들어 내는 아주 재미있는 분야이다.

검색해 보면 아주 다양한 오토마타 작품을 구경해 볼 수 있을 것이다.

정밀한 조작이 필요한 오토마타 작품을 만들 경우도 있는데, 이러한 작품의 경우 정밀한 각도와 방향 전환 등의 작업을 코딩을 통해서 구현할 수 있다.


다시 본론으로 돌아가서...

스테퍼 모터는 다음과 같은 회로 결선이 필요하다.

스테퍼 모터에서 나온 케이블을 아래의 사진과 같이 가운데 있는 소켓에 접속하고 좌측에 있는 핀의 IN1, IN2, IN3, IN4 핀에 케이블을 연결하여 이를 각각 다음과 같이 연결한다.

IN1 -> 8

IN2 -> 9

IN3 -> 10

IN4 -> 11


아래에 있는 전원 핀은 좌측이 GND, 우측이 5V에 연결되어야 한다. 


그리고 스위치를 눌렀을 때 작동하게 하기 위하여 

3번 핀에 버튼스위치를 PULLUP의 형태로 연결하였다.


3번 핀을 눌렀을 때 모터가 360도 회전을 하고 다시 반대 방향으로 360도 회전을 하여 원래 자리로 돌아오는 매우 간단한 코드를 아래와 같이 작성하였다.

1번 줄의 Stepper.h는 스테퍼 모터의 이용을 위한 Library를 호출한 것이고,

3번 줄의 const int stepsPerRevolution = 2048; 는 360도를 몇 개의 스텝으로 나누어 회전할 것인지에 대한 변수의 지정이다.

4번 줄은 해당 스텝에 대한 정보를 넣고 어느 핀에 연결할 것인지를 정리한 것이다. (8, 10, 9, 11) 번의 순서를 유의 하자.

6번 줄은 RPM 분당 회전수를 결정한다. 이; 회전수는 모터가 감당할 수 있는 속도보다 빠르게 지정할 경우 모터가 회전하지 않는다. 정확한 내용은 각 모터의 스펙을 참조해야 할 것이다. 내가 샘플 작업을 하면서 테스트한 해당 모터는 15 RPM까지는 감당했다.


버튼이 눌리면 실행되는
14번 줄부터 16번 줄까지의 내용은 stepsPerResolution만큼을 한 방향으로 돌리고, -stepsPerResolution만큼으로 그 반대방향(-로 지정할 경우)으로 돌리는 명령이다. 

이를 실행하면 아래의 동영상과 같이 동작하게 된다.

스테퍼 모터가 한 바퀴씩 정방향과 역방향으로 회전하는 모습

이러한 방법으로 한 방향으로 회전하는 스테퍼 모터를 이용하여 샘플 동영상에서 보여준 오토마타를 이용한 날갯짓하는 새를 만들었고, 다음 이야기에서는 네오픽셀로 장식한 업그레이드 버전을 만드는 방법을 이어가도록 하겠다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari