아두이노 - 직류 모터 | Arduino - DC Motor
이 튜토리얼에서 우리는 다음을 배울 예정입니다:
- 직류 모터의 작동 원리
- 직류 모터의 속도와 방향을 제어하는 방법
- L298N 드라이버를 사용하여 직류 모터를 제어하는 방법
- L298N 드라이버를 사용하여 두 개의 직류 모터를 제어하는 방법
준비물
1 | × | Arduino Uno | Amazon | |
1 | × | USB 2.0 cable type A/B | 쿠팡 | Amazon | |
1 | × | L298N Motor Driver Module | 쿠팡 | Amazon | |
1 | × | 5V DC Motor | Amazon | |
1 | × | 5V Power Adapter for 5V DC motor | Amazon | |
1 | × | DC Power Jack | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 9V Power Adapter for Arduino | Amazon | |
1 | × | (Recommended) Screw Terminal Block Shield for Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Breadboard Shield For Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Enclosure For Arduino Uno | Amazon |
DC 모터에 관하여
DC 모터 핀배열
DC 모터는 두 개의 전선이 있습니다:
- Positive wire: 보통 빨간색
- Negative wire: 보통 검은색
작동 방법
DC 모터를 구매할 때는 어떤 전압의 DC 모터인지 알아야 합니다. 예를 들어, 12V DC 모터를 예로 들어봅시다.
12V 전원 소스로 12V DC 모터를 작동시킬 때:
- 12V와 GND를 각각 긍정선과 부정선에 연결: DC 모터가 시계 방향으로 최대 속도로 회전합니다.
- 12V와 GND를 각각 부정선과 긍정선에 연결: DC 모터가 반시계 방향으로 최대 속도로 회전합니다.
위에서 설명한 바와 같이, 직류 모터의 두 전선 간에 전력 극이 교체될 때, 회전 방향이 반전됩니다. 이 방법은 직류 모터의 방향을 제어하는 데 사용됩니다. 물론, 수동으로 변경하는 것이 아니라 프로그래밍을 통해 제어합니다.
12V 미만으로 DC 모터에 전력을 공급하면 모터가 여전히 회전하지만 최대 속도는 아닙니다. 이는 전력 공급의 전압을 변경하면 DC 모터의 속도를 변경할 수 있다는 것을 의미합니다. 그러나 전원의 전압을 제어하기 어렵기 때문에 이 방법은 실제로 사용되지 않습니다. 대신, 우리는 전원의 전압을 고정시키고 PWM 신호를 통해 DC 모터의 속도를 제어합니다. PWM의 듀티 사이클이 클수록 DC 모터가 회전하는 속도가 높아집니다.
아두이노를 사용하여 DC 모터를 제어하는 방법
DC 모터를 제어하는 것에는 두 가지 요소가 포함됩니다: 속도와 방향. 아두이노는 PWM 신호를 생성할 수 있습니다. 그러나 이 PWM 신호는 전압과 전류가 낮아서 DC 모터를 제어하는 데 사용할 수 없습니다. 아두이노와 DC 모터 사이에 하드웨어 드라이버를 사용해야 합니다. 드라이버는 두 가지 작업을 합니다:
- 아두이노에서 나오는 PWM 신호의 전류 및 전압을 증폭합니다 → 속도 제어용
- 아두이노에서 제어 신호를 받아 전원 공급 장치의 극성을 바꿉니다 → 방향 제어용
※ NOTE THAT:
이 튜토리얼은 모든 DC 모터에 적용될 수 있습니다. 12V DC 모터는 단지 예시일 뿐입니다.
5V DC 모터를 제어할 때, 아두이노 핀이 5V(DC 모터의 전압과 같음)를 출력하더라도, 아두이노 핀이 DC 모터에 필요한 충분한 전류를 제공하지 않기 때문에 아두이노와 DC 모터 사이에 드라이버가 필요합니다.
여러 종류의 칩, 모듈(예: L293D, L298N)이 DC 모터 드라이버로 사용될 수 있습니다. 이 튜토리얼에서는 L298N 드라이버를 사용할 것입니다.
L298N 드라이버에 대하여
L298N 드라이버는 직류 모터와 스텝 모터를 제어하는데 사용될 수 있습니다. 이 튜토리얼에서는 직류 모터를 제어하는 방법을 배웁니다.
L298N 드라이버 핀아웃
L298N 드라이버는 동시에 두 개의 DC 모터를 독립적으로 제어할 수 있으며, 이를 모터 A와 모터 B라고 합니다. L298N 드라이버는 13개의 핀을 가지고 있습니다:
두 모터에 공통적인 핀들:
- VCC 핀: 모터에 전원을 공급합니다. 5V에서 35V 사이 어디든 될 수 있습니다.
- GND 핀: 공통 접지 핀으로, GND(0V)에 연결해야 합니다.
- 5V 핀: L298N 모듈에 전원을 공급합니다. 아두이노에서 5V로 공급할 수 있습니다.
모터 A 핀 (채널 A):
- ENA 핀: 모터 A의 속도를 제어하는 데 사용됩니다. 점퍼를 제거하고 이 핀을 PWM 입력에 연결하면 모터 A의 속도를 제어할 수 있습니다.
- IN1 & IN2 핀: 모터 A의 회전 방향을 제어하는 데 사용됩니다. 하나는 HIGH이고 다른 하나는 LOW일 때, 모터 A는 회전할 것입니다. 두 입력이 모두 HIGH이거나 LOW이면 모터 A는 정지할 것입니다.
- OUT1 & OUT2 핀: 모터 A에 연결됩니다.
모터 B 핀 (채널 B):
- ENB 핀: Motor B의 속도를 제어하는 데 사용됩니다. 점퍼를 제거하고 이 핀을 PWM 입력에 연결하면 Motor B의 속도를 제어할 수 있습니다.
- IN3 & IN4 핀: Motor B의 회전 방향을 제어하는 데 사용됩니다. 둘 중 하나가 HIGH이고 다른 하나가 LOW일 때, Motor B가 회전합니다. 두 입력 모두 HIGH이거나 LOW인 경우 Motor B는 멈출 것입니다.
- OUT3 & OUT4 핀: Motor B에 연결됩니다.
위에서 설명한 바와 같이, L298N 드라이버는 두 가지 입력 전원을 가지고 있습니다:
- DC 모터용(VCC 및 GND 핀): 5에서 35V까지.
- L298N 모듈의 내부 작동용(5V 및 GND 핀): 5에서 7V까지.
L298N 드라이버에는 고급 사용 또는 기타 용도를 위한 점퍼 3개도 있습니다. 단순함을 위해, L298N 드라이버에서 모든 점퍼를 제거해 주세요.
아두이노와 L298N 드라이버를 사용하여 두 개의 DC 모터를 동시에 독립적으로 제어할 수 있습니다. 각 모터를 제어하려면 아두이노에서 단 3개의 핀만 필요합니다.
※ NOTE THAT:
이 튜토리얼의 나머지 부분은 채널 A를 사용하여 DC 모터를 제어합니다. 다른 DC 모터를 제어하는 것은 비슷합니다.
DC 모터의 속도를 L298N 드라이버를 통해 제어하는 방법
DC 모터의 속도를 L298N의 ENA 핀에 PWM 신호를 생성함으로써 간단히 제어할 수 있습니다. 우리는 다음과 같이 이것을 할 수 있습니다:
- 아두이노 핀을 L298N의 ENA에 연결하십시오.
- analogWrite() 함수를 사용하여 ENA 핀에 PWM 신호를 생성하십시오. L298N 드라이버는 PWM 신호를 DC 모터로 증폭합니다.
속도는 0과 255 사이의 값입니다. 속도가 0이면 모터가 멈춥니다. 속도가 255이면 모터가 최대 속도로 회전합니다.
L298N 드라이버를 통한 DC 모터 방향 제어 방법
모터의 회전 방향은 IN1 및 IN2 핀에 로직 HIGH/LOW를 적용함으로써 제어할 수 있습니다. 아래 표는 두 채널 모두에서 방향을 제어하는 방법을 설명합니다.
IN1 pin | IN2 pin | Direction |
---|---|---|
LOW | LOW | Motor A stops |
HIGH | HIGH | Motor A stops |
HIGH | LOW | Motor A spins Clockwise |
LOW | HIGH | Motor A spins Anti-Clockwise |
제어 모터 A가 시계 방향으로 회전합니다.
제어 모터 A가 반시계 방향으로 회전합니다.
※ NOTE THAT:
OUT1 및 OUT2 핀이 DC 모터의 두 핀에 반대 방향으로 연결되면 회전 방향이 반전됩니다. 그럴 경우에는 OUT1 및 OUT2 핀을 서로 바꾸거나 코드 내의 IN1 및 IN2 핀에 대한 제어 신호를 변경하면 됩니다.
DC 모터 회전을 멈추는 방법
DC 모터를 멈추는 두 가지 방법이 있습니다.
속도를 0으로 조절합니다.
IN1 IN2 핀을 동일한 값(LOW 또는 HIGH)으로 제어합니다.
- 또는
DC 모터를 L298N 드라이버를 사용하여 제어하는 방법
배선도
L298N 모듈에 연결하기 전에 모든 세 개의 점퍼를 제거해 주세요.
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
아두이노 코드
아래 코드는 다음과 같은 작업을 수행합니다:
- DC 모터 속도 올리기
- 방향 바꾸기
- DC 모터 속도 낮추기
- 모터 정지
사용 방법
L298N 모듈의 세 점퍼를 모두 제거하세요.
위의 코드를 복사하여 Arduino IDE로 열기
Arduino IDE에서 Upload 버튼을 클릭하여 아두이노에 코드를 업로드하세요.
다음을 확인할 수 있습니다:
- DC 모터의 속도가 빨라지고 최대 속도로 1초간 회전합니다.
- DC 모터의 방향이 변경됩니다.
- DC 모터가 반대 방향으로 최대 속도로 1초간 회전합니다.
- DC 모터의 속도가 줄어듭니다.
- DC 모터가 1초 동안 정지합니다.
- 위의 과정이 반복됩니다.
※ NOTE THAT:
이 튜토리얼에서는 최대 속도에 상대적인 DC 모터 속도를 제어하는 방법을 배웁니다. 절대 속도(초당 회전 수)를 제어하기 위해서는 PID 컨트롤러와 엔코더를 사용해야 합니다. DC 모터의 절대 속도를 제어하는 방법은 다른 튜토리얼에서 소개될 예정입니다.
L298N 드라이버를 사용하여 두 개의 DC 모터 제어 방법
(곧 출시됩니다)
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.