본문 바로가기
IoT

[생활속의 IT] 아두이노#4 - 모터 구동하기

by 생활속의 IT램프 2020. 3. 20.

이제 실제 부품들을 구입하고 모터를 구동해보도록 하겠습니다.

아두이노와 관련된 부품을 구입하는 부분과 예제 코드의 분석, 회로 설계하는 부분으로 나누어 설명하겠습니다.

 

1. 아두이노 및 부품 구매

 

2. 예제 코드 분석

 

3. 회로 구성

 

-----------------------------------------------------------------------------------------------------------------------------------

 

1. 아두이노 및 부품 구매

 

아두이노와 관련된 부품을 구입할 수 있는 사이트들은 많이 있습니다. 

 

저는 http://www.devicemart.co.kr/ 에서 구매하였습니다. 

이번에 구동해 볼 모터는 가장 간단한 SG-90 입니다.

 

참고로 SG-90은 기준점 대비 +180도, -180도로만 회전이 가능합니다. 즉 바퀴처럼 돌리지는 못합니다.

그리고 크기가 매우 작습니다. 모터 크기가 500원 짜리 동전 정도입니다. 그만큼 회전하는 힘(토크)가 쎄지는 않겠죠?

 

 

① 아두이노 uno: SZH-EK002

참고로 호환보드란 정품이 아닌 복제품을 의미합니다. (아두이노는 오픈소스 하드웨어이므로..)

기능과 외관이 100% 동일하고 가격이 좀 더 저렴하니 믿고 써도 됩니다. (정품은 약 3만원 정도 하네요)

 

 

② 모터: SG-90 

SG-90모터만 돌릴 땐 저항같은건 없어도 됩니다. 

참고로 뒤에 서술하겠지만 가변저항을 이용하여 SG-90의 회전을 조절하는 방법이 있는데 

본 포스트에서는 단순 코딩(로직)만으로 회전을 조절하는 법을 보도록 하겠습니다.

 

 

③ 브레드보드 및 쉴드: SZH-EK050

 

우리가 회로를 만드는 법은 크게 3가지가 있습니다.

 

첫 번째는 납땜을 하는 겁니다. 초록색 PCB 판에다가 소자와 선을 연결한 후 납으로 고정시키는 것이죠.

그런데 단순 아두이노 놀이(?)에 쓰기에는 좀 버겁습니다.

물론 전문가들 중 초록색 PCB 기판과 납땜 기기를 사서 아두이노를 가지고 노시는 분도 있습니다.

 

두 번째는 일체형으로 만드는 것입니다. 

소형으로 설계하여 주문제작하는 것이죠. 

그러나 이 방식은 대규모 생산만 가능하고 중/대기업 아니면 어렵다는건 자명합니다.

 

그래서 우리는 세 번째인 브레드 보드를 이용합니다.

브레드보드란 이미 회로 구성이 되어있어서 납땜이 필요없는 기판입니다.

아래는 우리가 구입할 미니 브레드보드인데 빨간색 선과 같이 가로방향으로는 모두 연결되어 있습니다.

 

빨간색으로 표시한 선만 그런 것이 아니라 모든 핀이 가로방향으로 연결되어 있습니다.

따라서 소자를 잘 꽂기만 하면 납땜없이 연결할 수 있는 것이죠.

다만 헐겁게 꽂히기 때문에 테스트용도로 많이 씁니다. (꽂고 빼고 용이)

 

그리고 쉴드는 말 그대로 uno 기판을 보호하면서 덮는 것인데, 미니 브레드보드와 사이즈가 잘 맞고 

가격도 저렴하니 그냥 주문하셔도 됩니다. 

 

 

④ 점퍼 케이블

 

브레드보드와 우노기판, 모터 연결부위가 모두 암놈으로 되어 있기 때문에

이들을 연결하기 위해 수놈-수놈 케이블이 필요합니다.

 

아래의 점퍼 케이블은 M-M 타입이라고 되어 있는데 수놈-수놈 이라는 뜻입니다. 

대부분의 경우 M-M 타입이 필요하니 이걸로 하나 주문하면 되겠네요.

저렇게 주문하면 2일 정도면 배송되니 ㄱㄱㄱ 합니다

 

 

 

2. 예제 코드 분석

 

이제 모터를 구동해볼 차례입니다.

설치했던 IDE 프로그램을 실행시키면 서보 모터 구동 예제 소스코드가 있습니다. 

 

Servo 모터 예제로 Knob과 Sweep이 있는데 knob은 우리말로 손잡이란 뜻이고 sweep은 휩쓸다 라는 뜻입니다.

 

knob예제는 가변저항을 손잡이 삼아 손으로 돌리면 그에 따라 모터가 회전하는 예제 파일입니다. 

sweep은 단순 PWM 전기신호로 모터를 회전시키는 예제 파일입니다.

 

우리는 가변저항은 구매하지 않았으므로 sweep 예제파일을 보도록 할께요.

이전 포스트(https://itlamp.tistory.com/8)에서 아두이노 소스코드의 구성에 대해 설명했습니다.

코드가 얼핏 보기에 복잡해 보이지만 사실 전혀 그렇지 않습니다. 매운 간단합니다.

 

아두이노의 소스 코드의 구성은 3개로 나누어진다고 하였고 

 

첫 번째인 선언 부분에서는 Servo.h 파일을 가져오고 Servo 오브젝트를 선언했습니다.

그리고 두 번째인 초기 셋팅 부분(void setup())에서는 9번 핀을 모터 제어로 사용하겠다는 것을 알 수 있습니다. 

 

여기까지는 이해하기 쉽습니다. 그럼 마지막 세 번째, 반복 부분(void loop()) 을 자세히 보도록 하겠습니다.

 

○ 첫 번째 for 문

for문이 두 개가 있는데 위의 for 문은 pos를 0부터 180까지 넣고 모터에 전달하는 것을 볼 수 있습니다. 

주석 설명을 보니 pos는 각도이고 모터에게 값(pos)을 전달하면 그 각도로 이동한다는 것을 알 수 있습니다. 

delay(15)는 15ms 멈춘다는 뜻이군요. 

 

즉 1도 돌리고 15ms 멈추고 1도 돌리고 15ms 멈추고... 를 180번 반복한다는 것을 알 수 있겠네요.

 

○ 두 번째 for 문

다음 for 문도 마찬가지 입니다. 

다만 180도부터 시작해서 -1도 움직이고 15ms 쉬고 또 -1도 움직이고 15ms 쉬고..를 반복하고 있습니다.

 

여기까지 보면 코드도 매우 간단합니다. 그쵸?

그럼 이제 회로를 설계해보도록 하겠습니다.

 

 

 

3. 회로 구성

코드 분석도 했겠다, 주문한 부품들이 모두 왔으면 이제 회로 구성을 해봅시다. 

 

 

먼저 서보모터의 핀 구성을 보겠습니다. 

각 부품마다 Datasheet라고 해서 부품의 특성을 제공해주는데 SG-90의 데이터 시트를 보겠습니다.

각 선이 무슨 용도인지를 설명해주고 있습니다.

위에서부터 오렌지색은 제어용, 빨간색은 high전압, 갈색은 접지라고 나타내고 말하고 있습니다.

 

회로는 아래와 같이 구성해봅니다.

참고로 아두이노 회로 설계할 수 있는 무료 사이트 중 저는 https://www.tinkercad.com/ 여기를 이용했습니다. 

회로 설계 후 코드까지 작성해봄으로써 실제와 같이 테스트해볼 수 있습니다.

 

미니 브레드보드는 각 세로선이 연결되어 있는 상태라고 했습니다.

그러므로 왼쪽에서 4번째 세로선을 Vcc로, 6번째 세로선을 신호선으로, 8번째 세로선을 접지선으로 이용했습니다.

 

위와 같이 셋업하면 끝입니다.

그리고 sweep 예제파일을 실행시키면 실제 동작하는 걸 볼 수 있습니다.

댓글