초급 예제

누구나 쉽게 따라해볼 수 있는 쉬운 예제들입니다. 가볍게 도전~!

모터드라이버로 모터 제어하기

2018-11-30 14:32:33

개요

1) DC모터란 무엇인가?

 

DC모터는 직류(DC: Direct Current)를 전원으로 동작하는 전기모터로 직류모터라고도 합니다. 외부의 고정된 부분에 영구자석을 배치하고 내부 회전체에 코일을 사용하여 구성합니다. 회전체에 흐르는 전류의 방향을 전환함으로써 발생하는 자기장과 자석에 자기장 간 상호 반발력을 이용하여 회전력을 얻습니다.

 

DC모터는 다른 구동장치에 비해 구조가 간단하고 가벼워서 선풍기나 냉장고와 같은 가전제품부터 자동차, 고속 열차 등 운송수단까지 광범위하게 사용되고 있습니다.

 

 


 


2) 모터드라이버란 무엇인가?

DC모터는 극성이 정해지지 않은 두 개의 핀이 있습니다. 모터가 회전하기 위해서는 이 두 핀에 각각 VCC와 GND가 연결되어야 합니다.

 

밑에 사진과 같이 1번 - VCC / 2번 - GND 로 연결했을 때 반시계 방향으로 회전, 1번 - GND / 2번 - VCC로 연결할 경우 시계 방향으로 회전하게 됩니다.

 

이렇듯 DC모터의 회전방향을 정해주기 위해서는 전류의 방향을 제어해야 하는데, 회전방향을 바꿀때마다 전원의 극성을 바꿔 연결해주기 힘들므로 별도의 회로를 연결하여 전류의 방향을 제어하게 됩니다.

 

< 모터의 회전 방향 >

 

 

모터의 회전방향을 정해주기 위한 회로를 H-Bridge회로라고 하고 2개의 핀을 이용하여 1개의 모터 회전을 제어합니다.

 

아두이노에서는 H-Bridge회로가 내장된 모터 드라이버(Motor Driver) 를 이용해 DC모터를 제어합니다.

 

모터드라이버 2개의 핀에 각각 HIGH / LOW 신호를 주어 전류의 흐름을 제어하게 되고, 이로인해 DC모터의 회전방향이 정해집니다.

 

 

 

부품 목록

NO 부품명 수량 상세설명
1 오렌지보드 1 아두이노 UNO
2 모터드라이버 1 L298N
3 기어박스모터 1  
4 9V 배터리 1  
5 9V 배터리 홀더  
6 브레드 보드 1 mini
7 점퍼 케이블 4  

 

부품명 오렌지보드 모터드라이버 기어박스모터 브레드 보드 9V 배터리 & 배터리 홀더
파트

 

 

하드웨어 연결

브레드보드

1. 9V 건전지의 빨간색 선을 브레드보드 중간에 연결합니다.

2. 9V 건전지의 검은색 선을 빨간선과 겹치지 않게 브레드보드 중간에 연결합니다.

3. 모터드라이버 12V핀을 9V 건전지 빨간색 선과 같은 라인에 연결합니다.

4. 모터드라이버 GND핀을 9V 건전지 검은색 선과 같은 라인에 연결합니다.

5. 모터드라이버 IN1핀을 오렌지보드 디지털 9번핀에 연결합니다.

6. 모터드라이버 IN2핀을 오렌지보드 디지털 6번핀에 연결합니다.

7. 모터드라이버 IN3핀을 오렌지보드 디지털 10번핀에 연결합니다.

8. 모터드라이버 IN4핀을 오렌지보드 디지털 11번핀에 연결합니다.

9. 오렌지보드 VIN핀을 9V 건전지 빨간색 선과 같은 라인에 연결합니다.

10. 오렌지보드 GND핀을 9V 건전지 검은색 선과 같은 라인에 연결합니다.

11. 모터드라이버 양쪽에 DC 모터를 각각 연결해 줍니다.
 

 

 

 

 

 

소프트웨어 코딩 

아래 코드는 모터드라이버에 연결된 양쪽 DC모터가 1초마다 회전방향이 바뀌도록 회전하는 코드입니다.

 

6번, 9번핀 / 10번, 11번핀을 한 셋트로 묶어서 HIGH, LOW를 어떻게 구성했을 때 모터가 어느방향으로 움직이는지 확인하여 아래 사진과 같이 표로 정리해 봅시다.

 

 

 

<모터드라이버를 활용한 모터 제어 소스>

 

int in1 = 9;
int in2 = 6;
int in3 = 10;
int in4 = 11;
 
 
void setup() {
  Serial.begin(9600);
  pinMode(in1, OUTPUT);    
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
}
 
void loop() {
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  delay(1000);
 
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  delay(1000);
}
cs

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

눈의goat 2019-05-21 00:06:21

전원 연결이 됐을 때 모터 드라이버의 LED가 항상 켜져있었는데 오늘 보니 LED가 계속 깜빡거리기도 하고 불이 약해지면서 꺼지기도 하네요. 어떻게 해결하나요?