티스토리 뷰

모터의 원리

모터는 청소 로봇, 전기 자동차, 세탁기, 냉장고 등 정말 많은 곳에서 쓰입니다. 모터는 어떻게 움직일까요? DC 모터는 영구 자석이 있고 그 가운데에 코일이 감겨 있습니다.

 

플레밍이라는 과학자가 자석과 전류를 연구하다가 신기한 법칙을 발견했습니다. 그것을 플레밍이 법칙이라고 합니다. 그림 2-1을 보면 가운데 있는 것이 코일인데 양 끝이 정류자라는 반달 모양의 금속과 연결되어 있습니다.

그림 2-1 자기력의 방향

 

오른손을 이용하여 자석과 전류가 서로 어떤 방향으로 힘을 만드는지 알 수 있습니다. 전류는 플러스 극에서 마이너스 극으로 흐릅니다. 그리고 자석의 힘은 N극에서 S극으로 나갑니다.

 

전류가 나가는 방향은 엄지손가락으로 가리킵니다. 자석의 힘이 나가는 방향은 나머지 네 손가락으로 가리킵니다. 그러면 손바닥이 향하는 쪽이 바로 힘의 방향입니다. 그림 2-2를 보면 손바닥이 위를 보고 있습니다. 따라서 코일의 왼쪽은 위쪽으로 움직입니다.

그림 2-2 위쪽으로 향하는 자기력

 

그림 2-3을 보면 손바닥이 아래를 보고 있습니다. 따라서 코일의 오른쪽은 아래쪽으로 움직입니다.

그림 2-3 아래쪽으로 향하는 자기력

 

그래서 코일은 시간 방향으로 회전하게 됩니다. <그림 2-4>

그림 2-4 회전하는 코일

 

그리고 코일이 계속 움직이려는 성질(관성) 때문에 계속 회전할 수 있습니다. 어때요? 참 신기하죠? 이렇게 외우면 잘 기억납니다. 먼저 주먹을 쥡니다. 엄지를 피면서 전!(전류의 방향<+ 극에서 – 극으로> 나머지 네 손가락을 펴면서 자!(자석 힘의 방향<N극에서 S극으로>) 손바닥에 힘을 주면서 력!(힘의 방향). 이렇게 전자력으로 모터가 회전하는 것입니다.

 

아래에 있는 모터는 일반적인 자동차용 모터입니다. 이 모터는 회전하는 속도는 빠른데 힘(토크)이 약합니다.

그림 2-5처럼 모터의 회전 속도는 줄이고 힘은 크게 하려고 기어를 연결한 모터가 우리가 사용할 모터입니다.

그림 2-5 우리가 사용할 모터

 

기어는 지렛대의 원리를 이용한 것입니다.

그림 2-6 지렛대의 원리

 

그림 2-7처럼 받침점으로부터 더 멀리 있으면 더 무거운 무게를 들 수 있습니다. 하지만 더 많이 움직여야 합니다.

그림 2-7 회전하는 지렛대

 

그림 2-8과 같은 구조를 만들어서 움직여봅시다. 오른쪽 바퀴가 더 많이 움직이지만(빨리 회전) 왼쪽 바퀴는 조금만 움직입니다(천천히 회전). 하지만 힘은 더 강합니다.(힘이 더 세다)

 

그림 2-8 회전하는 큰 바퀴-작은 바퀴

 

큰 바퀴는 작은 바퀴보다 천천히 움직이지만, 더 큰 힘을 전달합니다. 이렇게 기어를 이용하면 모터가 회전하는 속도는 줄이고 힘은 더 강하게 만들 수 있습니다. 아두이노와 다른 전자부품은 모터와 비교하면 매우 적은 양의 전기를 사용합니다.

 

그래서 아두이노와 직접 모터를 연결하면 모터를 회전시킬 수 있는 전기가 부족하게 됩니다. 모터는 많은 양의 전기를 사용하기 때문이죠. 아두이노에서 모터를 움직이려면 모터 드라이브 칩을 사용해야 합니다. DC 모터를 움직이기 위하여 사용하는 모터 드라이브 칩으로 L9110, L293D, L298N이 있습니다.

 

집에서 사용하는 전자제품을 보면 와트(W) 표시가 있습니다. 와트(W)는 전자제품이 사용하는 전기의 힘(전력)을 말하며, 시간당 얼마의 전압과 전류를 사용하는지를 알 수 있습니다. 그리고 와트(W)는 볼트(V)와 전류(A)를 곱한 값을 말합니다.

 

우리가 사용하는 모터는 5볼트에 0.35암페어를 사용하는 것으로 와트 값은 5×0.35로 1.75와트(W)가 됩니다. 아두이노 디지털 출력 값은 5볼트×0.02암페어입니다. 따라서 와트 값은 5×0.02=0.1와트가 됩니다.

 

전력이 클수록 더 많은 일을 할 수 있습니다. 전력을 비유하면 다음과 같습니다. 물이 더 높은 곳에 있을수록(전압), 물이 더 많이 흐를수록(전류) 물레방아가 더 빠르게 회전합니다.(전력이 크다) 따라서 아두이노 디지털 핀에 LED나 소형 모터를 직접 연결하여 사용할 수 있습니다.

 

충분한 전력을 줄 수 있기 때문이죠. 하지만 자동차용 모터는 직접 연결하면 충분한 전력을 줄 수 없어서 모터가 제대로 회전하지 않습니다.

그림 2-9 아두이노와 모터는 직접 연결하면 안 된다

 

이렇게 모터에 충분한 전기를 보내주는 장치를 모터 드라이버라고 합니다. 이 책에서는 모터에 가장 적합한 L9110S 모터 드라이버 모듈을 사용했습니다. 모듈은 여러 개의 전자부품들을 어떤 목적에 맞도록 하나의 제품으로 만든 것을 말합니다.

 

마치 레고블록과 비슷합니다. 레고블록을 모아서 하나의 작품을 만들듯이, 여러 가지 모듈을 모아서 전자제품을 만드는 것입니다.

 

L9110S 모듈은 좋은 점이 많습니다.

첫째, 에너지 낭비가 적어 모터를 오랫동안 움직일 수 있습니다.

둘째, 모터의 회전 속도와 방향을 쉽게 바꿀 수 있고, 아두이노와 연결하기도 쉽습니다.

셋째, 다른 사람이 코딩한 것을 사용하지 않고(외부 라이브러리를 사용하지 않고) 직접 코딩을 할 수 있습니다.

 

L298N 모터 드라이버 모듈을 가지고 있는 독자들도 있을 겁니다. 하지만 L298N 모듈은 전기를 많이 씁니다. 그래서 배터리를 자주 바꿔줘야 하므로 불편합니다.

그림 2-10 모터 회전 방향 바꾸기

 

모터의 회전 방향을 바꾸려면 그림 2-10과 같이 연결된 배터리의 극을 서로 바꿔주면 됩니다. 하지만 실제로 자동차를 만들 때 모터의 회전 방향을 바꾸고 싶을 때마다 배터리의 극을 바꿔서 연결하려면 얼마나 불편할까요?

 

H 브리지라는 칩을 사용하면 쉽게 모터의 회전 방향을 바꿀 수 있습니다. H 브리지는 전기 신호를 보내서 모터의 회전 방향과 속도를 바꿀 수 있는 칩입니다. 이것을 집적회로(IC)라고 합니다. 이 집적회로에는 많은 부품이 있는데 전기신호를 보내서 모터의 회전 방향과 속도를 바꾸는 일을 합니다.

그림 2-11 모터 드라이버
그림 2-12 모터 드라이버 칩 연결 회로 <회전 방향은 서로 반대 방향일 수 있다.>

 

그림 2-12에서는 L9110S칩을 아두이노 피더블유엠(PWM) 디지털 5번, 6번 핀과 연결했습니다. 피더블유엠(PWM) 디지털 핀 5, 6번에 전압을 어떻게 주느냐에 따라서 모터가 다르게 움직입니다.

 

L9110S칩과 아두이노를 연결할 때, 5번과 6번 핀을 서로 바꿔서 연결하면 어떻게 될까요? 위의 표와 반대로 움직이게 됩니다. 참 신기하죠? 그러면 어떻게 속도를 바꿀 수 있을까요? 1편에서 배웠던 피더블유엠(PWM) 방식을 사용하면 됩니다.

 

엘이디(LED) 불의 밝기를 바꾸는 방법을 기억하나요? 피더블유엠(PWM) 디지털 핀에 0부터 255 사이의 값을 보냅니다. 0은 0볼트(V)이고 255는 5볼트(V)입니다. 보내는 숫자 값으로 전압을 바꿀 수 있습니다. 전압이 세지면 불이 더 밝게 켜집니다.

 

모터도 마찬가지입니다. 피더블유엠(PWM) 디지털 핀으로 전압을 다르게 줘서 속도를 바꿀 수 있습니다. 이 방법으로 다른 부품을 더 연결하지 않아도 모터의 회전 속도를 바꿀 수 있습니다. 정말 편리하죠?

 

모터 드라이버 사용, 모터 움직이기

그림 2-13 모터 드라이버 테스트 필요 부품

 

앞에서 설명한 L9110S 칩 2개를 사용하여 모터 2대를 동시에 작동시킬 수 있는 제품이 그림 2-14의 L9110S 모터 드라이버 모듈입니다. L9110S 칩과 모터를 연결할 수 있게 만든 터미널이 4개가 있습니다. 터미널을 보면 나사가 있습니다.

 

터미널을 보면 선을 끼울 수 있는 구멍이 있는데 여기에 모터 선을 연결하고 나사를 돌리면 쉽게 연결할 수 있습니다. 이 나사를 돌릴 때는 부품 상자에 있는 드라이버를 사용하면 됩니다.

 

그리고 아두이노, 전원과 연결하기 위해서 만든 핀 6개가 있습니다. L9110S 모터 드라이버 모듈은 L9110S 칩과 모터를 쉽게 연결하기 위해서 만든 터미널, 그리고 아두이노와 연결하는 핀들을 하나로 모아서 만든 제품입니다.

 

이 책에서 사용하는 모터는 350밀리암페어(㎃) 정도의 전류가 필요합니다. 모터 드라이버는 모터를 잘 회전시키기 위해서 더 큰 전류가 필요합니다.

 

모터 드라이버는 모터에 필요한 전류보다 2배 정도 큰 전류가 필요합니다. L9110S는 800밀리암페어의 전류를 사용하여 모터를 움직일 수 있는 좋은 모터 드라이버입니다. 회로를 만들기 위해서 L9110S 모터 드라이버 모듈의 6개 핀을 자세히 살펴봅시다.

그림 2-14 L9110S 모터 드라이버 부분 확대

 

가운데에 있는 VCC와 GND 핀은 많이 보던 핀이죠? 라인 센서의 VCC, GND 핀과 같습니다. VCC는 플러스 극(+)과 연결하고 GND는 마이너스 극(-)과 연결합니다. 위쪽에는 B-IA와 B-IB 핀이 있습니다. 이 핀은 무엇일까요? 이 핀은 모터 하나를 움직이기 위한 핀입니다.

 

모터를 움직이기 위해서는 피더블유엠(PWM)디지털 핀 2개와 연결해야 합니다. 아래쪽에는 A-IA와 A-IB 핀이 있습니다. 마찬가지로 모터를 움직이기 위해서 피더블유엠(PWM) 디지털 핀 2개와 연결해야 합니다. 회로가 제대로 연결이 되면 전원 엘이디(LED)가 켜집니다.

 

우선 모터 하나를 움직이도록 코딩을 하겠습니다.

그림 2-15 아두이노와 모터 드라이버 및 모터 연결

 

회로를 만들 때 이렇게 생각하면 편합니다. 부품은 아두이노와 각각 연결되니(병렬연결) 하나씩 연결합니다. 즉 배터리에서 전기가 나오면 아두이노, 모터 드라이버 모듈로 각각 전기를 보냅니다. 그러니 다른 부품은 크게 신경 쓰지 않아도 됩니다.

 

각각의 부품이 전원과 잘 연결되면 됩니다. 플러스 극, 마이너스 극과 연결해야 할 것을 각각 모아서 브레드보드에 연결하면 쉽게 회로를 만들 수 있습니다.

 

  • 먼저 배터리를 브레드보드와 연결합니다. 그림의 배터리 연결을 보면 빨간색 점선으로 되어 있습니다. 이것은 프로그램을 업로딩하고 나중에 연결하라는 뜻입니다. 업로딩할 때 컴퓨터에서 오는 전기와 배터리에서 오는 전기가 서로 충돌하여 업로딩을 방해할 수 있기 때문입니다. 일단은 검은색 선인 마이너스 극만 브레드보드에 연결합니다.
  • 아두이노 5V는 배터리의 플러스 극(+)과 연결되게 수-수 점퍼 케이블로 연결합니다. 아두이노 그라운드(GND) 핀은 배터리의 마이너스 극(-)과 연결합니다.
  • 모터 드라이버를 연결합니다. 모터 드라이버의 VCC는 배터리의 플러스 극(+)과 연결합니다. 그라운드(GND)는 배터리의 마이너스 극과 연결합니다.
  • 지금부터 매우 매우 중요한 내용입니다. 모터와 모터 드라이버를 제대로 연결해야 합니다.<그림 2-16> 모터에는 선이 두 개 있습니다. 여기서 사용하는 모터에는 빨간색 선검은색 선이 있습니다. 터미널 1, 3번은 빨간색 선과 연결하고 터미널, 2, 4번은 검은색 선과 연결합니다.
  • 터미널 3번과 모터의 검은색 선을 연결합니다. 터미널 4번과 모터의 빨간색 선을 연결합니다. (기억하기 쉽게 검, 빨, 검, 빨) 그리고 나중에 모터가 반대방향으로 회전하면 빨간색 선과 검은색 선을 바꿔서 연결합니다.

그림 2-16 모터와 모터 드라이버 연결

 

그런데 모터 선의 색깔이 다를 수도 있습니다. 이럴 때는 모터를 일단 연결합니다. 그리고 모터의 방향이 생각대로 잘 움직이면 그대로 둡니다. 그렇지 않다면 모터 선의 위치를 서로 바꿉니다.

 

바퀴는 선이 없는 쪽에 연결합니다.

 

그림 2-17 바퀴 연결

 

또 하나 매우 매우 중요한 내용입니다. 터미널과 모터를 연결할 때 먼저 터미널의 나사를 풉니다. 그리고 모터의 은색 핀 부분을 넣고 터미널의 나사를 조입니다. <그림 2-18>

 

이때 모터의 핀 부분을 너무 짧거나 너무 깊게 넣으면 모터가 움직이지 않습니다. 핀 부분이 너무 짧으면 가위 등을 이용해서 전선의 고무 부분을 잘 벗겨냅니다. 그리고 핀을 너무 깊게 넣지 않고 나사를 조여서 선이 빠지지 않게 합니다.

그림 2-18 터미널과 모터 연결

그리고 A-IA 핀, A-IB 핀과 PWM 디지털 핀을 연결합니다. A-IA에 전압을 주고 A-IB에는 전압을 주지 않으면 모터(MOTOR) A터미널에 연결된 모터가 회전합니다.

 

바퀴 쪽으로 봤을 때 모터가 시계방향으로 회전합니다. 만약 바퀴가 잘 돌아가지 않으면 손으로 바퀴를 조금 돌려줍니다. 표로 한 번 정리해 보겠습니다.

 

나중에 모터를 하나 더 연결할 때도 마찬가지입니다. 모터(MOTOR) B 터미널과 연결하는데 다음과 같이 전압을 다르게 주면 모터가 다르게 움직입니다.

 

그림 2-19처럼 항상 바퀴를 보면서 어떤 방향으로 회전하는지 살펴봅시다.

그림 2-19 바퀴 회전 방향

 

프로그램을 업로딩 했을 때 모터가 원하는 방향대로 움직이지 않는다면 모터를 반대로 연결하거나 디지털 핀을 서로 바꿔서 연결한 것입니다.

 

이 내용은 아두이노 라인 트랙 자동차를 만들 때 매우 중요한 내용입니다. 읽고 또 읽어서 확실하게 이해하고 넘어갑시다. 그리고 A-IA 핀은 PWM 디지털 5핀과 연결합니다. A-IB 핀은 PWM 디지털 6핀과 연결합니다.

 

그림 2-20과 같이 코딩하고 업로딩을 해보겠습니다. PWM 5번 핀으로 100 값을 보내고 PWM 6번 핀으로 0 값을 보내면 모터가 시계 방향으로 회전합니다. 255 값을 보내면 최대 속도로 회전합니다.

그림 2-20 시계 방향으로 회전하기

 

잘 움직이는지 확인하기 위해서 프로그램을 업로딩 합니다. 그리고 배터리를 연결해서 충분한 전기가 흐르게 합니다. 모터가 시계 반대 방향으로 잘 움직이나요?

 

배터리를 연결하지 않는다고 모터가 움직이지 않는 것은 아닙니다. 컴퓨터에서 나오는 전기로 모터가 어느 정도 움직일 수 있습니다. 코딩이 잘 되었나 확인할 때는 굳이 배터리를 연결하지 않아도 됩니다. 하지만 모터를 빨리 회전시키려면 배터리를 연결해야 합니다. 충분하게 전기를 줘야 모터가 빠르게 회전하기 때문이죠.

 

아두이노 라인 트랙 자동차를 만들 때 스크래치와 아두이노의 연결이 끊어지는 경우가 종종 있습니다. 먼저 USB 선을 빼서 아두이노와 컴퓨터를 연결하지 않습니다. 그리고 만든 프로그램을 저장합니다.

그림 2-21 프로그램 저장하기

 

그리고 프로그램을 껐다가 다시 켭니다. 그리고 다시 USB 선으로 아두이노와 컴퓨터를 연결합니다. 그리고 시리얼 포트에서 연결된 장치를 고릅니다. 제대로 연결되면 새로운 COM이 나타납니다. 이것을 고르면 됩니다. 컴퓨터마다 다른 COM이 연결될 수 있습니다. 그림 2-22와 같이 이 컴퓨터는 COM7이 연결되었습니다.

그림 2-22 시리얼 포트에서 연결된 장치 선택

 

모터를 시계 반대 방향으로 회전시키려면 어떻게 하면 될까요? 앞에서 했던 것과 반대로 코딩을 하면 되지 않을까요?

그림 2-23 시계 반대 방향으로 회전하기

 

참 쉽죠? 이렇게 생각하는 힘이 중요합니다. 그림 2-24처럼 둘 다 0 값을 보내면(전압을 보내지 않으면) 모터가 멈춥니다. 모터가 잘 움직인다면 정말 어려운 내용을 잘 해결한 것입니다.

그림 2-24 모터 멈추기

 

그럼 시계 방향으로 회전하다가 멈추고 다시 시계 반대 방향으로 회전하다가 멈추는 것을 계속 반복하도록 그림 2-25처럼 코딩해봅시다.

그림 2-25 시계방향으로 회전-멈추기-시계반대방향으로 회전-멈추기

 

이제 감을 잡을 수 있겠죠? 어떤 문제가 있을 때 항상 나눠서 생각한다면 문제를 더욱 쉽게 해결할 수 있습니다. 아두이노 라인 트랙 자동차를 만들 때 가장 중요한 내용을 배웠습니다. 여기서 배운 내용을 이용해서 더 멋진 작품을 만들어 봅시다.

댓글
댓글쓰기 폼